From 0c2fa3a065f9c27eb1e14be609ad5e3aad6a9caa Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 29 Dec 2023 21:26:41 +0100 Subject: [PATCH] [ticket/17279] Get iconify icons from assets folder PHPBB3-17279 --- .../default/container/services_assets.yml | 1 + phpBB/config/installer/container/services.yml | 1 + phpBB/phpbb/assets/iconify_bundler.php | 22 ++++++++++++++----- tests/assets/iconify_bundler_test.php | 20 +++++++++-------- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/phpBB/config/default/container/services_assets.yml b/phpBB/config/default/container/services_assets.yml index 37c2691b78..efc66cec49 100644 --- a/phpBB/config/default/container/services_assets.yml +++ b/phpBB/config/default/container/services_assets.yml @@ -10,3 +10,4 @@ services: shared: false arguments: - '@log' + - '%core.root_path%' diff --git a/phpBB/config/installer/container/services.yml b/phpBB/config/installer/container/services.yml index 50419bb915..73ad83a0c0 100644 --- a/phpBB/config/installer/container/services.yml +++ b/phpBB/config/installer/container/services.yml @@ -20,6 +20,7 @@ services: shared: false arguments: - ~ + - '%core.root_path%' cache.driver: class: '%cache.driver.class%' diff --git a/phpBB/phpbb/assets/iconify_bundler.php b/phpBB/phpbb/assets/iconify_bundler.php index 9bda03695c..2f4deff340 100644 --- a/phpBB/phpbb/assets/iconify_bundler.php +++ b/phpBB/phpbb/assets/iconify_bundler.php @@ -18,8 +18,8 @@ use phpbb\log\log_interface; class iconify_bundler { - /** @var log_interface */ - protected $log; + /** @var string Icons path */ + protected string $icons_path; /** @var string[] Icons list */ protected $icons_list = []; @@ -28,10 +28,11 @@ class iconify_bundler * Constructor for iconify bundler * * @param log_interface|null $log Logger + * @param string $root_path phpBB root path */ - public function __construct(?log_interface $log) + public function __construct(protected ?log_interface $log, string $root_path) { - $this->log = $log; + $this->icons_path = $root_path . 'assets/iconify/'; } /** @@ -206,6 +207,17 @@ class iconify_bundler return null; } + /** + * Get collection path for prefix + * + * @param string $prefix Icon collection prefix + * @return string Icon collection path + */ + protected function get_collection_path(string $prefix): string + { + return $this->icons_path . $prefix . '.json'; + } + /** * Load icons date for supplied icons array * @@ -220,7 +232,7 @@ class iconify_bundler { // Load icon set $collection = new Collection($prefix); - $collection_file = Collection::findIconifyCollection($prefix); + $collection_file = $this->get_collection_path($prefix); if (!file_exists($collection_file) || !$collection->loadFromFile($collection_file)) { $this->log?->add('critical', ANONYMOUS, '', 'LOG_ICON_COLLECTION_INVALID', false, [$prefix]); diff --git a/tests/assets/iconify_bundler_test.php b/tests/assets/iconify_bundler_test.php index 17b020ae21..6248fdce41 100644 --- a/tests/assets/iconify_bundler_test.php +++ b/tests/assets/iconify_bundler_test.php @@ -23,6 +23,8 @@ class iconify_bundler_test extends \phpbb_test_case public function setUp(): void { + global $phpbb_root_path; + $log = $this->getMockBuilder('\phpbb\log\dummy') ->onlyMethods(['add']) ->getMock(); @@ -31,7 +33,7 @@ class iconify_bundler_test extends \phpbb_test_case $this->log_content[] = $log_operation; }); - $this->bundler = new \phpbb\assets\iconify_bundler($log); + $this->bundler = new \phpbb\assets\iconify_bundler($log, $phpbb_root_path); } public function data_test_generate_bundle() @@ -42,8 +44,8 @@ class iconify_bundler_test extends \phpbb_test_case ['"prefix":"fa"', '"address-card-o"'], ], [ - ['fa:address-card-o', 'fa-regular:credit-card'], - ['"prefix":"fa"', '"address-card-o"', '"prefix":"fa-regular"', '"credit-card"'], + ['fa:address-card-o', 'ic:baseline-credit-card'], + ['"prefix":"fa"', '"address-card-o"', '"prefix":"ic"', '"baseline-credit-card"'], ], [ ['fa:address-card-o', 'fa:foo-bar'], @@ -51,16 +53,16 @@ class iconify_bundler_test extends \phpbb_test_case ['LOG_ICON_INVALID'], ], [ - ['fa:address-card-o', 'fa-regular:credit-card', 'fa-regular:credit-card'], - ['"prefix":"fa"', '"address-card-o"', '"prefix":"fa-regular"', '"credit-card"'], + ['fa:address-card-o', 'ic:baseline-credit-card', 'ic:baseline-credit-card'], + ['"prefix":"fa"', '"address-card-o"', '"prefix":"ic"', '"baseline-credit-card"'], ], [ - ['fa:address-card-o', 'fa-regular:credit-card', 'fa-regular:angry'], - ['"prefix":"fa"', '"address-card-o"', '"prefix":"fa-regular"', '"credit-card"', '"angry"'], + ['fa:address-card-o', 'ic:baseline-credit-card', 'ic:baseline-add-ic-call'], + ['"prefix":"fa"', '"address-card-o"', '"prefix":"ic"', '"baseline-credit-card"', '"baseline-add-ic-call"'], ], [ - ['fa:address-card-o', 'fa:bell', 'fa-regular:credit-card', 'fa-regular:angry'], - ['"prefix":"fa"', '"address-card-o"', '"bell"', '"prefix":"fa-regular"', '"credit-card"', '"angry"'], + ['fa:address-card-o', 'fa:bell', 'ic:baseline-credit-card', 'ic:baseline-add-ic-call'], + ['"prefix":"fa"', '"address-card-o"', '"bell"', '"prefix":"ic"', '"baseline-credit-card"', '"baseline-add-ic-call"'], ], [ ['@test'],