- function hash($data) {
- if ( function_exists('hash_hmac') ) {
- return hash_hmac('md5', $data, $this->secret);
- } else {
- return md5($data . $this->secret);
- }
- }
-
- 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;
- }
- }
- }
-
- function make_group_dir($group, $perms) {
- $group_dir = $this->get_group_dir($group);
- $make_dir = '';
- foreach (split('/', $group_dir) as $subdir) {
- $make_dir .= "$subdir/";
- if (!file_exists($this->cache_dir.$make_dir)) {
- if (! @ mkdir($this->cache_dir.$make_dir))
- break;
- @ chmod($this->cache_dir.$make_dir, $perms);
- }
-
- if (!file_exists($this->cache_dir.$make_dir."index.php")) {
- $file_perms = $perms & 0000666;
- @ touch($this->cache_dir.$make_dir."index.php");
- @ chmod($this->cache_dir.$make_dir."index.php", $file_perms);
- }
- }
-
- return $this->cache_dir."$group_dir/";
- }
-
- function rm_cache_dir() {
- $dir = $this->cache_dir;
- $dir = rtrim($dir, DIRECTORY_SEPARATOR);
- $top_dir = $dir;
- $stack = array($dir);
- $index = 0;
-
- 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))
- @ unlink($dir . DIRECTORY_SEPARATOR . $file);
- }
-
- $index++;
- }
-
- $stack = array_reverse($stack); // Last added dirs are deepest
- foreach($stack as $dir) {
- if ( $dir != $top_dir)
- @ rmdir($dir);
- }
-
- }
-
- function release_lock() {
- // Release write lock.
- flock($this->mutex, LOCK_UN);
- fclose($this->mutex);