PluginProbe
User Access Manager / 2.2.16
User Access Manager v2.2.16
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
user-access-manager / src / UserAccessManager.php

UserAccessManager.php in User Access Manager 2.2.16, at src/UserAccessManager.php

762 lines 25.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * UserAccessManager.php
4 *
5 * The UserAccessManager class file.
6 *
7 * PHP versions 5
8 *
9 * @author Alexander Schneider <alexanderschneider85@gmail.com>
10 * @copyright 2008-2017 Alexander Schneider
11 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
12 * @version SVN: $id$
13 * @link http://wordpress.org/extend/plugins/user-access-manager/
14 */
15
16 declare(strict_types=1);
17
18 namespace UserAccessManager;
19
20 use UserAccessManager\Access\AccessHandler;
21 use UserAccessManager\Cache\Cache;
22 use UserAccessManager\Cache\CacheProviderFactory;
23 use UserAccessManager\Config\ConfigFactory;
24 use UserAccessManager\Config\MainConfig;
25 use UserAccessManager\Config\ConfigParameterFactory;
26 use UserAccessManager\Controller\Backend\DynamicGroupsController;
27 use UserAccessManager\Controller\Backend\PostObjectController;
28 use UserAccessManager\Controller\Backend\TermObjectController;
29 use UserAccessManager\Controller\Backend\UserObjectController;
30 use UserAccessManager\Controller\ControllerFactory;
31 use UserAccessManager\Database\Database;
32 use UserAccessManager\File\FileHandler;
33 use UserAccessManager\File\FileObjectFactory;
34 use UserAccessManager\File\FileProtectionFactory;
35 use UserAccessManager\Object\ObjectHandler;
36 use UserAccessManager\ObjectMembership\ObjectMembershipHandlerFactory;
37 use UserAccessManager\Setup\SetupHandler;
38 use UserAccessManager\UserGroup\UserGroupFactory;
39 use UserAccessManager\User\UserHandler;
40 use UserAccessManager\UserGroup\UserGroupHandler;
41 use UserAccessManager\Util\Util;
42 use UserAccessManager\Widget\WidgetFactory;
43 use UserAccessManager\Wrapper\Php;
44 use UserAccessManager\Wrapper\Wordpress;
45
46 /**
47 * Class UserAccessManager
48 *
49 * @package UserAccessManager
50 */
51 class UserAccessManager
52 {
53 const VERSION = '2.2.16';
54 const DB_VERSION = '1.6.1';
55
56 /**
57 * @var Php
58 */
59 private $php;
60
61 /**
62 * @var Wordpress
63 */
64 private $wordpress;
65
66 /**
67 * @var Util
68 */
69 private $util;
70
71 /**
72 * @var Cache
73 */
74 private $cache;
75
76 /**
77 * @var MainConfig
78 */
79 private $config;
80
81 /**
82 * @var Database
83 */
84 private $database;
85
86 /**
87 * @var ObjectHandler
88 */
89 private $objectHandler;
90
91 /**
92 * @var UserHandler
93 */
94 private $userHandler;
95
96 /**
97 * @var UserGroupHandler
98 */
99 private $userGroupHandler;
100
101 /**
102 * @var AccessHandler
103 */
104 private $accessHandler;
105
106 /**
107 * @var FileHandler
108 */
109 private $fileHandler;
110
111 /**
112 * @var SetupHandler
113 */
114 private $setupHandler;
115
116 /**
117 * @var UserGroupFactory
118 */
119 private $userGroupFactory;
120
121 /**
122 * @var ObjectMembershipHandlerFactory
123 */
124 private $membershipHandlerFactory;
125
126 /**
127 * @var ControllerFactory
128 */
129 private $controllerFactory;
130
131 /**
132 * @var WidgetFactory
133 */
134 private $widgetFactory;
135
136 /**
137 * @var CacheProviderFactory
138 */
139 private $cacheProviderFactory;
140
141 /**
142 * @var ConfigFactory
143 */
144 private $configFactory;
145
146 /**
147 * @var ConfigParameterFactory
148 */
149 private $configParameterFactory;
150
151 /**
152 * @var FileProtectionFactory
153 */
154 private $fileProtectionFactory;
155
156 /**
157 * @var FileObjectFactory
158 */
159 private $fileObjectFactory;
160
161 /**
162 * UserAccessManager constructor.
163 * @param Php $php
164 * @param Wordpress $wordpress
165 * @param Util $util
166 * @param Cache $cache
167 * @param MainConfig $config
168 * @param Database $database
169 * @param ObjectHandler $objectHandler
170 * @param UserHandler $userHandler
171 * @param UserGroupHandler $userGroupHandler
172 * @param AccessHandler $accessHandler
173 * @param FileHandler $fileHandler
174 * @param SetupHandler $setupHandler
175 * @param UserGroupFactory $userGroupFactory
176 * @param ObjectMembershipHandlerFactory $membershipHandlerFactory
177 * @param ControllerFactory $controllerFactory
178 * @param WidgetFactory $widgetFactory
179 * @param CacheProviderFactory $cacheProviderFactory
180 * @param ConfigFactory $configFactory
181 * @param ConfigParameterFactory $configParameterFactory
182 * @param FileProtectionFactory $fileProtectionFactory
183 * @param FileObjectFactory $fileObjectFactory
184 */
185 public function __construct(
186 Php $php,
187 Wordpress $wordpress,
188 Util $util,
189 Cache $cache,
190 MainConfig $config,
191 Database $database,
192 ObjectHandler $objectHandler,
193 UserHandler $userHandler,
194 UserGroupHandler $userGroupHandler,
195 AccessHandler $accessHandler,
196 FileHandler $fileHandler,
197 SetupHandler $setupHandler,
198 UserGroupFactory $userGroupFactory,
199 ObjectMembershipHandlerFactory $membershipHandlerFactory,
200 ControllerFactory $controllerFactory,
201 WidgetFactory $widgetFactory,
202 CacheProviderFactory $cacheProviderFactory,
203 ConfigFactory $configFactory,
204 ConfigParameterFactory $configParameterFactory,
205 FileProtectionFactory $fileProtectionFactory,
206 FileObjectFactory $fileObjectFactory
207 ) {
208 $this->php = $php;
209 $this->wordpress = $wordpress;
210 $this->util = $util;
211 $this->cache = $cache;
212 $this->config = $config;
213 $this->database = $database;
214 $this->objectHandler = $objectHandler;
215 $this->userHandler = $userHandler;
216 $this->userGroupHandler = $userGroupHandler;
217 $this->accessHandler = $accessHandler;
218 $this->fileHandler = $fileHandler;
219 $this->setupHandler = $setupHandler;
220 $this->userGroupFactory = $userGroupFactory;
221 $this->membershipHandlerFactory = $membershipHandlerFactory;
222 $this->controllerFactory = $controllerFactory;
223 $this->widgetFactory = $widgetFactory;
224 $this->cacheProviderFactory = $cacheProviderFactory;
225 $this->configFactory = $configFactory;
226 $this->configParameterFactory = $configParameterFactory;
227 $this->fileProtectionFactory = $fileProtectionFactory;
228 $this->fileObjectFactory = $fileObjectFactory;
229
230 $this->cache->setActiveCacheProvider($this->config->getActiveCacheProvider());
231 }
232
233 /**
234 * @return Php
235 */
236 public function getPhp(): Php
237 {
238 return $this->php;
239 }
240
241 /**
242 * @return Wordpress
243 */
244 public function getWordpress(): Wordpress
245 {
246 return $this->wordpress;
247 }
248
249 /**
250 * @return Util
251 */
252 public function getUtil(): Util
253 {
254 return $this->util;
255 }
256
257 /**
258 * @return Cache
259 */
260 public function getCache(): Cache
261 {
262 return $this->cache;
263 }
264
265 /**
266 * @return MainConfig
267 */
268 public function getConfig(): MainConfig
269 {
270 return $this->config;
271 }
272
273 /**
274 * @return Database
275 */
276 public function getDatabase(): Database
277 {
278 return $this->database;
279 }
280
281 /**
282 * @return ObjectHandler
283 */
284 public function getObjectHandler(): ObjectHandler
285 {
286 return $this->objectHandler;
287 }
288
289 /**
290 * @return UserHandler
291 */
292 public function getUserHandler(): UserHandler
293 {
294 return $this->userHandler;
295 }
296
297 /**
298 * @return UserGroupHandler
299 */
300 public function getUserGroupHandler(): UserGroupHandler
301 {
302 return $this->userGroupHandler;
303 }
304
305 /**
306 * @return AccessHandler
307 */
308 public function getAccessHandler(): AccessHandler
309 {
310 return $this->accessHandler;
311 }
312
313 /**
314 * @return FileHandler
315 */
316 public function getFileHandler(): FileHandler
317 {
318 return $this->fileHandler;
319 }
320
321 /**
322 * @return SetupHandler
323 */
324 public function getSetupHandler(): SetupHandler
325 {
326 return $this->setupHandler;
327 }
328
329 /**
330 * @return UserGroupFactory
331 */
332 public function getUserGroupFactory(): UserGroupFactory
333 {
334 return $this->userGroupFactory;
335 }
336
337 /**
338 * @return ObjectMembershipHandlerFactory
339 */
340 public function getObjectMembershipHandlerFactory(): ObjectMembershipHandlerFactory
341 {
342 return $this->membershipHandlerFactory;
343 }
344
345 /**
346 * @return ControllerFactory
347 */
348 public function getControllerFactory(): ControllerFactory
349 {
350 return $this->controllerFactory;
351 }
352
353 /**
354 * @return WidgetFactory
355 */
356 public function getWidgetFactory(): WidgetFactory
357 {
358 return $this->widgetFactory;
359 }
360
361 /**
362 * @return CacheProviderFactory
363 */
364 public function getCacheProviderFactory(): CacheProviderFactory
365 {
366 return $this->cacheProviderFactory;
367 }
368
369 /**
370 * @return ConfigFactory
371 */
372 public function getConfigFactory(): ConfigFactory
373 {
374 return $this->configFactory;
375 }
376
377 /**
378 * @return ConfigParameterFactory
379 */
380 public function getConfigParameterFactory(): ConfigParameterFactory
381 {
382 return $this->configParameterFactory;
383 }
384
385 /**
386 * @return FileProtectionFactory
387 */
388 public function getFileProtectionFactory(): FileProtectionFactory
389 {
390 return $this->fileProtectionFactory;
391 }
392
393 /**
394 * @return FileObjectFactory
395 */
396 public function getFileObjectFactory(): FileObjectFactory
397 {
398 return $this->fileObjectFactory;
399 }
400
401 /**
402 * Resister the administration menu.
403 */
404 public function registerAdminMenu()
405 {
406 if ($this->userHandler->checkUserAccess() === true) {
407 //TODO
408 /**
409 * --- BOF ---
410 * Not the best way to handle full user access. Capabilities seems
411 * to be the right way, but it is way difficult.
412 */
413 //Admin main menu
414 $this->wordpress->addMenuPage(
415 'User Access Manager',
416 'UAM',
417 'manage_options',
418 'uam_user_group',
419 null,
420 'div'
421 );
422
423 //Admin sub menus
424 $backendUserGroupController = $this->controllerFactory->createBackendUserGroupController();
425 $this->wordpress->addSubmenuPage(
426 'uam_user_group',
427 TXT_UAM_MANAGE_GROUP,
428 TXT_UAM_MANAGE_GROUP,
429 'read',
430 'uam_user_group',
431 [$backendUserGroupController, 'render']
432 );
433
434 $backendSettingsController = $this->controllerFactory->createBackendSettingsController();
435 $this->wordpress->addSubmenuPage(
436 'uam_user_group',
437 TXT_UAM_SETTINGS,
438 TXT_UAM_SETTINGS,
439 'read',
440 'uam_settings',
441 [$backendSettingsController, 'render']
442 );
443
444 $backendSetupController = $this->controllerFactory->createBackendSetupController();
445 $this->wordpress->addSubmenuPage(
446 'uam_user_group',
447 TXT_UAM_SETUP,
448 TXT_UAM_SETUP,
449 'read',
450 'uam_setup',
451 [$backendSetupController, 'render']
452 );
453
454 $backendAboutController = $this->controllerFactory->createBackendAboutController();
455 $this->wordpress->addSubmenuPage(
456 'uam_user_group',
457 TXT_UAM_ABOUT,
458 TXT_UAM_ABOUT,
459 'read',
460 'uam_about',
461 [$backendAboutController, 'render']
462 );
463
464 $this->wordpress->doAction('uam_add_sub_menu');
465
466 /**
467 * --- EOF ---
468 */
469 }
470 }
471
472 /**
473 * Adds the backend filters.
474 * @param DynamicGroupsController $dynamicGroupController
475 * @param PostObjectController $postObjectController
476 * @param TermObjectController $termObjectController
477 * @param UserObjectController $userObjectController
478 * @param array $taxonomies
479 */
480 private function addAdminActions(
481 DynamicGroupsController $dynamicGroupController,
482 PostObjectController $postObjectController,
483 TermObjectController $termObjectController,
484 UserObjectController $userObjectController,
485 array $taxonomies
486 ) {
487 $this->wordpress->addAction(
488 'manage_posts_custom_column',
489 [$postObjectController, 'addPostColumn'],
490 10,
491 2
492 );
493 $this->wordpress->addAction(
494 'manage_pages_custom_column',
495 [$postObjectController, 'addPostColumn'],
496 10,
497 2
498 );
499 $this->wordpress->addAction('save_post', [$postObjectController, 'savePostData']);
500 $this->wordpress->addAction('add_attachment', [$postObjectController, 'addAttachment']);
501 $this->wordpress->addAction('edit_user_profile', [$userObjectController, 'showUserProfile']);
502 $this->wordpress->addAction('user_new_form', [$userObjectController, 'showUserProfile']);
503 $this->wordpress->addAction('user_register', [$userObjectController, 'saveUserData']);
504 $this->wordpress->addAction('profile_update', [$userObjectController, 'saveUserData']);
505
506 $this->wordpress->addAction('bulk_edit_custom_box', [$postObjectController, 'addBulkAction']);
507 $this->wordpress->addAction('create_term', [$termObjectController, 'saveTermData']);
508 $this->wordpress->addAction('edit_term', [$termObjectController, 'saveTermData']);
509
510 //Taxonomies
511 foreach ($taxonomies as $taxonomy) {
512 $this->wordpress->addAction(
513 'manage_'.$taxonomy.'_custom_column',
514 [$termObjectController, 'addTermColumn'],
515 10,
516 3
517 );
518 $this->wordpress->addAction(
519 $taxonomy.'_add_form_fields',
520 [$termObjectController, 'showTermEditForm']
521 );
522 $this->wordpress->addAction(
523 $taxonomy.'_edit_form_fields',
524 [$termObjectController, 'showTermEditForm']
525 );
526 }
527
528 if ($this->config->lockFile() === true) {
529 $this->wordpress->addAction(
530 'manage_media_custom_column',
531 [$postObjectController, 'addPostColumn'],
532 10,
533 2
534 );
535 $this->wordpress->addAction(
536 'attachment_fields_to_edit',
537 [$postObjectController, 'showMediaFile'],
538 10,
539 2
540 );
541 $this->wordpress->addAction(
542 'wp_ajax_save-attachment-compat',
543 [$postObjectController, 'saveAjaxAttachmentData'],
544 1,
545 9
546 );
547 }
548
549 //Admin ajax actions
550 $this->wordpress->addAction(
551 'wp_ajax_uam-get-dynamic-group',
552 [$dynamicGroupController, 'getDynamicGroupsForAjax']
553 );
554 }
555
556 /**
557 * Adds the admin filters.
558 * @param PostObjectController $postObjectController
559 * @param TermObjectController $termObjectController
560 * @param UserObjectController $userObjectController
561 * @param array $taxonomies
562 */
563 private function addAdminFilters(
564 PostObjectController $postObjectController,
565 TermObjectController $termObjectController,
566 UserObjectController $userObjectController,
567 array $taxonomies
568 ) {
569 //The filter we use instead of add|edit_attachment action, reason see top
570 $this->wordpress->addFilter('attachment_fields_to_save', [$postObjectController, 'saveAttachmentData']);
571
572 $this->wordpress->addFilter('manage_posts_columns', [$postObjectController, 'addPostColumnsHeader']);
573 $this->wordpress->addFilter('manage_pages_columns', [$postObjectController, 'addPostColumnsHeader']);
574
575 $this->wordpress->addFilter('manage_users_columns', [$userObjectController, 'addUserColumnsHeader']);
576 $this->wordpress->addFilter(
577 'manage_users_custom_column',
578 [$userObjectController, 'addUserColumn'],
579 10,
580 3
581 );
582
583 foreach ($taxonomies as $taxonomy) {
584 $this->wordpress->addFilter(
585 'manage_edit-'.$taxonomy.'_columns',
586 [$termObjectController, 'addTermColumnsHeader']
587 );
588 }
589
590 if ($this->config->lockFile() === true) {
591 $this->wordpress->addFilter('manage_media_columns', [$postObjectController, 'addPostColumnsHeader']);
592 }
593 }
594
595 /**
596 * Adds the admin meta boxes.
597 * @param PostObjectController $postObjectController
598 */
599 private function addAdminMetaBoxes(PostObjectController $postObjectController)
600 {
601 $postTypes = $this->objectHandler->getPostTypes();
602
603 foreach ($postTypes as $postType) {
604 // there is no need for a meta box for attachments if files are locked
605 if ($postType === ObjectHandler::ATTACHMENT_OBJECT_TYPE && $this->config->lockFile() !== true) {
606 continue;
607 }
608
609 $this->wordpress->addMetaBox(
610 'uam_post_access',
611 TXT_UAM_COLUMN_ACCESS,
612 [$postObjectController, 'editPostContent'],
613 $postType,
614 'side'
615 );
616 }
617 }
618
619 /**
620 * Register the admin actions and filters
621 * @throws UserGroup\UserGroupTypeException
622 */
623 public function registerAdminActionsAndFilters()
624 {
625 $backendController = $this->controllerFactory->createBackendController();
626 $this->wordpress->addAction('admin_enqueue_scripts', [$backendController, 'enqueueStylesAndScripts']);
627 $this->wordpress->addAction('wp_dashboard_setup', [$backendController, 'setupAdminDashboard']);
628 $this->wordpress->addAction('admin_notices', [$backendController, 'showAdminNotice']);
629
630 $taxonomies = $this->objectHandler->getTaxonomies();
631 $taxonomy = $backendController->getRequestParameter('taxonomy');
632
633 if ($taxonomy !== null) {
634 $taxonomies[$taxonomy] = $taxonomy;
635 }
636
637 $objectController = $this->controllerFactory->createBackendObjectController();
638 $postObjectController = $this->controllerFactory->createBackendPostObjectController();
639 $termObjectController = $this->controllerFactory->createBackendTermObjectController();
640 $userObjectController = $this->controllerFactory->createBackendUserObjectController();
641 $dynamicGroupController = $this->controllerFactory->createBackendDynamicGroupsController();
642
643 if ($this->userHandler->checkUserAccess() === true
644 || $this->config->authorsCanAddPostsToGroups() === true
645 ) {
646 //Admin actions
647 $this->addAdminActions(
648 $dynamicGroupController,
649 $postObjectController,
650 $termObjectController,
651 $userObjectController,
652 $taxonomies
653 );
654
655 //Admin filters
656 $this->addAdminFilters(
657 $postObjectController,
658 $termObjectController,
659 $userObjectController,
660 $taxonomies
661 );
662
663 //Admin meta boxes
664 $this->addAdminMetaBoxes($postObjectController);
665 }
666
667 //Clean up at deleting should always be done.
668 $this->wordpress->addAction('delete_post', [$postObjectController, 'removePostData']);
669 $this->wordpress->addAction('delete_attachment', [$postObjectController, 'removePostData']);
670 $this->wordpress->addAction('delete_user', [$userObjectController, 'removeUserData']);
671 $this->wordpress->addAction('delete_term', [$termObjectController, 'removeTermData']);
672
673 $objectController->checkRightsToEditContent();
674 }
675
676 /**
677 * Adds the actions and filers.
678 */
679 public function addActionsAndFilters()
680 {
681 //Actions
682 $this->wordpress->addAction('admin_menu', [$this, 'registerAdminMenu']);
683 $this->wordpress->addAction('admin_init', [$this, 'registerAdminActionsAndFilters']);
684 $this->wordpress->addAction('registered_post_type', [$this->objectHandler, 'registeredPostType'], 10, 2);
685 $this->wordpress->addAction('registered_taxonomy', [$this->objectHandler, 'registeredTaxonomy'], 10, 3);
686 $this->wordpress->addAction('registered_post_type', [$this->config, 'flushConfigParameters']);
687 $this->wordpress->addAction('registered_taxonomy', [$this->config, 'flushConfigParameters']);
688
689 // General frontend controller
690 $frontendController = $this->controllerFactory->createFrontendController();
691
692 $this->wordpress->addAction('wp_enqueue_scripts', [$frontendController, 'enqueueStylesAndScripts']);
693 $this->wordpress->addFilter('get_ancestors', [$frontendController, 'showAncestors'], 20, 4);
694 $this->wordpress->addFilter('wpseo_sitemap_entry', [$frontendController, 'getWpSeoUrl'], 1, 3);
695
696 // Post controller
697 $frontendPostController = $this->controllerFactory->createFrontendPostController();
698
699 $this->wordpress->addFilter('posts_pre_query', [$frontendPostController, 'postsPreQuery'], 10, 2);
700 $this->wordpress->addFilter('the_posts', [$frontendPostController, 'showPosts'], 9);
701 $this->wordpress->addFilter('get_attached_file', [$frontendPostController, 'getAttachedFile'], 10, 2);
702 $this->wordpress->addFilter('posts_where_paged', [$frontendPostController, 'showPostSql']);
703 $this->wordpress->addFilter('comments_array', [$frontendPostController, 'showComment']);
704 $this->wordpress->addFilter('the_comments', [$frontendPostController, 'showComment']);
705 $this->wordpress->addFilter('get_pages', [$frontendPostController, 'showPages'], 20);
706 $this->wordpress->addFilter('get_next_post_where', [$frontendPostController, 'showNextPreviousPost']);
707 $this->wordpress->addFilter('get_previous_post_where', [$frontendPostController, 'showNextPreviousPost']);
708 $this->wordpress->addFilter('edit_post_link', [$frontendPostController, 'showEditLink'], 10, 2);
709 $this->wordpress->addFilter('parse_query', [$frontendPostController, 'parseQuery']);
710 $this->wordpress->addFilter('getarchives_where', [$frontendPostController, 'showPostSql']);
711 $this->wordpress->addFilter('wp_count_posts', [$frontendPostController, 'showPostCount'], 10, 3);
712
713 // Short code controller
714 $frontendShortCodeController = $this->controllerFactory->createFrontendShortCodeController();
715
716 $this->wordpress->addShortCode('LOGIN_FORM', [$frontendShortCodeController, 'loginFormShortCode']); // Legacy
717 $this->wordpress->addShortCode('uam_login_form', [$frontendShortCodeController, 'loginFormShortCode']);
718 $this->wordpress->addShortCode('uam_public', [$frontendShortCodeController, 'publicShortCode']);
719 $this->wordpress->addShortCode('uam_private', [$frontendShortCodeController, 'privateShortCode']);
720
721 // Term controller
722 $frontendTermController = $this->controllerFactory->createFrontendTermController();
723
724 $this->wordpress->addFilter('get_terms_args', [$frontendTermController, 'getTermArguments']);
725 $this->wordpress->addFilter('get_terms', [$frontendTermController, 'showTerms'], 20);
726 $this->wordpress->addFilter('get_term', [$frontendTermController, 'showTerm'], 20, 2);
727 $this->wordpress->addFilter('wp_get_nav_menu_items', [$frontendTermController, 'showCustomMenu']);
728
729 // Redirect controller
730 $frontendRedirectController = $this->controllerFactory->createFrontendRedirectController();
731
732 $this->wordpress->addFilter('wp_get_attachment_thumb_url', [$frontendRedirectController, 'getFileUrl'], 10, 2);
733 $this->wordpress->addFilter('wp_get_attachment_url', [$frontendRedirectController, 'getFileUrl'], 10, 2);
734 $this->wordpress->addFilter('post_link', [$frontendRedirectController, 'cachePostLinks'], 10, 2);
735
736 $getFile = $frontendController->getRequestParameter('uamgetfile');
737
738 if ($this->config->getRedirect() !== false || $getFile !== null) {
739 $this->wordpress->addFilter('wp_headers', [$frontendRedirectController, 'redirect'], 10, 2);
740 }
741
742 $testXSendFile = $frontendController->getRequestParameter('testXSendFile');
743
744 if ($testXSendFile !== null) {
745 $this->wordpress->addFilter('wp_headers', [$frontendRedirectController, 'testXSendFile'], 10, 2);
746 }
747
748 // Admin object controller
749 $backendCacheController = $this->controllerFactory->createBackendCacheController();
750
751 $this->wordpress->addFilter('clean_term_cache', [$backendCacheController, 'invalidateTermCache']);
752 $this->wordpress->addFilter('clean_object_term_cache', [$backendCacheController, 'invalidateTermCache']);
753 $this->wordpress->addFilter('clean_post_cache', [$backendCacheController, 'invalidatePostCache']);
754 $this->wordpress->addFilter('clean_attachment_cache', [$backendCacheController, 'invalidatePostCache']);
755
756 // Widgets
757 $this->wordpress->addAction('widgets_init', function () {
758 $this->wordpress->registerWidget($this->widgetFactory->createLoginWidget());
759 });
760 }
761 }
762