12393fff5SJames Collins<?php 22393fff5SJames Collins/** 3*3cffc6f4SJames Collins * Mikio CSS/LESS Engine 42393fff5SJames Collins * 5*3cffc6f4SJames Collins * @link http://dokuwiki.org/template:mikio 62393fff5SJames Collins * @author James Collins <james.collins@outlook.com.au> 72393fff5SJames Collins * @license GPLv2 (http://www.gnu.org/licenses/gpl-2.0.html) 82393fff5SJames Collins */ 92393fff5SJames Collins 10*3cffc6f4SJames Collinsrequire(dirname(__FILE__) . '/inc/polyfill-ctype.php'); 11*3cffc6f4SJames Collins 122393fff5SJames Collinsif(!function_exists('getallheaders')) { 132393fff5SJames Collins function getallheaders() { 142393fff5SJames Collins $headers = []; 152393fff5SJames Collins foreach($_SERVER as $name => $value) { 162393fff5SJames Collins if(substr($name, 0, 5) == 'HTTP_') { 172393fff5SJames Collins $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 182393fff5SJames Collins } 192393fff5SJames Collins } 202393fff5SJames Collins return $headers; 212393fff5SJames Collins } 222393fff5SJames Collins} 232393fff5SJames Collins 242393fff5SJames Collinstry { 252393fff5SJames Collins $lesscLib = '../../../vendor/marcusschwarz/lesserphp/lessc.inc.php'; 262393fff5SJames Collins if(!file_exists($lesscLib)) 27*3cffc6f4SJames Collins $lesscLib = $_SERVER['DOCUMENT_ROOT'] . '/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 28*3cffc6f4SJames Collins if(!file_exists($lesscLib)) 292393fff5SJames Collins $lesscLib = '../../../../../app/dokuwiki/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 30*3cffc6f4SJames Collins if(!file_exists($lesscLib)) 31*3cffc6f4SJames Collins $lesscLib = $_SERVER['DOCUMENT_ROOT'] . '/app/dokuwiki/vendor/marcusschwarz/lesserphp/lessc.inc.php'; 322393fff5SJames Collins 332393fff5SJames Collins if(file_exists($lesscLib)) { 342393fff5SJames Collins @require_once($lesscLib); 352393fff5SJames Collins 362393fff5SJames Collins if(isset($_GET['css'])) { 37*3cffc6f4SJames Collins $failed = false; 38518c05ebSJames Collins $cssFileList = explode(',', $_GET['css']); 39*3cffc6f4SJames Collins $baseDir = dirname(__FILE__) . '/'; 40*3cffc6f4SJames Collins $css = ''; 41*3cffc6f4SJames Collins 42518c05ebSJames Collins foreach($cssFileList as $cssFileItem) { 43518c05ebSJames Collins $cssFile = realpath($baseDir . $cssFileItem); 442393fff5SJames Collins 452393fff5SJames Collins if(strpos($cssFile, $baseDir) === 0 && file_exists($cssFile)) { 46518c05ebSJames Collins $css .= file_get_contents($cssFile); 47*3cffc6f4SJames Collins } else { 48*3cffc6f4SJames Collins $failed = true; 49518c05ebSJames Collins } 50518c05ebSJames Collins } 512393fff5SJames Collins 52*3cffc6f4SJames Collins if(!$failed) { 53*3cffc6f4SJames Collins $rawVars = Array(); 54*3cffc6f4SJames Collins 552393fff5SJames Collins header('Content-Type: text/css; charset=utf-8'); 562393fff5SJames Collins 572393fff5SJames Collins $less = new lessc(); 582393fff5SJames Collins $less->setPreserveComments(false); 592393fff5SJames Collins 60*3cffc6f4SJames Collins $vars = Array(); 61*3cffc6f4SJames Collins if(isset($rawVars['replacements'])) { 62*3cffc6f4SJames Collins foreach($rawVars['replacements'] as $key=>$val) { 63*3cffc6f4SJames Collins if(substr($key, 0, 2) == '__' && substr($key, -2) == '__') { 64*3cffc6f4SJames Collins $vars['ini_' . substr($key, 2, -2)] = $val; 65*3cffc6f4SJames Collins } 66*3cffc6f4SJames Collins } 67*3cffc6f4SJames Collins } 68*3cffc6f4SJames Collins 69*3cffc6f4SJames Collins if(count($vars) > 0) { 70*3cffc6f4SJames Collins $less->setVariables($vars); 71*3cffc6f4SJames Collins } 72*3cffc6f4SJames Collins 732393fff5SJames Collins $css = $less->compile($css); 742393fff5SJames Collins echo $css; 752393fff5SJames Collins } else { 762393fff5SJames Collins header('HTTP/1.1 404 Not Found'); 772393fff5SJames Collins echo "The requested file could not be found"; 782393fff5SJames Collins } 792393fff5SJames Collins } else { 80*3cffc6f4SJames Collins header('HTTP/1.1 404 Not Found'); 81*3cffc6f4SJames Collins echo "The requested file could not be found"; 82*3cffc6f4SJames Collins } 83*3cffc6f4SJames Collins } else { 84*3cffc6f4SJames Collins throw new Exception('MikioPlugin could not find the LESSC engine in DokuWiki'); 852393fff5SJames Collins } 862393fff5SJames Collins} 872393fff5SJames Collinscatch(Exception $e) { 88*3cffc6f4SJames Collins header('Content-Type: text/css; charset=utf-8'); 89*3cffc6f4SJames Collins include(dirname(__FILE__) . '/assets/mikioplugin.css'); 902393fff5SJames Collins} 91