-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathless.php
More file actions
executable file
·65 lines (61 loc) · 2.3 KB
/
less.php
File metadata and controls
executable file
·65 lines (61 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
Simplifies the use of less (lessPHP)
*/
# get correct id for plugin
$thisfile = basename(__FILE__, ".php");
# register plugin
register_plugin(
$thisfile,
'Less',
'0.9.1',
'Martin Vlcek',
'http://mvlcek.bplaced.net',
'Easy use of Less to customize CSS',
'',
''
);
/**
* Compiles a less file to a css file, if the less file is newer or the parameters are changed ($multipleCSS = false).
* Compiles a less file to a parameter specific css file, if the less file is newer ($multipleCSS = true).
*
* @param string $themeRelativeLessFile the name of the less file, e.g. "default.less" or "css/default.less
* @param array $params an associative array with the parameters for the less file or null
* @param bool $multipleCSS if true, than for each parameter set a new CSS file is compiled
*/
function return_less_css($themeRelativeLessFile, $params=null, $multipleCSS=false) {
global $SITEURL, $TEMPLATE;
$lessFile = GSTHEMESPATH.$TEMPLATE."/".$themeRelativeLessFile;
if ($params) {
$paramStr = "";
foreach ($params as $key => $value) {
$paramStr .= $key."=".$value.",";
}
$hash = md5($paramStr);
} else {
$hash = 0;
}
$lessTime = filemtime($lessFile);
if ($multipleCSS) {
$cssFile = substr($lessFile,0,strrpos($lessFile,'.')).$hash.".css";
$doCompile = !file_exists($cssFile) || filemtime($cssFile) <= $lessTime;
} else {
$cssFile = substr($lessFile,0,strrpos($lessFile,'.')).".css";
$hashFile = substr($lessFile,0,strrpos($lessFile,'.')).".hash";
$doCompile = !file_exists($hashFile) || !file_exists($cssFile) || file_get_contents($hashFile) != $hash || filemtime($cssFile) <= $lessTime;
}
if ($doCompile) {
require_once(GSPLUGINPATH.'less/lessc.inc.php');
$lessc = new lessc;
if ($params) $lessc->setVariables($params);
$lessc->compileFile($lessFile, $cssFile);
if (!$multipleCSS) file_put_contents($hashFile, $hash);
}
return trim($SITEURL."theme/".$TEMPLATE)."/".substr($themeRelativeLessFile,0,strrpos($themeRelativeLessFile,'.')).($multipleCSS ? $hash : '').".css";
}
/**
* outputs the CSS file name, generated by return_less_css.
*/
function get_less_css($themeRelativeLessFile, $params=null, $multipleCSS=false) {
echo return_less_css($themeRelativeLessFile, $params, $multipleCSS);
}