Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
style.php 1.90 KiB
<?php

$tmp_dir = "tmp";
chdir("..");

if (!isset($_GET["name"])) {
    http_response_code(404);
    echo "no valid file given";
    return;
}

$less_file = $_GET["name"]; //"panels/departure/style.less";
$debug=isset($_GET["debug"]);

/*find root dir*/
$url_arr = explode("/",$_SERVER["PHP_SELF"]);
$url_arr_size = sizeof($url_arr);
$ROOT_DIR = "";
for ($i=1;$i<($url_arr_size-2);$i++)
{
    $ROOT_DIR.="/".$url_arr[$i];
}
if ($debug)
    echo "root: ".$ROOT_DIR."\n";
/*end finding*/

$panel = null;

if ($debug)
    header("content-type:text/plain;charset=utf8");


if (!file_exists($less_file)) {
    http_response_code(404);
    echo $less_file . " not found";
    return;
}

if (preg_match_all ('/'.'panels\\/((?:[a-z][a-z]+))\\/style\\.less'.'/is', $less_file, $matches))
{
    $panel=$matches[1][0];
}

if ($debug && isset($panel))
    echo "panel: " . $panel."\n";

$cache_name = "lesscache_".md5($less_file."_".filemtime($less_file)).".css";
$cache_file = $tmp_dir."/".$cache_name;

if (!file_exists($cache_file)) {

	require("less/Less.php");
	$options = array( 'compress'=>true );
	$parser = new Less_Parser($options);
	$parser->parseFile("css/colors.less");

    try {
        if (!isset($panel)) {
            $parser->parseFile($less_file);
        } else {
            $parser->parse("
                    [data-template=$panel] {
                        @import \"$less_file\";
                    }", "/panels/$panel");
        }
		$content = $parser->getCss();
	}catch(Exception $e) {
        http_response_code(500);
        header("content-type:text/plain;charset=utf8");
        echo $e->getMessage();
        return;
    }
    file_put_contents($cache_file,$content);;
}

if ($debug) {
    echo "cache-name: " . $cache_file . "\n";
    echo "content:\n";
    if (!isset($content))
        echo file_get_contents($cache_file)."\n";
    else
        echo $content;
} else {
    header("Location: ".$ROOT_DIR."/$cache_file");
}