ILIAS  Release_4_1_x_branch Revision 61804
 All Data Structures Namespaces Files Functions Variables Groups Pages
HTMLPurifier_Injector Class Reference

Injects tokens into the document while parsing for well-formedness. More...

+ Inheritance diagram for HTMLPurifier_Injector:
+ Collaboration diagram for HTMLPurifier_Injector:

Public Member Functions

 rewind ($index)
 Rewind to a spot to re-perform processing.
 getRewind ()
 Retrieves rewind, and then unsets it.
 prepare ($config, $context)
 Prepares the injector by giving it the config and context objects: this allows references to important variables to be made within the injector.
 checkNeeded ($config)
 This function checks if the HTML environment will work with the Injector: if p tags are not allowed, the Auto-Paragraphing injector should not be enabled.
 allowsElement ($name)
 Tests if the context node allows a certain element.
 handleText (&$token)
 Handler that is called when a text token is processed.
 handleElement (&$token)
 Handler that is called when a start or empty token is processed.
 handleEnd (&$token)
 Handler that is called when an end token is processed.
 notifyEnd ($token)
 Notifier that is called when an end token is processed.

Data Fields

 $name
 Advisory name of injector, this is for friendly error messages.
 $needed = array()
 Array of elements and attributes this injector creates and therefore need to be allowed by the definition.

Protected Member Functions

 forward (&$i, &$current)
 Iterator function, which starts with the next token and continues until you reach the end of the input tokens.
 forwardUntilEndToken (&$i, &$current, &$nesting)
 Similar to _forward, but accepts a third parameter $nesting (which should be initialized at 0) and stops when we hit the end tag for the node $this->inputIndex starts in.
 backward (&$i, &$current)
 Iterator function, starts with the previous token and continues until you reach the beginning of input tokens.
 current (&$i, &$current)
 Initializes the iterator at the current position.

Protected Attributes

 $htmlDefinition
 Instance of HTMLPurifier_HTMLDefinition.
 $currentNesting
 Reference to CurrentNesting variable in Context.
 $inputTokens
 Reference to InputTokens variable in Context.
 $inputIndex
 Reference to InputIndex variable in Context.
 $rewind = false
 Index of inputTokens to rewind to.

Detailed Description

Injects tokens into the document while parsing for well-formedness.

This enables "formatter-like" functionality such as auto-paragraphing, smiley-ification and linkification to take place.

A note on how handlers create changes; this is done by assigning a new value to the $token reference. These values can take a variety of forms and are best described HTMLPurifier_Strategy_MakeWellFormed->processToken() documentation.

Todo:
Allow injectors to request a re-run on their output. This would help if an operation is recursive.

Definition at line 16 of file Injector.php.

Member Function Documentation

HTMLPurifier_Injector::allowsElement (   $name)

Tests if the context node allows a certain element.

Parameters
$nameName of element to test for
Returns
True if element is allowed, false if it is not

Definition at line 129 of file Injector.php.

References $name.

Referenced by HTMLPurifier_Injector_AutoParagraph\handleElement(), HTMLPurifier_Injector_Linkify\handleText(), HTMLPurifier_Injector_PurifierLinkify\handleText(), and HTMLPurifier_Injector_AutoParagraph\handleText().

{
if (!empty($this->currentNesting)) {
$parent_token = array_pop($this->currentNesting);
$this->currentNesting[] = $parent_token;
$parent = $this->htmlDefinition->info[$parent_token->name];
} else {
$parent = $this->htmlDefinition->info_parent_def;
}
if (!isset($parent->child->elements[$name]) || isset($parent->excludes[$name])) {
return false;
}
// check for exclusion
for ($i = count($this->currentNesting) - 2; $i >= 0; $i--) {
$node = $this->currentNesting[$i];
$def = $this->htmlDefinition->info[$node->name];
if (isset($def->excludes[$name])) return false;
}
return true;
}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::backward ( $i,
$current 
)
protected

Iterator function, starts with the previous token and continues until you reach the beginning of input tokens.

