Пример #1
0
 public static function PublishCSS($site, $name)
 {
     // get references to file
     $lessDir = SITES_LOCATION . '/' . $site['FriendlyId'] . '/themes/' . $site['Theme'] . '/styles/';
     $cssDir = SITES_LOCATION . '/' . $site['FriendlyId'] . '/css/';
     // get reference to config file
     $configFile = SITES_LOCATION . '/' . $site['FriendlyId'] . '/themes/' . $site['Theme'] . '/configure.json';
     $lessFile = $lessDir . $name . '.less';
     $cssFile = $cssDir . $name . '.css';
     // create css directory (if needed)
     if (!file_exists($cssDir)) {
         mkdir($cssDir, 0755, true);
     }
     if (file_exists($lessFile)) {
         $content = file_get_contents($lessFile);
         $less = new lessc();
         try {
             $css = $content;
             // set configurations
             $css = Publish::SetConfigurations($configFile, $css);
             // compile less to css
             $css = $less->compile($css);
             // compress css, #ref: http://manas.tungare.name/software/css-compression-in-php/
             // remove comments
             $css = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $css);
             // Remove space after colons
             $css = str_replace(': ', ':', $css);
             // Remove whitespace
             $css = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $css);
             // put css into file
             file_put_contents($cssFile, $css);
             return $css;
         } catch (exception $e) {
             return NULL;
         }
     } else {
         return NULL;
     }
 }