/**
  * Load cache(s)
  *
  * @param	array 	Array of caches to load: array( 'group_cache', 'forum_cache' )
  * @return	mixed	Loaded Cache
  * @access 	private
  * @author	MattMecham
  */
 private static function _loadCaches($caches = array())
 {
     if (!is_array($caches) or !count($caches)) {
         return NULL;
     }
     //-----------------------------------------
     // Finalize
     //-----------------------------------------
     $cachelist = "'" . implode("','", $caches) . "'";
     //--------------------------------
     // Eaccelerator...
     //--------------------------------
     if (is_object(self::$cacheLib)) {
         $temp_cache = array();
         $new_cache_array = array();
         foreach ($caches as $key) {
             $temp_cache[$key] = self::$cacheLib->getFromCache($key);
             if (!$temp_cache[$key]) {
                 $new_cache_array[] = $key;
             } else {
                 if (is_string($temp_cache[$key]) and strstr($temp_cache[$key], "a:") !== false) {
                     self::instance()->data_store[$key] = unserialize($temp_cache[$key]);
                 } else {
                     if ($temp_cache[$key] == "EMPTY") {
                         self::instance()->data_store[$key] = NULL;
                     } else {
                         self::instance()->data_store[$key] = $temp_cache[$key];
                     }
                 }
             }
         }
         $cachearray = $new_cache_array;
         unset($new_cache_array, $temp_cache);
     }
     //--------------------------------
     // Get from DB...
     //--------------------------------
     if ($cachelist) {
         /* This is here for veeeeeery old 1.0.1 upgrades */
         if (!ipsRegistry::DB()->checkForTable('cache_store')) {
             ipsRegistry::DB()->query("create table " . ipsRegistry::dbFunctions()->getPrefix() . "cache_store (\r\n\t\t\t\t\t\t  cs_key varchar(255) NOT NULL default '',\r\n\t\t\t\t\t\t  cs_value text NULL,\r\n\t\t\t\t\t\t  cs_extra varchar(255) NOT NULL default '',\r\n\t\t\t\t\t\t  PRIMARY KEY(cs_key)\r\n\t\t\t\t\t\t);");
         }
         ipsRegistry::DB()->build(array('select' => '*', 'from' => 'cache_store', 'where' => "cs_key IN ( {$cachelist} )"));
         ipsRegistry::DB()->execute();
         $_seenKeys = array();
         while ($r = ipsRegistry::DB()->fetch()) {
             $_seenKeys[$r['cs_key']] = $r['cs_key'];
             self::instance()->debugInfo[$r['cs_key']] = array('size' => IPSLib::strlenToBytes(strlen($r['cs_value'])));
             if ($r['cs_array'] or substr($r['cs_value'], 0, 2) == "a:") {
                 self::instance()->data_store[$r['cs_key']] = unserialize($r['cs_value']);
                 if (!is_array(self::instance()->data_store[$r['cs_key']])) {
                     self::instance()->data_store[$r['cs_key']] = array();
                 }
             } else {
                 self::instance()->data_store[$r['cs_key']] = $r['cs_value'] ? $r['cs_value'] : NULL;
             }
             if (is_object(self::$cacheLib)) {
                 if (!$r['cs_value']) {
                     $r['cs_value'] = "EMPTY";
                 }
                 self::$cacheLib->putInCache($r['cs_key'], $r['cs_value']);
             }
         }
     }
     //-----------------------------------------
     // Make sure each key is in data_store otherwise
     // repeated calls will keep trying to load it
     //-----------------------------------------
     foreach ($caches as $_cache) {
         if (!in_array($_cache, $_seenKeys)) {
             self::instance()->data_store[$_cache] = NULL;
         }
     }
 }
 /**
  * Load cache(s)
  *
  * @param	array 	Array of caches to load: array( 'group_cache', 'forum_cache' )
  * @return	mixed	Loaded Cache
  * @access 	private
  * @author	MattMecham
  */
 private static function _loadCaches($caches = array())
 {
     if (!is_array($caches) or !count($caches)) {
         return NULL;
     }
     //-----------------------------------------
     // Finalize
     //-----------------------------------------
     $cachelist = "'" . implode("','", $caches) . "'";
     //--------------------------------
     // Eaccelerator...
     //--------------------------------
     if (is_object(self::$cacheLib)) {
         $temp_cache = array();
         $new_cache_array = array();
         foreach ($caches as $key) {
             $temp_cache[$key] = self::$cacheLib->getFromCache($key);
             if (!$temp_cache[$key]) {
                 $new_cache_array[] = $key;
             } else {
                 if (strstr($temp_cache[$key], "a:")) {
                     self::instance()->data_store[$key] = unserialize($temp_cache[$key]);
                 } else {
                     if ($temp_cache[$key] == "EMPTY") {
                         self::instance()->data_store[$key] = NULL;
                     } else {
                         self::instance()->data_store[$key] = $temp_cache[$key];
                     }
                 }
             }
         }
         $cachearray = $new_cache_array;
         unset($new_cache_array, $temp_cache);
     }
     //--------------------------------
     // Get from DB...
     //--------------------------------
     if ($cachelist) {
         ipsRegistry::DB()->build(array('select' => '*', 'from' => 'cache_store', 'where' => "cs_key IN ( {$cachelist} )"));
         ipsRegistry::DB()->execute();
         $_seenKeys = array();
         while ($r = ipsRegistry::DB()->fetch()) {
             $_seenKeys[$r['cs_key']] = $r['cs_key'];
             self::instance()->debugInfo[$r['cs_key']] = array('size' => IPSLib::strlenToBytes(strlen($r['cs_value'])));
             if ($r['cs_array'] or substr($r['cs_value'], 0, 2) == "a:") {
                 self::instance()->data_store[$r['cs_key']] = unserialize($r['cs_value']);
                 if (!is_array(self::instance()->data_store[$r['cs_key']])) {
                     self::instance()->data_store[$r['cs_key']] = array();
                 }
             } else {
                 self::instance()->data_store[$r['cs_key']] = $r['cs_value'] ? $r['cs_value'] : NULL;
             }
             if (is_object(self::$cacheLib)) {
                 if (!$r['cs_value']) {
                     $r['cs_value'] = "EMPTY";
                 }
                 self::$cacheLib->putInCache($r['cs_key'], $r['cs_value']);
             }
         }
     }
     //-----------------------------------------
     // Make sure each key is in data_store otherwise
     // repeated calls will keep trying to load it
     //-----------------------------------------
     foreach ($caches as $_cache) {
         if (!in_array($_cache, $_seenKeys)) {
             self::instance()->data_store[$_cache] = NULL;
         }
     }
 }