public static function PublishCSS($site, $name) { // get references to file $lessDir = SITES_LOCATION . '/' . $site['FriendlyId'] . '/themes/' . $site['Theme'] . '/styles/'; $cssDir = SITES_LOCATION . '/' . $site['FriendlyId'] . '/css/'; // get reference to config file $configFile = SITES_LOCATION . '/' . $site['FriendlyId'] . '/themes/' . $site['Theme'] . '/configure.json'; $lessFile = $lessDir . $name . '.less'; $cssFile = $cssDir . $name . '.css'; // create css directory (if needed) if (!file_exists($cssDir)) { mkdir($cssDir, 0755, true); } if (file_exists($lessFile)) { $content = file_get_contents($lessFile); $less = new lessc(); try { $css = $content; // set configurations $css = Publish::SetConfigurations($configFile, $css); // compile less to css $css = $less->compile($css); // compress css, #ref: http://manas.tungare.name/software/css-compression-in-php/ // remove comments $css = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $css); // Remove space after colons $css = str_replace(': ', ':', $css); // Remove whitespace $css = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $css); // put css into file file_put_contents($cssFile, $css); return $css; } catch (exception $e) { return NULL; } } else { return NULL; } }