Warning
Please prevent previous references from interfering with this functions by setting $i = null beforehand!
Parameters
&$iCurrent integer index variable for inputTokens
&$currentCurrent token variable. Do NOT use $token, as that variable is also a reference

Definition at line 190 of file Injector.php.

Referenced by HTMLPurifier_Injector_AutoParagraph\handleElement().

{
if ($i === null) $i = $this->inputIndex - 1;
else $i--;
if ($i < 0) return false;
$current = $this->inputTokens[$i];
return true;
}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::checkNeeded (   $config)

This function checks if the HTML environment will work with the Injector: if p tags are not allowed, the Auto-Paragraphing injector should not be enabled.

Parameters
$configInstance of HTMLPurifier_Config
$contextInstance of HTMLPurifier_Context
Returns
Boolean false if success, string of missing needed element/attribute if failure

Definition at line 111 of file Injector.php.

References $config, and $name.

Referenced by prepare().

{
$def = $config->getHTMLDefinition();
foreach ($this->needed as $element => $attributes) {
if (is_int($element)) $element = $attributes;
if (!isset($def->info[$element])) return $element;
if (!is_array($attributes)) continue;
foreach ($attributes as $name) {
if (!isset($def->info[$element]->attr[$name])) return "$element.$name";
}
}
return false;
}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::current ( $i,
$current 
)
protected

Initializes the iterator at the current position.

Use in a do {} while; loop to force the _forward and _backward functions to start at the current location.

Warning
Please prevent previous references from interfering with this functions by setting $i = null beforehand!
Parameters
&$iCurrent integer index variable for inputTokens
&$currentCurrent token variable. Do NOT use $token, as that variable is also a reference

Definition at line 207 of file Injector.php.

References $inputIndex.

Referenced by HTMLPurifier_Injector_AutoParagraph\_pLookAhead().

{
if ($i === null) $i = $this->inputIndex;
$current = $this->inputTokens[$i];
}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::forward ( $i,
$current 
)
protected

Iterator function, which starts with the next token and continues until you reach the end of the input tokens.

Warning
Please prevent previous references from interfering with this functions by setting $i = null beforehand!
Parameters
&$iCurrent integer index variable for inputTokens
&$currentCurrent token variable. Do NOT use $token, as that variable is also a reference

Definition at line 157 of file Injector.php.

Referenced by forwardUntilEndToken().

{
if ($i === null) $i = $this->inputIndex + 1;
else $i++;
if (!isset($this->inputTokens[$i])) return false;
$current = $this->inputTokens[$i];
return true;
}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::forwardUntilEndToken ( $i,
$current,
$nesting 
)
protected

Similar to _forward, but accepts a third parameter $nesting (which should be initialized at 0) and stops when we hit the end tag for the node $this->inputIndex starts in.

Definition at line 170 of file Injector.php.

References $result, and forward().

Referenced by HTMLPurifier_Injector_AutoParagraph\_pLookAhead(), HTMLPurifier_Injector_RemoveSpansWithoutAttributes\handleElement(), and HTMLPurifier_Injector_AutoParagraph\handleText().

