Exemplo n.º 1
0
function auto_less_compile($inputFile, $outputFile)
{
    // load the cache
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    // custom formatter
    $formatter = new lessc_formatter_classic();
    $formatter->indentChar = "\t";
    $less = new lessc();
    $less->setFormatter($formatter);
    try {
        // create a new cache object, and compile
        $newCache = $less->cachedCompile($cache);
        // the next time we run, write only if it has updated
        if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
            file_put_contents($cacheFile, serialize($newCache));
            file_put_contents($outputFile, $newCache['compiled']);
        }
    } catch (Exception $ex) {
        echo "lessphp fatal error: " . $ex->getMessage();
    }
}
Exemplo n.º 2
0
 /**
  * Parse a Less file to CSS
  */
 public function parse($src, $dst, $options)
 {
     $this->auto = isset($options['auto']) ? $options['auto'] : $this->auto;
     try {
         if ($this->auto) {
             /* @var FileCache $cacheMgr */
             $cacheMgr = Yii::createObject('yii\\caching\\FileCache');
             $cacheMgr->init();
             $cacheId = 'less#' . $dst;
             $cache = $cacheMgr->get($cacheId);
             if ($cache === false || @filemtime($dst) < @filemtime($src)) {
                 $cache = $src;
             }
             $less = new \lessc();
             $newCache = $less->cachedCompile($cache);
             if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
                 $cacheMgr->set($cacheId, $newCache);
                 file_put_contents($dst, $newCache['compiled']);
             }
         } else {
             $less = new \lessc();
             $less->compileFile($src, $dst);
         }
     } catch (Exception $e) {
         throw new Exception(__CLASS__ . ': Failed to compile less file : ' . $e->getMessage() . '.');
     }
 }
Exemplo n.º 3
0
 /**
  * @param string $src
  * @return string
  */
 public function lessCompile($src)
 {
     $path = $this->lessCompiledPath . DIRECTORY_SEPARATOR . basename($src, '.less') . '.css';
     $lessCompile = false;
     if (!$this->lessForceCompile && $this->lessCompile) {
         $lessFiles = $this->_cacheGet('EAssetManager-less-updated-' . $src);
         if ($lessFiles && is_array($lessFiles)) {
             foreach ($lessFiles as $_file => $_time) {
                 if (filemtime($_file) != $_time) {
                     $lessCompile = true;
                     break;
                 }
             }
         } else {
             $lessCompile = true;
         }
         unset($lessFiles);
     }
     if (!file_exists($path) || $lessCompile || $this->lessForceCompile) {
         if (!$this->_lessc) {
             $this->_lessc = new lessc();
         }
         $this->_lessc->setFormatter($this->lessFormatter);
         $lessCache = $this->_lessc->cachedCompile($src);
         file_put_contents($path, $lessCache['compiled'], LOCK_EX);
         $this->_cacheSet('EAssetManager-less-updated-' . $src, $lessCache['files']);
     }
     return $path;
 }
Exemplo n.º 4
0
 protected function doProcess($inputPath, $outputPath)
 {
     $this->ensureInitialized();
     if ($this->jsToolOptions === false) {
         $less = new \lessc();
         if ($this->pieCrust->isCachingEnabled()) {
             $cacheUri = 'less/' . sha1($inputPath);
             $cacheData = $this->readCacheData($cacheUri);
             if ($cacheData) {
                 $lastUpdated = $cacheData['updated'];
             } else {
                 $lastUpdated = false;
                 $cacheData = $inputPath;
             }
             $cacheData = $less->cachedCompile($cacheData);
             $this->writeCacheData($cacheUri, $cacheData);
             if (!$lastUpdated || $cacheData['updated'] > $lastUpdated) {
                 file_put_contents($outputPath, $cacheData['compiled']);
             }
         } else {
             $less->compileFile($inputPath, $outputPath);
         }
     } else {
         $exe = $this->jsToolOptions['bin'];
         $options = $this->jsToolOptions['options'];
         $cmd = "{$exe} {$options} \"{$inputPath}\" \"{$outputPath}\"";
         $this->logger->debug('$> ' . $cmd);
         shell_exec($cmd);
     }
 }
