diff --git a/replication.info.yml b/replication.info.yml old mode 100644 new mode 100755 index 620ee31..a057d21 --- a/replication.info.yml +++ b/replication.info.yml @@ -2,7 +2,7 @@ name: 'Replication' type: module description: 'Provides services and entities types to assist with and log content replication.' version: VERSION -core: 8.x +core_version_requirement: ^8 || ^9 configure: replication.settings_form dependencies: - - multiversion:multiversion + - multiversion:multiversion \ No newline at end of file diff --git a/replication.services.yml b/replication.services.yml old mode 100644 new mode 100755 index b389271..0b64c41 --- a/replication.services.yml +++ b/replication.services.yml @@ -14,7 +14,7 @@ services: #Factories replication.changes_factory: class: Drupal\replication\ChangesFactory - arguments: ['@multiversion.entity_index.sequence', '@entity.manager', '@serializer', '@plugin.manager.replication_filter'] + arguments: ['@multiversion.entity_index.sequence', '@entity_type.manager', '@serializer', '@plugin.manager.replication_filter'] replication.revisiondiff_factory: class: Drupal\replication\RevisionDiffFactory arguments: ['@multiversion.entity_index.rev'] @@ -38,17 +38,17 @@ services: #Normalizers replication.normalizer.link_item: class: Drupal\replication\Normalizer\LinkItemNormalizer - arguments: ['@entity_type.manager', '@path.alias_manager', '@plugin.manager.entity_reference_selection'] + arguments: ['@entity_type.manager', '@path_alias.manager', '@plugin.manager.entity_reference_selection'] tags: - { name: normalizer, priority: 40 } replication.normalizer.redirect_source_item: class: Drupal\replication\Normalizer\RedirectSourceItemNormalizer - arguments: ['@entity_type.manager', '@path.alias_manager', '@plugin.manager.entity_reference_selection'] + arguments: ['@entity_type.manager', '@path_alias.manager', '@plugin.manager.entity_reference_selection'] tags: - { name: normalizer, priority: 40 } replication.normalizer.content_entity: class: Drupal\replication\Normalizer\ContentEntityNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 40 } replication.normalizer.replication_log: @@ -62,7 +62,7 @@ services: - { name: normalizer, priority: 50 } replication.normalizer.all_docs: class: Drupal\replication\Normalizer\AllDocsNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.uuid'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.uuid'] tags: - { name: normalizer, priority: 40 } replication.normalizer.changes: @@ -73,7 +73,7 @@ services: class: Drupal\replication\Normalizer\WorkspaceNormalizer tags: - { name: normalizer, priority: 50 } - arguments: ['@entity.manager'] + arguments: ['@entity_type.manager'] replication.normalizer.deleted_flag_item_list: class: Drupal\replication\Normalizer\DeletedFlagItemListNormalizer tags: @@ -89,32 +89,32 @@ services: - { name: normalizer, priority: 50 } replication.normalizer.attachment: class: Drupal\replication\Normalizer\AttachmentNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 50 } replication.normalizer.file_entity: class: Drupal\replication\Normalizer\FileEntityNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher', '@replication.process_file_attachment'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher', '@replication.process_file_attachment'] tags: - { name: normalizer, priority: 60 } replication.normalizer.taxonomy_term: class: Drupal\replication\Normalizer\TaxonomyTermNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 60 } replication.normalizer.menu_link_content: class: Drupal\replication\Normalizer\MenuLinkContentNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 60 } replication.normalizer.crop: class: Drupal\replication\Normalizer\CropNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 60 } replication.normalizer.paragraph: class: Drupal\replication\Normalizer\ParagraphNormalizer - arguments: ['@entity.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] + arguments: ['@entity_type.manager', '@multiversion.entity_index.factory', '@language_manager', '@replication.users_mapping', '@module_handler', '@plugin.manager.entity_reference_selection', '@event_dispatcher'] tags: - { name: normalizer, priority: 60 } replication.normalizer.webform_entity_reference_item: @@ -145,3 +145,7 @@ services: class: Drupal\replication\Normalizer\EntityReferenceQuantityItemNormalizer tags: - { name: normalizer, priority: 60 } + replication.normalizer.datetime: + class: Drupal\replication\Normalizer\DrupalDateTimeNormalizer + tags: + - { name: normalizer } diff --git a/src/Entity/ReplicationSettings.php b/src/Entity/ReplicationSettings.php old mode 100644 new mode 100755 index 4d4ff0f..2d8bd3b --- a/src/Entity/ReplicationSettings.php +++ b/src/Entity/ReplicationSettings.php @@ -15,6 +15,10 @@ use Drupal\replication\Entity\ReplicationSettingsInterface; * id = "replication_settings", * label = @Translation("Replication settings"), * config_prefix = "replication_settings", + * config_export = { + * "id", + * "label" + * }, * entity_keys = { * "id" = "id", * "label" = "label" diff --git a/src/Normalizer/ContentEntityNormalizer.php b/src/Normalizer/ContentEntityNormalizer.php old mode 100644 new mode 100755 index 4e9141d..7fe6dfe --- a/src/Normalizer/ContentEntityNormalizer.php +++ b/src/Normalizer/ContentEntityNormalizer.php @@ -4,7 +4,8 @@ namespace Drupal\replication\Normalizer; use Drupal\Core\Cache\Cache; use Drupal\Core\Entity\ContentEntityInterface; -use Drupal\Core\Entity\EntityManagerInterface; +#use Drupal\Core\Entity\EntityManagerInterface; +use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\FieldableEntityInterface; @@ -71,7 +72,7 @@ class ContentEntityNormalizer extends NormalizerBase implements DenormalizerInte private $moduleHandler; /** - * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager + * @param \Drupal\Core\Entity\EntityTypeManager $entity_manager * @param \Drupal\multiversion\Entity\Index\MultiversionIndexFactory $index_factory * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * @param \Drupal\replication\UsersMapping $users_mapping @@ -79,7 +80,7 @@ class ContentEntityNormalizer extends NormalizerBase implements DenormalizerInte * @param \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface $selection_manager * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */ - public function __construct(EntityManagerInterface $entity_manager, MultiversionIndexFactory $index_factory, LanguageManagerInterface $language_manager, UsersMapping $users_mapping, ModuleHandlerInterface $module_handler, SelectionPluginManagerInterface $selection_manager = NULL, EventDispatcherInterface $event_dispatcher = NULL) { + public function __construct(EntityTypeManager $entity_manager, MultiversionIndexFactory $index_factory, LanguageManagerInterface $language_manager, UsersMapping $users_mapping, ModuleHandlerInterface $module_handler, SelectionPluginManagerInterface $selection_manager = NULL, EventDispatcherInterface $event_dispatcher = NULL) { $this->entityManager = $entity_manager; $this->indexFactory = $index_factory; $this->languageManager = $language_manager; @@ -247,7 +248,7 @@ class ContentEntityNormalizer extends NormalizerBase implements DenormalizerInte $translations = []; foreach ($data as $key => $translation) { // Skip any keys that start with '_' or '@'. - if (in_array($key{0}, ['_', '@'])) { + if (in_array($key[0], ['_', '@'])) { continue; } // When language is configured, undefined or not applicable go ahead with diff --git a/src/Normalizer/EntityReferenceItemNormalizer.php b/src/Normalizer/EntityReferenceItemNormalizer.php old mode 100644 new mode 100755 index 2543dfc..6dbb670 --- a/src/Normalizer/EntityReferenceItemNormalizer.php +++ b/src/Normalizer/EntityReferenceItemNormalizer.php @@ -49,7 +49,7 @@ class EntityReferenceItemNormalizer extends FieldItemNormalizer { ]; // Add username to the field info for user entity type. - if ($target_type === 'user' && $username = $referenced_entity->getUsername()) { + if ($target_type === 'user' && $username = $referenced_entity->getAccountName()) { $field_info['username'] = $username; } diff --git a/src/Normalizer/FileEntityNormalizer.php b/src/Normalizer/FileEntityNormalizer.php old mode 100644 new mode 100755 index 439eff7..aefb956 --- a/src/Normalizer/FileEntityNormalizer.php +++ b/src/Normalizer/FileEntityNormalizer.php @@ -2,7 +2,8 @@ namespace Drupal\replication\Normalizer; -use Drupal\Core\Entity\EntityManagerInterface; +#use Drupal\Core\Entity\EntityManagerInterface; +use Drupal\Core\Entity\EntityTypeManager; use Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Language\LanguageManagerInterface; @@ -31,7 +32,7 @@ class FileEntityNormalizer extends ContentEntityNormalizer implements Denormaliz protected $processFileAttachment; /** - * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager + * @param \Drupal\Core\Entity\EntityTypeManager $entity_manager * @param \Drupal\multiversion\Entity\Index\MultiversionIndexFactory $index_factory * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * @param \Drupal\replication\UsersMapping $users_mapping @@ -40,7 +41,7 @@ class FileEntityNormalizer extends ContentEntityNormalizer implements Denormaliz * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher * @param \Drupal\replication\ProcessFileAttachment $process_file_attachment */ - public function __construct(EntityManagerInterface $entity_manager, MultiversionIndexFactory $index_factory, LanguageManagerInterface $language_manager, UsersMapping $users_mapping, ModuleHandlerInterface $module_handler, SelectionPluginManagerInterface $selection_manager = NULL, EventDispatcherInterface $event_dispatcher = NULL, ProcessFileAttachment $process_file_attachment) { + public function __construct(EntityTypeManager $entity_manager, MultiversionIndexFactory $index_factory, LanguageManagerInterface $language_manager, UsersMapping $users_mapping, ModuleHandlerInterface $module_handler, SelectionPluginManagerInterface $selection_manager = NULL, EventDispatcherInterface $event_dispatcher = NULL, ProcessFileAttachment $process_file_attachment) { parent::__construct($entity_manager, $index_factory, $language_manager, $users_mapping, $module_handler, $selection_manager, $event_dispatcher); $this->processFileAttachment = $process_file_attachment; } @@ -50,7 +51,7 @@ class FileEntityNormalizer extends ContentEntityNormalizer implements Denormaliz */ public function normalize($data, $format = NULL, array $context = []) { $normalized = parent::normalize($data, $format, $context); - $file_system = \Drupal::service('file_system'); + $file_system = \Drupal::service('stream_wrapper_manager'); $uri = $data->getFileUri(); if (empty($uri)) { @@ -58,7 +59,7 @@ class FileEntityNormalizer extends ContentEntityNormalizer implements Denormaliz } if ($file_contents = @file_get_contents($uri)) { - if (in_array($file_system->uriScheme($uri), ['public', 'private']) == FALSE) { + if (in_array($file_system->getScheme($uri), ['public', 'private']) == FALSE) { $file_data = ''; } else { diff --git a/src/Normalizer/LinkItemNormalizer.php b/src/Normalizer/LinkItemNormalizer.php old mode 100644 new mode 100755 index 61993ad..d54a620 --- a/src/Normalizer/LinkItemNormalizer.php +++ b/src/Normalizer/LinkItemNormalizer.php @@ -7,7 +7,8 @@ use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\Core\Path\AliasManagerInterface; +#use Drupal\Core\Path\AliasManagerInterface; +use Drupal\path_alias\AliasManager; use Drupal\Core\Url; use Drupal\multiversion\Entity\WorkspaceInterface; use Drupal\serialization\Normalizer\FieldItemNormalizer; @@ -32,16 +33,16 @@ class LinkItemNormalizer extends FieldItemNormalizer { private $selectionManager; /** - * @var \Drupal\Core\Path\AliasManagerInterface + * @var \Drupal\path_alias\AliasManager */ private $aliasManager; /** * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager - * @param \Drupal\Core\Path\AliasManagerInterface $alias_manager + * @param \Drupal\path_alias\AliasManager $alias_manager * @param \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface|null $selection_manager */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, AliasManagerInterface $alias_manager, SelectionPluginManagerInterface $selection_manager = NULL) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, AliasManager $alias_manager, SelectionPluginManagerInterface $selection_manager = NULL) { $this->entityTypeManager = $entity_type_manager; $this->selectionManager = $selection_manager; $this->aliasManager = $alias_manager; diff --git a/src/Normalizer/RedirectSourceItemNormalizer.php b/src/Normalizer/RedirectSourceItemNormalizer.php old mode 100644 new mode 100755 index 14e51bc..955a13f --- a/src/Normalizer/RedirectSourceItemNormalizer.php +++ b/src/Normalizer/RedirectSourceItemNormalizer.php @@ -7,7 +7,8 @@ use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\Core\Path\AliasManagerInterface; +#use Drupal\Core\Path\AliasManagerInterface; +use Drupal\path_alias\AliasManager; use Drupal\Core\Url; use Drupal\multiversion\Entity\WorkspaceInterface; use Drupal\serialization\Normalizer\FieldItemNormalizer; @@ -32,16 +33,16 @@ class RedirectSourceItemNormalizer extends FieldItemNormalizer { private $selectionManager; /** - * @var \Drupal\Core\Path\AliasManagerInterface + * @var \Drupal\path_alias\AliasManager */ private $aliasManager; /** * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager - * @param \Drupal\Core\Path\AliasManagerInterface $alias_manager + * @param \Drupal\path_alias\AliasManager $alias_manager * @param \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface|null $selection_manager */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, AliasManagerInterface $alias_manager, SelectionPluginManagerInterface $selection_manager = NULL) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, AliasManager $alias_manager, SelectionPluginManagerInterface $selection_manager = NULL) { $this->entityTypeManager = $entity_type_manager; $this->selectionManager = $selection_manager; $this->aliasManager = $alias_manager; diff --git a/src/Normalizer/WorkspaceNormalizer.php b/src/Normalizer/WorkspaceNormalizer.php old mode 100644 new mode 100755 index c46b935..d04af87 --- a/src/Normalizer/WorkspaceNormalizer.php +++ b/src/Normalizer/WorkspaceNormalizer.php @@ -5,11 +5,16 @@ namespace Drupal\replication\Normalizer; use Drupal\multiversion\Entity\WorkspaceType; use Drupal\multiversion\Entity\WorkspaceTypeInterface; use Drupal\serialization\Normalizer\EntityNormalizer; +use Drupal\Core\Entity\EntityTypeManager; +use Drupal\Core\Entity\EntityManagerInterface; +use Drupal\serialization\Normalizer\NormalizerBase; +use Symfony\Component\Serializer\Exception\UnexpectedValueException; +use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; /** * @todo {@link https://www.drupal.org/node/2599920 Don't extend EntityNormalizer.} */ -class WorkspaceNormalizer extends EntityNormalizer { +class WorkspaceNormalizer extends NormalizerBase implements DenormalizerInterface { /** * @var string[] @@ -21,12 +26,20 @@ class WorkspaceNormalizer extends EntityNormalizer { */ protected $format = ['json']; + /** + * @param \Drupal\Core\Entity\EntityTypeManager $entity_manager + */ + public function __construct(EntityTypeManager $entity_manager) { + $this->entityManager = $entity_manager; + } + /** * {@inheritdoc} */ public function normalize($entity, $format = NULL, array $context = []) { $context['entity_type'] = 'workspace'; - $data = parent::normalize($entity, $format, $context); + //$data = parent::normalize($entity, $format, $context); + $data = []; $return_data = []; if (isset($data['machine_name'])) { diff --git a/src/ProcessFileAttachment.php b/src/ProcessFileAttachment.php old mode 100644 new mode 100755 index 550fefc..19a90a5 --- a/src/ProcessFileAttachment.php +++ b/src/ProcessFileAttachment.php @@ -2,6 +2,7 @@ namespace Drupal\replication; +use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\file\FileInterface; @@ -71,7 +72,7 @@ class ProcessFileAttachment { ->getStorage('file') ->loadByProperties(['uri' => $uri]); if (count($existing_files)) { - $uri = file_destination($uri, FILE_EXISTS_RENAME); + $uri = file_destination($uri, FileSystemInterface::EXISTS_RENAME); } $file_context = [ 'uri' => $uri, diff --git a/tests/modules/replication_alter_test/replication_alter_test.info.yml b/tests/modules/replication_alter_test/replication_alter_test.info.yml old mode 100644 new mode 100755 index 21edd40..b76de04 --- a/tests/modules/replication_alter_test/replication_alter_test.info.yml +++ b/tests/modules/replication_alter_test/replication_alter_test.info.yml @@ -1,6 +1,6 @@ -name: 'Replication Alter Test' +name: 'Replication alter test' type: module -description: 'Tests content normalization alter events in replication.' -core: 8.x +description: 'Tests content normalization alter events in replication' +core_version_requirement: ^8 || ^9 version: VERSION -hidden: true +hidden: true \ No newline at end of file diff --git a/tests/src/Kernel/Normalizer/BulkDocsNormalizerTest.php b/tests/src/Kernel/Normalizer/BulkDocsNormalizerTest.php old mode 100644 new mode 100755 index c043a56..491c3cf --- a/tests/src/Kernel/Normalizer/BulkDocsNormalizerTest.php +++ b/tests/src/Kernel/Normalizer/BulkDocsNormalizerTest.php @@ -104,7 +104,7 @@ class BulkDocsNormalizerTest extends NormalizerTestBase { protected function createTestEntities($entity_type, $number = 3) { $entities = []; - $entity_manager = \Drupal::entityManager(); + $entity_manager = \Drupal::entityTypeManager(); while ($number >= 1) { $values = [