<?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2003 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Paul M. Jones <pmjones@ciaweb.net> | // +----------------------------------------------------------------------+ // // $Id: embed.php,v 1.2 2004/12/02 10:54:32 nohn Exp $ /** * * This class implements a Text_Wiki_Rule 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. * * @author Paul M. Jones <pmjones@ciaweb.net> * * @package Text_Wiki * */ class Text_Wiki_Rule_embed extends Text_Wiki_Rule { /** * * 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) { $options = array('path' => $matches[2]); return $this->addToken($options); } /** * * Renders a token into text matching the requested format. * * @access public * * @param array $options The "options" portion of the token (second * element). * * @return string The text rendered from the token options. * */ function renderXhtml($options) { $file = $this->_conf['base'] . $options['path']; ob_start(); include($file); $output = ob_get_contents(); ob_end_clean(); return $output; } } ?>