summaryrefslogtreecommitdiff
path: root/includes/pear/Text/Wiki/Parse/Default/Embed.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/pear/Text/Wiki/Parse/Default/Embed.php')
-rw-r--r--includes/pear/Text/Wiki/Parse/Default/Embed.php106
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