PluginProbe
User Access Manager / trunk
User Access Manager vtrunk
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
← All changes | src/Config/MainConfig.php +97 -173 2.3.16trunk View file →
@@ -5,8 +5,10 @@
5 5 namespace UserAccessManager\Config;
6 6
7 7 use Exception;
8 8 use UserAccessManager\Cache\Cache;
9 +use UserAccessManager\Config\Parameter\ConfigParameter;
10 +use UserAccessManager\Config\Parameter\ConfigParameterFactory;
9 11 use UserAccessManager\Object\ObjectHandler;
10 12 use UserAccessManager\Wrapper\Wordpress;
11 13
12 14 class MainConfig extends Config
@@ -14,15 +16,8 @@
14 16 public const MAIN_CONFIG_KEY = 'uamAdminOptions';
15 17 public const DEFAULT_TYPE = 'default';
16 18 public const CACHE_PROVIDER_NONE = 'none';
17 19
18 - /**
19 - * MainConfig constructor.
20 - * @param Wordpress $wordpress
21 - * @param ObjectHandler $objectHandler
22 - * @param Cache $cache
23 - * @param ConfigParameterFactory $configParameterFactory
24 - */
25 20 public function __construct(
26 21 Wordpress $wordpress,
27 22 private ObjectHandler $objectHandler,
28 23 private Cache $cache,
@@ -33,63 +28,69 @@
33 28
34 29 /**
35 30 * @throws Exception
36 31 */
37 - private function addDefaultGeneralConfigParameters(array &$configParameters): void
32 + private function addBoolean(array &$configParameters, string $id, bool $defaultValue = false): void
38 33 {
39 - $id = 'redirect';
34 + $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, $defaultValue);
35 + }
36 +
37 + /**
38 + * @throws Exception
39 + */
40 + private function addString(array &$configParameters, string $id, string $defaultValue = ''): void
41 + {
42 + $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id, $defaultValue);
43 + }
44 +
45 + /**
46 + * @throws Exception
47 + */
48 + private function addSelection(
49 + array &$configParameters,
50 + string $id,
51 + string $defaultValue,
52 + array $selections
53 + ): void {
40 54 $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
41 55 $id,
56 + $defaultValue,
57 + $selections
58 + );
59 + }
60 +
61 + /**
62 + * @throws Exception
63 + */
64 + private function addDefaultGeneralConfigParameters(array &$configParameters): void
65 + {
66 + $this->addSelection(
67 + $configParameters,
68 + 'redirect',
42 69 'false',
43 70 ['false', 'blog', 'login', 'custom_page', 'custom_url', 'origin']
44 71 );
45 -
46 - $id = 'redirect_custom_page';
47 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id);
48 -
49 - $id = 'redirect_custom_url';
50 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id);
51 -
52 - $id = 'append_redirect_to_parameter';
53 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
54 -
55 - $id = 'lock_recursive';
56 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
57 -
58 - $id = 'authors_has_access_to_own';
59 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
60 -
61 - $id = 'authors_can_add_posts_to_groups';
62 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
63 -
64 - $id = 'blog_admin_hint';
65 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
66 -
67 - $id = 'blog_admin_hint_text';
68 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id, '[L]');
69 -
70 - $id = 'show_assigned_groups';
71 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
72 -
73 - $id = 'hide_edit_link_on_no_access';
74 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
75 -
76 - $id = 'extra_ip_header';
77 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id, 'HTTP_X_REAL_IP');
78 -
79 - $id = 'protect_feed';
80 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
81 -
82 - $id = 'full_access_role';
83 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
84 - $id,
72 + $this->addString($configParameters, 'redirect_custom_page');
73 + $this->addString($configParameters, 'redirect_custom_url');
74 + $this->addBoolean($configParameters, 'append_redirect_to_parameter');
75 + $this->addBoolean($configParameters, 'lock_recursive', true);
76 + $this->addBoolean($configParameters, 'authors_has_access_to_own', true);
77 + $this->addBoolean($configParameters, 'authors_can_add_posts_to_groups');
78 + $this->addBoolean($configParameters, 'blog_admin_hint', true);
79 + $this->addString($configParameters, 'blog_admin_hint_text', '[L]');
80 + $this->addBoolean($configParameters, 'show_assigned_groups', true);
81 + $this->addBoolean($configParameters, 'hide_edit_link_on_no_access', true);
82 + $this->addString($configParameters, 'extra_ip_header', 'HTTP_X_REAL_IP');
83 + $this->addBoolean($configParameters, 'protect_feed', true);
84 + $this->addSelection(
85 + $configParameters,
86 + 'full_access_role',
85 87 'administrator',
86 88 ['administrator', 'editor', 'author', 'contributor', 'subscriber']
87 89 );
88 -
89 - $id = 'active_cache_provider';
90 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
91 - $id,
90 + $this->addSelection(
91 + $configParameters,
92 + 'active_cache_provider',
92 93 self::CACHE_PROVIDER_NONE,
93 94 array_merge([self::CACHE_PROVIDER_NONE], array_keys($this->cache->getRegisteredCacheProviders()))
94 95 );
95 96 }
@@ -107,44 +108,23 @@
107 108 continue;
108 109 }
109 110
110 111 if ($postType !== self::DEFAULT_TYPE) {
111 - $id = "{$postType}_use_default";
112 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
112 + $this->addBoolean($configParameters, "{$postType}_use_default");
113 113 }
114 114
115 - $id = "hide_$postType";
116 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
117 -
118 - $id = "hide_{$postType}_title";
119 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
120 -
121 - $id = "{$postType}_title";
122 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter(
123 - $id,
124 - TXT_UAM_SETTING_DEFAULT_NO_RIGHTS
125 - );
126 -
127 - $id = "{$postType}_content";
128 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter(
129 - $id,
130 - TXT_UAM_SETTING_DEFAULT_NO_RIGHTS_FOR_ENTRY
131 - );
132 -
133 - $id = "hide_{$postType}_comment";
134 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
135 -
136 - $id = "{$postType}_comment_content";
137 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter(
138 - $id,
115 + $this->addBoolean($configParameters, "hide_$postType");
116 + $this->addBoolean($configParameters, "hide_{$postType}_title");
117 + $this->addString($configParameters, "{$postType}_title", TXT_UAM_SETTING_DEFAULT_NO_RIGHTS);
118 + $this->addString($configParameters, "{$postType}_content", TXT_UAM_SETTING_DEFAULT_NO_RIGHTS_FOR_ENTRY);
119 + $this->addBoolean($configParameters, "hide_{$postType}_comment");
120 + $this->addString(
121 + $configParameters,
122 + "{$postType}_comment_content",
139 123 TXT_UAM_SETTING_DEFAULT_NO_RIGHTS_FOR_COMMENTS
140 124 );
141 -
142 - $id = "{$postType}_comments_locked";
143 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
144 -
145 - $id = "show_{$postType}_content_before_more";
146 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
125 + $this->addBoolean($configParameters, "{$postType}_comments_locked");
126 + $this->addBoolean($configParameters, "show_{$postType}_content_before_more");
147 127 }
148 128 }
149 129
150 130 /**
@@ -156,14 +136,12 @@
156 136 array_unshift($taxonomies, self::DEFAULT_TYPE);
157 137
158 138 foreach ($taxonomies as $taxonomy) {
159 139 if ($taxonomy !== self::DEFAULT_TYPE) {
160 - $id = "{$taxonomy}_use_default";
161 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
140 + $this->addBoolean($configParameters, "{$taxonomy}_use_default");
162 141 }
163 142
164 - $id = 'hide_empty_' . $taxonomy;
165 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id, true);
143 + $this->addBoolean($configParameters, "hide_empty_$taxonomy", true);
166 144 }
167 145 }
168 146
169 147 /**
@@ -170,69 +148,20 @@
170 148 * @throws Exception
171 149 */
172 150 private function addDefaultFileConfigParameters(array &$configParameters): void
173 151 {
174 - $id = 'lock_file';
175 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
176 -
177 - $id = 'download_type';
178 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
179 - $id,
180 - 'fopen',
181 - ['xsendfile', 'fopen', 'normal']
182 - );
183 -
184 - $id = 'inline_files';
185 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id, 'pdf');
186 -
187 - $id = 'no_access_image_type';
188 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
189 - $id,
190 - 'default',
191 - ['default', 'custom']
192 - );
193 -
194 - $id = 'custom_no_access_image';
195 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id);
196 -
197 - $id = 'use_custom_file_handling_file';
198 - $configParameters[$id] = $this->configParameterFactory->createBooleanConfigParameter($id);
199 -
200 - $id = 'locked_directory_type';
201 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
202 - $id,
203 - 'wordpress',
204 - ['wordpress', 'all', 'custom']
205 - );
206 -
207 - $id = 'custom_locked_directories';
208 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter($id);
209 -
210 - $id = 'file_pass_type';
211 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
212 - $id,
213 - 'random',
214 - ['random', 'user']
215 - );
216 -
217 - $id = 'lock_file_types';
218 - $configParameters[$id] = $this->configParameterFactory->createSelectionConfigParameter(
219 - $id,
220 - 'all',
221 - ['all', 'selected', 'not_selected']
222 - );
223 -
224 - $id = 'locked_file_types';
225 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter(
226 - $id,
227 - 'zip,rar,tar,gz'
228 - );
229 -
230 - $id = 'not_locked_file_types';
231 - $configParameters[$id] = $this->configParameterFactory->createStringConfigParameter(
232 - $id,
233 - 'gif,jpg,jpeg,png'
234 - );
152 + $this->addBoolean($configParameters, 'lock_file');
153 + $this->addSelection($configParameters, 'download_type', 'fopen', ['xsendfile', 'fopen', 'normal']);
154 + $this->addString($configParameters, 'inline_files', 'pdf');
155 + $this->addSelection($configParameters, 'no_access_image_type', 'default', ['default', 'custom']);
156 + $this->addString($configParameters, 'custom_no_access_image');
157 + $this->addBoolean($configParameters, 'use_custom_file_handling_file');
158 + $this->addSelection($configParameters, 'locked_directory_type', 'wordpress', ['wordpress', 'all', 'custom']);
159 + $this->addString($configParameters, 'custom_locked_directories');
160 + $this->addSelection($configParameters, 'file_pass_type', 'random', ['random', 'user']);
161 + $this->addSelection($configParameters, 'lock_file_types', 'all', ['all', 'selected', 'not_selected']);
162 + $this->addString($configParameters, 'locked_file_types', 'zip,rar,tar,gz');
163 + $this->addString($configParameters, 'not_locked_file_types', 'gif,jpg,jpeg,png');
235 164 }
236 165
237 166 /**
238 167 * @return ConfigParameter[]
@@ -239,23 +168,23 @@
239 168 * @throws Exception
240 169 */
241 170 protected function getDefaultConfigParameters(): array
242 171 {
243 - if ($this->defaultConfigParameters === []) {
244 - /**
245 - * @var ConfigParameter[] $configParameters
246 - */
247 - $configParameters = [];
172 + if ($this->defaultConfigParameters !== []) {
173 + return $this->defaultConfigParameters;
174 + }
248 175
249 - $this->addDefaultGeneralConfigParameters($configParameters);
250 - $this->addDefaultPostConfigParameters($configParameters);
251 - $this->addDefaultTaxonomyConfigParameters($configParameters);
252 - $this->addDefaultFileConfigParameters($configParameters);
176 + /**
177 + * @var ConfigParameter[] $configParameters
178 + */
179 + $configParameters = [];
253 180
254 - $this->defaultConfigParameters = $configParameters;
255 - }
181 + $this->addDefaultGeneralConfigParameters($configParameters);
182 + $this->addDefaultPostConfigParameters($configParameters);
183 + $this->addDefaultTaxonomyConfigParameters($configParameters);
184 + $this->addDefaultFileConfigParameters($configParameters);
256 185
257 - return $this->defaultConfigParameters;
186 + return $this->defaultConfigParameters = $configParameters;
258 187 }
259 188
260 189 private function getObjectParameter(string $objectType, string $rawParameterName): ?ConfigParameter
261 190 {
@@ -260,29 +189,25 @@
260 189 private function getObjectParameter(string $objectType, string $rawParameterName): ?ConfigParameter
261 190 {
262 191 $options = $this->getConfigParameters();
263 192 $parameterName = sprintf($rawParameterName, $objectType);
193 + $useDefaultParameter = $options["{$objectType}_use_default"] ?? null;
264 194
265 - if (isset($options[$parameterName]) === false
266 - || isset($options["{$objectType}_use_default"]) === true
267 - && $options["{$objectType}_use_default"]->getValue() === true
268 - ) {
195 + if (isset($options[$parameterName]) === false || $useDefaultParameter?->getValue() === true) {
269 196 $parameterName = sprintf($rawParameterName, self::DEFAULT_TYPE);
270 197 }
271 198
272 - return (isset($options[$parameterName]) === true) ? $options[$parameterName] : null;
199 + return $options[$parameterName] ?? null;
273 200 }
274 201
275 202 private function hideObject(string $objectType, string $parameterName): bool
276 203 {
277 - $parameter = $this->getObjectParameter($objectType, $parameterName);
278 - return ($parameter !== null) ? $parameter->getValue() : true;
204 + return $this->getObjectParameter($objectType, $parameterName)?->getValue() ?? true;
279 205 }
280 206
281 207 private function getObjectContent(string $objectType, string $parameterName): bool|string
282 208 {
283 - $parameter = $this->getObjectParameter($objectType, $parameterName);
284 - return ($parameter !== null) ? $parameter->getValue() : '';
209 + return $this->getObjectParameter($objectType, $parameterName)?->getValue() ?? '';
285 210 }
286 211
287 212 public function hidePostType(string $postType): bool
288 213 {
@@ -440,10 +365,9 @@
440 365 }
441 366
442 367 public function hideEmptyTaxonomy(string $taxonomy): bool
443 368 {
444 - $parameter = $this->getObjectParameter($taxonomy, 'hide_empty_%s');
445 - return ($parameter !== null) ? $parameter->getValue() : false;
369 + return $this->getObjectParameter($taxonomy, 'hide_empty_%s')?->getValue() ?? false;
446 370 }
447 371
448 372 public function protectFeed(): bool
449 373 {