summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorGina Haeussge <osd@foosel.net>2008-10-12 17:50:22 +0200
committerGina Haeussge <osd@foosel.net>2008-10-12 17:50:22 +0200
commit36f2d7c159dca3a958e96bb913d64c8768dc7518 (patch)
tree8581da4da587103f0796b2a2e11bbcdc49c1b35b /inc
parentc55fac478dfe355b61391b29b6edf6f503f953c5 (diff)
downloadrpg-36f2d7c159dca3a958e96bb913d64c8768dc7518.tar.gz
rpg-36f2d7c159dca3a958e96bb913d64c8768dc7518.tar.bz2
Make recognized URL schemes customizable via conf/scheme.conf (FS#797)
darcs-hash:20081012155022-2b4f5-177571b9b176bb822015623b62b4d35b98a93d7b.gz
Diffstat (limited to 'inc')
-rw-r--r--inc/confutils.php15
-rw-r--r--inc/parser/parser.php4
2 files changed, 17 insertions, 2 deletions
diff --git a/inc/confutils.php b/inc/confutils.php
index c18b92a02..d735b8b82 100644
--- a/inc/confutils.php
+++ b/inc/confutils.php
@@ -132,6 +132,21 @@ function getWordblocks() {
}
+function getSchemes() {
+ static $schemes = NULL;
+ if ( !$schemes ) {
+ $schemes = file(DOKU_CONF.'scheme.conf');
+ if (@file_exists(DOKU_CONF.'scheme.local.conf')) {
+ $local = file(DOKU_CONF.'scheme.local.conf');
+ $schemes = array_merge($schemes, $local);
+ }
+ }
+ $schemes = array_map('trim', $schemes);
+ $schemes = preg_replace('/^#.*/', '', $schemes);
+ $schemes = array_filter($schemes);
+ return $schemes;
+}
+
/**
* Builds a hash from a configfile
*
diff --git a/inc/parser/parser.php b/inc/parser/parser.php
index 804257d03..4cf57b3bf 100644
--- a/inc/parser/parser.php
+++ b/inc/parser/parser.php
@@ -845,7 +845,7 @@ class Doku_Parser_Mode_rss extends Doku_Parser_Mode {
//-------------------------------------------------------------------
class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
- var $schemes = array('http','https','telnet','gopher','wais','ftp','ed2k','irc','ldap');
+ var $schemes = array();
var $patterns = array();
function preConnect() {
@@ -857,13 +857,13 @@ class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
$host = $ltrs.$punc;
$any = $ltrs.$gunk.$punc;
+ $this->schemes = getSchemes();
foreach ( $this->schemes as $scheme ) {
$this->patterns[] = '\b(?i)'.$scheme.'(?-i)://['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
}
$this->patterns[] = '\b(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
$this->patterns[] = '\b(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
-
}
function connectTo($mode) {