00001 <?php
00002
00011 abstract class HTMLPurifier_DefinitionCache
00012 {
00013
00014 public $type;
00015
00020 public function __construct($type) {
00021 $this->type = $type;
00022 }
00023
00028 public function generateKey($config) {
00029 return $config->version . ',' .
00030 $config->getBatchSerial($this->type) . ',' .
00031 $config->get($this->type, 'DefinitionRev');
00032 }
00033
00040 public function isOld($key, $config) {
00041 if (substr_count($key, ',') < 2) return true;
00042 list($version, $hash, $revision) = explode(',', $key, 3);
00043 $compare = version_compare($version, $config->version);
00044
00045 if ($compare != 0) return true;
00046
00047 if (
00048 $hash == $config->getBatchSerial($this->type) &&
00049 $revision < $config->get($this->type, 'DefinitionRev')
00050 ) return true;
00051 return false;
00052 }
00053
00060 public function checkDefType($def) {
00061 if ($def->type !== $this->type) {
00062 trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}");
00063 return false;
00064 }
00065 return true;
00066 }
00067
00071 abstract public function add($def, $config);
00072
00076 abstract public function set($def, $config);
00077
00081 abstract public function replace($def, $config);
00082
00086 abstract public function get($config);
00087
00091 abstract public function remove($config);
00092
00096 abstract public function flush($config);
00097
00104 abstract public function cleanup($config);
00105
00106 }
00107