PluginProbe
JCH Optimize / trunk
JCH Optimize vtrunk
6.0.2 6.0.1 trunk 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.10.0 2.2.0 2.2.1 All 58 releases
jch-optimize / lib / src / Service / Provider / OptimizeImages.php

OptimizeImages.php in JCH Optimize trunk, at lib/src/Service/Provider/OptimizeImages.php

94 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * JCH Optimize - Performs several front-end optimizations for fast downloads
5 *
6 * @package jchoptimize/core
7 * @author Samuel Marshall <samuel@jch-optimize.net>
8 * @copyright Copyright (c) 2026 Samuel Marshall / JCH Optimize
9 * @license GNU/GPLv3, or later. See LICENSE file
10 *
11 * If LICENSE file missing, see <http://www.gnu.org/licenses/>.
12 */
13
14 namespace JchOptimize\Core\Service\Provider;
15
16 use _JchOptimizeVendor\V91\Joomla\DI\Container;
17 use _JchOptimizeVendor\V91\Joomla\DI\ServiceProviderInterface;
18 use _JchOptimizeVendor\V91\Psr\Log\LoggerInterface;
19 use JchOptimize\Container\ContainerFactory;
20 use JchOptimize\Core\Admin\AdminHelper;
21 use JchOptimize\Core\Admin\API\OptimizeImages\ClockInterface;
22 use JchOptimize\Core\Admin\API\OptimizeImages\HtmlCrawlerInterface as OptimizeImagesHtmlCrawlerInterface;
23 use JchOptimize\Core\Admin\API\OptimizeImages\ImageOptimizationBatchBuilder;
24 use JchOptimize\Core\Admin\API\OptimizeImages\ImageOptimizationBatchConfig;
25 use JchOptimize\Core\Admin\API\OptimizeImages\ImageOptimizationRequestFactory;
26 use JchOptimize\Core\Admin\API\OptimizeImages\ImagesFromHtml;
27 use JchOptimize\Core\Admin\API\OptimizeImages\ImagesFromHtmlInterface;
28 use JchOptimize\Core\Admin\API\OptimizeImages\ProcessImagesQueueFactory;
29 use JchOptimize\Core\Admin\API\OptimizeImages\SpatieHtmlCrawler;
30 use JchOptimize\Core\Admin\API\OptimizeImages\SystemClock;
31 use JchOptimize\Core\Platform\PathsInterface;
32 use JchOptimize\Core\Registry;
33
34 class OptimizeImages implements ServiceProviderInterface
35 {
36 /**
37 * @inheritDoc
38 */
39 public function register(Container $container): void
40 {
41 $container->share(OptimizeImagesHtmlCrawlerInterface::class, [$this, 'getOptimizeImagesHtmlCrawlerService']);
42 $container->share(ImagesFromHtmlInterface::class, [$this, 'getImagesFromHtmlService']);
43 $container->share(ProcessImagesQueueFactory::class, [$this, 'getProcessImagesQueueFactoryService']);
44 $container->share(ImageOptimizationRequestFactory::class, [$this, 'getImageOptimizationRequestFactoryService']);
45 $container->share(ClockInterface::class, fn(): ClockInterface => new SystemClock());
46 $container->share(
47 ImageOptimizationBatchConfig::class,
48 fn(): ImageOptimizationBatchConfig => new ImageOptimizationBatchConfig()
49 );
50 $container->share(ImageOptimizationBatchBuilder::class, [$this, 'getImageOptimizationBatchBuilderService']);
51 }
52
53 public function getOptimizeImagesHtmlCrawlerService(Container $container): OptimizeImagesHtmlCrawlerInterface
54 {
55 return new SpatieHtmlCrawler(
56 $container->get(LoggerInterface::class)
57 );
58 }
59
60 public function getImagesFromHtmlService(Container $container): ImagesFromHtmlInterface
61 {
62 return new ImagesFromHtml(
63 fn(): Container => ContainerFactory::create(),
64 $container->get(Registry::class),
65 $container->get(AdminHelper::class)
66 );
67 }
68
69 public function getProcessImagesQueueFactoryService(Container $container): ProcessImagesQueueFactory
70 {
71 return new ProcessImagesQueueFactory($container);
72 }
73
74 public function getImageOptimizationRequestFactoryService(Container $container): ImageOptimizationRequestFactory
75 {
76 return new ImageOptimizationRequestFactory(
77 $container->get(AdminHelper::class)
78 );
79 }
80
81 public function getImageOptimizationBatchBuilderService(Container $container): ImageOptimizationBatchBuilder
82 {
83 return new ImageOptimizationBatchBuilder(
84 $container->get(ProcessImagesQueueFactory::class),
85 $container->get(ImageOptimizationRequestFactory::class),
86 $container->get(ClockInterface::class),
87 $container->get(ImageOptimizationBatchConfig::class),
88 $container->get(AdminHelper::class),
89 $container->get(PathsInterface::class),
90 $container->get(LoggerInterface::class)
91 );
92 }
93 }
94