isAdmin() uses now for 'caching' its result
[mailer.git] / inc / mysql-manager.php
index 4736659..9c5f649 100644 (file)
@@ -651,49 +651,52 @@ function isAdmin ($admin = '') {
        } // END - if
        //* DEBUG: */ print(__FUNCTION__.':'.$admin.'/'.$passCookie.'<br />');
 
-       // Search in array for entry
-       if (isset($GLOBALS['admin_hash'])) {
-               // Use cached string
-               $valPass = $GLOBALS['admin_hash'];
-       } elseif ((!empty($passCookie)) && (isAdminHashSet($admin) === true) && (!empty($admin))) {
-               // Login data is valid or not?
-               $valPass = generatePassString(getAdminHash($admin));
-
-               // Cache it away
-               $GLOBALS['admin_hash'] = $valPass;
-
-               // Count cache hits
-               incrementStatsEntry('cache_hits');
-       } elseif ((!empty($admin)) && ((!isExtensionActive('cache'))) || (isAdminHashSet($admin) === false)) {
-               // Search for admin
-               $result = SQL_QUERY_ESC("SELECT HIGH_PRIORITY `password` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `login`='%s' LIMIT 1",
-                       array($admin), __FUNCTION__, __LINE__);
+       // Do we have cache?
+       if (!isset($GLOBALS['is_admin'][$admin]
+               // Search in array for entry
+               if (isset($GLOBALS['admin_hash'])) {
+                       // Use cached string
+                       $valPass = $GLOBALS['admin_hash'];
+               } elseif ((!empty($passCookie)) && (isAdminHashSet($admin) === true) && (!empty($admin))) {
+                       // Login data is valid or not?
+                       $valPass = generatePassString(getAdminHash($admin));
+
+                       // Cache it away
+                       $GLOBALS['admin_hash'] = $valPass;
+
+                       // Count cache hits
+                       incrementStatsEntry('cache_hits');
+               } elseif ((!empty($admin)) && ((!isExtensionActive('cache'))) || (isAdminHashSet($admin) === false)) {
+                       // Search for admin
+                       $result = SQL_QUERY_ESC("SELECT HIGH_PRIORITY `password` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `login`='%s' LIMIT 1",
+                               array($admin), __FUNCTION__, __LINE__);
 
-               // Is he admin?
-               $passDB = '';
-               if (SQL_NUMROWS($result) == 1) {
-                       // Admin login was found so let's load password from DB
-                       list($passDB) = SQL_FETCHROW($result);
+                       // Is he admin?
+                       $passDB = '';
+                       if (SQL_NUMROWS($result) == 1) {
+                               // Admin login was found so let's load password from DB
+                               list($passDB) = SQL_FETCHROW($result);
 
-                       // Temporary cache it
-                       setAdminHash($admin, $passDB);
+                               // Temporary cache it
+                               setAdminHash($admin, $passDB);
 
-                       // Generate password hash
-                       $valPass = generatePassString($passDB);
-               } // END - if
+                               // Generate password hash
+                               $valPass = generatePassString($passDB);
+                       } // END - if
 
-               // Free memory
-               SQL_FREERESULT($result);
-       }
+                       // Free memory
+                       SQL_FREERESULT($result);
+               }
 
-       if (!empty($valPass)) {
-               // Check if password is valid
-               //* DEBUG: */ print(__FUNCTION__ . ':(' . $valPass . '==' . $passCookie . ')='.intval($valPass == $passCookie).'<br />');
-               $ret = (($valPass == $passCookie) || ((strlen($valPass) == 32) && ($valPass == md5($passCookie))) || (($valPass == '*FAILED*') && (!isExtensionActive('cache'))));
+               if (!empty($valPass)) {
+                       // Check if password is valid
+                       //* DEBUG: */ print(__FUNCTION__ . ':(' . $valPass . '==' . $passCookie . ')='.intval($valPass == $passCookie).'<br />');
+                       $GLOBALS['is_admin'][$admin] = (($valPass == $passCookie) || ((strlen($valPass) == 32) && ($valPass == md5($passCookie))) || (($valPass == '*FAILED*') && (!isExtensionActive('cache'))));
+               } // END - if
        } // END - if
 
        // Return result of comparision
-       return $ret;
+       return $GLOBALS['is_admin'][$admin];
 }
 
 // Generates a list of "max receiveable emails per day"