]> git.mxchange.org Git - mailer.git/blobdiff - inc/libs/admins_functions.php
Naming convention on language strings applied, ACL handling fixed:
[mailer.git] / inc / libs / admins_functions.php
index 7c6b73078f6bbd056c3ab169e0127cfcdc0cd444..9739305777b21a352542a83ef24cf3e966d20b73 100644 (file)
@@ -44,7 +44,9 @@ if (!defined('__SECURITY')) {
 function adminsCheckAdminAcl ($action, $what) {
        // If action is login or logout allow allways!
        $default = 'allow';
-       if (($action == 'login') || ($action == 'logout')) return true;
+       if (($action == 'login') || ($action == 'logout')) {
+               return true;
+       } // END - if
 
        // Default is deny
        $ret = false;
@@ -68,18 +70,30 @@ function adminsCheckAdminAcl ($action, $what) {
        }
 
        // Shall I test for a main or sub menu? (action or what?)
-       $acl_mode = 'failed';
+       $aclMode = 'failed';
        if ((isExtensionInstalledAndNewer('cache', '0.1.2')) && (isset($GLOBALS['cache_array']['admin_acls'])) && (count($GLOBALS['cache_array']['admin_acls']) > 0)) {
                // Lookup in cache
-               if ((!empty($action)) && (isset($GLOBALS['cache_array']['admin_acls']['action_menu'][$adminId])) & ($GLOBALS['cache_array']['admin_acls']['action_menu'][$adminId] == $action)) {
+               if ((!empty($action)) && (isset($GLOBALS['cache_array']['admin_acls']['action_menu'][$adminId])) & (in_array($action, $GLOBALS['cache_array']['admin_acls']['action_menu'][$adminId]))) {
+                       // Search for it
+                       $key = array_search($action, $GLOBALS['cache_array']['admin_acls']['action_menu'][$adminId]);
+
                        // Main menu line found
-                       $acl_mode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId];
+                       $aclMode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId][$key];
+
+                       // Log debug message
+                       logDebugMessage(__FUNCTION__, __LINE__, 'action=' . $action . ',key=' . $key . ',acl_mode=' . $aclMode);
 
                        // Count cache hits
                        incrementStatsEntry('cache_hits');
-               } elseif ((!empty($what)) && (isset($GLOBALS['cache_array']['admin_acls']['what_menu'][$adminId])) && ($GLOBALS['cache_array']['admin_acls']['what_menu'][$adminId] == $what)) {
+               } elseif ((!empty($what)) && (isset($GLOBALS['cache_array']['admin_acls']['what_menu'][$adminId])) && (in_array($what, $GLOBALS['cache_array']['admin_acls']['what_menu'][$adminId]))) {
+                       // Search for it
+                       $key = array_search($action, $GLOBALS['cache_array']['admin_acls']['what_menu'][$adminId]);
+
                        // Check sub menu
-                       $acl_mode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId];
+                       $aclMode = $GLOBALS['cache_array']['admin_acls']['access_mode'][$adminId][$key];
+
+                       // Log debug message
+                       logDebugMessage(__FUNCTION__, __LINE__, 'what=' . $what . ',key=' . $key . ',acl_mode=' . $aclMode);
 
                        // Count cache hits
                        incrementStatsEntry('cache_hits');
@@ -100,7 +114,7 @@ function adminsCheckAdminAcl ($action, $what) {
                // Is an entry found?
                if (SQL_NUMROWS($result) == 1) {
                        // Load ACL
-                       list($acl_mode) = SQL_FETCHROW($result);
+                       list($aclMode) = SQL_FETCHROW($result);
                } // END - if
 
                // Free memory
@@ -108,14 +122,14 @@ function adminsCheckAdminAcl ($action, $what) {
        }
 
        // Check ACL and (maybe) allow
-       //* DEBUG: */ debugOutput('default='.$default.',acl_mode='.$acl_mode.',parent='.intval($parent));
-       if (($default == 'allow') || (($default == 'deny') && ($acl_mode == 'allow')) || ($parent === true) || (($default == '***') && ($acl_mode == 'failed') && ($parent === false))) {
+       //* DEBUG: */ debugOutput('default='.$default.',acl_mode='.$aclMode.',parent='.intval($parent));
+       if ((($default == 'allow') && ($aclMode != 'deny')) || (($default == 'deny') && ($aclMode == 'allow')) || ($parent === true) || (($default == '***') && ($aclMode == 'failed') && ($parent === false))) {
                // Access is granted
                $ret = true;
        } // END - if
 
        // Return value
-       //* DEBUG: */ debugOutput(__FUNCTION__.'['.__LINE__.']:act='.$action.',wht='.$what.',default='.$default.',acl_mode='.$acl_mode);
+       //* DEBUG: */ debugOutput(__FUNCTION__.'['.__LINE__.']:act='.$action.',wht='.$what.',default='.$default.',aclMode='.$aclMode);
        return $ret;
 }
 
@@ -313,12 +327,12 @@ function adminsEditAdminAccount ($postData) {
                        // Shall we allow changing default ACL?
                        if ($currMode == 'allow') {
                                // Allow chaning it
-                               $content['mode']    = generateOptionList('/ARRAY/', array('allow', 'deny'), array('{--ADMIN_ADMINS_MODE_ALLOW--}', '{--ADMIN_ADMINS_MODE_DENY--}'), $content['mode']);
+                               $content['mode']    = generateOptionList('/ARRAY/', array('allow', 'deny'), array('{--ADMIN_ADMINS_ACCESS_MODE_ALLOW--}', '{--ADMIN_ADMINS_ACCESS_MODE_DENY--}'), $content['mode']);
                        } else {
                                // Don't allow it
                                $content['mode'] = ' ';
                        }
-                       $content['la_mode'] = generateOptionList('/ARRAY/', array('global', 'OLD', 'NEW'), array('{--ADMIN_ADMINS_LA_MODE_GLOBAL--}', '{--ADMIN_ADMINS_LA_MODE_OLD--}', '{--ADMINS_NEW_LA_SETTING--}'), $content['la_mode']);
+                       $content['la_mode'] = generateOptionList('/ARRAY/', array('global', 'OLD', 'NEW'), array('{--ADMIN_ADMINS_LA_MODE_GLOBAL--}', '{--ADMIN_ADMINS_LA_MODE_OLD--}', '{--ADMIN_ADMINS_LA_MODE_NEW--}'), $content['la_mode']);
 
                        // Load row template and switch color
                        $OUT .= loadTemplate('admin_edit_admins_row', true, $content);
@@ -347,7 +361,7 @@ function adminsDeleteAdminAccount ($postData) {
                        if (SQL_NUMROWS($result) == 1) {
                                // Entry found, so load data
                                $content = SQL_FETCHARRAY($result);
-                               $content['mode']    = '{--ADMIN_ADMINS_MODE_' . strtoupper($content['mode'])    . '--}';
+                               $content['mode']    = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['mode'])    . '--}';
                                $content['la_mode'] = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
 
                                // Prepare some more data
@@ -400,8 +414,8 @@ function adminsListAdminAccounts() {
        $OUT = '';
        while ($content = SQL_FETCHARRAY($result)) {
                // Compile some variables
-               $content['mode']    = '{--ADMINS_' . strtoupper($content['mode'])    . '_MODE--}';
-               $content['la_mode'] = '{--ADMINS_' . strtoupper($content['la_mode']) . '_LA_SETTING--}';
+               $content['mode']    = '{--ADMIN_ADMINS_ACCESS_MODE_' . strtoupper($content['mode'])    . '--}';
+               $content['la_mode'] = '{--ADMIN_ADMINS_LA_MODE_' . strtoupper($content['la_mode']) . '--}';
 
                // Load row template and switch color
                $OUT .= loadTemplate('admin_list_admins_row', true, $content);