12393fff5SJames Collins<?php 22393fff5SJames Collins/** 33cffc6f4SJames Collins * Mikio CSS/LESS Engine 42393fff5SJames Collins * 53cffc6f4SJames 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 103cffc6f4SJames Collinsrequire(dirname(__FILE__) . '/inc/polyfill-ctype.php'); 113cffc6f4SJames Collins 12*4afa967aSJames Collinsif(!class_exists('lessc')) { 13*4afa967aSJames Collins require(dirname(__FILE__) . '/inc/marcusschwarz/lesserphp/lessc.inc.php'); 14*4afa967aSJames Collins} 15*4afa967aSJames Collins 162393fff5SJames Collinsif(!function_exists('getallheaders')) { 172393fff5SJames Collins function getallheaders() { 182393fff5SJames Collins $headers = []; 192393fff5SJames Collins foreach($_SERVER as $name => $value) { 202393fff5SJames Collins if(substr($name, 0, 5) == 'HTTP_') { 212393fff5SJames Collins $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 222393fff5SJames Collins } 232393fff5SJames Collins } 242393fff5SJames Collins return $headers; 252393fff5SJames Collins } 262393fff5SJames Collins} 272393fff5SJames Collins 2817dbafb6SJames Collinsif(!function_exists('platformSlashes')) { 2917dbafb6SJames Collins function platformSlashes($path) { 3017dbafb6SJames Collins return str_replace('/', DIRECTORY_SEPARATOR, $path); 3117dbafb6SJames Collins } 3217dbafb6SJames Collins} 3317dbafb6SJames Collins 342393fff5SJames Collinstry { 352393fff5SJames Collins if(isset($_GET['css'])) { 363cffc6f4SJames Collins $failed = false; 3717dbafb6SJames Collins $cssFileList = platformSlashes(explode(',', $_GET['css'])); 3817dbafb6SJames Collins $baseDir = platformSlashes(dirname(__FILE__) . '/'); 393cffc6f4SJames Collins $css = ''; 403cffc6f4SJames Collins 41518c05ebSJames Collins foreach($cssFileList as $cssFileItem) { 4217dbafb6SJames Collins $cssFile = platformSlashes(realpath($baseDir . $cssFileItem)); 432393fff5SJames Collins 442393fff5SJames Collins if(strpos($cssFile, $baseDir) === 0 && file_exists($cssFile)) { 45518c05ebSJames Collins $css .= file_get_contents($cssFile); 463cffc6f4SJames Collins } else { 473cffc6f4SJames Collins $failed = true; 48518c05ebSJames Collins } 49518c05ebSJames Collins } 502393fff5SJames Collins 513cffc6f4SJames Collins if(!$failed) { 523cffc6f4SJames Collins $rawVars = Array(); 533cffc6f4SJames Collins 542393fff5SJames Collins header('Content-Type: text/css; charset=utf-8'); 552393fff5SJames Collins 562393fff5SJames Collins $less = new lessc(); 572393fff5SJames Collins $less->setPreserveComments(false); 582393fff5SJames Collins 593cffc6f4SJames Collins $vars = Array(); 603cffc6f4SJames Collins if(isset($rawVars['replacements'])) { 613cffc6f4SJames Collins foreach($rawVars['replacements'] as $key=>$val) { 623cffc6f4SJames Collins if(substr($key, 0, 2) == '__' && substr($key, -2) == '__') { 633cffc6f4SJames Collins $vars['ini_' . substr($key, 2, -2)] = $val; 643cffc6f4SJames Collins } 653cffc6f4SJames Collins } 663cffc6f4SJames Collins } 673cffc6f4SJames Collins 683cffc6f4SJames Collins if(count($vars) > 0) { 693cffc6f4SJames Collins $less->setVariables($vars); 703cffc6f4SJames Collins } 713cffc6f4SJames Collins 722393fff5SJames Collins $css = $less->compile($css); 732393fff5SJames Collins echo $css; 742393fff5SJames Collins } else { 752393fff5SJames Collins header('HTTP/1.1 404 Not Found'); 762393fff5SJames Collins echo "The requested file could not be found"; 772393fff5SJames Collins } 782393fff5SJames Collins } else { 793cffc6f4SJames Collins header('HTTP/1.1 404 Not Found'); 803cffc6f4SJames Collins echo "The requested file could not be found"; 813cffc6f4SJames Collins } 822393fff5SJames Collins} 832393fff5SJames Collinscatch(Exception $e) { 843cffc6f4SJames Collins header('Content-Type: text/css; charset=utf-8'); 85a42d1e7eSnomadjimbob echo ".error_in_mikio_plugin_with_less_file { 86a42d1e7eSnomadjimbob/** 87a42d1e7eSnomadjimbob" . $e . " 88a42d1e7eSnomadjimbob**/ 89a42d1e7eSnomadjimbob}"; 902393fff5SJames Collins} 91