Exemplo n.º 5
0
 public function compileLess($inputFile, $outputFile)
 {
     if (!class_exists('lessc')) {
         require_once KPATH_FRAMEWORK . '/external/lessc/lessc.php';
     }
     // Load the cache.
     $cacheDir = JPATH_CACHE . '/kunena';
     if (!is_dir($cacheDir)) {
         KunenaFolder::create($cacheDir);
     }
     $cacheFile = "{$cacheDir}/kunena.bootstrap.{$inputFile}.cache";
     if (is_file($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = KPATH_MEDIA . '/less/bootstrap/' . $inputFile;
     }
     $outputFile = KPATH_MEDIA . '/css/joomla25/' . $outputFile;
     $less = new lessc();
     //$less->setVariables($this->style_variables);
     $newCache = $less->cachedCompile($cache);
     if (!is_array($cache) || $newCache['updated'] > $cache['updated'] || !is_file($outputFile)) {
         $cache = serialize($newCache);
         KunenaFile::write($cacheFile, $cache);
         KunenaFile::write($outputFile, $newCache['compiled']);
     }
 }
 function autoCompilerLess($params)
 {
     global $modx;
     $inputFile = MODX_BASE_PATH . $params["input_less"];
     $outputFile = MODX_BASE_PATH . $params["output_css"];
     define("PHPLESS_CSS_PATH", dirname($outputFile) . "/");
     define("PHPLESS_IMAGESIZE", 32);
     if (!is_file(MODX_BASE_PATH . $params["input_less"])) {
         return;
     }
     if (!class_exists('lessc')) {
         include $params['less_path'] . 'lessc.inc.php';
     }
     if (!class_exists('DataUriLess')) {
         include $params['less_path'] . 'class.datauriless.php';
     }
     $cacheFile = $inputFile . ".cache";
     if (is_file($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = $inputFile;
     }
     switch ($params['output_formating']) {
         case 'lessjs':
         case 'compressed':
             $formatter = 'lessjs';
             break;
         case 'classic':
             $formatter = $params['output_formating'];
             break;
         case 'tabing':
             $formatter = new lessc_formatter_classic();
             $formatter->indentChar = "\t";
             break;
         default:
             $formatter = 'lessjs';
             break;
     }
     $less = new lessc();
     $less->setFormatter($formatter);
     try {
         $newCache = $less->cachedCompile($cache);
     } catch (Exception $ex) {
         $modx->logEvent(0, 3, $ex->getMessage(), $e->activePlugin);
     }
     if (!is_array($cache) || $newCache["updated"] > $cache["updated"] || !is_file($outputFile)) {
         file_put_contents($cacheFile, serialize($newCache));
         $datauri = new DataUriLess($newCache['compiled']);
         $output_compile = $datauri->run();
         if (@file_put_contents($outputFile, $output_compile)) {
             //if($params["compiler_log"]==="true"){
             $e =& $modx->Event;
             $modx->logEvent($modx->toDateFormat(time() + $modx->config['server_offset_time']), 1, "less файл скомпилирован " . $modx->nicesize(filesize($outputFile)), $e->activePlugin);
             //}
         } else {
             $modx->logEvent(0, 3, "Невозможно сохранить CSS файл", $e->activePlugin);
         }
     }
 }
Exemplo n.º 7
0
 /**
  * Compiles a less css file. The the compiler will create a css file output.
  * 
  * @param array $config Array of less compile configuration
  */
 public function compile($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('parse_urls' => true, 'compress' => true, 'import' => array(), 'force' => false, 'output' => null, 'input' => null));
     $less = new lessc();
     $less->setPreserveComments(!$config->compress);
     if ($config->compress) {
         $less->setFormatter('compressed');
     }
     $config['import'] = $config['import'];
     $less->setImportDir($config['import']);
     $cache_file = JPATH_CACHE . '/less-' . md5($config->input);
     if (file_exists($cache_file)) {
         $cache = unserialize(file_get_contents($cache_file));
     } else {
         $cache = $config->input;
     }
     $force = $config->force;
     //if output doesn't exsit then force compile
     if (!is_readable($config->output)) {
         $force = true;
     }
     //check if any of the import folder have changed or
     //if yes then re-compile
     if (is_array($cache)) {
         foreach ($config['import'] as $path) {
             if (is_readable($path) && filemtime($path) > $cache['updated']) {
                 $force = true;
                 break;
             }
         }
     }
     try {
         $new_cache = $less->cachedCompile($cache, $force);
     } catch (Exception $e) {
         print $e->getMessage();
         return;
     }
     if (!is_array($cache) || $new_cache['updated'] > $cache['updated']) {
         if ($config->parse_urls) {
             $new_cache['compiled'] = $this->_parseUrls($new_cache['compiled'], $config->import);
         }
         //store the cache
         file_put_contents($cache_file, serialize($new_cache));
         //store the compiled file
         //create a directory if
         if (!file_exists(dirname($config->output))) {
             mkdir(dirname($config->output), 0755);
         }
         file_put_contents($config->output, $new_cache['compiled']);
     }
 }
Exemplo n.º 8
0
 /**
  * Parse a Less file to CSS
  */
 public function parse($src, $dst, $options)
 {
     $this->auto = isset($options['auto']) ? $options['auto'] : $this->auto;
     $variables = $this->variables;
     $assetManager = Yii::$app->assetManager;
     // Final url of the file being compiled
     $assetUrl = substr($dst, strpos($assetManager->basePath, $assetManager->baseUrl));
     $variables['published-url'] = '"' . $assetUrl . '"';
     // Root for the published folder
     $variables['published-base-url'] = '"/' . implode('/', array_slice(explode('/', ltrim($assetUrl, '/')), 0, 2)) . '"';
     $less = new \lessc();
     $less->setVariables($variables);
     // Compressed setting
     if ($this->compressed) {
         $less->setFormatter('compressed');
     }
     \Less_Parser::$default_options['compress'] = $this->compressed;
     \Less_Parser::$default_options['relativeUrls'] = $this->relativeUrls;
     // Send out pre-compile event
     $event = new \yii\base\Event();
     $this->runtime = ['sourceFile' => $src, 'destinationFile' => $dst, 'compiler' => $less];
     $event->sender = $this;
     Event::trigger($this, self::EVENT_BEFORE_COMPILE, $event);
     try {
         if ($this->auto) {
             /* @var FileCache $cacheMgr */
             $cacheMgr = Yii::createObject('yii\\caching\\FileCache');
             $cacheMgr->init();
             $cacheId = 'less#' . $dst;
             $cache = $cacheMgr->get($cacheId);
             if ($cache === false || @filemtime($dst) < @filemtime($src)) {
                 $cache = $src;
             }
             $newCache = $less->cachedCompile($cache);
             if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
                 $cacheMgr->set($cacheId, $newCache);
                 file_put_contents($dst, $newCache['compiled']);
             }
         } else {
             $less->compileFile($src, $dst);
         }
         // If needed, respect the users configuration
         if ($assetManager->fileMode !== null) {
             @chmod($dst, $assetManager->fileMode);
         }
         unset($this->less);
     } catch (\Exception $e) {
         throw new \Exception(__CLASS__ . ': Failed to compile less file : ' . $e->getMessage() . '.');
     }
 }
