2007-02-04 00:07:52 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents an XHTML 1.1 module, with information on elements, tags
|
|
|
|
* and attributes.
|
|
|
|
* @note Even though this is technically XHTML 1.1, it is also used for
|
|
|
|
* regular HTML parsing. We are using modulization as a convenient
|
|
|
|
* way to represent the internals of HTMLDefinition, and our
|
|
|
|
* implementation is by no means conforming and does not directly
|
|
|
|
* use the normative DTDs or XML schemas.
|
2007-02-04 22:26:56 +00:00
|
|
|
* @note The public variables in a module should almost directly
|
|
|
|
* correspond to the variables in HTMLPurifier_HTMLDefinition.
|
|
|
|
* However, the prefix info carries no special meaning in these
|
|
|
|
* objects (include it anyway if that's the correspondence though).
|
2007-02-04 00:07:52 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
class HTMLPurifier_HTMLModule
|
|
|
|
{
|
2007-02-14 22:30:17 +00:00
|
|
|
/**
|
|
|
|
* Short unique string identifier of the module
|
|
|
|
*/
|
|
|
|
var $name;
|
|
|
|
|
2007-02-16 03:01:23 +00:00
|
|
|
/**
|
|
|
|
* Type of module. Currently three supported values: define,
|
|
|
|
* define-redefine and redefine. Define means that the module solely
|
|
|
|
* creates new elements. Redefine means that the module solely
|
|
|
|
* redefines aspects of already existing elements. Define-Redefine
|
|
|
|
* is a combo of the two. This affects the order in which the module
|
|
|
|
* will be loaded, see HTMLPurifier_HTMLModuleManager for more details.
|
|
|
|
*/
|
|
|
|
var $type;
|
|
|
|
|
2007-02-04 20:09:35 +00:00
|
|
|
/**
|
2007-02-15 14:00:18 +00:00
|
|
|
* List of elements that the module implements or substantially
|
|
|
|
* modifies, either through a new ElementDef or a modified
|
|
|
|
* content set that directly affects the element (if the element was
|
|
|
|
* removed or added from a content set).
|
2007-02-04 20:09:35 +00:00
|
|
|
* @protected
|
|
|
|
*/
|
2007-02-04 00:07:52 +00:00
|
|
|
var $elements = array();
|
2007-02-04 20:09:35 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Associative array of element names to element definitions.
|
|
|
|
* Some definitions may be incomplete, to be merged in later
|
|
|
|
* with the full definition.
|
|
|
|
* @public
|
|
|
|
*/
|
2007-02-04 00:07:52 +00:00
|
|
|
var $info = array();
|
2007-02-04 20:09:35 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Associative array of content set names to content set additions.
|
|
|
|
* This is commonly used to, say, add an A element to the Inline
|
2007-02-04 22:26:56 +00:00
|
|
|
* content set. This corresponds to an internal variable $content_sets
|
|
|
|
* and NOT info_content_sets member variable of HTMLDefinition.
|
2007-02-04 20:09:35 +00:00
|
|
|
* @public
|
|
|
|
*/
|
2007-02-04 00:07:52 +00:00
|
|
|
var $content_sets = array();
|
2007-02-04 20:09:35 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Associative array of attribute collection names to attribute
|
|
|
|
* collection additions. More rarely used for adding attributes to
|
|
|
|
* the global collections. Example is the StyleAttribute module adding
|
2007-02-05 03:05:46 +00:00
|
|
|
* the style attribute to the Core. Corresponds to HTMLDefinition's
|
|
|
|
* attr_collections->info, since the object's data is only info,
|
|
|
|
* with extra behavior associated with it.
|
2007-02-04 20:09:35 +00:00
|
|
|
* @public
|
|
|
|
*/
|
2007-02-05 03:05:46 +00:00
|
|
|
var $attr_collections = array();
|
2007-02-04 20:09:35 +00:00
|
|
|
|
2007-02-10 23:35:21 +00:00
|
|
|
/**
|
|
|
|
* Associative array of deprecated tag name to HTMLPurifier_TagTransform
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
var $info_tag_transform = array();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List of HTMLPurifier_AttrTransform to be performed before validation.
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
var $info_attr_transform_pre = array();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List of HTMLPurifier_AttrTransform to be performed after validation.
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
var $info_attr_transform_post = array();
|
|
|
|
|
2007-02-04 20:09:35 +00:00
|
|
|
/**
|
|
|
|
* Boolean flag that indicates whether or not getChildDef is implemented.
|
|
|
|
* For optimization reasons: may save a call to a function. Be sure
|
|
|
|
* to set it if you do implement getChildDef(), otherwise it will have
|
|
|
|
* no effect!
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
var $defines_child_def = false;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves a proper HTMLPurifier_ChildDef subclass based on
|
|
|
|
* content_model and content_model_type member variables of
|
|
|
|
* the HTMLPurifier_ElementDef class. There is a similar function
|
|
|
|
* in HTMLPurifier_HTMLDefinition.
|
|
|
|
* @param $def HTMLPurifier_ElementDef instance
|
|
|
|
* @return HTMLPurifier_ChildDef subclass
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
function getChildDef($def) {return false;}
|
2007-02-10 23:35:21 +00:00
|
|
|
|
2007-02-12 03:02:26 +00:00
|
|
|
/**
|
|
|
|
* Hook method that lets module perform arbitrary operations on
|
|
|
|
* HTMLPurifier_HTMLDefinition before the module gets processed.
|
|
|
|
* @param $definition Reference to HTMLDefinition being setup
|
|
|
|
*/
|
2007-02-14 01:44:06 +00:00
|
|
|
function preProcess(&$definition) {}
|
2007-02-12 03:02:26 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Hook method that lets module perform arbitrary operations
|
|
|
|
* on HTMLPurifier_HTMLDefinition after the module gets processed.
|
|
|
|
* @param $definition Reference to HTMLDefinition being setup
|
|
|
|
*/
|
2007-02-14 01:44:06 +00:00
|
|
|
function postProcess(&$definition) {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Hook method that is called when a module gets registered to
|
|
|
|
* the definition.
|
|
|
|
* @param $definition Reference to HTMLDefinition being setup
|
|
|
|
*/
|
|
|
|
function setup(&$definition) {}
|
2007-02-12 03:02:26 +00:00
|
|
|
|
2007-02-04 00:07:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|