function in_string( $needle, $str ) {
return strpos( $str, $needle ) !== false;
}
+
+/**
+ * Returns a regular expression of url protocols
+ *
+ * @return string
+ */
+function wfUrlProtocols() {
+ global $wgUrlProtocols;
+
+ $x = array();
+ foreach ($wgUrlProtocols as $protocol)
+ $x[] = preg_quote( $protocol, '/' );
+
+ return implode( '|', $x );
+}
+
?>
define( 'EXT_LINK_TEXT_CLASS', '[^\]\\x00-\\x1F\\x7F]' );
define( 'EXT_IMAGE_FNAME_CLASS', '[A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]' );
define( 'EXT_IMAGE_EXTENSIONS', 'gif|png|jpg|jpeg' );
-define( 'EXT_LINK_BRACKETED', '/\[(\b('.$wgUrlProtocols.')'.EXT_LINK_URL_CLASS.'+) *('.EXT_LINK_TEXT_CLASS.'*?)\]/S' );
+define( 'EXT_LINK_BRACKETED', '/\[(\b(' . wfUrlProtocols() . ')'.EXT_LINK_URL_CLASS.'+) *('.EXT_LINK_TEXT_CLASS.'*?)\]/S' );
define( 'EXT_IMAGE_REGEX',
'/^('.HTTP_PROTOCOLS.')'. # Protocol
'('.EXT_LINK_URL_CLASS.'+)\\/'. # Hostname and path
* @access private
*/
function replaceFreeExternalLinks( $text ) {
- global $wgUrlProtocols;
global $wgContLang;
$fname = 'Parser::replaceFreeExternalLinks';
wfProfileIn( $fname );
- $bits = preg_split( '/(\b(?:'.$wgUrlProtocols.'))/S', $text, -1, PREG_SPLIT_DELIM_CAPTURE );
+ $bits = preg_split( '/(\b(?:' . wfUrlProtocols() . '))/S', $text, -1, PREG_SPLIT_DELIM_CAPTURE );
$s = array_shift( $bits );
$i = 0;
* @access private
*/
function replaceInternalLinks( $s ) {
- global $wgContLang, $wgLinkCache, $wgUrlProtocols;
+ global $wgContLang, $wgLinkCache;
static $fname = 'Parser::replaceInternalLinks' ;
wfProfileIn( $fname );
# Don't allow internal links to pages containing
# PROTO: where PROTO is a valid URL protocol; these
# should be external links.
- if (preg_match('/^(\b(?:'.$wgUrlProtocols.'))/', $m[1])) {
+ if (preg_match('/^(\b(?:' . wfUrlProtocols() . '))/', $m[1])) {
$s .= $prefix . '[[' . $line ;
continue;
}
$text = $this->replaceInternalLinks($text);
# cloak any absolute URLs inside the image markup, so replaceExternalLinks() won't touch them
- $s .= $prefix . preg_replace("/\b($wgUrlProtocols)/", UNIQ_PREFIX."NOPARSE$1", $this->makeImage( $nt, $text) ) . $trail;
+ $s .= $prefix . preg_replace( "/\b(" . wfUrlProtocols() . ')/', UNIQ_PREFIX."NOPARSE$1", $this->makeImage( $nt, $text) ) . $trail;
$wgLinkCache->addImageLinkObj( $nt );
wfProfileOut( "$fname-image" );
* @todo Check for unique id attribute :P
*/
function fixTagAttributes( $text, $element ) {
- global $wgUrlProtocols;
if( trim( $text ) == '' ) {
return '';
}
# Stupid hack
$value = preg_replace_callback(
- '/(' . $wgUrlProtocols . ')/',
+ '/(' . wfUrlProtocols() . ')/',
array( 'Sanitizer', 'armorLinksCallback' ),
$value );
# If url string starts with http, consider as external URL, else
# internal
/*static*/ function makeInternalOrExternalUrl( $name ) {
- global $wgUrlProtocols;
- if ( preg_match( '/^(?:' . $wgUrlProtocols . ')/', $name ) ) {
+ if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $name ) ) {
return $name;
} else {
return $this->makeUrl( $name );