Exemplo n.º 9
0
function less_css($handle)
{
    include DUDE_THEME_DIR . "/less/variables.php";
    // output css file name
    $css_path = DUDE_THEME_DIR . '/css/' . "{$handle}.css";
    // automatically regenerate files if source's modified time has changed or vars have changed
    try {
        // initialise the parser
        $less = new lessc();
        // load the cache
        $cache_path = DUDE_THEME_DIR . "/cache/{$handle}.css.cache";
        if (file_exists($cache_path)) {
            $cache = unserialize(file_get_contents($cache_path));
        }
        // If the cache or root path in it are invalid then regenerate
        if (empty($cache) || empty($cache['less']['root']) || !file_exists($cache['less']['root'])) {
            $cache = array('vars' => $vars, 'less' => DUDE_THEME_DIR . "/less/{$handle}.less");
        }
        // less config
        $less->setFormatter("compressed");
        $less->setVariables($vars);
        $less_cache = $less->cachedCompile($cache['less'], false);
        if (!file_exists($css_path) || empty($cache) || empty($cache['less']['updated']) || $less_cache['updated'] > $cache['less']['updated']) {
            file_put_contents($cache_path, serialize(array('vars' => $vars, 'less' => $less_cache)));
            file_put_contents($css_path, $less_cache['compiled']);
        } elseif ($vars !== $cache['vars']) {
            $less_cache = $less->cachedCompile($cache['less'], true);
            file_put_contents($cache_path, serialize(array('vars' => $vars, 'less' => $less_cache)));
            file_put_contents($css_path, $less_cache['compiled']);
        }
    } catch (exception $ex) {
        qa_fatal_error($ex->getMessage());
    }
    // return the compiled stylesheet with the query string it had if any
    $url = DUDE_THEME_URL . "/css/{$handle}.css";
    echo '<link href="' . $url . '" type="text/css" rel="stylesheet">';
}
Exemplo n.º 10
0
function autoCompileLess($inputFile, $outputFile)
{
    // load the cache
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $less = new lessc();
    $newCache = $less->cachedCompile($cache);
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
}
Exemplo n.º 11
0
 function sh_theme_color_scheme($color = '')
 {
     $dir = SH_TH_ROOT;
     include_once $dir . '/includes/thirdparty/lessc.inc.php';
     if (!$color) {
         $color = _WSH()->option('custom_color_scheme');
     }
     if (!$color) {
         return;
     }
     $less = new lessc();
     $less->setVariables(array("color" => $color));
     // create a new cache object, and compile
     $cache = $less->cachedCompile(_WSH()->includes("/css/color.less"));
     return $cache['compiled'];
     file_put_contents(_WSH()->includes('/css/colors.css'), $cache["compiled"]);
 }
Exemplo n.º 12
0
function loadcssfile($file, $cacheFile)
{
    // load the cache
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $file;
    }
    $less = new lessc();
    $less->setFormatter("compressed");
    $less->setImportDir(array(__ROOT__ . DS . ".." . DS . "style" . DS . "less"));
    $newCache = $less->cachedCompile($cache);
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        @file_put_contents($cacheFile, serialize($newCache));
    }
    return $newCache['compiled'];
}
Exemplo n.º 13
0
function autoCompileLess($inputFile, $outputFile)
{
    // load the cache
    if ($_SERVER['PHP_SELF'] != "sobic" && $_SERVER['PHP_SELF'] != "./sobic") {
        $cacheFile = $inputFile . ".cache";
        if (file_exists($cacheFile)) {
            $cache = unserialize(file_get_contents($cacheFile));
        } else {
            $cache = $inputFile;
        }
        $less = new lessc();
        $less->setFormatter("compressed");
        $newCache = $less->cachedCompile($cache);
        if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
            file_put_contents($cacheFile, serialize($newCache));
            file_put_contents($outputFile, $newCache['compiled']);
        }
    }
}
Exemplo n.º 14
0
 public function boot(Application $app)
 {
     // Validate this params.
     $this->validate($app);
     // Define default formatter if not already set.
     $formatter = isset($app['less.formatter']) ? $app['less.formatter'] : self::FORMATTER_CLASSIC;
     $sourcesDir = $app['less.source_dir'];
     $cacheDir = $app['less.cache_dir'];
     $targetDir = $app['less.target_dir'];
     $cacheContents = array();
     foreach ($sourcesDir as $sourceDir) {
         $files = scandir($sourceDir);
         foreach ($files as $file) {
             // if less file
             if (substr($file, -5) === '.less') {
                 $cache = $cacheDir . $this->before('.less', $file) . '.css.cache';
                 // if file cached
                 if (file_exists($cache)) {
                     array_push($cacheContents, ['dir' => $sourceDir, 'name' => $file, 'file' => unserialize(file_get_contents($cache))]);
                 } else {
                     array_push($cacheContents, ['dir' => $sourceDir, 'name' => $file, 'file' => $sourceDir . $file]);
                 }
             }
         }
     }
     $handle = new \lessc();
     $handle->setFormatter($formatter);
     foreach ($cacheContents as $cacheContent) {
         $newCache = $handle->cachedCompile($cacheContent['file']);
         if (!is_array($cacheContent['file']) || $newCache["updated"] > $cacheContent['file']["updated"]) {
             $target = $targetDir . $this->before('.less', $cacheContent['name']) . '.css';
             $cache = $cacheDir . $this->before('.less', $cacheContent['name']) . '.css.cache';
             // Write cache file
             file_put_contents($cache, serialize($newCache));
             // Write CSS file
             file_put_contents($target, $newCache['compiled']);
             // Change CSS permisions
             if (isset($app['less.target_mode'])) {
                 chmod($target, $app['less.target_mode']);
             }
         }
     }
 }
