- // If caching is not enabled, we have to fall back to pulling from the DB.
- if (!$this->cache_enabled) {
- if (!isset ($this->cache[$group]))
- $this->load_group_from_db($group);
-
- if (isset ($this->cache[$group][$id])) {
- $this->cold_cache_hits += 1;
- return $this->cache[$group][$id];
- }
-
- $this->non_existant_objects[$group][$id] = true;
- $this->cache_misses += 1;
- return false;
- }
-
- $cache_file = $this->cache_dir.$this->get_group_dir($group)."/".$this->hash($id).'.php';
- if (!file_exists($cache_file)) {
- $this->non_existant_objects[$group][$id] = true;
- $this->cache_misses += 1;
- return false;
- }
-
- // If the object has expired, remove it from the cache and return false to force
- // a refresh.
- $now = time();
- if ((filemtime($cache_file) + $this->expiration_time) <= $now) {
- $this->cache_misses += 1;
- $this->delete($id, $group, true);
- return false;
- }
-
- $this->cache[$group][$id] = unserialize(base64_decode(substr(@ file_get_contents($cache_file), strlen(CACHE_SERIAL_HEADER), -strlen(CACHE_SERIAL_FOOTER))));
- if (false === $this->cache[$group][$id])
- $this->cache[$group][$id] = '';
-
- $this->cold_cache_hits += 1;
- return $this->cache[$group][$id];