예제 #1
0
 /**
  * Compile a LESS stylesheet
  *
  * @param $name string Unique name for this LESS stylesheet
  * @param $lessFile string Path to the LESS file to compile
  * @param $args array Optional arguments. SUpports:
  *   'baseUrl': Base URL to use when rewriting URLs in the LESS file.
  *   'addLess': Array of additional LESS files to parse before compiling
  * @return string Compiled CSS styles
  */
 public function compileLess($name, $lessFile, $args = array())
 {
     // Load the LESS compiler
     require_once 'lib/pkp/lib/vendor/oyejorge/less.php/lessc.inc.php';
     $less = new Less_Parser(array('relativeUrls' => false, 'compress' => true));
     $request = $this->_request;
     // Allow plugins to intervene
     HookRegistry::call('PageHandler::compileLess', array(&$less, &$lessFile, &$args, $name, $request));
     // Read the stylesheet
     $less->parseFile($lessFile);
     // Add extra LESS files before compiling
     if (isset($args['addLess']) && is_array($args['addLess'])) {
         foreach ($args['addLess'] as $addless) {
             $less->parseFile($addless);
         }
     }
     // Add extra LESS variables before compiling
     if (isset($args['addLessVariables'])) {
         $less->parse($args['addLessVariables']);
     }
     // Set the @baseUrl variable
     $baseUrl = !empty($args['baseUrl']) ? $args['baseUrl'] : $request->getBaseUrl(true);
     $less->parse("@baseUrl: '{$baseUrl}';");
     return $less->getCSS();
 }