diff --git a/composer.json b/composer.json index 33088db..ad219b7 100644 --- a/composer.json +++ b/composer.json @@ -25,34 +25,37 @@ } }, "require": { - "php": ">=7.3", + "php": "^8.1", "ext-json": "*", "ext-zip": "*", "brainsum/damo_theme": ">=0.3 <1.0", - "brainsum/media_upload": "^4.3.0", - "drupal/better_exposed_filters": "^6.0.0", + "brainsum/media_upload": "^4.3", + "drupal/better_exposed_filters": "^6.0", "drupal/core": "^10.0", - "drupal/dropzonejs": "^2.7.0", - "drupal/entity_browser": "^2.9.0", + "drupal/dropzonejs": "^2.7", + "drupal/entity_browser": "^2.9", "drupal/entity_embed": "^1.5", "drupal/exif": "^2.5", - "drupal/field_group": "^3.4.0", - "drupal/filehash": "^2.0", + "drupal/field_group": "^3.4", + "drupal/filehash": "2.0", "drupal/focal_point": "^2.0", - "drupal/image_effects": "^3.4.0", + "drupal/image_effects": "^3.4", "drupal/inline_entity_form": "^3.0@RC", - "drupal/jsonapi_extras": "^3.23.0", + "drupal/jsonapi_extras": "^3.23", "drupal/maxlength": "2.1.x-dev@dev", "drupal/media_entity_imagemagick": "^3.0@alpha", "drupal/php_ffmpeg": "^1.1.0", "drupal/redirect_after_login": "^2.7.0", - "drupal/search_api": "^1.28.0", - "drupal/select2": "^1.14.0", - "drupal/taxonomy_access_fix": "^4.0.0", + "drupal/search_api": "^1.28", + "drupal/select2": "^1.14", + "drupal/taxonomy_access_fix": "^4.0", "drupal/term_merge": "2.0.x-dev@dev", "drupal/term_reference_change": "2.x-dev@dev", "drupal/userprotect": "^1.2.0", - "drupal/video_embed_field": "^2.5.0" + "drupal/video_embed_field": "^2.5.0", + "npm-asset/dropzone": "^5.7.6", + "npm-asset/jquery-ui-touch-punch": "^0.2.3", + "npm-asset/select2": "^4.0.13" }, "suggest": { "drupal/maillog": "Allows logging outgoing emails.", diff --git a/damopen.info.yml b/damopen.info.yml index a521055..9b58e91 100644 --- a/damopen.info.yml +++ b/damopen.info.yml @@ -2,8 +2,8 @@ name: 'Digital Media Assets Management' type: profile description: 'Distribution for quickly starting a new Digital Media Assets Management system with Drupal' -core_version_requirement: ^9.1 -php: 7.3 +core_version_requirement: ^9.1 || ^10.0 +php: 8.1 distribution: name: 'Digital Media Assets Management' diff --git a/modules/damopen_assets/damopen_assets.info.yml b/modules/damopen_assets/damopen_assets.info.yml index 4493509..3b1fe29 100644 --- a/modules/damopen_assets/damopen_assets.info.yml +++ b/modules/damopen_assets/damopen_assets.info.yml @@ -2,7 +2,7 @@ name: "Media Assets" type: module description: Media assets functionality -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' dependencies: diff --git a/modules/damopen_assets/src/Form/BulkMediaUploadForm.php b/modules/damopen_assets/src/Form/BulkMediaUploadForm.php index beff6a5..299759b 100644 --- a/modules/damopen_assets/src/Form/BulkMediaUploadForm.php +++ b/modules/damopen_assets/src/Form/BulkMediaUploadForm.php @@ -51,7 +51,8 @@ public static function create(ContainerInterface $container) { $container->get('entity_field.manager'), $container->get('logger.factory'), $container->get('token'), - $container->get('file_system') + $container->get('file_system'), + $container->get('file.repository') ); } @@ -211,7 +212,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $destination = $targetDirectory . '/' . $file['filename']; $data = file_get_contents($file['path']); - $fileEntity = file_save_data($data, $destination); + $fileEntity = $this->fileRepository->writeData($data, $destination); if (FALSE === $fileEntity) { $errorFlag = TRUE; diff --git a/modules/damopen_assets/src/Plugin/Block/DamNavigationBlock.php b/modules/damopen_assets/src/Plugin/Block/DamNavigationBlock.php index 8b29679..919eb85 100644 --- a/modules/damopen_assets/src/Plugin/Block/DamNavigationBlock.php +++ b/modules/damopen_assets/src/Plugin/Block/DamNavigationBlock.php @@ -251,6 +251,7 @@ protected function mediaCount(array $types): int { ->condition('bundle', $types, 'in') ->condition('status', 1) ->count() + ->accessCheck(FALSE) ->execute(); } catch (Exception $exception) { diff --git a/modules/damopen_assets_api/damopen_assets_api.info.yml b/modules/damopen_assets_api/damopen_assets_api.info.yml index e07606c..d295ee2 100644 --- a/modules/damopen_assets_api/damopen_assets_api.info.yml +++ b/modules/damopen_assets_api/damopen_assets_api.info.yml @@ -2,7 +2,7 @@ name: 'Media Assets API' type: module description: 'Media assets API functionality' -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_assets_api/src/Field/ImageStyleDownloadUrl.php b/modules/damopen_assets_api/src/Field/ImageStyleDownloadUrl.php index e066fa7..042405c 100644 --- a/modules/damopen_assets_api/src/Field/ImageStyleDownloadUrl.php +++ b/modules/damopen_assets_api/src/Field/ImageStyleDownloadUrl.php @@ -6,6 +6,7 @@ use Drupal\Core\Field\FieldItemList; use Drupal\Core\Session\AccountInterface; use Drupal\Core\TypedData\DataDefinitionInterface; +use Drupal\Core\TypedData\TraversableTypedDataInterface; use Drupal\Core\TypedData\TypedDataInterface; use RuntimeException; use function file_url_transform_relative; @@ -32,19 +33,23 @@ class ImageStyleDownloadUrl extends FieldItemList { */ protected $imageStyleStorage; + /** + * File URL generator. + * + * @var \Drupal\Core\File\FileUrlGeneratorInterface + */ + protected $fileUrlGenerator; + /** * {@inheritdoc} */ - public function __construct( - DataDefinitionInterface $definition, - $name = NULL, - TypedDataInterface $parent = NULL - ) { - parent::__construct($definition, $name, $parent); - - // @todo: Dep.inj. - // @see: https://www.drupal.org/project/drupal/issues/2053415 - $this->imageStyleStorage = Drupal::entityTypeManager()->getStorage('image_style'); + public static function createInstance($definition, $name = NULL, TraversableTypedDataInterface $parent = NULL) { + $instance = parent::createInstance($definition, $name, $parent); + $instance->imageStyleStorage = Drupal::entityTypeManager() + ->getStorage('image_style'); + $instance->fileUrlGenerator = Drupal::service('file_url_generator'); + + return $instance; } /** @@ -64,7 +69,7 @@ protected function fileCreateThumbnailUrl($uri): string { } $url = $style->buildUrl($uri); - return file_url_transform_relative(file_create_url($url)); + return $this->fileUrlGenerator->generateString($url); } /** diff --git a/modules/damopen_assets_api/src/Normalizer/MediaEntityNormalizer.php b/modules/damopen_assets_api/src/Normalizer/MediaEntityNormalizer.php index cbdffd5..d6f0aaa 100644 --- a/modules/damopen_assets_api/src/Normalizer/MediaEntityNormalizer.php +++ b/modules/damopen_assets_api/src/Normalizer/MediaEntityNormalizer.php @@ -82,10 +82,10 @@ public function __construct( /** * {@inheritdoc} */ - public function normalize($entity, $format = NULL, array $context = []) { + public function normalize($object, $format = NULL, array $context = []): array|string|int|float|bool|\ArrayObject|NULL { $attributes = []; /** @var \Drupal\Core\Field\FieldItemListInterface $field */ - foreach ($entity as $name => $field) { + foreach ($object as $name => $field) { if (!$field->access('view', $context['account'] ?? NULL)) { continue; } diff --git a/modules/damopen_assets_api/src/Plugin/rest/resource/MediaEntityResource.php b/modules/damopen_assets_api/src/Plugin/rest/resource/MediaEntityResource.php index 0032ad8..a95c148 100644 --- a/modules/damopen_assets_api/src/Plugin/rest/resource/MediaEntityResource.php +++ b/modules/damopen_assets_api/src/Plugin/rest/resource/MediaEntityResource.php @@ -143,6 +143,7 @@ public function get($media_entity_id = NULL) { /** @var int[] $media_ids */ $media_ids = $this->mediaStorage->getQuery() ->condition('status', 1, '=') + ->accessCheck(FALSE) ->execute(); /** @var \Drupal\media\MediaInterface[] $media_data */ diff --git a/modules/damopen_assets_download/damopen_assets_download.info.yml b/modules/damopen_assets_download/damopen_assets_download.info.yml index 11424b1..9acd1d2 100644 --- a/modules/damopen_assets_download/damopen_assets_download.info.yml +++ b/modules/damopen_assets_download/damopen_assets_download.info.yml @@ -2,7 +2,7 @@ name: "Media Assets download" type: module description: Media assets download functionality -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_assets_library/damopen_assets_library.info.yml b/modules/damopen_assets_library/damopen_assets_library.info.yml index 991eadd..dc7ee22 100644 --- a/modules/damopen_assets_library/damopen_assets_library.info.yml +++ b/modules/damopen_assets_library/damopen_assets_library.info.yml @@ -2,7 +2,7 @@ name: "Media Assets Library" type: module description: Media assets library functionality. -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' dependencies: diff --git a/modules/damopen_assets_library/damopen_assets_library.install b/modules/damopen_assets_library/damopen_assets_library.install index a74073d..56f8c98 100644 --- a/modules/damopen_assets_library/damopen_assets_library.install +++ b/modules/damopen_assets_library/damopen_assets_library.install @@ -205,9 +205,13 @@ function damopen_assets_library_update_8004() { $configStorage->write($config, $source->read($config)); } - // @todo: How to handle this? Require dbee? - module_load_include('inc', 'dbee', 'dbee.users'); - dbee_update_crypt_all('encrypt'); + /** @var \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler */ + $moduleHandler = Drupal::moduleHandler(); + if ($moduleHandler->moduleExists('dbee')) { + // @todo: How to handle this? Require dbee? + \Drupal::moduleHandler()->loadInclude('dbee', 'inc', 'dbee.users'); + dbee_update_crypt_all('encrypt'); + } } /** @@ -286,7 +290,8 @@ function _damopen_assets_library_field_encryption() { $queue->releaseItem($item); } catch (Exception $e) { - watchdog_exception('field_encrypt', $e); + $logger = \Drupal::logger('field_encrypt'); + \Drupal\Core\Utility\Error::logException($logger, $e); } } } diff --git a/modules/damopen_assets_lister/damopen_assets_lister.info.yml b/modules/damopen_assets_lister/damopen_assets_lister.info.yml index 1f34cf2..1f7630a 100644 --- a/modules/damopen_assets_lister/damopen_assets_lister.info.yml +++ b/modules/damopen_assets_lister/damopen_assets_lister.info.yml @@ -2,7 +2,7 @@ name: "Image media lister" type: module description: "Lister for assets." -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_assets_statistics/damopen_assets_statistics.info.yml b/modules/damopen_assets_statistics/damopen_assets_statistics.info.yml index 10a1f95..ecc20f2 100644 --- a/modules/damopen_assets_statistics/damopen_assets_statistics.info.yml +++ b/modules/damopen_assets_statistics/damopen_assets_statistics.info.yml @@ -2,7 +2,7 @@ name: "Media Statistics" type: module description: Media statistics. -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' dependencies: diff --git a/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.info.yml b/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.info.yml index 0b62952..57065d4 100644 --- a/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.info.yml +++ b/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.info.yml @@ -2,7 +2,7 @@ name: "Media Asset Thumbnails" type: module description: Media assets thumbnails functionality -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.services.yml b/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.services.yml index ea96567..04ca48e 100644 --- a/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.services.yml +++ b/modules/damopen_assets_thumbnails/damopen_assets_thumbnails.services.yml @@ -8,3 +8,4 @@ services: - '@current_user' - '@config.factory' - '@stream_wrapper_manager' + - '@file_url_generator' diff --git a/modules/damopen_assets_thumbnails/src/Service/VideoThumbnail.php b/modules/damopen_assets_thumbnails/src/Service/VideoThumbnail.php index 589dafd..4b91fd5 100644 --- a/modules/damopen_assets_thumbnails/src/Service/VideoThumbnail.php +++ b/modules/damopen_assets_thumbnails/src/Service/VideoThumbnail.php @@ -5,6 +5,7 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\File\FileUrlGeneratorInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\StreamWrapper\LocalStream; use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface; @@ -71,6 +72,13 @@ class VideoThumbnail { */ protected $streamWrapperManager; + /** + * File URL generator. + * + * @var \Drupal\Core\File\FileUrlGeneratorInterface + */ + protected $fileUrlGenerator; + /** * VideoThumbnail constructor. * @@ -96,7 +104,8 @@ public function __construct( EntityTypeManagerInterface $entityTypeManager, AccountProxyInterface $currentUser, ConfigFactoryInterface $configFactory, - StreamWrapperManagerInterface $streamWrapperManager + StreamWrapperManagerInterface $streamWrapperManager, + FileUrlGeneratorInterface $fileUrlGenerator ) { $this->ffMpeg = $ffMpeg; $this->fileSystem = $fileSystem; @@ -106,6 +115,7 @@ public function __construct( ->get('system.file') ->get('default_scheme'); $this->streamWrapperManager = $streamWrapperManager; + $this->fileUrlGenerator = $fileUrlGenerator; } /** @@ -211,7 +221,8 @@ protected function sourceUri(FileInterface $video): string { return $video->getFileUri(); } - return file_create_url($video->getFileUri()); + return $this->fileUrlGenerator + ->generateAbsoluteString($video->getFileUri()); } /** diff --git a/modules/damopen_common/damopen_common.info.yml b/modules/damopen_common/damopen_common.info.yml index 6ff6b83..7853447 100644 --- a/modules/damopen_common/damopen_common.info.yml +++ b/modules/damopen_common/damopen_common.info.yml @@ -2,6 +2,6 @@ name: 'DAMo - Common features' type: module description: 'DAMo common features.' -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_default_content/damopen_default_content.info.yml b/modules/damopen_default_content/damopen_default_content.info.yml index 74e0e97..35b8581 100644 --- a/modules/damopen_default_content/damopen_default_content.info.yml +++ b/modules/damopen_default_content/damopen_default_content.info.yml @@ -2,7 +2,7 @@ name: "Default content for DAMo" type: module description: "Adds default content" -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_image_media_styles_preview/damopen_image_media_styles_preview.info.yml b/modules/damopen_image_media_styles_preview/damopen_image_media_styles_preview.info.yml index 25f845a..6356feb 100644 --- a/modules/damopen_image_media_styles_preview/damopen_image_media_styles_preview.info.yml +++ b/modules/damopen_image_media_styles_preview/damopen_image_media_styles_preview.info.yml @@ -2,7 +2,7 @@ name: "Image media styles preview" type: module description: "Adds a style preview feature for Image media entities" -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' diff --git a/modules/damopen_image_media_styles_preview/src/Render/AssetPreviewListMarkup.php b/modules/damopen_image_media_styles_preview/src/Render/AssetPreviewListMarkup.php index 7735b62..1f74f52 100644 --- a/modules/damopen_image_media_styles_preview/src/Render/AssetPreviewListMarkup.php +++ b/modules/damopen_image_media_styles_preview/src/Render/AssetPreviewListMarkup.php @@ -3,10 +3,13 @@ namespace Drupal\damopen_image_media_styles_preview\Render; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Extension\ModuleExtensionList; +use Drupal\Core\File\FileUrlGeneratorInterface; use Drupal\Core\Form\FormBuilderInterface; use Drupal\Core\Image\ImageFactory; use Drupal\Core\Link; use Drupal\Core\Messenger\MessengerTrait; +use Drupal\Core\Render\RendererInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\Url; @@ -18,9 +21,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use function array_shift; use function array_values; -use function drupal_get_path; use function explode; -use function file_create_url; use function file_exists; use function file_get_contents; use function getimagesize; @@ -100,6 +101,27 @@ final class AssetPreviewListMarkup { */ protected $currentUser; + /** + * Module extension list. + * + * @var \Drupal\Core\Extension\ModuleExtensionList + */ + protected $moduleExtensionList; + + /** + * Url generator. + * + * @var \Drupal\Core\File\FileUrlGeneratorInterface + */ + protected $urlGenerator; + + /** + * Renderer. + * + * @var \Drupal\Core\Render\RendererInterface + */ + protected $renderer; + /** * Create a class instance. * @@ -119,7 +141,10 @@ public static function create(ContainerInterface $container): AssetPreviewListMa $container->get('form_builder'), $container->get('entity_type.manager'), $container->get('image.factory'), - $collectionHandler + $collectionHandler, + $container->get('extension.list.module'), + $container->get('file_url_generator'), + $container->get('renderer') ); } @@ -142,13 +167,19 @@ public function __construct( FormBuilderInterface $formBuilder, EntityTypeManagerInterface $entityTypeManager, ImageFactory $imageFactory, - $collectionHandler = NULL + $collectionHandler = NULL, + ModuleExtensionList $moduleExtensionList, + FileUrlGeneratorInterface $urlGenerator, + RendererInterface $renderer ) { $this->currentUser = $currentUser; $this->formBuilder = $formBuilder; $this->entityTypeManager = $entityTypeManager; $this->imageFactory = $imageFactory; $this->collectionHandler = $collectionHandler; + $this->moduleExtensionList = $moduleExtensionList; + $this->urlGenerator = $urlGenerator; + $this->renderer = $renderer; } /** @@ -167,15 +198,15 @@ protected function initCollectionHandler(): bool { } $this->currentCollection = $this->collectionHandler->loadCollectionForUser($this->currentUser->id()); - $modulePath = drupal_get_path('module', 'media_collection'); + $modulePath = $this->moduleExtensionList->getPath('media_collection'); if ($this->itemInCollectionIcon === NULL) { $this->itemInCollectionIcon = [ '#type' => 'html_tag', '#tag' => 'img', '#attributes' => [ - 'src' => Url::fromUri(file_create_url("{$modulePath}/assets/added-to-collection.png")) - ->getUri(), + 'src' => Url::fromUri($this->urlGenerator + ->generateAbsoluteString("{$modulePath}/assets/added-to-collection.png")), 'class' => [ 'icon--item-in-collection', ], @@ -188,8 +219,8 @@ protected function initCollectionHandler(): bool { '#type' => 'html_tag', '#tag' => 'img', '#attributes' => [ - 'src' => Url::fromUri(file_create_url("{$modulePath}/assets/plus-icon.svg")) - ->getUri(), + 'src' => Url::fromUri($this->urlGenerator + ->generateAbsoluteString("{$modulePath}/assets/plus-icon.svg")), 'class' => [ 'plus', ], @@ -241,7 +272,7 @@ public function render(MediaInterface $media): array { $form = $this->formBuilder->getForm(MediaAssetFilterForm::class); $build = [ - '#prefix' => render($form), + '#prefix' => $this->renderer->renderRoot($form), '#theme' => 'media_display_page', '#rows' => $derivativeImages, '#title' => $media->getName(), @@ -316,7 +347,8 @@ protected function getTableRows($imageUri, array $styles, MediaInterface $media) } } - $modulePath = drupal_get_path('module', 'damopen_image_media_styles_preview'); + $modulePath = $this->moduleExtensionList + ->getPath('damopen_image_media_styles_preview'); $rows = []; $rowNumber = 0; $controller = []; @@ -396,7 +428,7 @@ protected function getTableRows($imageUri, array $styles, MediaInterface $media) $this->t('Download'), 'damopen_assets_download.styled_asset_download', ['media' => $media->id(), 'style' => $style->id()], - [ + [ 'attributes' => [ 'class' => ['button', 'button--green'], 'target' => '_blank', diff --git a/modules/media_collection/media_collection.info.yml b/modules/media_collection/media_collection.info.yml index c1c4617..4e9ab42 100644 --- a/modules/media_collection/media_collection.info.yml +++ b/modules/media_collection/media_collection.info.yml @@ -2,7 +2,7 @@ name: 'Media collection' type: module description: 'Collection/Basket/Cart feature for media items.' -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' dependencies: diff --git a/modules/media_collection/media_collection.module b/modules/media_collection/media_collection.module index 0fb6183..4e59cd0 100644 --- a/modules/media_collection/media_collection.module +++ b/modules/media_collection/media_collection.module @@ -231,15 +231,18 @@ function media_collection_preprocess_media_collection(array &$variables) { ]; $collectionUser = $collection->getOwner(); - $assetsDir = drupal_get_path('module', 'media_collection') . '/assets'; + $assetsDir = \Drupal::service('extension.list.module') + ->getPath('media_collection') . '/assets'; + /** @var \Drupal\Core\Routing\UrlGeneratorInterface $url_generator */ + $url_generator = \Drupal::service('file_url_generator'); $variables['additional_collection_data']['data']['icons'] = [ 'regular' => [ - 'uri' => Url::fromUri(file_create_url("$assetsDir/collection-icon.png")) + 'uri' => $url_generator->generate("$assetsDir/collection-icon.png") ->getUri(), ], 'blue' => [ - 'uri' => Url::fromUri(file_create_url("$assetsDir/collection-icon-blue.png")) + 'uri' => $url_generator->generate("$assetsDir/collection-icon-blue.png") ->getUri(), ], ]; @@ -447,8 +450,12 @@ function media_collection_media_view_alter(array &$build, MediaInterface $media, $handler = Drupal::service('media_collection.collection_handler'); $collection = $handler->loadCollectionForUser($currentUser->id()); - $modulePath = drupal_get_path('module', 'media_collection'); + $modulePath = \Drupal::service('extension.list.module') + ->getPath('media_collection'); + /** @var \Drupal\Core\Url $url */ + $url = \Drupal::service('file_url_generator') + ->generate("{$modulePath}/assets/plus-icon.svg"); $collectionLink = [ '#type' => 'html_tag', '#tag' => 'span', @@ -467,8 +474,7 @@ function media_collection_media_view_alter(array &$build, MediaInterface $media, '#type' => 'html_tag', '#tag' => 'img', '#attributes' => [ - 'src' => Url::fromUri(file_create_url("{$modulePath}/assets/plus-icon.svg")) - ->getUri(), + 'src' => $url->getUri(), 'class' => [ 'plus', ], diff --git a/modules/media_collection/media_collection.services.yml b/modules/media_collection/media_collection.services.yml index af8c53b..a2e10e6 100644 --- a/modules/media_collection/media_collection.services.yml +++ b/modules/media_collection/media_collection.services.yml @@ -55,6 +55,8 @@ services: - '@string_translation' - '@media_collection.collection_handler' - '@current_user' + - '@extension.list.module' + - '@file_url_generator' media_collection.file_size_calculator: class: Drupal\media_collection\Service\FileSizeCalculator diff --git a/modules/media_collection/src/Service/HeaderMarkupGenerator.php b/modules/media_collection/src/Service/HeaderMarkupGenerator.php index 1f579f1..26ecbb4 100644 --- a/modules/media_collection/src/Service/HeaderMarkupGenerator.php +++ b/modules/media_collection/src/Service/HeaderMarkupGenerator.php @@ -3,11 +3,11 @@ namespace Drupal\media_collection\Service; use Drupal\Core\Cache\Cache; +use Drupal\Core\Extension\ModuleExtensionList; +use Drupal\Core\File\FileUrlGeneratorInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\StringTranslation\TranslationInterface; use Drupal\Core\Url; -use function drupal_get_path; -use function file_create_url; /** * Class HeaderMarkupGenerator. @@ -44,6 +44,20 @@ final class HeaderMarkupGenerator { */ private $currentUser; + /** + * Module extension list. + * + * @var \Drupal\Core\Extension\ModuleExtensionList + */ + protected $moduleExtensionList; + + /** + * File URL generator. + * + * @var \Drupal\Core\File\FileUrlGeneratorInterface + */ + protected $fileUrlGenerator; + /** * HeaderMarkupGenerator constructor. * @@ -57,13 +71,18 @@ final class HeaderMarkupGenerator { public function __construct( TranslationInterface $translation, CollectionHandler $handler, - AccountProxyInterface $currentUser + AccountProxyInterface $currentUser, + ModuleExtensionList $moduleExtensionList, + FileUrlGeneratorInterface $fileUrlGenerator ) { $this->translation = $translation; $this->collectionHandler = $handler; $this->currentUser = $currentUser; + $this->moduleExtensionList = $moduleExtensionList; + $this->fileUrlGenerator = $fileUrlGenerator; - $this->modulePath = drupal_get_path('module', 'media_collection'); + $this->modulePath = $this->moduleExtensionList + ->getPath('media_collection'); } /** @@ -219,7 +238,7 @@ private function cacheDefaults(): array { * Generated URI. */ private function generateFileUri($filePath): string { - return Url::fromUri(file_create_url($filePath))->getUri(); + return Url::fromUri($this->fileUrlGenerator->generate($filePath))->getUri(); } } diff --git a/modules/media_collection_share/media_collection_share.info.yml b/modules/media_collection_share/media_collection_share.info.yml index f8b553c..e90ad12 100644 --- a/modules/media_collection_share/media_collection_share.info.yml +++ b/modules/media_collection_share/media_collection_share.info.yml @@ -2,7 +2,7 @@ name: 'Media collection share' type: module description: 'Share feature for the media_collection module.' -core_version_requirement: ^9.1 +core_version_requirement: ^9.1 || ^10.0 package: 'Digital Assets Management' dependencies: diff --git a/modules/media_collection_share/media_collection_share.module b/modules/media_collection_share/media_collection_share.module index 0f18f53..99f0c36 100644 --- a/modules/media_collection_share/media_collection_share.module +++ b/modules/media_collection_share/media_collection_share.module @@ -101,16 +101,17 @@ function media_collection_share_preprocess_shared_media_collection(array &$varia $sharedCollection = $variables['content']['#shared_media_collection']; $collectionUser = $sharedCollection->getOwner(); - $assetsDir = drupal_get_path('module', 'media_collection') . '/assets'; + $assetsDir = \Drupal::service('extension.list.module') + ->getPath('media_collection') . '/assets'; $variables['additional_collection_data']['data']['icons'] = [ 'regular' => [ - 'uri' => Url::fromUri(file_create_url("$assetsDir/collection-icon.png")) - ->getUri(), + 'uri' => \Drupal::service('file_url_generator') + ->generate("$assetsDir/collection-icon.png")->getUri(), ], 'blue' => [ - 'uri' => Url::fromUri(file_create_url("$assetsDir/collection-icon-blue.png")) - ->getUri(), + 'uri' => \Drupal::service('file_url_generator') + ->generate("$assetsDir/collection-icon-blue.png")->getUri(), ], ];