1<?php 2/** 3 * Mikio CSS/LESS Engine 4 * 5 * @link http://dokuwiki.org/template:mikio 6 * @author James Collins <james.collins@outlook.com.au> 7 * @license GPLv2 (http://www.gnu.org/licenses/gpl-2.0.html) 8 */ 9 10require(dirname(__FILE__) . '/inc/polyfill-ctype.php'); 11 12if(!function_exists('getallheaders')) { 13 function getallheaders() { 14 $headers = []; 15 foreach($_SERVER as $name => $value) { 16 if(substr($name, 0, 5) == 'HTTP_') { 17 $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 18 } 19 } 20 return $headers; 21 } 22} 23 24try { 25 $lesscLib = '../../../vendor/marcusschwarz/lesserphp/lessc.inc.php'; 26 if(!file_exists($lesscLib)) 27 $lesscLib = $_SERVER['DOCUMENT_ROOT'] . '/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 28 if(!file_exists($lesscLib)) 29 $lesscLib = '../../../../../app/dokuwiki/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 30 if(!file_exists($lesscLib)) 31 $lesscLib = $_SERVER['DOCUMENT_ROOT'] . '/app/dokuwiki/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 32 33 if(file_exists($lesscLib)) { 34 @require_once($lesscLib); 35 36 if(isset($_GET['css'])) { 37 $baseDir = dirname(__FILE__) . '/'; 38 $cssFile = realpath($baseDir . $_GET['css']); 39 40 if(strpos($cssFile, $baseDir) === 0 && file_exists($cssFile)) { 41 $rawVars = Array(); 42 $file = 'style.ini'; 43 if(file_exists($file)) $rawVars = array_merge($rawVars, parse_ini_file($file, TRUE)); 44 45 $file = '../../../conf/tpl/mikio/style.ini'; 46 if(file_exists($file)) $rawVars = array_merge($rawVars, parse_ini_file($file, TRUE)); 47 48 $file = $_SERVER['DOCUMENT_ROOT'] . '/conf/tpl/mikio/style.ini'; 49 if(file_exists($file)) $rawVars = array_merge($rawVars, parse_ini_file($file, TRUE)); 50 51 $css = file_get_contents($cssFile); 52 53 header('Content-Type: text/css; charset=utf-8'); 54 55 $less = new lessc(); 56 $less->setPreserveComments(false); 57 58 $vars = Array(); 59 if(isset($rawVars['replacements'])) { 60 foreach($rawVars['replacements'] as $key=>$val) { 61 if(substr($key, 0, 2) == '__' && substr($key, -2) == '__') { 62 $vars['ini_' . substr($key, 2, -2)] = $val; 63 } 64 } 65 } 66 67 if(count($vars) > 0) { 68 $less->setVariables($vars); 69 } 70 71 $css = $less->compile($css); 72 echo $css; 73 } else { 74 header('HTTP/1.1 404 Not Found'); 75 echo "The requested file could not be found"; 76 } 77 } else { 78 header('HTTP/1.1 404 Not Found'); 79 echo "The requested file could not be found"; 80 } 81 } else { 82 throw new Exception('Mikio could not find the LESSC engine in DokuWiki'); 83 } 84} 85catch(Exception $e) { 86 header('Content-Type: text/css; charset=utf-8'); 87 include(dirname(__FILE__) . '/assets/mikio.css'); 88} 89