{
$result = $this->forward($i, $current);
if (!$result) return false;
if ($nesting === null) $nesting = 0;
if ($current instanceof HTMLPurifier_Token_Start) $nesting++;
elseif ($current instanceof HTMLPurifier_Token_End) {
if ($nesting <= 0) return false;
$nesting--;
}
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HTMLPurifier_Injector::getRewind ( )

Retrieves rewind, and then unsets it.

Definition at line 75 of file Injector.php.

References $rewind, and rewind().

{
$this->rewind = false;
return $r;
}

+ Here is the call graph for this function:

HTMLPurifier_Injector::handleElement ( $token)
HTMLPurifier_Injector::handleEnd ( $token)

Handler that is called when an end token is processed.

Reimplemented in HTMLPurifier_Injector_SafeObject, HTMLPurifier_Injector_RemoveSpansWithoutAttributes, and HTMLPurifier_Injector_DisplayLinkURI.

Definition at line 225 of file Injector.php.

References notifyEnd().

{
$this->notifyEnd($token);
}

+ Here is the call graph for this function:

HTMLPurifier_Injector::handleText ( $token)

Handler that is called when a text token is processed.

Reimplemented in HTMLPurifier_Injector_AutoParagraph, HTMLPurifier_Injector_PurifierLinkify, and HTMLPurifier_Injector_Linkify.

Definition at line 215 of file Injector.php.

{}
HTMLPurifier_Injector::notifyEnd (   $token)

Notifier that is called when an end token is processed.

Note
This differs from handlers in that the token is read-only
Deprecated:

Definition at line 234 of file Injector.php.

Referenced by handleEnd().

{}

+ Here is the caller graph for this function:

HTMLPurifier_Injector::prepare (   $config,
  $context 
)

Prepares the injector by giving it the config and context objects: this allows references to important variables to be made within the injector.

This function also checks if the HTML environment will work with the Injector (see checkNeeded()).

Parameters
$configInstance of HTMLPurifier_Config
$contextInstance of HTMLPurifier_Context
Returns
Boolean false if success, string of missing needed element/attribute if failure

Reimplemented in HTMLPurifier_Injector_SafeObject, HTMLPurifier_Injector_RemoveSpansWithoutAttributes, HTMLPurifier_Injector_PurifierLinkify, and HTMLPurifier_Injector_RemoveEmpty.

Definition at line 90 of file Injector.php.

References $config, $result, and checkNeeded().

{
$this->htmlDefinition = $config->getHTMLDefinition();
// Even though this might fail, some unit tests ignore this and
// still test checkNeeded, so be careful. Maybe get rid of that
// dependency.
if ($result !== false) return $result;
$this->currentNesting =& $context->get('CurrentNesting');
$this->inputTokens =& $context->get('InputTokens');
$this->inputIndex =& $context->get('InputIndex');
return false;
}

+ Here is the call graph for this function:

HTMLPurifier_Injector::rewind (   $index)

Rewind to a spot to re-perform processing.

This is useful if you deleted a node, and now need to see if this change affected any earlier nodes. Rewinding does not affect other injectors, and can result in infinite loops if not used carefully.

Warning
HTML Purifier will prevent you from fast-forwarding with this function.

Definition at line 68 of file Injector.php.

Referenced by getRewind(), and HTMLPurifier_Injector_RemoveEmpty\handleElement().

{
$this->rewind = $index;
}

+ Here is the caller graph for this function:

Field Documentation

HTMLPurifier_Injector::$currentNesting
protected

Reference to CurrentNesting variable in Context.

This is an array list of tokens that we are currently "inside"

Definition at line 33 of file Injector.php.

HTMLPurifier_Injector::$htmlDefinition
protected

Instance of HTMLPurifier_HTMLDefinition.

Definition at line 27 of file Injector.php.

HTMLPurifier_Injector::$inputIndex
protected

Reference to InputIndex variable in Context.

This is an integer array index for $this->inputTokens that indicates what token is currently being processed.

Definition at line 46 of file Injector.php.

Referenced by current().

HTMLPurifier_Injector::$inputTokens
protected

Reference to InputTokens variable in Context.

This is an array list of the input tokens that are being processed.

Definition at line 39 of file Injector.php.

HTMLPurifier_Injector::$name

Advisory name of injector, this is for friendly error messages.

Definition at line 22 of file Injector.php.

Referenced by allowsElement(), and checkNeeded().

HTMLPurifier_Injector::$needed = array()

Array of elements and attributes this injector creates and therefore need to be allowed by the definition.

Takes form of array('element' => array('attr', 'attr2'), 'element2')

Definition at line 53 of file Injector.php.

HTMLPurifier_Injector::$rewind = false
protected

Index of inputTokens to rewind to.

Definition at line 58 of file Injector.php.

Referenced by getRewind().


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