Forked from
FS Info TU Dortmund / Infoscreen / Infoscreen
327 commits behind the upstream repository.
-
Tilman Vatteroth authoredTilman Vatteroth authored
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");
}