diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 537376f767774d04de9f569dd36e625353311a08..ea4ecdac1d2603bce582fdbbe167d95845c8bedd 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -44169,7 +44169,7 @@ )) ->values(array( 'name' => 'search_active_modules', - 'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";i:0;}', + 'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";s:4:"user";}', )) ->values(array( 'name' => 'search_and_or_limit', diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php index 5ca90989fb5c3c9db65f74d9971094f36f3377e7..212a044c2dd38d8d5dca036c1bf60d31b70f024f 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php @@ -394,7 +394,7 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'path', 'destination_module' => 'path', ], - 'd6_search_page' => [ + 'search_page' => [ 'source_module' => 'search', 'destination_module' => 'search', ], @@ -402,10 +402,6 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'search', 'destination_module' => 'search', ], - 'd7_search_page' => [ - 'source_module' => 'search', - 'destination_module' => 'search', - ], 'd7_search_settings' => [ 'source_module' => 'search', 'destination_module' => 'search', diff --git a/core/modules/search/migration_templates/d7_search_page.yml b/core/modules/search/migration_templates/d7_search_page.yml deleted file mode 100644 index 197fabf013f1169267681c6c7c31cfae8668cb3c..0000000000000000000000000000000000000000 --- a/core/modules/search/migration_templates/d7_search_page.yml +++ /dev/null @@ -1,46 +0,0 @@ -id: d7_search_page -label: Search page configuration -migration_tags: - - Drupal 7 -source: - plugin: d7_search_page - variables: - - node_rank_comments - - node_rank_promote - - node_rank_relevance - - node_rank_sticky - - node_rank_views - constants: - suffix: _search -process: - module: module - module_exists: - - - plugin: skip_on_empty - method: row - source: module_exists - status: - - - plugin: static_map - source: status - map: - node: true - user: true - 0: false - id: - - - plugin: concat - source: - - module - - 'constants/suffix' - plugin: - - - plugin: concat - source: - - module - - 'constants/suffix' - path: module - 'configuration/rankings': - plugin: search_configuration_rankings -destination: - plugin: entity:search_page diff --git a/core/modules/search/migration_templates/d6_search_page.yml b/core/modules/search/migration_templates/search_page.yml similarity index 89% rename from core/modules/search/migration_templates/d6_search_page.yml rename to core/modules/search/migration_templates/search_page.yml index 27267a46f0eded7f5f903e5425259e0253b51b5d..8ddc02acfbca6b236ee0cda6fe11f22621378d3d 100644 --- a/core/modules/search/migration_templates/d6_search_page.yml +++ b/core/modules/search/migration_templates/search_page.yml @@ -1,9 +1,10 @@ -id: d6_search_page +id: search_page label: Search page configuration migration_tags: - Drupal 6 + - Drupal 7 source: - plugin: d6_search_page + plugin: variable variables: - node_rank_comments - node_rank_promote @@ -16,7 +17,6 @@ source: path: node plugin: node_search process: - module: module id: 'constants/id' path: 'constants/path' plugin: 'constants/plugin' diff --git a/core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php b/core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php index 52402e606a8a9257f6f4fc16bca121f6b31f1e30..ddd8da7956770aace08784f1da8ff220af898144 100644 --- a/core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php +++ b/core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php @@ -2,15 +2,9 @@ namespace Drupal\search\Plugin\migrate\destination; -use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Entity\EntityInterface; -use Drupal\Core\Entity\EntityStorageInterface; -use Drupal\Core\Extension\ModuleHandlerInterface; -use Drupal\Core\Language\LanguageManagerInterface; use Drupal\migrate\Plugin\migrate\destination\EntityConfigBase; -use Drupal\migrate\Plugin\MigrationInterface; use Drupal\migrate\Row; -use Symfony\Component\DependencyInjection\ContainerInterface; /** * @MigrateDestination( @@ -19,78 +13,6 @@ */ class EntitySearchPage extends EntityConfigBase { - /** - * The module handler. - * - * @var \Drupal\Core\Extension\ModuleHandlerInterface - */ - protected $moduleHandler; - - /** - * Constructs a new EntitySearchPage. - * - * @param array $configuration - * A configuration array containing information about the plugin instance. - * @param string $plugin_id - * The plugin_id for the plugin instance. - * @param mixed $plugin_definition - * The plugin implementation definition. - * @param MigrationInterface $migration - * The migration. - * @param EntityStorageInterface $storage - * The storage for this entity type. - * @param array $bundles - * The list of bundles this entity type has. - * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager - * The language manager. - * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory - * The configuration factory. - * @param ModuleHandlerInterface $module_handler - * The module handler. - */ - public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityStorageInterface $storage, array $bundles, LanguageManagerInterface $language_manager, ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler) { - parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $storage, $bundles, $language_manager, $config_factory); - $this->moduleHandler = $module_handler; - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) { - $entity_type_id = static::getEntityTypeId($plugin_id); - return new static( - $configuration, - $plugin_id, - $plugin_definition, - $migration, - $container->get('entity.manager')->getStorage($entity_type_id), - array_keys($container->get('entity.manager')->getBundleInfo($entity_type_id)), - $container->get('language_manager'), - $container->get('config.factory'), - $container->get('module_handler') - ); - } - - /** - * {@inheritdoc} - */ - public function import(Row $row, array $old_destination_id_values = array()) { - if ($this->moduleHandler->moduleExists($row->getDestinationProperty('module'))) { - parent::import($row, $old_destination_id_values); - $id = $row->getDestinationProperty('id'); - /** @var \Drupal\search\Entity\SearchPage $search_page */ - $search_page = $this->storage->load($id); - if ($row->getDestinationProperty('status')) { - $search_page->enable()->save(); - } - else { - $search_page->disable()->save(); - } - return [$id]; - } - return []; - } - /** * Updates the entity with the contents of a row. * @@ -101,10 +23,7 @@ public function import(Row $row, array $old_destination_id_values = array()) { */ protected function updateEntity(EntityInterface $entity, Row $row) { $entity->setPlugin($row->getDestinationProperty('plugin')); - // The user_search plugin does not have a setConfiguration() method. - if (method_exists($entity->getPlugin(), 'setConfiguration')) { - $entity->getPlugin()->setConfiguration($row->getDestinationProperty('configuration')); - } + $entity->getPlugin()->setConfiguration($row->getDestinationProperty('configuration')); } } diff --git a/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php b/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php index 153161f9a91e620d13c87da2d001cc03c4b89d9b..f021df68be1266c870af32920f35e11e0f370008 100644 --- a/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php +++ b/core/modules/search/src/Plugin/migrate/process/SearchConfigurationRankings.php @@ -21,7 +21,7 @@ class SearchConfigurationRankings extends ProcessPluginBase { * Generate the configuration rankings. */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { - $return = NULL; + $return = array(); foreach ($row->getSource() as $name => $rank) { if (substr($name, 0, 10) == 'node_rank_' && is_numeric($rank)) { $return[substr($name, 10)] = $rank; diff --git a/core/modules/search/src/Plugin/migrate/process/d6/SearchConfigurationRankings.php b/core/modules/search/src/Plugin/migrate/process/d6/SearchConfigurationRankings.php new file mode 100644 index 0000000000000000000000000000000000000000..6c1d16b0409cc3adaf61497e91a5e810304fc2aa --- /dev/null +++ b/core/modules/search/src/Plugin/migrate/process/d6/SearchConfigurationRankings.php @@ -0,0 +1,33 @@ +getSource() as $name => $rank) { + if (substr($name, 0, 10) == 'node_rank_' && $rank) { + $return[substr($name, 10)] = $rank; + } + } + return $return; + } + +} diff --git a/core/modules/search/src/Plugin/migrate/source/d6/SearchPage.php b/core/modules/search/src/Plugin/migrate/source/d6/SearchPage.php deleted file mode 100644 index a496af989a815c779d42354971c3422ca1eb9ec6..0000000000000000000000000000000000000000 --- a/core/modules/search/src/Plugin/migrate/source/d6/SearchPage.php +++ /dev/null @@ -1,45 +0,0 @@ - 'node'], parent::values()); - } - - /** - * {@inheritdoc} - */ - public function fields() { - return [ - 'module' => $this->t('The search module.'), - ]; - } - - /** - * {@inheritdoc} - */ - public function getIds() { - $ids['module']['type'] = 'string'; - return $ids; - } - -} diff --git a/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php b/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php deleted file mode 100644 index ebfb74433a7059258ee9060dd47a8ac6d62bab02..0000000000000000000000000000000000000000 --- a/core/modules/search/src/Plugin/migrate/source/d7/SearchPage.php +++ /dev/null @@ -1,89 +0,0 @@ -values()); - } - - /** - * Return the values of the variables specified in the plugin configuration. - * - * @return array - * An associative array where the keys are the variables specified in the - * plugin configuration and the values are the values found in the source. - * And includes the search module and search status. - * Only those values are returned that are actually in the database. - */ - protected function values() { - $search_active_modules = $this->variableGet('search_active_modules', ''); - $values = []; - foreach (['node', 'user'] as $module) { - if (isset($search_active_modules[$module])) { - // Create an ID field so we can record migration in the map table. - $tmp = [ - 'module' => $module, - 'status' => $search_active_modules[$module], - ]; - // Add the node_rank_* variables (only relevant to the node module). - if ($module === 'node') { - $tmp = array_merge($tmp, parent::values()); - } - $values[] = $tmp; - } - } - return $values; - } - - /** - * {@inheritdoc} - */ - public function fields() { - return [ - 'module' => $this->t('The search module.'), - 'status' => $this->t('Whether or not this module is enabled for search.'), - ]; - } - - /** - * {@inheritdoc} - */ - public function getIds() { - $ids['module']['type'] = 'string'; - $ids['status']['type'] = 'string'; - return $ids; - } - - /** - * {@inheritdoc} - */ - public function count() { - return $this->initializeIterator()->count(); - } - - /** - * {@inheritdoc} - */ - public function prepareRow(Row $row) { - $exists = $this->moduleExists($row->getSourceProperty('module')); - $row->setSourceProperty('module_exists', $exists); - return parent::prepareRow($row); - } - -} diff --git a/core/modules/search/tests/src/Kernel/Migrate/d6/MigrateSearchPageTest.php b/core/modules/search/tests/src/Kernel/Migrate/d6/MigrateSearchPageTest.php index ddf41ef6e7b50f1d0f0894138a4183a209cd3052..bcbc40e0dc776bc2a0c13f7f5da2014799f5e20c 100644 --- a/core/modules/search/tests/src/Kernel/Migrate/d6/MigrateSearchPageTest.php +++ b/core/modules/search/tests/src/Kernel/Migrate/d6/MigrateSearchPageTest.php @@ -7,7 +7,7 @@ use Drupal\search\Entity\SearchPage; /** - * Upgrade search page variables. + * Upgrade search rank settings to search.page.*.yml. * * @group migrate_drupal_6 */ @@ -23,7 +23,7 @@ class MigrateSearchPageTest extends MigrateDrupal6TestBase { */ protected function setUp() { parent::setUp(); - $this->executeMigration('d6_search_page'); + $this->executeMigration('search_page'); } /** @@ -53,7 +53,7 @@ public function testSearchPage() { ->execute(); /** @var \Drupal\migrate\Plugin\MigrationInterface $migration */ - $migration = $this->getMigration('d6_search_page'); + $migration = $this->getMigration('search_page'); // Indicate we're rerunning a migration that's already run. $migration->getIdMap()->prepareUpdate(); $this->executeMigration($migration); diff --git a/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php b/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php index 5356a2de1dec436c29ac5040d798bbcaa846c0a0..d7dae3e854253c2f8714b71156b5595feacf1f13 100644 --- a/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php +++ b/core/modules/search/tests/src/Kernel/Migrate/d7/MigrateSearchPageTest.php @@ -7,7 +7,7 @@ use Drupal\search\Entity\SearchPage; /** - * Tests migration of search page status and settings. + * Upgrade search rank settings to search.page.*.yml. * * @group migrate_drupal_7 */ @@ -18,59 +18,34 @@ class MigrateSearchPageTest extends MigrateDrupal7TestBase { * * {@inheritdoc} */ - public static $modules = ['search']; + public static $modules = array('node', 'search'); /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); + $this->executeMigration('search_page'); } /** - * Asserts various aspects of an SearchPage entity. - * - * @param string $id - * The expected search page ID. - * @param string $path - * The expected path of the search page. - * @param bool $status - * The expected status of the search page. - * @param array $expected_config - * An array of expected configuration for the search page. + * Tests Drupal 7 search ranking to Drupal 8 search page entity migration. */ - protected function assertEntity($id, $path, $status = FALSE, array $expected_config = NULL) { + public function testSearchPage() { + $id = 'node_search'; /** @var \Drupal\search\Entity\SearchPage $search_page */ $search_page = SearchPage::load($id); - $this->assertSame($id, $search_page->id()); - $this->assertSame($path, $search_page->getPath()); - $this->assertSame($search_page->status(), $status); - if (isset($expected_config)) { - $configuration = $search_page->getPlugin()->getConfiguration(); - $this->assertSame($expected_config, $configuration); - } - } - - /** - * Tests Drupal 7 search status and settings to Drupal 8 search page entity - * migration. - */ - public function testSearchPage() { - $this->enableModules(['node']); - $this->installConfig(['search']); - $this->executeMigration('d7_search_page'); - - $configuration = [ - 'rankings' => [ - 'comments' => 0, - 'promote' => 0, - 'relevance' => 2, - 'sticky' => 0, - 'views' => 0, - ] - ]; - $this->assertEntity('node_search', 'node', TRUE, $configuration); - $this->assertEntity('user_search', 'user'); + $this->assertIdentical($id, $search_page->id()); + $configuration = $search_page->getPlugin()->getConfiguration(); + $expected_rankings = array( + 'comments' => 0, + 'promote' => 0, + 'relevance' => 2, + 'sticky' => 0, + 'views' => 0, + ); + $this->assertIdentical($expected_rankings, $configuration['rankings']); + $this->assertIdentical('node', $search_page->getPath()); // Test that we can re-import using the EntitySearchPage destination. Database::getConnection('default', 'migrate') @@ -80,38 +55,13 @@ public function testSearchPage() { ->execute(); /** @var \Drupal\migrate\Plugin\MigrationInterface $migration */ - $migration = $this->getMigration('d7_search_page'); + $migration = $this->getMigration('search_page'); // Indicate we're rerunning a migration that's already run. $migration->getIdMap()->prepareUpdate(); $this->executeMigration($migration); - $configuration['rankings']['comments'] = 4; - $this->assertEntity('node_search', 'node', TRUE, $configuration); - } - - /** - * Tests that search page is only migrated for modules enabled on - * destination site. - */ - public function testModuleExists() { - $this->installConfig(['search']); - $this->executeMigration('d7_search_page'); - - $this->assertNull(SearchPage::load('node_search')); - $this->assertEntity('user_search', 'user'); - } - - /** - * Tests that a search page will be created if it does not exist. - */ - public function testUserSearchCreate() { - $this->enableModules(['node']); - $this->installConfig(['search']); - /** @var \Drupal\search\Entity\SearchPage $search_page */ - $search_page = SearchPage::load('user_search'); - $search_page->delete(); - $this->executeMigration('d7_search_page'); - $this->assertEntity('user_search', 'user'); + $configuration = SearchPage::load($id)->getPlugin()->getConfiguration(); + $this->assertIdentical(4, $configuration['rankings']['comments']); } } diff --git a/core/modules/search/tests/src/Unit/Plugin/migrate/source/d6/SearchPageTest.php b/core/modules/search/tests/src/Unit/Plugin/migrate/source/d6/SearchPageTest.php deleted file mode 100644 index eace016a87e44a90d1de5b51433d531961ea8166..0000000000000000000000000000000000000000 --- a/core/modules/search/tests/src/Unit/Plugin/migrate/source/d6/SearchPageTest.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - [ - 'name' => 'node_rank_comments', - 'value' => 's:1:"5";', - ], - [ - 'name' => 'node_rank_promote', - 'value' => 's:1:"1";', - ], - ], - 'system' => [ - [ - 'name' => 'node', - 'type' => 'module', - 'status' => '1', - ] - ] - ]; - - $tests[0]['expected_data'] = [ - [ - 'module' => 'node', - 'node_rank_comments' => '5', - 'node_rank_promote' => '1', - ], - ]; - - $tests[0]['expected_count'] = NULL; - - $tests[0]['configuration'] = [ - 'variables' => ['node_rank_comments', 'node_rank_promote'], - ]; - - return $tests; - } - -} diff --git a/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageTest.php b/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageTest.php deleted file mode 100644 index 112892934c65347b2eb882658ead8e7c84aa9b45..0000000000000000000000000000000000000000 --- a/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageTest.php +++ /dev/null @@ -1,77 +0,0 @@ - [ - [ - 'name' => 'search_active_modules', - 'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";i:0;}', - ], - [ - 'name' => 'node_rank_comments', - 'value' => 's:1:"5";', - ], - [ - 'name' => 'node_rank_promote', - 'value' => 's:1:"1";', - ], - ], - 'system' => [ - [ - 'name' => 'node', - 'type' => 'module', - 'status' => '0', - ], - [ - 'name' => 'user', - 'type' => 'module', - 'status' => '1', - ], - ], - ]; - - $tests[0]['expected_data'] = [ - [ - 'module' => 'node', - 'status' => 'node', - 'module_exists' => FALSE, - 'node_rank_comments' => '5', - 'node_rank_promote' => '1', - ], - [ - 'module' => 'user', - 'status' => 0, - 'module_exists' => TRUE, - ], - ]; - - $tests[0]['expected_count'] = NULL; - - $tests[0]['configuration'] = [ - 'variables' => ['node_rank_comments', 'node_rank_promote'], - ]; - - return $tests; - } - -}