function _less_build in Less CSS Preprocessor 6
Same name and namespace in other branches
- 6.3 less.module \_less_build()
- 6.2 less.module \_less_build()
Builds the less cache
2 calls to _less_build()
- less_preprocess_maintenance_page in ./
less.module - Implements MODULE_preprocess_maintenance_page().
- less_preprocess_page in ./
less.module - Implements MODULE_preprocess_page().
File
- ./
less.module, line 6
Code
function _less_build(&$vars, $hook) {
module_load_include('php', 'less', 'lessc.inc');
$css = $vars['css'];
$css_path = file_create_path('less');
file_check_directory($css_path, FILE_CREATE_DIRECTORY);
$base_path = $_SERVER['DOCUMENT_ROOT'] . base_path();
$less = new lessc();
foreach ($css as $media => $types) {
foreach ($types as $type => $files) {
$files_keys = array_keys($files);
foreach ($files_keys as $key => $input_file) {
if (substr($input_file, -5) == '.less') {
$output_file = $css_path . '/' . 'less_' . md5_file($base_path . $input_file) . '.css';
if (!file_exists($base_path . $output_file)) {
$contents = drupal_load_stylesheet($input_file, false);
$base = base_path() . dirname($input_file) . '/';
_drupal_build_css_path(NULL, $base);
// Prefix all paths within this CSS file, ignoring external and absolute paths.
$data = preg_replace_callback('/url\\([\'"]?(?![a-z]+:|\\/+)([^\'")]+)[\'"]?\\)/i', '_drupal_build_css_path', $contents);
file_save_data($less
->parse($data), $output_file, FILE_EXISTS_REPLACE);
}
if (file_exists($base_path . $output_file)) {
array_splice($files_keys, $key, 1, $output_file);
}
}
}
if (!empty($files)) {
$css[$media][$type] = array_combine($files_keys, $files);
}
}
}
$vars['messages'] .= theme('status_messages');
$vars['styles'] = drupal_get_css($css);
}