From 6854cb3f4d8219cf1829e32122eb2502a916eae9 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 1 Feb 2020 09:05:48 +0100 Subject: initial checkin --- plugins/dokuwiki/inc/confutils.php | 189 +++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 plugins/dokuwiki/inc/confutils.php (limited to 'plugins/dokuwiki/inc/confutils.php') diff --git a/plugins/dokuwiki/inc/confutils.php b/plugins/dokuwiki/inc/confutils.php new file mode 100644 index 0000000..c668e80 --- /dev/null +++ b/plugins/dokuwiki/inc/confutils.php @@ -0,0 +1,189 @@ + + */ + + if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); + +/** + * Returns the (known) extension and mimetype of a given filename + * + * @author Andreas Gohr + */ +function mimetype($file){ + $ret = array(false,false); // return array + $mtypes = getMimeTypes(); // known mimetypes + $exts = join('|',array_keys($mtypes)); // known extensions (regexp) + if(preg_match('#\.('.$exts.')$#i',$file,$matches)){ + $ext = strtolower($matches[1]); + } + + if($ext && $mtypes[$ext]){ + $ret = array($ext, $mtypes[$ext]); + } + + return $ret; +} + +/** + * returns a hash of mimetypes + * + * @author Andreas Gohr + */ +function getMimeTypes() { + static $mime = NULL; + if ( !$mime ) { + $mime = confToHash(DOKU_CONF.'mime.conf'); + if (@file_exists(DOKU_CONF.'mime.local.conf')) { + $local = confToHash(DOKU_CONF.'mime.local.conf'); + $mime = array_merge($mime, $local); + } + } + return $mime; +} + +/** + * returns a hash of acronyms + * + * @author Harry Fuecks + */ +function getAcronyms() { + static $acronyms = NULL; + if ( !$acronyms ) { + $acronyms = confToHash(DOKU_CONF.'acronyms.conf'); + if (@file_exists(DOKU_CONF.'acronyms.local.conf')) { + $local = confToHash(DOKU_CONF.'acronyms.local.conf'); + $acronyms = array_merge($acronyms, $local); + } + } + return $acronyms; +} + +/** + * returns a hash of smileys + * + * @author Harry Fuecks + */ +function getSmileys() { + static $smileys = NULL; + if ( !$smileys ) { + $smileys = confToHash(DOKU_CONF.'smileys.conf'); + if (@file_exists(DOKU_CONF.'smileys.local.conf')) { + $local = confToHash(DOKU_CONF.'smileys.local.conf'); + $smileys = array_merge($smileys, $local); + } + } + return $smileys; +} + +/** + * returns a hash of entities + * + * @author Harry Fuecks + */ +function getEntities() { + static $entities = NULL; + if ( !$entities ) { + $entities = confToHash(DOKU_CONF.'entities.conf'); + if (@file_exists(DOKU_CONF.'entities.local.conf')) { + $local = confToHash(DOKU_CONF.'entities.local.conf'); + $entities = array_merge($entities, $local); + } + } + return $entities; +} + +/** + * returns a hash of interwikilinks + * + * @author Harry Fuecks + */ +function getInterwiki() { + static $wikis = NULL; + if ( !$wikis ) { + $wikis = confToHash(DOKU_CONF.'interwiki.conf',true); + if (@file_exists(DOKU_CONF.'interwiki.local.conf')) { + $local = confToHash(DOKU_CONF.'interwiki.local.conf'); + $wikis = array_merge($wikis, $local); + } + } + //add sepecial case 'this' + $wikis['this'] = DOKU_URL.'{NAME}'; + return $wikis; +} + +/** + * returns array of wordblock patterns + * + */ +function getWordblocks() { + static $wordblocks = NULL; + if ( !$wordblocks ) { + $wordblocks = file(DOKU_CONF.'wordblock.conf'); + if (@file_exists(DOKU_CONF.'wordblock.local.conf')) { + $local = file(DOKU_CONF.'wordblock.local.conf'); + $wordblocks = array_merge($wordblocks, $local); + } + } + return $wordblocks; +} + + +/** + * Builds a hash from a configfile + * + * If $lower is set to true all hash keys are converted to + * lower case. + * + * @author Harry Fuecks + * @author Andreas Gohr + */ +function confToHash($file,$lower=false) { + $conf = array(); + $lines = @file( $file ); + if ( !$lines ) return $conf; + + foreach ( $lines as $line ) { + //ignore comments + $line = preg_replace('/(? + * @returns boolean true if enabled, false if disabled + */ +function actionOK($action){ + static $disabled = null; + if(is_null($disabled)){ + global $conf; + + // prepare disabled actions array and handle legacy options + $disabled = explode(',',$conf['disableactions']); + $disabled = array_map('trim',$disabled); + if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register'; + if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd'; + $disabled = array_unique($disabled); + } + + return !in_array($action,$disabled); +} + + +//Setup VIM: ex: et ts=2 enc=utf-8 : -- cgit v1.2.3-70-g09d2