function autoCompileLess()
{
    // include lessc.inc
    require_once get_template_directory() . '/style/less/lessc.inc.php';
    // input and output location
    $inputFile = get_template_directory() . '/style/less/style.less';
    $outputFile = get_template_directory() . '/style/css/style.css';
    // load the cache
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $less = new lessc();
    // create a new cache object, and compile
    $newCache = $less->cachedCompile($cache);
    // output a LESS file, and cache file only if it has been modified since last compile
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
    //Second iteration for home theme.
    // input and output location
    $inputFile = get_template_directory() . '/style/less/templates/page-home.less';
    $outputFile = get_template_directory() . '/style/css/templates/page-home.css';
    // load the cache
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $less = new lessc();
    // create a new cache object, and compile
    $newCache = $less->cachedCompile($cache);
    // output a LESS file, and cache file only if it has been modified since last compile
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
}
Exemplo n.º 16
0
 /**
  * Build the Less file
  *
  * @param string $dest      The destination CSS file
  * @param bool   $force     If set to true, will build whereas the cache status
  * @param array  $variables Less variables to set before compiling the Less file
  */
 public function build($dest, $force = false, $variables = array())
 {
     if (!is_dir(dirname($dest))) {
         mkdir(dirname($dest), 0755, true);
     }
     $compiler = new \lessc();
     $lastCompilationFile = App::cache()->getCacheFilePath($this->getLastCompilationInfoFilename());
     if (!$force && is_file($lastCompilationFile)) {
         $cache = (include $lastCompilationFile);
     } else {
         $cache = $this->source;
     }
     $compiler->setFormatter('compressed');
     $compiler->setPreserveComments(false);
     $compilation = $compiler->cachedCompile($cache, $force);
     if (!is_array($cache) || $compilation['updated'] > $cache['updated']) {
         file_put_contents($dest, '/*** ' . date('Y-m-d H:i:s') . ' ***/' . PHP_EOL . $compilation['compiled']);
         $event = new Event('built-less', array('source' => $this->source, 'dest' => $dest));
         $event->trigger();
         // Save the compilation information
         unset($compilation['compiled']);
         $this->saveLastCompilationInfo($compilation);
     }
 }
Exemplo n.º 17
0
function ro_theme_autoCompileLess($inputFile, $outputFile)
{
    require_once ABS_PATH_FR . '/inc/lessc.inc.php';
    global $tb_options;
    $less = new lessc();
    $less->setFormatter("classic");
    $less->setPreserveComments(true);
    /*Styling Options*/
    $tb_primary_color = $tb_options['tb_primary_color'];
    $tb_secondary_color = $tb_options['tb_secondary_color'];
    $variables = array("tb_primary_color" => $tb_primary_color, "tb_secondary_color" => $tb_secondary_color);
    $less->setVariables($variables);
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $newCache = $less->cachedCompile($inputFile);
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
}
Exemplo n.º 18
0
/**
 * Compile less to css. Creates a cache-file of the last compiled less-file.
 *
 * This code is originally from the manual of lessphp.
 *
 * @param string $inputFile  the filename of the less-file.
 * @param string $outputFile the filename of the css-file to be created.
 * @param array  $config     with configuration details.
 *
 * @return void
 */
function autoCompileLess($inputFile, $outputFile, $config)
{
    $cacheFile = $inputFile . ".cache";
    if (file_exists($cacheFile)) {
        $cache = unserialize(file_get_contents($cacheFile));
    } else {
        $cache = $inputFile;
    }
    $less = new lessc();
    // Add custom less functions
    if (isset($config['functions'])) {
        foreach ($config['functions'] as $key => $val) {
            $less->registerFunction($key, $val);
        }
    }
    // Add import dirs
    if (isset($config['imports'])) {
        foreach ($config['imports'] as $val) {
            $less->addImportDir($val);
        }
    }
    // Set output formatter
    if (isset($config['formatter'])) {
        $less->setFormatter($config['formatter']);
    }
    // Preserve comments
    if (isset($config['comments'])) {
        $less->setPreserveComments($config['comments']);
    }
    // Compile a new cache
    $newCache = $less->cachedCompile($cache);
    if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
        file_put_contents($cacheFile, serialize($newCache));
        file_put_contents($outputFile, $newCache['compiled']);
    }
}
Exemplo n.º 19
0
 /**
  * Lessify the stylesheet and return the href of the compiled file
  *
  * @param  string $src    Source URL of the file to be parsed
  * @param  string $handle An identifier for the file used to create the file name in the cache
  * @return string         URL of the compiled stylesheet
  */
 public function parse_stylesheet($src, $handle)
 {
     // we only want to handle .less files
     if (!preg_match('/\\.less(\\.php)?$/', preg_replace('/\\?.*$/', '', $src))) {
         return $src;
     }
     // get file path from $src
     if (!strstr($src, '?')) {
         $src .= '?';
     }
     // prevent non-existent index warning when using list() & explode()
     // Match the URL schemes between WP_CONTENT_URL and $src,
     // so the str_replace further down will work
     $src_scheme = parse_url($src, PHP_URL_SCHEME);
     $wp_content_url_scheme = parse_url(WP_CONTENT_URL, PHP_URL_SCHEME);
     if ($src_scheme != $wp_content_url_scheme) {
         $src = set_url_scheme($src, $wp_content_url_scheme);
     }
     list($less_path, $query_string) = explode('?', str_replace(WP_CONTENT_URL, WP_CONTENT_DIR, $src));
     // output css file name
     $css_path = trailingslashit($this->get_cache_dir()) . "{$handle}.css";
     // automatically regenerate files if source's modified time has changed or vars have changed
     try {
         // initialise the parser
         $less = new lessc();
         // load the cache
         $cache_path = "{$css_path}.cache";
         if (file_exists($cache_path)) {
             $cache = unserialize(file_get_contents($cache_path));
         }
         // vars to pass into the compiler - default @themeurl var for image urls etc...
         $this->vars['themeurl'] = '~"' . get_stylesheet_directory_uri() . '"';
         $this->vars['lessurl'] = '~"' . dirname($src) . '"';
         $this->vars = apply_filters('less_vars', $this->vars, $handle);
         // If the cache or root path in it are invalid then regenerate
         if (empty($cache) || empty($cache['less']['root']) || !file_exists($cache['less']['root'])) {
             $cache = array('vars' => $this->vars, 'less' => $less_path);
         }
         // less config
         $less->setFormatter(apply_filters('less_compression', $this->compression));
         $less->setPreserveComments(apply_filters('less_preserve_comments', $this->preserve_comments));
         $less->setVariables($this->vars);
         // add directories to scan for imports
         $import_dirs = apply_filters('less_import_dirs', $this->import_dirs);
         if (!empty($import_dirs)) {
             foreach ((array) $import_dirs as $dir) {
                 $less->addImportDir($dir);
             }
         }
         // register and unregister functions
         foreach ($this->registered_functions as $name => $callable) {
             $less->registerFunction($name, $callable);
         }
         foreach ($this->unregistered_functions as $name) {
             $less->unregisterFunction($name);
         }
         // allow devs to mess around with the less object configuration
         do_action_ref_array('lessc', array(&$less));
         // $less->cachedCompile only checks for changed file modification times
         // if using the theme customiser (changed variables not files) then force a compile
         if ($this->vars !== $cache['vars']) {
             $force = true;
         } else {
             $force = false;
         }
         $less_cache = $less->cachedCompile($cache['less'], apply_filters('less_force_compile', $force));
         if (empty($cache) || empty($cache['less']['updated']) || $less_cache['updated'] > $cache['less']['updated'] || $this->vars !== $cache['vars']) {
             file_put_contents($cache_path, serialize(array('vars' => $this->vars, 'less' => $less_cache)));
             file_put_contents($css_path, $less_cache['compiled']);
         }
     } catch (exception $ex) {
         wp_die($ex->getMessage());
     }
     // restore query string it had if any
     $url = trailingslashit($this->get_cache_dir(false)) . "{$handle}.css" . (!empty($query_string) ? "?{$query_string}" : '');
     // restore original url scheme
     $url = set_url_scheme($url, $src_scheme);
     return add_query_arg('ver', $less_cache['updated'], $url);
 }
Exemplo n.º 20
0
require_once locate_template('/lib/3rdparty/lessc.inc.php');
if (class_exists('lessc') && ya_options()->getCpanelValue('developer_mode')) {
    define('LESS_PATH', get_template_directory() . '/assets/less');
    define('CSS__PATH', get_template_directory() . '/assets/css');
    $scheme = ya_options()->getCpanelValue('scheme');
    $scheme_vars = get_template_directory() . '/templates/presets/default.php';
    $output_cssf = CSS__PATH . '/app-default.css';
    if ($scheme && file_exists(get_template_directory() . '/templates/presets/' . $scheme . '.php')) {
        $scheme_vars = get_template_directory() . '/templates/presets/' . $scheme . '.php';
        $output_cssf = CSS__PATH . "/app-{$scheme}.css";
    }
    if (file_exists($scheme_vars)) {
        include $scheme_vars;
        try {
            // less variables by theme_mod
            // $less_variables['sidebar-width'] = ya_options()->sidebar_collapse_width.'px';
            $less = new lessc();
            $less->setImportDir(array(LESS_PATH . '/app/', LESS_PATH . '/bootstrap/'));
            $less->setVariables($less_variables);
            $cache = $less->cachedCompile(LESS_PATH . '/app.less');
            file_put_contents($output_cssf, $cache["compiled"]);
            if (ya_options()->getCpanelValue('responsive_support')) {
                $responsive_cache = $less->cachedCompile(LESS_PATH . '/app-responsive.less');
                file_put_contents(CSS__PATH . '/app-responsive.css', $responsive_cache["compiled"]);
            }
        } catch (Exception $e) {
            var_dump($e);
            exit;
        }
    }
}
Exemplo n.º 21
0
 /**
  * Lessify the stylesheet and return the href of the compiled file
  *
  * @param  string $src    Source URL of the file to be parsed
  * @param  string $handle An identifier for the file used to create the file name in the cache
  * @return string         URL of the compiled stylesheet
  */
 public function parse_stylesheet($src, $handle)
 {
     // we only want to handle .less files
     if (!preg_match('/\\.less(\\.php)?$/', preg_replace('/\\?.*$/', '', $src))) {
         return $src;
     }
     // get file path from $src
     if (!strstr($src, '?')) {
         $src .= '?';
     }
     // prevent non-existent index warning when using list() & explode()
     // Match the URL schemes between WP_CONTENT_URL and $src,
     // so the str_replace further down will work
     $src_scheme = parse_url($src, PHP_URL_SCHEME);
     $wp_content_url_scheme = parse_url(WP_CONTENT_URL, PHP_URL_SCHEME);
     if ($src_scheme != $wp_content_url_scheme) {
         $src = set_url_scheme($src, $wp_content_url_scheme);
     }
     list($less_path, $query_string) = explode('?', str_replace(WP_CONTENT_URL, WP_CONTENT_DIR, $src));
     $cache = $this->get_cached_file_data($handle);
     // vars to pass into the compiler - default @themeurl var for image urls etc...
     $this->vars['themeurl'] = '~"' . get_stylesheet_directory_uri() . '"';
     $this->vars['lessurl'] = '~"' . dirname($src) . '"';
     $this->vars = apply_filters('less_vars', $this->vars, $handle);
     // The overall "version" of the LESS file is all it's vars, src etc.
     $less_version = md5(serialize(array($this->vars, $src)));
     /**
      * Give the ability to disable always compiling the LESS with lessc()
      * and instead just use the $vars and $version of the LESS file to
      * dictate whether the LESS should be (re)generated.
      *
      * This means we don't need to run everything through the lessc() compiler
      * on every page load. The tradeoff is making a change in a LESS file will not
      * necessarily cause a (re)generation, one would need to bump the $ver param
      * on wp_enqueue_script() to cause that.
      */
     if (!get_option('wp_less_always_compile_less', true)) {
         if (!empty($cache['version']) && $cache['version'] === $less_version) {
             // restore query string it had if any
             $url = $cache['url'] . (!empty($query_string) ? "?{$query_string}" : '');
             $url = set_url_scheme($url, $src_scheme);
             return add_query_arg('ver', $less_version, $url);
         }
     }
     // automatically regenerate files if source's modified time has changed or vars have changed
     try {
         // initialise the parser
         if (!class_exists('lessc')) {
             return $url;
             //wp_die( 'the lessphp library is missing, aborting, run composer update' );
         }
         // If the cache or root path in it are invalid then regenerate
         if (empty($cache) || empty($cache['less']['root']) || !file_exists($cache['less']['root'])) {
             $cache = array('vars' => $this->vars, 'less' => $less_path);
         }
         if (empty($cache['url'])) {
             $cache['url'] = trailingslashit($this->get_cache_dir(false)) . "{$handle}.css";
         }
         // less config
         $less = new lessc();
         $less->setFormatter(apply_filters('less_compression', $this->compression));
         $less->setPreserveComments(apply_filters('less_preserve_comments', $this->preserve_comments));
         $less->setVariables($this->vars);
         // add directories to scan for imports
         $import_dirs = apply_filters('less_import_dirs', $this->import_dirs);
         if (!empty($import_dirs)) {
             foreach ((array) $import_dirs as $dir) {
                 $less->addImportDir($dir);
             }
         }
         // register and unregister functions
         foreach ($this->registered_functions as $name => $callable) {
             $less->registerFunction($name, $callable);
         }
         foreach ($this->unregistered_functions as $name) {
             $less->unregisterFunction($name);
         }
         // allow devs to mess around with the less object configuration
         do_action_ref_array('lessc', array(&$less));
         // $less->cachedCompile only checks for changed file modification times
         // if using the theme customiser (changed variables not files) then force a compile
         if ($this->vars !== $cache['vars']) {
             $force = true;
         } else {
             $force = false;
         }
         $force = apply_filters('less_force_compile', $force);
         $less_cache = $less->cachedCompile($cache['less'], $force);
         // if they have the same values but differing order, they wont match
         //sort( $cache['less'] );
         //sort( $less_cache );
         if (empty($cache) || empty($cache['less']['updated']) || md5($less_cache['compiled']) !== md5($cache['less']['compiled']) || $this->vars !== $cache['vars']) {
             // output css file name
             $css_path = trailingslashit($this->get_cache_dir()) . "{$handle}.css";
             $cache = array('vars' => $this->vars, 'url' => trailingslashit($this->get_cache_dir(false)) . "{$handle}.css", 'version' => $less_version, 'less' => null);
             /**
              * If the option to not have LESS always compiled is set,
              * then we dont store the whole less_cache in the options table as it's
              * not needed because we only do a comparison based off $vars and $src
              * (which includes the $ver param).
              *
              * This saves space on the options table for high performance environments.
              */
             if (get_option('wp_less_always_compile_less', true)) {
                 $cache['less'] = $less_cache;
             }
             $payload = '<strong>Rebuilt stylesheet with handle: "' . $handle . '"</strong><br>';
             if ($this->vars != $cache['vars']) {
                 $payload .= '<em>Variables changed</em>';
                 $difference = array_merge(array_diff_assoc($cache['vars'], $this->vars), array_diff_assoc($this->vars, $cache['vars']));
                 $payload .= '<pre>' . print_r($difference, true) . '</pre>';
             } else {
                 if (empty($cache) || empty($cache['less']['updated'])) {
                     $payload .= '<em>Empty cache or empty last update time</em>';
                 } else {
                     if ($less_cache['updated'] > $cache['less']['updated']) {
                         $payload .= '<em>Update times different</em>';
                     } else {
                         $payload .= '<em><strong>Unknown! Contact the developers poste haste!!!!!!!</em><strong></em>';
                     }
                 }
             }
             $payload .= '<br>src: <code>"' . $src . '"</code> css path: <code>"' . $css_path . '"</code> and cache path: <code>"' . $cache_path . '"</code> and scheme <code>"' . $src_scheme . '"</code>';
             $this->add_message(array('time' => time(), 'payload' => $payload));
             $this->save_parsed_css($css_path, $less_cache['compiled']);
             $this->update_cached_file_data($handle, $cache);
         }
     } catch (exception $ex) {
         $this->add_message(array('time' => time(), 'payload' => '<strong>Lessphp failure</strong> ' . $ex->GetMessage()));
         wp_die(wp_strip_all_tags($ex->getMessage()));
     }
     // restore query string it had if any
     $url = $cache['url'] . (!empty($query_string) ? "?{$query_string}" : '');
     // restore original url scheme
     $url = set_url_scheme($url, $src_scheme);
     if (get_option('wp_less_always_compile_less', true)) {
         return add_query_arg('ver', $less_cache['updated'], $url);
     }
     return add_query_arg('ver', $less_version, $url);
 }
Exemplo n.º 22
0
 function compileLess($inputFile, $outputFile)
 {
     if (!class_exists('lessc')) {
         require_once KPATH_FRAMEWORK . '/external/lessc/lessc.php';
     }
     // Load the cache.
     $cacheDir = JPATH_CACHE . '/kunena';
     if (!is_dir($cacheDir)) {
         KunenaFolder::create($cacheDir);
     }
     $cacheFile = "{$cacheDir}/kunena.{$this->name}.{$inputFile}.cache";
     if (is_file($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = JPATH_SITE . '/' . $this->getFile($inputFile, false, 'less');
     }
     $outputDir = KPATH_MEDIA . "/cache/{$this->name}/css";
     if (!is_dir($outputDir)) {
         KunenaFolder::create($outputDir);
     }
     $outputFile = "{$outputDir}/{$outputFile}";
     $less = new lessc();
     $class = $this;
     $less->registerFunction('url', function ($arg) use($class) {
         list($type, $q, $values) = $arg;
         $value = reset($values);
         return "url({$q}{$class->getFile($value, true, 'media', 'media/kunena')}{$q})";
     });
     $less->setVariables($this->style_variables);
     $newCache = $less->cachedCompile($cache);
     if (!is_array($cache) || $newCache['updated'] > $cache['updated'] || !is_file($outputFile)) {
         $cache = serialize($newCache);
         KunenaFile::write($cacheFile, $cache);
         KunenaFile::write($outputFile, $newCache['compiled']);
     }
 }
Exemplo n.º 23
0
    if ($this->params->get('ResponsiveVideo')) {
        $doc->addScript($dcTemplatePath . '/js/jquery.fitvids.js', 'text/javascript');
    }
}
// font style sheet
$doc->addStyleSheet('templates/' . $this->template . '/fonts/fonts.css');
/*
 * responsive menu
 * @since 3.3
 */
$doc->addScript($dcTemplatePath . '/js/menu.js', 'text/javascript');
// Custom JavaScript File
$doc->addScript($dcTemplatePath . '/js/scripts.js', 'text/javascript');
// if development mode is off script will generate css file instead less
if ($this->params->get('developmentMode') != 1) {
    // less compiler
    require "lessc.inc.php";
    $inputFile = JPATH_ROOT . "/templates/" . $this->template . "/themes/style" . $this->params->get('style') . "/style.less";
    $outputFile = JPATH_ROOT . "/templates/" . $this->template . "/themes/style" . $this->params->get('style') . "/style.css";
    $less = new lessc();
    $less->setFormatter("compressed");
    $cache = $less->cachedCompile($inputFile);
    file_put_contents($outputFile, $cache["compiled"]);
    $last_updated = $cache["updated"];
    $cache = $less->cachedCompile($cache);
    if ($cache["updated"] > $last_updated) {
        file_put_contents($outputFile, $cache["compiled"]);
    }
    // compiled css file
    $doc->addStyleSheet($dcTemplatePath . '/themes/style' . $this->params->get('style') . '/style.css');
}
Exemplo n.º 24
0
 /**
  * Checks if .less file has been updated and stores it in cache for quick comparison.
  *
  * This function is taken and modified from documentation of lessphp
  *
  * @param String $inputFile
  * @param String $outputFile
  */
 function autoCompileLess($inputFile, $outputFile)
 {
     // load config file
     $config = JFactory::getConfig();
     //path to temp folder
     $tmpPath = $config->get('tmp_path');
     //load chached file
     $cacheFile = $tmpPath . DIRECTORY_SEPARATOR . $this->app->getTemplate() . "_" . basename($inputFile) . ".cache";
     if (file_exists($cacheFile)) {
         $tmpCache = unserialize(file_get_contents($cacheFile));
         if ($tmpCache['root'] === $inputFile) {
             $cache = $tmpCache;
         } else {
             $cache = $inputFile;
             unlink($cacheFile);
         }
     } else {
         $cache = $inputFile;
     }
     //instantiate less compiler
     $less = new lessc();
     //set less options
     //option: force recompilation regardless of change
     $force = (bool) $this->params->get('less_force', 0);
     //option: preserve comments
     if ($this->params->get('less_comments', 0)) {
         $less->setPreserveComments(true);
     }
     //option: compression
     if ($this->params->get('less_compress', 0)) {
         $less->setFormatter("compressed");
     } else {
         $less->setFormatter("classic");
     }
     //compile cache file
     $newCache = $less->cachedCompile($cache, $force);
     if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
         file_put_contents($cacheFile, serialize($newCache));
         file_put_contents($outputFile, $newCache['compiled']);
     }
 }
