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