xref: /template/mikio/css.php (revision 692c64c68c7c70af23c028b06fcdb4bf5f72aab4)
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