]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/cache.php
Wordpress 2.3.2
[autoinstalls/wordpress.git] / wp-includes / cache.php
index 334a9610187ff6f0946f0f0eee21e960382a724e..ce7184d92996bc3ddd767646978a15de43cb77c1 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 function wp_cache_add($key, $data, $flag = '', $expire = 0) {
        global $wp_object_cache;
+       $data = unserialize(serialize($data));
 
        return $wp_object_cache->add($key, $data, $flag, $expire);
 }
@@ -37,12 +38,14 @@ function wp_cache_init() {
 
 function wp_cache_replace($key, $data, $flag = '', $expire = 0) {
        global $wp_object_cache;
+       $data = unserialize(serialize($data));
 
        return $wp_object_cache->replace($key, $data, $flag, $expire);
 }
 
 function wp_cache_set($key, $data, $flag = '', $expire = 0) {
        global $wp_object_cache;
+       $data = unserialize(serialize($data));
 
        return $wp_object_cache->set($key, $data, $flag, $expire);
 }
@@ -60,6 +63,7 @@ class WP_Object_Cache {
        var $dirty_objects = array ();
        var $non_existant_objects = array ();
        var $global_groups = array ('users', 'userlogins', 'usermeta');
+       var $non_persistent_groups = array('comment');
        var $blog_id;
        var $cold_cache_hits = 0;
        var $warm_cache_hits = 0;
@@ -67,7 +71,7 @@ class WP_Object_Cache {
        var $secret = '';
 
        function acquire_lock() {
-               // Acquire a write lock. 
+               // Acquire a write lock.
                $this->mutex = @fopen($this->cache_dir.$this->flock_filename, 'w');
                if ( false == $this->mutex)
                        return false;
@@ -109,7 +113,7 @@ class WP_Object_Cache {
                $this->cache = array ();
                $this->dirty_objects = array ();
                $this->non_existant_objects = array ();
-               
+
                $this->release_lock();
 
                return true;
@@ -183,39 +187,7 @@ class WP_Object_Cache {
        }
 
        function load_group_from_db($group) {
-               global $wpdb;
-
-               if ('category' == $group) {
-                       $this->cache['category'] = array ();
-                       if ($dogs = $wpdb->get_results("SELECT * FROM $wpdb->categories")) {
-                               foreach ($dogs as $catt)
-                                       $this->cache['category'][$catt->cat_ID] = $catt;
-
-                               foreach ($this->cache['category'] as $catt) {
-                                       $curcat = $catt->cat_ID;
-                                       $fullpath = '/'.$this->cache['category'][$catt->cat_ID]->category_nicename;
-                                       while ($this->cache['category'][$curcat]->category_parent != 0) {
-                                               $curcat = $this->cache['category'][$curcat]->category_parent;
-                                               $fullpath = '/'.$this->cache['category'][$curcat]->category_nicename.$fullpath;
-                                       }
-                                       $this->cache['category'][$catt->cat_ID]->fullpath = $fullpath;
-                               }
-                       }
-               } else
-                       if ('options' == $group) {
-                               $wpdb->hide_errors();
-                               if (!$options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'")) {
-                                       $options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options");
-                               }
-                               $wpdb->show_errors();
-
-                               if ( ! $options )
-                                       return;
-
-                               foreach ($options as $option) {
-                                       $this->cache['options'][$option->option_name] = $option->option_value;
-                               }
-                       }
+               return;
        }
 
        function make_group_dir($group, $perms) {
@@ -249,15 +221,15 @@ class WP_Object_Cache {
                while ($index < count($stack)) {
                        # Get indexed directory from stack
                        $dir = $stack[$index];
-      
+
                        $dh = @ opendir($dir);
                        if (!$dh)
                                return false;
-      
+
                        while (($file = @ readdir($dh)) !== false) {
                                if ($file == '.' or $file == '..')
                                        continue;
-                                       
+
                                if (@ is_dir($dir . DIRECTORY_SEPARATOR . $file))
                                        $stack[] = $dir . DIRECTORY_SEPARATOR . $file;
                                else if (@ is_file($dir . DIRECTORY_SEPARATOR . $file))
@@ -337,6 +309,9 @@ class WP_Object_Cache {
                // Loop over dirty objects and save them.
                $errors = 0;
                foreach ($this->dirty_objects as $group => $ids) {
+                       if ( in_array($group, $this->non_persistent_groups) )
+                               continue;
+
                        $group_dir = $this->make_group_dir($group, $dir_perms);
 
                        $ids = array_unique($ids);
@@ -360,10 +335,9 @@ class WP_Object_Cache {
                                fputs($fd, $serial);
                                fclose($fd);
                                if (!@ rename($temp_file, $cache_file)) {
-                                       if (@ copy($temp_file, $cache_file))
-                                               @ unlink($temp_file);
-                                       else
-                                               $errors++;      
+                                       if (!@ copy($temp_file, $cache_file))
+                                               $errors++;
+                                       @ unlink($temp_file);
                                }
                                @ chmod($cache_file, $file_perms);
                        }
@@ -372,7 +346,7 @@ class WP_Object_Cache {
                $this->dirty_objects = array();
 
                $this->release_lock();
-               
+
                if ( $errors )
                        return false;
 
@@ -381,14 +355,14 @@ class WP_Object_Cache {
 
        function stats() {
                echo "<p>";
-               echo "<strong>Cold Cache Hits:</strong> {$this->cold_cache_hits}<br/>";
-               echo "<strong>Warm Cache Hits:</strong> {$this->warm_cache_hits}<br/>";
-               echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br/>";
+               echo "<strong>Cold Cache Hits:</strong> {$this->cold_cache_hits}<br />";
+               echo "<strong>Warm Cache Hits:</strong> {$this->warm_cache_hits}<br />";
+               echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br />";
                echo "</p>";
 
                foreach ($this->cache as $group => $cache) {
                        echo "<p>";
-                       echo "<strong>Group:</strong> $group<br/>";
+                       echo "<strong>Group:</strong> $group<br />";
                        echo "<strong>Cache:</strong>";
                        echo "<pre>";
                        print_r($cache);
@@ -406,7 +380,7 @@ class WP_Object_Cache {
        function WP_Object_Cache() {
                return $this->__construct();
        }
-       
+
        function __construct() {
                global $blog_id;
 
@@ -449,7 +423,7 @@ class WP_Object_Cache {
 
        function __destruct() {
                $this->save();
-               return true;    
+               return true;
        }
 }
 ?>