mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 16:31:53 +00:00
a7fab00cdd
- Update TODO list - URISchemeRegistry doesn't return a reference for instance anymore, should do the same for other singletons git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1477 48356398-32a2-884e-a903-53898d9a118a
80 lines
2.2 KiB
PHP
80 lines
2.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Registry object that contains information about the current context.
|
|
* @warning Is a bit buggy when variables are set to null: it thinks
|
|
* they don't exist! So use false instead, please.
|
|
*/
|
|
class HTMLPurifier_Context
|
|
{
|
|
|
|
/**
|
|
* Private array that stores the references.
|
|
*/
|
|
private $_storage = array();
|
|
|
|
/**
|
|
* Registers a variable into the context.
|
|
* @param $name String name
|
|
* @param $ref Variable to be registered
|
|
*/
|
|
public function register($name, &$ref) {
|
|
if (isset($this->_storage[$name])) {
|
|
trigger_error("Name $name produces collision, cannot re-register",
|
|
E_USER_ERROR);
|
|
return;
|
|
}
|
|
$this->_storage[$name] =& $ref;
|
|
}
|
|
|
|
/**
|
|
* Retrieves a variable reference from the context.
|
|
* @param $name String name
|
|
* @param $ignore_error Boolean whether or not to ignore error
|
|
*/
|
|
public function &get($name, $ignore_error = false) {
|
|
if (!isset($this->_storage[$name])) {
|
|
if (!$ignore_error) {
|
|
trigger_error("Attempted to retrieve non-existent variable $name",
|
|
E_USER_ERROR);
|
|
}
|
|
$var = null; // so we can return by reference
|
|
return $var;
|
|
}
|
|
return $this->_storage[$name];
|
|
}
|
|
|
|
/**
|
|
* Destorys a variable in the context.
|
|
* @param $name String name
|
|
*/
|
|
public function destroy($name) {
|
|
if (!isset($this->_storage[$name])) {
|
|
trigger_error("Attempted to destroy non-existent variable $name",
|
|
E_USER_ERROR);
|
|
return;
|
|
}
|
|
unset($this->_storage[$name]);
|
|
}
|
|
|
|
/**
|
|
* Checks whether or not the variable exists.
|
|
* @param $name String name
|
|
*/
|
|
public function exists($name) {
|
|
return isset($this->_storage[$name]);
|
|
}
|
|
|
|
/**
|
|
* Loads a series of variables from an associative array
|
|
* @param $context_array Assoc array of variables to load
|
|
*/
|
|
public function loadArray($context_array) {
|
|
foreach ($context_array as $key => $discard) {
|
|
$this->register($key, $context_array[$key]);
|
|
}
|
|
}
|
|
|
|
}
|
|
|