1b625487dSandi<?php 2b625487dSandi/** 3b625487dSandi * Utilities for collecting data from config files 4b625487dSandi * 5b625487dSandi * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 6b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 7b625487dSandi */ 8b625487dSandi 9b625487dSandi if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); 10b625487dSandi 11b625487dSandi/** 12b625487dSandi * Returns the (known) extension and mimetype of a given filename 13b625487dSandi * 14b625487dSandi * @author Andreas Gohr <andi@splitbrain.org> 15b625487dSandi */ 16b625487dSandifunction mimetype($file){ 17b625487dSandi $ret = array(false,false); // return array 18b625487dSandi $mtypes = getMimeTypes(); // known mimetypes 19b625487dSandi $exts = join('|',array_keys($mtypes)); // known extensions (regexp) 20b625487dSandi if(preg_match('#\.('.$exts.')$#i',$file,$matches)){ 21b625487dSandi $ext = strtolower($matches[1]); 22b625487dSandi } 23b625487dSandi 24b625487dSandi if($ext && $mtypes[$ext]){ 25b625487dSandi $ret = array($ext, $mtypes[$ext]); 26b625487dSandi } 27b625487dSandi 28b625487dSandi return $ret; 29b625487dSandi} 30b625487dSandi 31b625487dSandi/** 32b625487dSandi * returns a hash of mimetypes 33b625487dSandi * 34b625487dSandi * @author Andreas Gohr <andi@splitbrain.org> 35b625487dSandi */ 36b625487dSandifunction getMimeTypes() { 37b625487dSandi static $mime = NULL; 38b625487dSandi if ( !$mime ) { 39b625487dSandi $mime = confToHash(DOKU_INC . 'conf/mime.conf'); 40b625487dSandi } 41b625487dSandi return $mime; 42b625487dSandi} 43b625487dSandi 44b625487dSandi/** 45b625487dSandi * returns a hash of acronyms 46b625487dSandi * 47b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 48b625487dSandi */ 49b625487dSandifunction getAcronyms() { 50b625487dSandi static $acronyms = NULL; 51b625487dSandi if ( !$acronyms ) { 52b625487dSandi $acronyms = confToHash(DOKU_INC . 'conf/acronyms.conf'); 53b625487dSandi } 54b625487dSandi return $acronyms; 55b625487dSandi} 56b625487dSandi 57b625487dSandi/** 58b625487dSandi * returns a hash of smileys 59b625487dSandi * 60b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 61b625487dSandi */ 62b625487dSandifunction getSmileys() { 63b625487dSandi static $smileys = NULL; 64b625487dSandi if ( !$smileys ) { 65b625487dSandi $smileys = confToHash(DOKU_INC . 'conf/smileys.conf'); 66b625487dSandi } 67b625487dSandi return $smileys; 68b625487dSandi} 69b625487dSandi 70b625487dSandi/** 71b625487dSandi * returns a hash of entities 72b625487dSandi * 73b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 74b625487dSandi */ 75b625487dSandifunction getEntities() { 76b625487dSandi static $entities = NULL; 77b625487dSandi if ( !$entities ) { 78b625487dSandi $entities = confToHash(DOKU_INC . 'conf/entities.conf'); 79b625487dSandi } 80b625487dSandi return $entities; 81b625487dSandi} 82b625487dSandi 83b625487dSandi/** 84b625487dSandi * returns a hash of interwikilinks 85b625487dSandi * 86b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 87b625487dSandi */ 88b625487dSandifunction getInterwiki() { 89b625487dSandi static $wikis = NULL; 90b625487dSandi if ( !$wikis ) { 91*27a2b085Sandi $wikis = confToHash(DOKU_INC . 'conf/interwiki.conf',true); 92b625487dSandi } 9397a3e4e3Sandi //add sepecial case 'this' 94*27a2b085Sandi $wikis['this'] = DOKU_URL.'{NAME}'; 95b625487dSandi return $wikis; 96b625487dSandi} 97b625487dSandi 98b625487dSandi/** 99b625487dSandi * Builds a hash from a configfile 100b625487dSandi * 101b625487dSandi * @author Harry Fuecks <hfuecks@gmail.com> 102b625487dSandi */ 103*27a2b085Sandifunction confToHash($file,$lower=false) { 104b625487dSandi $conf = array(); 105b625487dSandi $lines = @file( $file ); 106b625487dSandi if ( !$lines ) return $conf; 107b625487dSandi 108b625487dSandi foreach ( $lines as $line ) { 109b625487dSandi //ignore comments 110b625487dSandi $line = preg_replace('/[^&]?#.*$/','',$line); 111b625487dSandi $line = trim($line); 112b625487dSandi if(empty($line)) continue; 113b625487dSandi $line = preg_split('/\s+/',$line,2); 114b625487dSandi // Build the associative array 115*27a2b085Sandi if($lower){ 116*27a2b085Sandi $conf[strtolower($line[0])] = $line[1]; 117*27a2b085Sandi }else{ 118b625487dSandi $conf[$line[0]] = $line[1]; 119b625487dSandi } 120*27a2b085Sandi } 121b625487dSandi 122b625487dSandi return $conf; 123b625487dSandi} 124b625487dSandi 125b625487dSandi 126b625487dSandi//Setup VIM: ex: et ts=2 enc=utf-8 : 127