summaryrefslogtreecommitdiffstatshomepage
path: root/core/modules/migrate
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/migrate')
-rw-r--r--core/modules/migrate/migrate.api.php4
-rw-r--r--core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php2
-rw-r--r--core/modules/migrate/src/Plugin/Migration.php6
-rw-r--r--core/modules/migrate/src/Plugin/migrate/source/ConfigEntity.php3
-rw-r--r--core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php6
-rw-r--r--core/modules/migrate/tests/src/Functional/MigrateMessageTestBase.php4
-rw-r--r--core/modules/migrate/tests/src/Unit/MigrateSourceTest.php27
-rw-r--r--core/modules/migrate/tests/src/Unit/Plugin/migrate/destination/EntityTestBase.php2
8 files changed, 40 insertions, 14 deletions
diff --git a/core/modules/migrate/migrate.api.php b/core/modules/migrate/migrate.api.php
index 1e58b0090ff2..5d2af7db180e 100644
--- a/core/modules/migrate/migrate.api.php
+++ b/core/modules/migrate/migrate.api.php
@@ -156,7 +156,7 @@ function hook_migrate_prepare_row(Row $row, MigrateSourceInterface $source, Migr
if ($migration->id() == 'd6_filter_formats') {
$value = $source->getDatabase()->query('SELECT [value] FROM {variable} WHERE [name] = :name', [':name' => 'my_module_filter_foo_' . $row->getSourceProperty('format')])->fetchField();
if ($value) {
- $row->setSourceProperty('settings:my_module:foo', unserialize($value));
+ $row->setSourceProperty('settings:my_module:foo', unserialize($value, ['allowed_classes' => FALSE]));
}
}
}
@@ -179,7 +179,7 @@ function hook_migrate_prepare_row(Row $row, MigrateSourceInterface $source, Migr
function hook_migrate_MIGRATION_ID_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) {
$value = $source->getDatabase()->query('SELECT [value] FROM {variable} WHERE [name] = :name', [':name' => 'my_module_filter_foo_' . $row->getSourceProperty('format')])->fetchField();
if ($value) {
- $row->setSourceProperty('settings:my_module:foo', unserialize($value));
+ $row->setSourceProperty('settings:my_module:foo', unserialize($value, ['allowed_classes' => FALSE]));
}
}
diff --git a/core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php b/core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
index 9adf60b46ffe..30cc28562e8d 100644
--- a/core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
+++ b/core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
@@ -65,7 +65,7 @@ class AnnotatedClassDiscoveryAutomatedProviders extends AnnotatedClassDiscovery
if (isset($cached['id'])) {
// Explicitly unserialize this to create a new object
// instance.
- $definitions[$cached['id']] = unserialize($cached['content']);
+ $definitions[$cached['id']] = unserialize($cached['content'], ['allowed_classes' => FALSE]);
}
continue;
}
diff --git a/core/modules/migrate/src/Plugin/Migration.php b/core/modules/migrate/src/Plugin/Migration.php
index 961d7edd76b1..20c99bbd3e00 100644
--- a/core/modules/migrate/src/Plugin/Migration.php
+++ b/core/modules/migrate/src/Plugin/Migration.php
@@ -226,6 +226,8 @@ class Migration extends PluginBase implements MigrationInterface, RequirementsIn
* These are different from the configuration dependencies. Migration
* dependencies are only used to store relationships between migrations.
*
+ * @var array
+ *
* The migration_dependencies value is structured like this:
* @code
* [
@@ -238,10 +240,8 @@ class Migration extends PluginBase implements MigrationInterface, RequirementsIn
* ],
* ];
* @endcode
- *
- * @var array
*/
- // phpcs:ignore Drupal.NamingConventions.ValidVariableName.LowerCamelName, Drupal.Commenting.VariableComment.Missing
+ // phpcs:ignore Drupal.NamingConventions.ValidVariableName.LowerCamelName
protected $migration_dependencies = [];
/**
diff --git a/core/modules/migrate/src/Plugin/migrate/source/ConfigEntity.php b/core/modules/migrate/src/Plugin/migrate/source/ConfigEntity.php
index dc70496282f3..a5351c748620 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/ConfigEntity.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/ConfigEntity.php
@@ -71,7 +71,8 @@ class ConfigEntity extends SqlBase {
* {@inheritdoc}
*/
public function prepareRow(Row $row) {
- $row->setSourceProperty('data', unserialize($row->getSourceProperty('data')));
+ // @see \Drupal\Core\Config\DatabaseStorage::decode()
+ $row->setSourceProperty('data', unserialize($row->getSourceProperty('data'), ['allowed_classes' => FALSE]));
return parent::prepareRow($row);
}
diff --git a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
index 3a1cb8a1b695..77c8b45d00f8 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php
@@ -609,15 +609,15 @@ abstract class SourcePluginBase extends PluginBase implements MigrateSourceInter
* {@inheritdoc}
*/
public function preRollback(MigrateRollbackEvent $event) {
- // Nothing to do in this implementation.
+ // Reset the high-water mark.
+ $this->saveHighWater(NULL);
}
/**
* {@inheritdoc}
*/
public function postRollback(MigrateRollbackEvent $event) {
- // Reset the high-water mark.
- $this->saveHighWater(NULL);
+ // Nothing to do in this implementation.
}
/**
diff --git a/core/modules/migrate/tests/src/Functional/MigrateMessageTestBase.php b/core/modules/migrate/tests/src/Functional/MigrateMessageTestBase.php
index 6885ba378e9c..84dddc3c1825 100644
--- a/core/modules/migrate/tests/src/Functional/MigrateMessageTestBase.php
+++ b/core/modules/migrate/tests/src/Functional/MigrateMessageTestBase.php
@@ -12,10 +12,8 @@ use Drupal\migrate\Plugin\MigrationInterface;
/**
* Provides base class for testing migrate messages.
- *
- * @group migrate
*/
-class MigrateMessageTestBase extends BrowserTestBase {
+abstract class MigrateMessageTestBase extends BrowserTestBase {
/**
* {@inheritdoc}
diff --git a/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php b/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
index 2f0b85ffbc47..e344e3e23e84 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateSourceTest.php
@@ -9,6 +9,7 @@ use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
use Drupal\Core\KeyValueStore\KeyValueStoreInterface;
+use Drupal\migrate\Event\MigrateRollbackEvent;
use Drupal\migrate\MigrateException;
use Drupal\migrate\MigrateExecutable;
use Drupal\migrate\MigrateSkipRowException;
@@ -448,6 +449,32 @@ class MigrateSourceTest extends MigrateTestCase {
return new MigrateExecutable($migration, $message, $event_dispatcher);
}
+ /**
+ * @covers ::preRollback
+ */
+ public function testPreRollback(): void {
+ $this->migrationConfiguration['id'] = 'test_migration';
+ $plugin_id = 'test_migration';
+ $migration = $this->getMigration();
+
+ // Verify that preRollback() sets the high water mark to NULL.
+ $key_value = $this->createMock(KeyValueStoreInterface::class);
+ $key_value->expects($this->once())
+ ->method('set')
+ ->with($plugin_id, NULL);
+ $key_value_factory = $this->createMock(KeyValueFactoryInterface::class);
+ $key_value_factory->expects($this->once())
+ ->method('get')
+ ->with('migrate:high_water')
+ ->willReturn($key_value);
+ $container = new ContainerBuilder();
+ $container->set('keyvalue', $key_value_factory);
+ \Drupal::setContainer($container);
+
+ $source = new StubSourceGeneratorPlugin([], $plugin_id, [], $migration);
+ $source->preRollback(new MigrateRollbackEvent($migration));
+ }
+
}
/**
diff --git a/core/modules/migrate/tests/src/Unit/Plugin/migrate/destination/EntityTestBase.php b/core/modules/migrate/tests/src/Unit/Plugin/migrate/destination/EntityTestBase.php
index ba9ab78cff66..ed223601abb3 100644
--- a/core/modules/migrate/tests/src/Unit/Plugin/migrate/destination/EntityTestBase.php
+++ b/core/modules/migrate/tests/src/Unit/Plugin/migrate/destination/EntityTestBase.php
@@ -14,7 +14,7 @@ use Drupal\Tests\UnitTestCase;
/**
* Base test class for entity migration destination functionality.
*/
-class EntityTestBase extends UnitTestCase {
+abstract class EntityTestBase extends UnitTestCase {
/**
* The migration entity.