Initial Commit
This commit is contained in:
136
database/php/pear/Text/Wiki/Parse/Default/Image.php
Normal file
136
database/php/pear/Text/Wiki/Parse/Default/Image.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses for image placement.
|
||||
*
|
||||
* @category Text
|
||||
*
|
||||
* @package Text_Wiki
|
||||
*
|
||||
* @author Paul M. Jones <pmjones@php.net>
|
||||
*
|
||||
* @license LGPL
|
||||
*
|
||||
* @version $Id: Image.php 195859 2005-09-12 11:34:44Z toggg $
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses for image placement.
|
||||
*
|
||||
* @category Text
|
||||
*
|
||||
* @package Text_Wiki
|
||||
*
|
||||
* @author Paul M. Jones <pmjones@php.net>
|
||||
*
|
||||
*/
|
||||
|
||||
class Text_Wiki_Parse_Image extends Text_Wiki_Parse {
|
||||
|
||||
/**
|
||||
* URL schemes recognized by this rule.
|
||||
*
|
||||
* @access public
|
||||
* @var array
|
||||
*/
|
||||
var $conf = array(
|
||||
'schemes' => 'http|https|ftp|gopher|news',
|
||||
'host_regexp' => '(?:[^.\s/"\'<\\\#delim#\ca-\cz]+\.)*[a-z](?:[-a-z0-9]*[a-z0-9])?\.?',
|
||||
'path_regexp' => '(?:/[^\s"<\\\#delim#\ca-\cz]*)?'
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
* The regular expression used to find source text matching this
|
||||
* rule.
|
||||
*
|
||||
* @access public
|
||||
*
|
||||
* @var string
|
||||
*
|
||||
*/
|
||||
|
||||
var $regex = '/(\[\[image\s+)(.+?)(\]\])/i';
|
||||
|
||||
|
||||
/**
|
||||
* The regular expressions used to check ecternal urls
|
||||
*
|
||||
* @access public
|
||||
* @var string
|
||||
* @see parse()
|
||||
*/
|
||||
var $url = '';
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* We override the constructor to build up the url regex from config
|
||||
*
|
||||
* @param object &$obj the base conversion handler
|
||||
* @return The parser object
|
||||
* @access public
|
||||
*/
|
||||
function Text_Wiki_Parse_Image(&$obj)
|
||||
{
|
||||
$default = $this->conf;
|
||||
parent::Text_Wiki_Parse($obj);
|
||||
|
||||
// convert the list of recognized schemes to a regex OR,
|
||||
$schemes = $this->getConf('schemes', $default['schemes']);
|
||||
$this->url = str_replace( '#delim#', $this->wiki->delim,
|
||||
'#(?:' . (is_array($schemes) ? implode('|', $schemes) : $schemes) . ')://'
|
||||
. $this->getConf('host_regexp', $default['host_regexp'])
|
||||
. $this->getConf('path_regexp', $default['path_regexp']) .'#');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Generates a token entry for the matched text. Token options are:
|
||||
*
|
||||
* 'src' => The image source, typically a relative path name.
|
||||
*
|
||||
* 'opts' => Any macro options following the source.
|
||||
*
|
||||
* @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)
|
||||
{
|
||||
$pos = strpos($matches[2], ' ');
|
||||
|
||||
if ($pos === false) {
|
||||
$options = array(
|
||||
'src' => $matches[2],
|
||||
'attr' => array());
|
||||
} else {
|
||||
// everything after the space is attribute arguments
|
||||
$options = array(
|
||||
'src' => substr($matches[2], 0, $pos),
|
||||
'attr' => $this->getAttrs(substr($matches[2], $pos+1))
|
||||
);
|
||||
// check the scheme case of external link
|
||||
if (array_key_exists('link', $options['attr'])) {
|
||||
// external url ?
|
||||
if (($pos = strpos($options['attr']['link'], '://')) !== false) {
|
||||
if (!preg_match($this->url, $options['attr']['link'])) {
|
||||
return $matches[0];
|
||||
}
|
||||
} elseif (in_array('Wikilink', $this->wiki->disable)) {
|
||||
return $matches[0]; // Wikilink disabled
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->wiki->addToken($this->rule, $options);
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user