]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/admin/admin-inc.php
isAdminAllowedAccessMenu() introduced (cache is currently not required but it can...
[mailer.git] / inc / modules / admin / admin-inc.php
index bce95acae4a5d8f8e7212e4026b2adc5d1e423f1..0bc05eba306009d205f015bfad3085b31fb62922 100644 (file)
@@ -232,8 +232,22 @@ LIMIT 1",
        loadTemplate('admin_main_footer', false, $content);
 }
 
+// Checks wether current admin is allowed to access given action/what combination
+// (only one is allowed to be null!)
+function isAdminAllowedAccessMenu ($action, $what = null) {
+       // Do we have cache?
+       if (!isset($GLOBALS[__FUNCTION__][$action][$what])) {
+               // ACL is always 'allow' when no ext-admins is installed
+               // @TODO This can be rewritten into a filter
+               $GLOBALS[__FUNCTION__][$action][$what] = ((!isExtensionInstalledAndNewer('admins', '0.2.0')) || (adminsCheckAdminAcl($action, $what)));
+       } // END - if
+
+       // Return the cached value
+       return $GLOBALS[__FUNCTION__][$action][$what];
+}
+
 // Adds an admin menu
-function addAdminMenu ($action, $what, $return=false) {
+function addAdminMenu ($action, $what, $return = false) {
        // Init variables
        $SUB = false;
        $OUT = '';
@@ -258,25 +272,19 @@ ORDER BY
                $OUT .= '<ul class="admin_menu_main">';
                // @TODO Rewrite this to $content = SQL_FETCHARRAY()
                while (list($menu, $title, $descr) = SQL_FETCHROW($result_main)) {
-                       if (isExtensionInstalledAndNewer('admins', '0.2.0')) {
-                               $ACL = adminsCheckAdminAcl($menu, '');
-                       } else {
-                               // @TODO ACL is 'allow'... hmmm
-                               $ACL = true;
-                       }
-
                        // Filename
                        $inc = sprintf("inc/modules/admin/action-%s.php", $menu);
 
                        // Is the file readable?
                        $readable = isIncludeReadable($inc);
 
-                       if ($ACL === true) {
+                       // Is the current admin allowed to access this 'action' menu?
+                       if (isAdminAllowedAccessMenu($menu)) {
                                if ($SUB === false) {
                                        // Insert compiled menu title and description
                                        $GLOBALS['menu']['title'][$menu]      = $title;
                                        $GLOBALS['menu']['description'][$menu] = $descr;
-                               }
+                               } // END - if
                                $OUT .= '<li class="admin_menu">
 <div class="nobr"><strong>&middot;</strong>&nbsp;';
 
@@ -329,22 +337,14 @@ ORDER BY
                                        $OUT .= '<li class="admin_menu_sub"><ul class="admin_menu_sub">';
                                        // @TODO Rewrite this to $content = SQL_FETCHARRAY()
                                        while (list($what_sub, $title_what, $desc_what) = SQL_FETCHROW($result_what)) {
-                                               // Check for access level
-                                               if (isExtensionInstalledAndNewer('admins', '0.2.0')) {
-                                                       $ACL = adminsCheckAdminAcl('', $what_sub);
-                                               } else {
-                                                       // @TODO ACL is 'allow'... hmmm
-                                                       $ACL = true;
-                                               }
-
                                                // Filename
                                                $inc = sprintf("inc/modules/admin/what-%s.php", $what_sub);
 
                                                // Is the file readable?
                                                $readable = isIncludeReadable($inc);
 
-                                               // Access allowed?
-                                               if ($ACL === true) {
+                                               // Is the current admin allowed to access this 'what' menu?
+                                               if (isAdminAllowedAccessMenu(null, $what_sub)) {
                                                        // Insert compiled title and description
                                                        $GLOBALS['menu']['title'][$what_sub]      = $title_what;
                                                        $GLOBALS['menu']['description'][$what_sub] = $desc_what;