Version 4.0.13.1
This commit is contained in:
1 parent
f9e857d255
commit
c6a86f0d9b
7517 files changed
+597400
-668041
No files matched your search
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Definition caching for HTML Purifier not on disk
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @since 25 Oct 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Definition caching for HTML Purifier not on disk
|
||||
*/
|
||||
class HtmlPurifierDefinitionCache extends \HTMLPurifier_DefinitionCache
|
||||
{
|
||||
/**
|
||||
* Adds a definition object to the cache
|
||||
*
|
||||
* @param mixed $def Definition to cache
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return bool
|
||||
*/
|
||||
public function add($def, $config)
|
||||
{
|
||||
return $this->set( $def, $config );
|
||||
}
|
||||
|
||||
/**
|
||||
* Unconditionally saves a definition object to the cache
|
||||
*
|
||||
* @param mixed $def Definition to cache
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return bool
|
||||
*/
|
||||
public function set($def, $config)
|
||||
{
|
||||
/* If invalid type, just return */
|
||||
if( !$this->checkDefType( $def ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Generate key and store it */
|
||||
$key = $this->generateKey( $config );
|
||||
|
||||
\IPS\Data\Store::i()->$key = base64_encode( \serialize( $def ) );
|
||||
|
||||
/* Store an array of all keys so we can implement flush() and cleanup() */
|
||||
$currentKeys = \IPS\Data\Store::i()->htmlpurifier_definitions;
|
||||
$currentKeys[ $key ] = $key;
|
||||
|
||||
\IPS\Data\Store::i()->htmlpurifier_definitions = $currentKeys;
|
||||
|
||||
/* Return TRUE */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace an object in the cache
|
||||
*
|
||||
* @param mixed $def Definition to cache
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return bool
|
||||
*/
|
||||
public function replace($def, $config)
|
||||
{
|
||||
return $this->set( $def, $config );
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a definition object from the cache
|
||||
*
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return mixed FALSE if not found, or the definition object
|
||||
*/
|
||||
public function get($config)
|
||||
{
|
||||
$key = $this->generateKey( $config );
|
||||
|
||||
if( isset( \IPS\Data\Store::i()->$key ) and \IPS\Data\Store::i()->$key !== 0 )
|
||||
{
|
||||
return \unserialize( base64_decode( \IPS\Data\Store::i()->$key ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a definition object to the cache
|
||||
*
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return bool
|
||||
*/
|
||||
public function remove($config)
|
||||
{
|
||||
$key = $this->generateKey( $config );
|
||||
|
||||
if( isset( \IPS\Data\Store::i()->$key ) )
|
||||
{
|
||||
unset( \IPS\Data\Store::i()->$key );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all objects from cache
|
||||
*
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return void
|
||||
*/
|
||||
public function flush($config)
|
||||
{
|
||||
if( !isset( \IPS\Data\Store::i()->htmlpurifier_definitions ) )
|
||||
{
|
||||
\IPS\Data\Store::i()->htmlpurifier_definitions = array();
|
||||
}
|
||||
|
||||
foreach( \IPS\Data\Store::i()->htmlpurifier_definitions as $key )
|
||||
{
|
||||
if( isset( \IPS\Data\Store::i()->$key ) )
|
||||
{
|
||||
unset( \IPS\Data\Store::i()->$key );
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all expired (older version or revision) objects from cache
|
||||
*
|
||||
* @param mixed $config HTML Purifier configuration
|
||||
* @return void
|
||||
*/
|
||||
public function cleanup($config)
|
||||
{
|
||||
return $this->flush( $config );
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user