PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 4.7.0
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v4.7.0
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
wp-optimize / vendor / rosell-dk / webp-convert / src / Convert / ConverterFactory.php

ConverterFactory.php in WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance 4.7.0, at vendor/rosell-dk/webp-convert/src/Convert/ConverterFactory.php

113 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WebPConvert\Convert;
4
5 use WebPConvert\Convert\Exceptions\ConversionFailed\InvalidInput\ConverterNotFoundException;
6 use WebPConvert\Convert\Converters\AbstractConverter;
7
8 /**
9 * Make converters from their ids.
10 *
11 * @package WebPConvert
12 * @author Bjørn Rosell <[email protected]>
13 * @since Class available since Release 2.0.0
14 */
15 class ConverterFactory
16 {
17 /**
18 * Get classname of a converter (by id)
19 *
20 * @param string $converterId Id of converter (ie "cwebp")
21 *
22 * @throws ConverterNotFoundException If there is no converter with that id.
23 * @return string Fully qualified class name of converter
24 */
25 public static function converterIdToClassname($converterId)
26 {
27 switch ($converterId) {
28 case 'ffmpeg':
29 $classNameShort = 'FFMpeg';
30 break;
31 case 'imagickbinary':
32 $classNameShort = 'ImagickBinary';
33 break;
34 case 'imagemagick':
35 $classNameShort = 'ImageMagick';
36 break;
37 case 'gmagickbinary':
38 $classNameShort = 'GmagickBinary';
39 break;
40 case 'graphicsmagick':
41 $classNameShort = 'GraphicsMagick';
42 break;
43 default:
44 $classNameShort = ucfirst($converterId);
45 }
46 $className = 'WebPConvert\\Convert\\Converters\\' . $classNameShort;
47 if (is_callable([$className, 'convert'])) {
48 return $className;
49 } else {
50 throw new ConverterNotFoundException('There is no converter with id:' . $converterId);
51 }
52 }
53
54 /**
55 * Make a converter instance by class name.
56 *
57 * @param string $converterClassName Fully qualified class name
58 * @param string $source The path to the file to convert
59 * @param string $destination The path to save the converted file to
60 * @param array $options (optional)
61 * @param \WebPConvert\Loggers\BaseLogger $logger (optional)
62 *
63 * @throws ConverterNotFoundException If the specified converter class isn't found
64 * @return AbstractConverter An instance of the specified converter
65 */
66 public static function makeConverterFromClassname(
67 $converterClassName,
68 $source,
69 $destination,
70 $options = [],
71 $logger = null
72 ) {
73 if (!is_callable([$converterClassName, 'convert'])) {
74 throw new ConverterNotFoundException(
75 'There is no converter with class name:' . $converterClassName . ' (or it is not a converter)'
76 );
77 }
78 //$converter = new $converterClassName($source, $destination, $options, $logger);
79
80 return call_user_func(
81 [$converterClassName, 'createInstance'],
82 $source,
83 $destination,
84 $options,
85 $logger
86 );
87 }
88
89 /**
90 * Make a converter instance by either id or class name.
91 *
92 * @param string $converterIdOrClassName Either a converter ID or a fully qualified class name
93 * @param string $source The path to the file to convert
94 * @param string $destination The path to save the converted file to
95 * @param array $options (optional)
96 * @param \WebPConvert\Loggers\BaseLogger $logger (optional)
97 *
98 * @throws ConverterNotFoundException If the specified converter class isn't found
99 * @return AbstractConverter An instance of the specified converter
100 */
101 public static function makeConverter($converterIdOrClassName, $source, $destination, $options = [], $logger = null)
102 {
103 // We take it that all lowercase means it is an id rather than a class name
104 if (strtolower($converterIdOrClassName) == $converterIdOrClassName) {
105 $converterClassName = self::converterIdToClassname($converterIdOrClassName);
106 } else {
107 $converterClassName = $converterIdOrClassName;
108 }
109
110 return self::makeConverterFromClassname($converterClassName, $source, $destination, $options, $logger);
111 }
112 }
113