diff options
Diffstat (limited to 'includes/pear/Text/Wiki/Parse/Default/Embed.php')
| -rw-r--r-- | includes/pear/Text/Wiki/Parse/Default/Embed.php | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/includes/pear/Text/Wiki/Parse/Default/Embed.php b/includes/pear/Text/Wiki/Parse/Default/Embed.php new file mode 100644 index 0000000..2d31a71 --- /dev/null +++ b/includes/pear/Text/Wiki/Parse/Default/Embed.php @@ -0,0 +1,106 @@ +<?php + +/** +* +* Embeds the results of a PHP script at render-time. +* +* @category Text +* +* @package Text_Wiki +* +* @author Paul M. Jones <pmjones@php.net> +* +* @license LGPL +* +* @version $Id: Embed.php 180591 2005-02-23 17:38:29Z pmjones $ +* +*/ + +/** +* +* Embeds the results of a PHP script at render-time. +* +* This class implements a Text_Wiki_Parse to embed the contents of a URL +* inside the page at render-time. Typically used to get script output. +* This differs from the 'include' rule, which incorporates results at +* parse-time; 'embed' output does not get parsed by Text_Wiki, while +* 'include' ouput does. +* +* This rule is inherently not secure; it allows cross-site scripting to +* occur if the embedded output has <script> or other similar tags. Be +* careful. +* +* @category Text +* +* @package Text_Wiki +* +* @author Paul M. Jones <pmjones@php.net> +* +*/ + +class Text_Wiki_Parse_Embed extends Text_Wiki_Parse { + + var $conf = array( + 'base' => '/path/to/scripts/' + ); + + var $file = null; + + var $output = null; + + var $vars = null; + + + /** + * + * The regular expression used to find source text matching this + * rule. + * + * @access public + * + * @var string + * + */ + + var $regex = '/(\[\[embed )(.+?)( .+?)?(\]\])/i'; + + + /** + * + * Generates a token entry for the matched text. Token options are: + * + * 'text' => The full matched text, not including the <code></code> tags. + * + * @access public + * + * @param array &$matches The array of matches from parse(). + * + * @return A delimited token number to be used as a placeholder in + * the source text. + * + */ + + function process(&$matches) + { + // save the file location + $this->file = $this->getConf('base', './') . $matches[2]; + + // extract attribs as variables in the local space + $this->vars = $this->getAttrs($matches[3]); + unset($this->vars['this']); + extract($this->vars); + + // run the script + ob_start(); + include($this->file); + $this->output = ob_get_contents(); + ob_end_clean(); + + // done, place the script output directly in the source + return $this->wiki->addToken( + $this->rule, + array('text' => $this->output) + ); + } +} +?>
\ No newline at end of file |
