00001 <?php
00002
00003
00004
00005
00006
00007
00008 class Cache {
00009
00010
00011
00012
00013
00014 private static $implementation;
00015
00016
00017
00018
00019
00020
00021 private static function get_implementation() {
00022 if (empty(self::$implementation)) {
00023 require_once dirname(__FILE__) . '/cache.db.impl.php';
00024 self::set_implementation(new CacheDBImpl());
00025 }
00026 return self::$implementation;
00027 }
00028
00029
00030
00031
00032
00033
00034 public static function set_implementation(ICachePersister $impl) {
00035 self::$implementation = $impl;
00036 }
00037
00038
00039
00040
00041
00042
00043
00044
00045 public static function is_cached($cache_keys, $ignore_disabled = false) {
00046
00047 if (!$ignore_disabled && Config::has_feature(Config::DISABLE_CACHE)) {
00048 return false;
00049 }
00050
00051 $impl = self::get_implementation();
00052 return $impl->is_cached($cache_keys);
00053 }
00054
00055
00056
00057
00058
00059
00060
00061
00062 public static function read($cache_keys, $ignore_disabled = false) {
00063
00064 if (!$ignore_disabled && Config::has_feature(Config::DISABLE_CACHE)) {
00065 return false;
00066 }
00067
00068 $impl = self::get_implementation();
00069 return $impl->read($cache_keys);
00070 }
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 public static function store($cache_keys, $content, $cache_life_time, $data = '', $is_compressed = false, $ignore_disabled = false) {
00083
00084 if (!$ignore_disabled && Config::has_feature(Config::DISABLE_CACHE)) {
00085 return;
00086 }
00087
00088 try {
00089 $impl = self::get_implementation();
00090 $impl->store($cache_keys, $content, $cache_life_time, $data, $is_compressed);
00091 }
00092 catch (Exception $ex) {
00093
00094 @error_log($ex->getMessage());
00095 }
00096 }
00097
00098
00099
00100
00101
00102
00103
00104 public static function clear($cache_keys = NULL, $ignore_disabled = false) {
00105
00106 if (!$ignore_disabled && Config::has_feature(Config::DISABLE_CACHE)) {
00107 return;
00108 }
00109
00110 if ($cache_keys instanceof ICachable) {
00111 $keys = $cache_keys->get_all_cache_ids();
00112 foreach($keys as $key) {
00113 self::do_clear($key);
00114 }
00115 foreach($cache_keys->get_dependend_cachables() as $dependance) {
00116 self::clear($dependance);
00117 }
00118 }
00119 else {
00120 self::do_clear($cache_keys);
00121 }
00122 }
00123
00124
00125
00126
00127 private static function do_clear($cache_keys) {
00128 $impl = self::get_implementation();
00129 $impl->clear($cache_keys);
00130 }
00131
00132
00133
00134
00135 public static function remove_expired() {
00136 $impl = self::get_implementation();
00137 $impl->remove_expired();
00138 }
00139 }
00140