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