lessc = new lessc(); $this->lessc->setVariables( array( 'baseurl' => '\'' . Zend_Controller_Front::getInstance()->getBaseUrl(). '\'' ) ); } public function compress() { $this->lessc->setPreserveComments(false); $this->lessc->setFormatter('compressed'); return $this; } /** * Add usable style item to stack * * @param string $item File or directory */ public function addItem($item) { $this->items[] = $item; } public function addLoadedModules() { foreach (Icinga::app()->getModuleManager()->getLoadedModules() as $name => $module) { $this->addModule($name, $module); } return $this; } public function addFile($filename) { $this->source .= "\n/* CSS: $filename */\n" . file_get_contents($filename) . "\n\n"; return $this; } public function compile() { return $this->lessc->compile($this->source); } public function addModule($name, $module) { if ($module->hasCss()) { $this->source .= "\n/* CSS: modules/$name/module.less */\n" . '.icinga-module.module-' . $name . " {\n" . file_get_contents($module->getCssFilename()) . "}\n\n" ; } return $this; } /** * Compile and print a single file * * @param string $file */ public function printFile($file) { $ext = pathinfo($file, PATHINFO_EXTENSION); echo PHP_EOL. '/* CSS: ' . $file . ' */' . PHP_EOL; if ($ext === 'css') { readfile($file); } elseif ($ext === 'less') { try { echo $this->lessc->compileFile($file); } catch (Exception $e) { echo '/* ' . PHP_EOL . ' ===' . PHP_EOL; echo ' Error in file ' . $file . PHP_EOL; echo ' ' . $e->getMessage() . PHP_EOL . PHP_EOL; echo ' ' . 'This file was dropped cause of errors.' . PHP_EOL; echo ' ===' . PHP_EOL . '*/' . PHP_EOL; } } echo PHP_EOL; } /** * Compile and print a path content (recursive) * * @param string $path */ public function printPathRecursive($path) { $directoryInterator = new RecursiveDirectoryIterator($path); $iterator = new RecursiveIteratorIterator($directoryInterator); $filteredIterator = new RegexIterator($iterator, '/\.(css|less)$/', RecursiveRegexIterator::GET_MATCH); foreach ($filteredIterator as $file => $extension) { $this->printFile($file); } } /** * Compile and print the whole item stack */ public function printStack() { foreach ($this->items as $item) { if (is_dir($item)) { $this->printPathRecursive($item); } elseif (is_file($item)) { $this->printFile($item); } } } }