X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fmigrate%2Fsrc%2FPlugin%2FMigrationPluginManager.php;h=6d364e77fc565600dc6ed4a6d864cae19206efa8;hb=1c1cb0980bfa6caf0c24cce671b6bb541dc87583;hp=b572bb5cc5f0d5df0835201b82e5d8be667b4211;hpb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;p=yaffs-website diff --git a/web/core/modules/migrate/src/Plugin/MigrationPluginManager.php b/web/core/modules/migrate/src/Plugin/MigrationPluginManager.php index b572bb5cc..6d364e77f 100644 --- a/web/core/modules/migrate/src/Plugin/MigrationPluginManager.php +++ b/web/core/modules/migrate/src/Plugin/MigrationPluginManager.php @@ -60,11 +60,22 @@ class MigrationPluginManager extends DefaultPluginManager implements MigrationPl } /** - * {@inheritdoc} + * Gets the plugin discovery. + * + * This method overrides DefaultPluginManager::getDiscovery() in order to + * search for migration configurations in the MODULENAME/migrations and + * MODULENAME/migration_templates directories. Throws a deprecation notice if + * the MODULENAME/migration_templates directory exists. */ protected function getDiscovery() { if (!isset($this->discovery)) { $directories = array_map(function ($directory) { + // Check for use of the @deprecated /migration_templates directory. + // @todo Remove use of /migration_templates in Drupal 9.0.0. + if (is_dir($directory . '/migration_templates')) { + @trigger_error('Use of the /migration_templates directory to store migration configuration files is deprecated in Drupal 8.1.0 and will be removed before Drupal 9.0.0. See https://www.drupal.org/node/2920988.', E_USER_DEPRECATED); + } + // But still accept configurations found in /migration_templates. return [$directory . '/migration_templates', $directory . '/migrations']; }, $this->moduleHandler->getModuleDirectories()); @@ -72,7 +83,7 @@ class MigrationPluginManager extends DefaultPluginManager implements MigrationPl // This gets rid of migrations which try to use a non-existent source // plugin. The common case for this is if the source plugin has, or // specifies, a non-existent provider. - $only_with_source_discovery = new NoSourcePluginDecorator($yaml_discovery); + $only_with_source_discovery = new NoSourcePluginDecorator($yaml_discovery); // This gets rid of migrations with explicit providers set if one of the // providers do not exist before we try to use a potentially non-existing // deriver. This is a rare case. @@ -116,13 +127,7 @@ class MigrationPluginManager extends DefaultPluginManager implements MigrationPl } /** - * Create migrations given a tag. - * - * @param string $tag - * A migration tag we want to filter by. - * - * @return array|\Drupal\migrate\Plugin\MigrationInterface[] - * An array of migration objects with the given tag. + * {@inheritdoc} */ public function createInstancesByTag($tag) { $migrations = array_filter($this->getDefinitions(), function ($migration) use ($tag) { @@ -155,7 +160,6 @@ class MigrationPluginManager extends DefaultPluginManager implements MigrationPl return $plugin_ids; } - /** * {@inheritdoc} */ @@ -204,7 +208,14 @@ class MigrationPluginManager extends DefaultPluginManager implements MigrationPl $migration->set('requirements', $required_dependency_graph[$migration_id]['paths']); } } - array_multisort($weights, SORT_DESC, SORT_NUMERIC, $migrations); + // Sort weights, labels, and keys in the same order as each other. + array_multisort( + // Use the numerical weight as the primary sort. + $weights, SORT_DESC, SORT_NUMERIC, + // When migrations have the same weight, sort them alphabetically by ID. + array_keys($migrations), SORT_ASC, SORT_NATURAL, + $migrations + ); return $migrations; }