PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 3.2.22
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v3.2.22
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 / Options / OptionFactory.php

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

97 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WebPConvert\Options;
4
5 use WebPConvert\Options\ArrayOption;
6 use WebPConvert\Options\BooleanOption;
7 use WebPConvert\Options\IntegerOption;
8 use WebPConvert\Options\IntegerOrNullOption;
9 use WebPConvert\Options\MetadataOption;
10 use WebPConvert\Options\StringOption;
11 use WebPConvert\Options\SensitiveStringOption;
12 use WebPConvert\Options\QualityOption;
13
14 /**
15 * Abstract option class
16 *
17 * @package WebPConvert
18 * @author Bjørn Rosell <[email protected]>
19 * @since Class available since Release 2.7.0
20 */
21 class OptionFactory
22 {
23
24 public static function createOption($optionName, $optionType, $def)
25 {
26 $option = null;
27 switch ($optionType) {
28 case 'int':
29 $minValue = (isset($def['minimum']) ? $def['minimum'] : null);
30 $maxValue = (isset($def['maximum']) ? $def['maximum'] : null);
31 unset($def['minimum']);
32 unset($def['maximum']);
33 if (isset($def['allow-null']) && $def['allow-null']) {
34 $option = new IntegerOrNullOption($optionName, $def['default'], $minValue, $maxValue);
35 } else {
36 if ($optionName == 'quality') {
37 $option = new QualityOption($optionName, $def['default']);
38 } else {
39 $option = new IntegerOption($optionName, $def['default'], $minValue, $maxValue);
40 }
41 }
42 break;
43
44 case 'string':
45 if ($optionName == 'metadata') {
46 $option = new MetadataOption($optionName, $def['default']);
47 } else {
48 $enum = (isset($def['enum']) ? $def['enum'] : null);
49 if (isset($def['sensitive']) && ($def['sensitive'] == true)) {
50 unset($def['sensitive']);
51 $option = new SensitiveStringOption($optionName, $def['default'], $enum);
52 } else {
53 $option = new StringOption($optionName, $def['default'], $enum);
54 }
55 }
56 break;
57
58 case 'boolean':
59 $option = new BooleanOption($optionName, $def['default']);
60 break;
61
62 case 'array':
63 if (isset($def['sensitive']) && ($def['sensitive'] == true)) {
64 $option = new SensitiveArrayOption($optionName, $def['default']);
65 } else {
66 $option = new ArrayOption($optionName, $def['default']);
67 }
68 break;
69 }
70 unset($def['default']);
71
72 if (!is_null($option)) {
73 if (isset($def['deprecated'])) {
74 $option->markDeprecated();
75 }
76 if (isset($def['ui'])) {
77 $option->setUI($def['ui']);
78 unset($def['ui']);
79 }
80 }
81 $option->setExtraSchemaDefs($def);
82 return $option;
83 }
84
85 public static function createOptions($def)
86 {
87 $result = [];
88 foreach ($def as $i => list($optionName, $optionType, $optionDef)) {
89 $option = self::createOption($optionName, $optionType, $optionDef);
90 if (!is_null($option)) {
91 $result[] = $option;
92 }
93 }
94 return $result;
95 }
96 }
97