/** * Compilamos un archivo por medio de LESS. * @param string $file Archivo a compilar. * @param string $target Donde guardar la cache del archivo. NULL para enviar salida al vuelo. */ protected static function compile_less($file, $target = NULL) { // Cargo lessc. if (!class_exists('lessc')) { include VENDOR_PATH . 'lessc.php'; } // Verifico si se puede escribir. if (!@is_writable($target)) { Log::warning("No se puede generar la cache del asset '{$file}' en '{$target}'. Verifique los permisos de escritura."); $target = NULL; } // Realizo la compilación. if ($target !== NULL) { $less = new Lessc(); $less->compileFile($file, $target); header('Content-type: text/css'); die(file_get_contents($target)); } else { $less = new Lessc(); header('Content-type: text/css'); die($less->compileFile($file)); } }
public function getStyles($new_styles = array()) { $config = Kohana::$config->load('main')->site; $old_styles = $config['styles']; $new_styles = array_unique(array_merge($old_styles, $new_styles)); // if (Kohana::PRODUCTION === Kohana::$environment) // { $filename = substr(md5(Kohana::$base_url), 5) . '.css'; if (($file = Cache::instance()->get($filename)) === NULL) { $css_data = ''; $less = new Lessc(); foreach ($new_styles as $style) { $style_arr = explode('.', $style); $style_ext = array_pop($style_arr); if (is_file(DOCROOT . $style)) { if ($style_ext == 'less') { $css_data .= str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $less->compileFile($style)); } else { $css_data .= str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', file_get_contents(DOCROOT . $style))); } } } $file = fopen(DOCROOT . "css/" . $filename, "w"); fwrite($file, $css_data); fclose($file); Cache::instance()->set($filename, $file, Date::MONTH); // } return array("css/" . $filename); } else { $filename = substr(md5(Kohana::$base_url), 5) . '.css'; $css_data = ''; $less = new Lessc(); foreach ($new_styles as $style) { $style_arr = explode('.', $style); $style_ext = array_pop($style_arr); if (is_file(DOCROOT . $style)) { if ($style_ext == 'less') { $css_data .= str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $less->compileFile($style)); } else { $css_data .= str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', file_get_contents(DOCROOT . $style))); } } } $file = fopen(DOCROOT . "css/" . $filename, "w"); fwrite($file, $css_data); fclose($file); Cache::instance()->set($filename, $file, Date::MONTH); return array("css/" . $filename); } }
<?php $controller = new Controller($config['pages'], $config['default_page']); $controller->init(); $page = $controller->getCurrent(); /* less supports */ if ($config['compile_less']) { // compile less $less = new Lessc(); $less->compileFile('./less/core.less', './css/style.css'); if ($config['show_debug']) { #trigger_error("styles.css file succesfully generated", E_USER_NOTICE); } } /* paths */ $fontawesome_path = $config['use_cdn'] ? 'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css' : './css/font-awesome.min.css'; $jquery_path = $config['use_cdn'] ? 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js' : './js/jquery-2.1.4.js'; $controller_path = './controller/' . $page . '.php'; $view_path = './view/pages/' . $page . '.php'; if (file_exists($controller_path)) { require $controller_path; } ob_start(); include './view/_main.php'; $html = ob_get_contents(); ob_end_clean(); $html = Controller::emulate_vars($html);