コード例 #1
0
ファイル: Stylesheet.php プロジェクト: cmroanirgo/monstra
 /**
  *  Minify, combine and load site stylesheet
  */
 public static function load()
 {
     $backend_site_css_path = MINIFY . DS . 'backend_site.minify.css';
     $frontend_site_css_path = MINIFY . DS . 'frontend_site.minify.css';
     // Load stylesheets
     if (count(Stylesheet::$stylesheets) > 0) {
         $backend_buffer = '';
         $backend_regenerate = false;
         $frontend_buffer = '';
         $frontend_regenerate = false;
         // Sort stylesheets by priority
         $stylesheets = Arr::subvalSort(Stylesheet::$stylesheets, 'priority');
         if (BACKEND) {
             // Build backend site stylesheets
             foreach ($stylesheets as $stylesheet) {
                 if (file_exists(ROOT . DS . $stylesheet['file']) and ($stylesheet['load'] == 'backend' or $stylesheet['load'] == 'both')) {
                     if (!file_exists($backend_site_css_path) or filemtime(ROOT . DS . $stylesheet['file']) > filemtime($backend_site_css_path)) {
                         $backend_regenerate = true;
                         break;
                     }
                 }
             }
             // Regenerate site stylesheet
             if ($backend_regenerate) {
                 foreach ($stylesheets as $stylesheet) {
                     if (file_exists(ROOT . DS . $stylesheet['file']) and ($stylesheet['load'] == 'backend' or $stylesheet['load'] == 'both')) {
                         $backend_buffer .= file_get_contents(ROOT . DS . $stylesheet['file']);
                     }
                 }
                 $backend_buffer = Stylesheet::parseVariables($backend_buffer);
                 file_put_contents($backend_site_css_path, MinifyCSS::process($backend_buffer));
                 $backend_regenerate = false;
             }
         } else {
             // Build frontend site stylesheets
             foreach ($stylesheets as $stylesheet) {
                 if (file_exists(ROOT . DS . $stylesheet['file']) and ($stylesheet['load'] == 'frontend' or $stylesheet['load'] == 'both')) {
                     if (!file_exists($frontend_site_css_path) or filemtime(ROOT . DS . $stylesheet['file']) > filemtime($frontend_site_css_path)) {
                         $frontend_regenerate = true;
                         break;
                     }
                 }
             }
             // Regenerate site stylesheet
             if ($frontend_regenerate) {
                 foreach ($stylesheets as $stylesheet) {
                     if (file_exists(ROOT . DS . $stylesheet['file']) and ($stylesheet['load'] == 'frontend' or $stylesheet['load'] == 'both')) {
                         $frontend_buffer .= file_get_contents(ROOT . DS . $stylesheet['file']);
                     }
                 }
                 $frontend_buffer = Stylesheet::parseVariables($frontend_buffer);
                 file_put_contents($frontend_site_css_path, MinifyCSS::process($frontend_buffer));
                 $frontend_regenerate = false;
             }
         }
         // Render
         if (BACKEND) {
             echo '<link rel="stylesheet" href="' . Option::get('siteurl') . '/tmp/minify/backend_site.minify.css?' . Option::get('styles_version') . '" type="text/css" />';
         } else {
             echo '<link rel="stylesheet" href="' . Option::get('siteurl') . '/tmp/minify/frontend_site.minify.css?' . Option::get('styles_version') . '" type="text/css" />' . "\n";
         }
     }
 }