ILIAS  release_4-4 Revision
HTMLPurifier_DefinitionCache Class Reference

Abstract class representing Definition cache managers that implements useful common methods and is a factory. More...

+ Inheritance diagram for HTMLPurifier_DefinitionCache:
+ Collaboration diagram for HTMLPurifier_DefinitionCache:

Public Member Functions

 __construct ($type)
 
 generateKey ($config)
 Generates a unique identifier for a particular configuration. More...
 
 isOld ($key, $config)
 Tests whether or not a key is old with respect to the configuration's version and revision number. More...
 
 checkDefType ($def)
 Checks if a definition's type jives with the cache's type. More...
 
 add ($def, $config)
 Adds a definition object to the cache. More...
 
 set ($def, $config)
 Unconditionally saves a definition object to the cache. More...
 
 replace ($def, $config)
 Replace an object in the cache. More...
 
 get ($config)
 Retrieves a definition object from the cache. More...
 
 remove ($config)
 Removes a definition object to the cache. More...
 
 flush ($config)
 Clears all objects from cache. More...
 
 cleanup ($config)
 Clears all expired (older version or revision) objects from cache. More...
 

Data Fields

 $type
 

Detailed Description

Abstract class representing Definition cache managers that implements useful common methods and is a factory.

Todo:

Create a separate maintenance file advanced users can use to cache their custom HTMLDefinition, which can be loaded via a configuration directive

Implement memcached

Definition at line 11 of file DefinitionCache.php.

Constructor & Destructor Documentation

◆ __construct()

HTMLPurifier_DefinitionCache::__construct (   $type)
Parameters
$nameType of definition objects this instance of the cache will handle.

Definition at line 20 of file DefinitionCache.php.

References $type.

20  {
21  $this->type = $type;
22  }

Member Function Documentation

◆ add()

HTMLPurifier_DefinitionCache::add (   $def,
  $config 
)
abstract

Adds a definition object to the cache.

Referenced by checkDefType().

+ Here is the caller graph for this function:

◆ checkDefType()

HTMLPurifier_DefinitionCache::checkDefType (   $def)

Checks if a definition's type jives with the cache's type.

Note
Throws an error on failure
Parameters
$defDefinition object to check
Returns
Boolean true if good, false if not

Definition at line 60 of file DefinitionCache.php.

References add(), cleanup(), flush(), and replace().

Referenced by HTMLPurifier_DefinitionCache_Serializer\add(), HTMLPurifier_DefinitionCache_Serializer\replace(), and HTMLPurifier_DefinitionCache_Serializer\set().

60  {
61  if ($def->type !== $this->type) {
62  trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}");
63  return false;
64  }
65  return true;
66  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cleanup()

HTMLPurifier_DefinitionCache::cleanup (   $config)
abstract

Clears all expired (older version or revision) objects from cache.

Note
Be carefuly implementing this method as flush. Flush must not interfere with other Definition types, and cleanup() should not be repeatedly called by userland code.

Referenced by checkDefType().

+ Here is the caller graph for this function:

◆ flush()

HTMLPurifier_DefinitionCache::flush (   $config)
abstract

Clears all objects from cache.

Referenced by checkDefType().

+ Here is the caller graph for this function:

◆ generateKey()

HTMLPurifier_DefinitionCache::generateKey (   $config)

Generates a unique identifier for a particular configuration.

Parameters
Instanceof HTMLPurifier_Config

Definition at line 28 of file DefinitionCache.php.

Referenced by HTMLPurifier_DefinitionCache_Decorator_Memory\add(), HTMLPurifier_DefinitionCache_Serializer\generateFilePath(), HTMLPurifier_DefinitionCache_Decorator_Memory\get(), HTMLPurifier_DefinitionCache_Decorator_Memory\replace(), and HTMLPurifier_DefinitionCache_Decorator_Memory\set().

28  {
29  return $config->version . ',' . // possibly replace with function calls
30  $config->getBatchSerial($this->type) . ',' .
31  $config->get($this->type . '.DefinitionRev');
32  }
+ Here is the caller graph for this function:

◆ get()

HTMLPurifier_DefinitionCache::get (   $config)
abstract

Retrieves a definition object from the cache.

◆ isOld()

HTMLPurifier_DefinitionCache::isOld (   $key,
  $config 
)

Tests whether or not a key is old with respect to the configuration's version and revision number.

Parameters
$keyKey to test
$configInstance of HTMLPurifier_Config to test against

Definition at line 40 of file DefinitionCache.php.

Referenced by HTMLPurifier_DefinitionCache_Serializer\cleanup().

40  {
41  if (substr_count($key, ',') < 2) return true;
42  list($version, $hash, $revision) = explode(',', $key, 3);
43  $compare = version_compare($version, $config->version);
44  // version mismatch, is always old
45  if ($compare != 0) return true;
46  // versions match, ids match, check revision number
47  if (
48  $hash == $config->getBatchSerial($this->type) &&
49  $revision < $config->get($this->type . '.DefinitionRev')
50  ) return true;
51  return false;
52  }
+ Here is the caller graph for this function:

◆ remove()

HTMLPurifier_DefinitionCache::remove (   $config)
abstract

Removes a definition object to the cache.

◆ replace()

HTMLPurifier_DefinitionCache::replace (   $def,
  $config 
)
abstract

Replace an object in the cache.

Referenced by checkDefType().

+ Here is the caller graph for this function:

◆ set()

HTMLPurifier_DefinitionCache::set (   $def,
  $config 
)
abstract

Unconditionally saves a definition object to the cache.

Field Documentation

◆ $type

HTMLPurifier_DefinitionCache::$type

The documentation for this class was generated from the following file: