mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Pear bbcode parser no longer requires work.
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.1.0@41699 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
ab1633fb67
commit
eabe326466
@ -20,5 +20,5 @@ xmlclose = "true"
|
||||
|
||||
; possible values: a comma seperated list of filters
|
||||
; comma seperated list of filters to use
|
||||
filters = ""
|
||||
filters = "Basic,Extended,EmailLinks,Images,Links,Lists"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
|
||||
require_once('HTML/HTML_BBCodeParser.php');
|
||||
require_once('HTML/HTMLBBCodeParser.php');
|
||||
/*Seting up the PEAR bbcode parser*/
|
||||
$config = parse_ini_file('BBCodeParser.ini', true);
|
||||
$options = &HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser', '_options');
|
||||
|
10
parsers/HTML/BBCodeParser/Filter.php
Normal file
10
parsers/HTML/BBCodeParser/Filter.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
require_once 'HTML/HTMLBBCodeParser.php';
|
||||
|
||||
/**
|
||||
* Dummy class that filters need to extend from.
|
||||
*/
|
||||
class HTML_BBCodeParser_Filter extends HTML_BBCodeParser
|
||||
{
|
||||
}
|
||||
?>
|
71
parsers/HTML/BBCodeParser/Filter/Basic.php
Normal file
71
parsers/HTML/BBCodeParser/Filter/Basic.php
Normal file
@ -0,0 +1,71 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Basic.php,v 1.6 2007/07/02 16:54:25 cweiske Exp $
|
||||
//
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
|
||||
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
|
||||
|
||||
|
||||
class HTML_BBCodeParser_Filter_Basic extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array( 'b' => array( 'htmlopen' => 'strong',
|
||||
'htmlclose' => 'strong',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'i' => array( 'htmlopen' => 'em',
|
||||
'htmlclose' => 'em',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'u' => array( 'htmlopen' => 'span style="text-decoration:underline;"',
|
||||
'htmlclose' => 'span',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
's' => array( 'htmlopen' => 'del',
|
||||
'htmlclose' => 'del',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'sub' => array( 'htmlopen' => 'sub',
|
||||
'htmlclose' => 'sub',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'sup' => array( 'htmlopen' => 'sup',
|
||||
'htmlclose' => 'sup',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
85
parsers/HTML/BBCodeParser/Filter/EmailLinks.php
Normal file
85
parsers/HTML/BBCodeParser/Filter/EmailLinks.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Email.php,v 1.5 2007/07/02 16:54:25 cweiske Exp $
|
||||
//
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
|
||||
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
|
||||
|
||||
|
||||
class HTML_BBCodeParser_Filter_EmailLinks extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array( 'email' => array( 'htmlopen' => 'a',
|
||||
'htmlclose' => 'a',
|
||||
'allowed' => 'none^img',
|
||||
'attributes'=> array('email' =>'href=%2$smailto:%1$s%2$s')
|
||||
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Executes statements before the actual array building starts
|
||||
*
|
||||
* This method should be overwritten in a filter if you want to do
|
||||
* something before the parsing process starts. This can be useful to
|
||||
* allow certain short alternative tags which then can be converted into
|
||||
* proper tags with preg_replace() calls.
|
||||
* The main class walks through all the filters and and calls this
|
||||
* method if it exists. The filters should modify their private $_text
|
||||
* variable.
|
||||
*
|
||||
* @return none
|
||||
* @access private
|
||||
* @see $_text
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
function _preparse()
|
||||
{
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser','_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
$oe = $options['open_esc'];
|
||||
$ce = $options['close_esc'];
|
||||
$pattern = array( "!(^|\s)([-a-z0-9_.]+@[-a-z0-9.]+\.[a-z]{2,4})!i",
|
||||
"!".$oe."email(".$ce."|\s.*".$ce.")(.*)".$oe."/email".$ce."!Ui");
|
||||
$replace = array( "\\1".$o."email=\\2".$c."\\2".$o."/email".$c,
|
||||
$o."email=\\2\\1\\2".$o."/email".$c);
|
||||
$this->_preparsed = preg_replace($pattern, $replace, $this->_text);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
97
parsers/HTML/BBCodeParser/Filter/Extended.php
Normal file
97
parsers/HTML/BBCodeParser/Filter/Extended.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Extended.php,v 1.3 2007/07/02 16:54:25 cweiske Exp $
|
||||
//
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
|
||||
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
|
||||
|
||||
|
||||
class HTML_BBCodeParser_Filter_Extended extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array(
|
||||
'color' => array( 'htmlopen' => 'span',
|
||||
'htmlclose' => 'span',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array('color' =>'style=%2$scolor:%1$s%2$s')),
|
||||
'size' => array( 'htmlopen' => 'span',
|
||||
'htmlclose' => 'span',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array('size' =>'style=%2$sfont-size:%1$spt%2$s')),
|
||||
'font' => array( 'htmlopen' => 'span',
|
||||
'htmlclose' => 'span',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array('font' =>'style=%2$sfont-family:%1$s%2$s')),
|
||||
'align' => array( 'htmlopen' => 'div',
|
||||
'htmlclose' => 'div',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array('align' =>'style=%2$stext-align:%1$s%2$s')),
|
||||
'quote' => array('htmlopen' => 'q',
|
||||
'htmlclose' => 'q',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array('quote' =>'cite=%2$s%1$s%2$s')),
|
||||
'code' => array('htmlopen' => 'pre',
|
||||
'htmlclose' => 'pre',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h1' => array('htmlopen' => 'h1',
|
||||
'htmlclose' => 'h1',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h2' => array('htmlopen' => 'h2',
|
||||
'htmlclose' => 'h2',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h3' => array('htmlopen' => 'h3',
|
||||
'htmlclose' => 'h3',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h4' => array('htmlopen' => 'h4',
|
||||
'htmlclose' => 'h4',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h5' => array('htmlopen' => 'h5',
|
||||
'htmlclose' => 'h5',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array()),
|
||||
'h6' => array('htmlopen' => 'h6',
|
||||
'htmlclose' => 'h6',
|
||||
'allowed' => 'all',
|
||||
'attributes'=> array())
|
||||
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
79
parsers/HTML/BBCodeParser/Filter/Images.php
Normal file
79
parsers/HTML/BBCodeParser/Filter/Images.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Images.php,v 1.8 2007/07/02 17:44:47 cweiske Exp $
|
||||
//
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
class HTML_BBCodeParser_Filter_Images extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array(
|
||||
'img' => array(
|
||||
'htmlopen' => 'img',
|
||||
'htmlclose' => '',
|
||||
'allowed' => 'none',
|
||||
'attributes'=> array(
|
||||
'img' => 'src=%2$s%1$s%2$s',
|
||||
'w' => 'width=%2$s%1$d%2$s',
|
||||
'h' => 'height=%2$s%1$d%2$s',
|
||||
'alt' => 'alt=%2$s%1$s%2$s',
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* Executes statements before the actual array building starts
|
||||
*
|
||||
* This method should be overwritten in a filter if you want to do
|
||||
* something before the parsing process starts. This can be useful to
|
||||
* allow certain short alternative tags which then can be converted into
|
||||
* proper tags with preg_replace() calls.
|
||||
* The main class walks through all the filters and and calls this
|
||||
* method if it exists. The filters should modify their private $_text
|
||||
* variable.
|
||||
*
|
||||
* @return none
|
||||
* @access private
|
||||
* @see $_text
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
function _preparse()
|
||||
{
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser','_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
$oe = $options['open_esc'];
|
||||
$ce = $options['close_esc'];
|
||||
$this->_preparsed = preg_replace(
|
||||
"!".$oe."img(\s?.*)".$ce."(.*)".$oe."/img".$ce."!Ui",
|
||||
$o."img=\"\$2\"\$1".$c.$o."/img".$c,
|
||||
$this->_text);
|
||||
}
|
||||
}
|
200
parsers/HTML/BBCodeParser/Filter/Links.php
Normal file
200
parsers/HTML/BBCodeParser/Filter/Links.php
Normal file
@ -0,0 +1,200 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Links.php,v 1.12 2007/07/02 18:26:17 cweiske Exp $
|
||||
//
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class HTML_BBCodeParser_Filter_Links extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
/**
|
||||
* List of allowed schemes
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_allowedSchemes = array('http', 'https', 'ftp');
|
||||
|
||||
/**
|
||||
* Default scheme
|
||||
*
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
var $_defaultScheme = 'http';
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array(
|
||||
'url' => array(
|
||||
'htmlopen' => 'a',
|
||||
'htmlclose' => 'a',
|
||||
'allowed' => 'none^img',
|
||||
'attributes'=> array('url' => 'href=%2$s%1$s%2$s')
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Executes statements before the actual array building starts
|
||||
*
|
||||
* This method should be overwritten in a filter if you want to do
|
||||
* something before the parsing process starts. This can be useful to
|
||||
* allow certain short alternative tags which then can be converted into
|
||||
* proper tags with preg_replace() calls.
|
||||
* The main class walks through all the filters and and calls this
|
||||
* method if it exists. The filters should modify their private $_text
|
||||
* variable.
|
||||
*
|
||||
* @return none
|
||||
* @access private
|
||||
* @see $_text
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
* @author Seth Price <seth@pricepages.org>
|
||||
*/
|
||||
function _preparse()
|
||||
{
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser', '_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
$oe = $options['open_esc'];
|
||||
$ce = $options['close_esc'];
|
||||
|
||||
$schemes = implode('|', $this->_allowedSchemes);
|
||||
|
||||
$pattern = array( "/(?<![\"'=".$ce."\/])(".$oe."[^".$ce."]*".$ce.")?(((".$schemes."):\/\/|www)[@-a-z0-9.]+\.[a-z]{2,4}[^\s()\[\]]*)/i",
|
||||
"!".$oe."url(".$ce."|\s.*".$ce.")(.*)".$oe."/url".$ce."!iU",
|
||||
"!".$oe."url=((([a-z]*:(//)?)|www)[@-a-z0-9.]+)([^\s\[\]]*)".$ce."(.*)".$oe."/url".$ce."!i");
|
||||
|
||||
$pp = preg_replace_callback($pattern[0], array($this, 'smarterPPLinkExpand'), $this->_text);
|
||||
$pp = preg_replace($pattern[1], $o."url=\$2\$1\$2".$o."/url".$c, $pp);
|
||||
$this->_preparsed = preg_replace_callback($pattern[2], array($this, 'smarterPPLink'), $pp);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Intelligently expand a URL into a link
|
||||
*
|
||||
* @return string
|
||||
* @access private
|
||||
* @author Seth Price <seth@pricepages.org>
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it>
|
||||
*/
|
||||
function smarterPPLinkExpand($matches)
|
||||
{
|
||||
//echo '<hr><pre>';var_dump($matches);echo '</pre><hr>';
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser','_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
|
||||
//If we have an intro tag that is [url], then skip this match
|
||||
if ($matches[1] == $o.'url'.$c) {
|
||||
return $matches[0];
|
||||
}
|
||||
|
||||
$punctuation = '.,;:'; // Links can't end with these chars
|
||||
$trailing = '';
|
||||
// Knock off ending punctuation
|
||||
$last = substr($matches[2], -1);
|
||||
while (strpos($punctuation, $last) !== false) {
|
||||
// Last character is punctuation - remove it from the url
|
||||
$trailing = $last.$trailing;
|
||||
$matches[2] = substr($matches[2], 0, -1);
|
||||
$last = substr($matches[2], -1);
|
||||
}
|
||||
|
||||
$off = strpos($matches[2], ':');
|
||||
|
||||
//Is a ":" (therefore a scheme) defined?
|
||||
if ($off === false) {
|
||||
/*
|
||||
* Create a link with the default scheme of http. Notice that the
|
||||
* text that is viewable to the user is unchanged, but the link
|
||||
* itself contains the "http://".
|
||||
*/
|
||||
return $matches[1].$o.'url='.$this->_defaultScheme.'://'.$matches[2].$c.$matches[2].$o.'/url'.$c.$trailing;
|
||||
}
|
||||
|
||||
$scheme = substr($matches[2], 0, $off);
|
||||
|
||||
/*
|
||||
* If protocol is in the approved list than allow it. Note that this
|
||||
* check isn't really needed, but the created link will just be deleted
|
||||
* later in smarterPPLink() if we create it now and it isn't on the
|
||||
* scheme list.
|
||||
*/
|
||||
if (in_array($scheme, $this->_allowedSchemes)) {
|
||||
return $matches[1].$o.'url'.$c.$matches[2].$o.'/url'.$c.$trailing;
|
||||
}
|
||||
|
||||
return $matches[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish preparsing URL to clean it up
|
||||
*
|
||||
* @return string
|
||||
* @access private
|
||||
* @author Seth Price <seth@pricepages.org>
|
||||
*/
|
||||
function smarterPPLink($matches)
|
||||
{
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser','_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
|
||||
$urlServ = $matches[1];
|
||||
$path = $matches[5];
|
||||
|
||||
$off = strpos($urlServ, ':');
|
||||
|
||||
if ($off === false) {
|
||||
//Default to http
|
||||
$urlServ = $this->_defaultScheme.'://'.$urlServ;
|
||||
$off = strpos($urlServ, ':');
|
||||
}
|
||||
|
||||
//Add trailing slash if missing (to create a valid URL)
|
||||
if (!$path) {
|
||||
$path = '/';
|
||||
}
|
||||
|
||||
$protocol = substr($urlServ, 0, $off);
|
||||
|
||||
if (in_array($protocol, $this->_allowedSchemes)) {
|
||||
//If protocol is in the approved list than allow it
|
||||
return $o.'url='.$urlServ.$path.$c.$matches[6].$o.'/url'.$c;
|
||||
}
|
||||
|
||||
//Else remove url tag
|
||||
return $matches[6];
|
||||
}
|
||||
}
|
||||
?>
|
108
parsers/HTML/BBCodeParser/Filter/Lists.php
Normal file
108
parsers/HTML/BBCodeParser/Filter/Lists.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?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.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Stijn de Reede <sjr@gmx.co.uk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Lists.php,v 1.5 2007/07/02 16:54:25 cweiske Exp $
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
* @package HTML_BBCodeParser
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>
|
||||
*/
|
||||
|
||||
require_once 'HTML/BBCodeParser/Filter.php';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class HTML_BBCodeParser_Filter_Lists extends HTML_BBCodeParser_Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* An array of tags parsed by the engine
|
||||
*
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
var $_definedTags = array( 'list' => array( 'htmlopen' => 'ol',
|
||||
'htmlclose' => 'ol',
|
||||
'allowed' => 'all',
|
||||
'child' => 'none^li',
|
||||
'attributes'=> array('list' => 'style=%2$slist-style-type:%1$s;%2$s')
|
||||
),
|
||||
'ulist' => array( 'htmlopen' => 'ul',
|
||||
'htmlclose' => 'ul',
|
||||
'allowed' => 'all',
|
||||
'child' => 'none^li',
|
||||
'attributes'=> array('list' => 'style=%2$slist-style-type:%1$s;%2$s')
|
||||
),
|
||||
'li' => array( 'htmlopen' => 'li',
|
||||
'htmlclose' => 'li',
|
||||
'allowed' => 'all',
|
||||
'parent' => 'none^ulist,list',
|
||||
'attributes'=> array()
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Executes statements before the actual array building starts
|
||||
*
|
||||
* This method should be overwritten in a filter if you want to do
|
||||
* something before the parsing process starts. This can be useful to
|
||||
* allow certain short alternative tags which then can be converted into
|
||||
* proper tags with preg_replace() calls.
|
||||
* The main class walks through all the filters and and calls this
|
||||
* method if it exists. The filters should modify their private $_text
|
||||
* variable.
|
||||
*
|
||||
* @return none
|
||||
* @access private
|
||||
* @see $_text
|
||||
* @author Stijn de Reede <sjr@gmx.co.uk>, Seth Price <seth@pricepages.org>
|
||||
*/
|
||||
function _preparse()
|
||||
{
|
||||
$options = HTML_BBCodeParser::getStaticProperty('HTML_BBCodeParser','_options');
|
||||
$o = $options['open'];
|
||||
$c = $options['close'];
|
||||
$oe = $options['open_esc'];
|
||||
$ce = $options['close_esc'];
|
||||
|
||||
$pattern = array( "!".$oe."\*".$ce."!",
|
||||
"!".$oe."(u?)list=(?-i:A)(\s*[^".$ce."]*)".$ce."!i",
|
||||
"!".$oe."(u?)list=(?-i:a)(\s*[^".$ce."]*)".$ce."!i",
|
||||
"!".$oe."(u?)list=(?-i:I)(\s*[^".$ce."]*)".$ce."!i",
|
||||
"!".$oe."(u?)list=(?-i:i)(\s*[^".$ce."]*)".$ce."!i",
|
||||
"!".$oe."(u?)list=(?-i:1)(\s*[^".$ce."]*)".$ce."!i",
|
||||
"!".$oe."(u?)list([^".$ce."]*)".$ce."!i");
|
||||
|
||||
$replace = array( $o."li".$c,
|
||||
$o."\$1list=upper-alpha\$2".$c,
|
||||
$o."\$1list=lower-alpha\$2".$c,
|
||||
$o."\$1list=upper-roman\$2".$c,
|
||||
$o."\$1list=lower-roman\$2".$c,
|
||||
$o."\$1list=decimal\$2".$c,
|
||||
$o."\$1list\$2".$c );
|
||||
|
||||
$this->_preparsed = preg_replace($pattern, $replace, $this->_text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user