Make recognized URL schemes customizable via conf/scheme.conf (FS#797)

darcs-hash:20081012155022-2b4f5-177571b9b176bb822015623b62b4d35b98a93d7b.gz
This commit is contained in:
Gina Haeussge 2008-10-12 17:50:22 +02:00
parent c55fac478d
commit 36f2d7c159
3 changed files with 28 additions and 2 deletions

11
conf/scheme.conf Normal file
View File

@ -0,0 +1,11 @@
#Add URL schemes you want to be recognized as links here
http
https
telnet
gopher
wais
ftp
ed2k
irc
ldap

View File

@ -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
*

View File

@ -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) {