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
user-access-manager / src / Controller / Backend / BackendController.php

BackendController.php in User Access Manager trunk, at src/Controller/Backend/BackendController.php

109 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace UserAccessManager\Controller\Backend;
6
7 use UserAccessManager\Config\WordpressConfig;
8 use UserAccessManager\Controller\Backend\Administration\SetupController;
9 use UserAccessManager\Controller\Controller;
10 use UserAccessManager\Setup\Database\MissingColumnsException;
11 use UserAccessManager\Setup\SetupHandler;
12 use UserAccessManager\User\UserHandler;
13 use UserAccessManager\UserAccessManager;
14 use UserAccessManager\Wrapper\Php;
15 use UserAccessManager\Wrapper\Wordpress;
16
17 class BackendController extends Controller
18 {
19 public const HANDLE_STYLE_ADMIN = 'UserAccessManagerAdmin';
20 public const HANDLE_SCRIPT_GROUP_SUGGEST = 'UserAccessManagerGroupSuggest';
21 public const HANDLE_SCRIPT_TIME_INPUT = 'UserAccessManagerTimeInput';
22 public const HANDLE_SCRIPT_ADMIN = 'UserAccessManagerFunctions';
23
24 private const ADMIN_SCRIPTS = [
25 self::HANDLE_SCRIPT_GROUP_SUGGEST => 'assets/js/jquery.uam-group-suggest.js',
26 self::HANDLE_SCRIPT_TIME_INPUT => 'assets/js/jquery.uam-time-input.js',
27 self::HANDLE_SCRIPT_ADMIN => 'assets/js/functions.js'
28 ];
29
30 private string $notice = '';
31
32 public function __construct(
33 Php $php,
34 Wordpress $wordpress,
35 WordpressConfig $wordpressConfig,
36 private UserHandler $userHandler,
37 private SetupHandler $setupHandler
38 ) {
39 parent::__construct($php, $wordpress, $wordpressConfig);
40 }
41
42 /**
43 * @throws MissingColumnsException
44 */
45 public function showAdminNotice(): void
46 {
47 $messages = $_SESSION[self::UAM_ERRORS] ?? [];
48 $updateAction = $this->getRequestParameter('uam_update_db');
49
50 if ($this->setupHandler->getDatabaseHandler()->isDatabaseUpdateNecessary() === true
51 && $updateAction !== SetupController::UPDATE_BLOG
52 && $updateAction !== SetupController::UPDATE_NETWORK
53 ) {
54 $messages[] = sprintf(TXT_UAM_NEED_DATABASE_UPDATE, 'admin.php?page=uam_setup');
55 }
56
57 if ($messages !== []) {
58 $this->notice = implode('<br>', $messages);
59 echo $this->getIncludeContents('AdminNotice.php');
60 }
61 }
62
63 public function getNotice(): string
64 {
65 return $this->notice;
66 }
67
68 private function registerStylesAndScripts(): void
69 {
70 $urlPath = $this->wordpressConfig->getUrlPath();
71
72 $this->wordpress->registerStyle(
73 self::HANDLE_STYLE_ADMIN,
74 $urlPath . 'assets/css/uamAdmin.css',
75 [],
76 UserAccessManager::VERSION,
77 'screen'
78 );
79
80 foreach (self::ADMIN_SCRIPTS as $handle => $scriptPath) {
81 $this->wordpress->registerScript(
82 $handle,
83 $urlPath . $scriptPath,
84 ['jquery'],
85 UserAccessManager::VERSION
86 );
87 }
88 }
89
90 public function enqueueStylesAndScripts(): void
91 {
92 $this->registerStylesAndScripts();
93 $this->wordpress->enqueueStyle(self::HANDLE_STYLE_ADMIN);
94
95 foreach (array_keys(self::ADMIN_SCRIPTS) as $handle) {
96 $this->wordpress->enqueueScript($handle);
97 }
98 }
99
100 public function setupAdminDashboard(): void
101 {
102 if ($this->userHandler->checkUserAccess(UserHandler::MANAGE_USER_GROUPS_CAPABILITY) === false) {
103 $metaBoxes = $this->wordpress->getMetaBoxes();
104 unset($metaBoxes['dashboard']['normal']['core']['dashboard_recent_comments']);
105 $this->wordpress->setMetaBoxes($metaBoxes);
106 }
107 }
108 }
109