Exemplo n.º 25
0
 function compileLess($inputFile, $outputFile)
 {
     if (!class_exists('lessc')) {
         require_once KPATH_FRAMEWORK . '/external/lessc/lessc.php';
     }
     // Load the cache.
     $cacheDir = JPATH_CACHE . '/kunena';
     if (!is_dir($cacheDir)) {
         JFolder::create($cacheDir);
     }
     $cacheFile = "{$cacheDir}/kunena.{$this->name}.{$inputFile}.cache";
     if (file_exists($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = JPATH_SITE . '/' . $this->getFile($inputFile, false, 'less');
     }
     $outputDir = KPATH_MEDIA . "/cache/{$this->name}/css";
     if (!is_dir($outputDir)) {
         JFolder::create($outputDir);
     }
     $outputFile = "{$outputDir}/{$outputFile}";
     $less = new lessc();
     $less->setVariables($this->style_variables);
     $newCache = $less->cachedCompile($cache);
     if (!is_array($cache) || $newCache['updated'] > $cache['updated'] || !is_file($outputFile)) {
         $cache = serialize($newCache);
         JFile::write($cacheFile, $cache);
         JFile::write($outputFile, $newCache['compiled']);
     }
 }
Exemplo n.º 26
0
function sh_theme_color_scheme()
{
    $dir = get_template_directory();
    include_once $dir . '/includes/thirdparty/lessc.inc.php';
    $styles = _WSH()->option();
    $colors = sh_set($styles, 'color_selection', 'default');
    $custom = sh_set($styles, 'custom_color_scheme');
    $default = sh_set($styles, 'default_color_scheme', 'yellow');
    //echo $colors.'<br>'.$custom.'<br>'. $default;exit;
    if ($colors === 'default') {
        $url = file_exists(get_stylesheet_directory_uri() . '/css/' . $default . '.css') ? get_stylesheet_directory_uri() . '/css/' . $default . '.css' : get_template_directory_uri() . '/css/' . $default . '.css';
        echo '<link rel="stylesheet" type="text/css" href="' . $url . '" />';
        return;
    }
    $transient = get_transient('_sh_color_scheme');
    $update = $custom != $transient ? true : false;
    $url = file_exists(get_stylesheet_directory() . '/css/color.css') ? get_stylesheet_directory_uri() . '/css/color.css' : get_template_directory_uri() . '/css/color.css';
    echo '<link rel="stylesheet" type="text/css" href="' . $url . '" />';
    //if( !$update ) return;
    set_transient('_sh_color_scheme', $custom, DAY_IN_SECONDS);
    $less = new lessc();
    $less->setVariables(array("sh_color" => $custom));
    $lessss = file_exists(get_stylesheet_directory() . '/css/color.less') ? get_stylesheet_directory() . '/css/color.less' : get_template_directory() . '/css/color.less';
    // create a new cache object, and compile
    $cache = $less->cachedCompile($lessss);
    $url = file_exists(get_stylesheet_directory() . '/css/color.css') ? get_stylesheet_directory() . '/css/color.css' : get_template_directory() . '/css/color.css';
    file_put_contents($url, $cache["compiled"]);
}
Exemplo n.º 27
0
 /**
  * @internal Compiles a LESS file to CSS and delivers that to the browser
  * @attribute[RequestParam('file','string')]
  */
 function CompileLess($file)
 {
     $less = resFile(basename($file), true);
     $css = sys_get_temp_dir() . '/' . md5($file) . '.css';
     $cacheFile = sys_get_temp_dir() . '/' . md5($file) . '.cache';
     header('Content-Type: text/css');
     if (file_exists($css) && file_exists($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = $less;
     }
     require_once __DIR__ . '/lessphp/lessc.inc.php';
     $compiler = new \lessc();
     $newCache = $compiler->cachedCompile($cache);
     if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
         file_put_contents($cacheFile, serialize($newCache));
         file_put_contents($css, $newCache['compiled']);
     }
     WdfResource::ValidatedCacheResponse($less);
     readfile($css);
     die;
 }
Exemplo n.º 28
0
 protected function autoCompileLess($inputFile)
 {
     global $okt;
     $outputFile = OKT_PUBLIC_PATH . '/cache/' . md5($inputFile) . '.css';
     $cacheFile = $outputFile . '.cache';
     if (file_exists($cacheFile)) {
         $cache = unserialize(file_get_contents($cacheFile));
     } else {
         $cache = $inputFile;
     }
     try {
         $less = new lessc();
         $less->setPreserveComments(true);
         $less->setImportDir(array(isset($okt->theme->path) ? $okt->theme->path . '/css/' : null, OKT_PUBLIC_PATH . '/css/less/'));
         $less->setVariables($okt->theme->getLessVariables());
         $newCache = $less->cachedCompile($cache);
     } catch (Exception $ex) {
         $okt->error->set('lessphp fatal error: ' . $ex->getMessage());
     }
     if (!is_array($cache) || $newCache['updated'] > $cache['updated']) {
         file_put_contents($cacheFile, serialize($newCache));
         file_put_contents($outputFile, $newCache['compiled']);
     }
     return str_replace(OKT_PUBLIC_PATH, $okt->config->app_path . OKT_PUBLIC_DIR, $outputFile);
 }
Exemplo n.º 29
0
passthru(sprintf("php %s/genposts.php", __DIR__), $out);
// compile less => css
$lessInput = __DIR__ . '/public/css/main.less';
$cssOutput = __DIR__ . '/public/css/compiled.css';
$lessCacheFile = __DIR__ . '/less.cache';
if (!file_exists($cssOutput)) {
    @unlink($lessCacheFile);
}
if (file_exists($lessCacheFile)) {
    $cache = unserialize(file_get_contents($lessCacheFile));
} else {
    $cache = __DIR__ . '/public/css/main.less';
}
$less = new lessc();
$less->setFormatter("compressed");
$newCache = $less->cachedCompile($cache);
if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
    if (file_put_contents($cssOutput, $newCache['compiled']) !== false) {
        gzip($cssOutput);
        file_put_contents($lessCacheFile, serialize($newCache));
    }
}
// minify js
$jsDir = __DIR__ . '/public/js/';
$jsOutput = 'compiled.js';
$js = '';
// for this site, the order of including doesn't matter
if (file_exists($jsDir)) {
    foreach (scandir($jsDir) as $file) {
        if (substr($file, -3) === '.js' && $file !== $jsOutput) {
            $js .= \JShrink\Minifier::minify(file_get_contents($jsDir . $file));
Exemplo n.º 30
0
 /**
  * Compile LESS file to CSS and store in cache if necessary
  * 
  * @param string $file      LESS file to compile
  * @return integer          Timestamp of the last compilation
  */
 private function _compileLess($file)
 {
     $cacheFile = CACHE_DIR . DS . 'assets' . DS . md5($file) . ".less.cache";
     $cache = is_file($cacheFile) ? unserialize(file_get_contents($cacheFile)) : $file;
     require_once FW_DIR . DS . "lib" . DS . 'vendor' . DS . "lessphp" . DS . "lessc.inc.php";
     $less = new lessc();
     $less->addImportDir(WWW_DIR);
     $less->addImportDir(dirname($file));
     $compiled = $less->cachedCompile($cache);
     if (!is_array($cache) || $compiled["updated"] > $cache["updated"]) {
         file_put_contents($cacheFile, serialize($compiled));
         return $compiled['updated'];
     }
     return $cache['updated'];
 }