function processCSSFiles()
 {
     global $gantry;
     $cache_time = $gantry->get("gzipper-time");
     $expires_time = $gantry->get("gzipper-expirestime", 1440);
     $strip_css = $gantry->get("gzipper-stripwhitespace", 1);
     $ordered_files = array();
     $output = array();
     $css_links = $gantry->_styles;
     foreach ($css_links as $filepath => $urlpath) {
         $ordered_files[dirname($filepath)][basename($filepath)] = $urlpath;
     }
     foreach ($ordered_files as $dir => $files) {
         if (!is_writable($dir)) {
             foreach ($files as $css_file) {
                 $gantry->document->addStyleSheet($css_file);
             }
             continue;
         }
         $md5sum = "";
         $path = "";
         jimport('joomla.filesystem.file');
         //first trip through to build filename
         foreach ($files as $file => $details) {
             $md5sum .= md5($details);
             $detailspath = $dir . DS . $file;
             if (JFile::exists($detailspath)) {
                 $path = dirname($details);
             }
         }
         $cache_filename = "css-" . md5($md5sum) . ".php";
         $cache_fullpath = $dir . DS . $cache_filename;
         //see if file is stale
         if (JFile::exists($cache_fullpath)) {
             $diff = time() - filectime($cache_fullpath);
         } else {
             $diff = $cache_time + 1;
         }
         if ($diff > $cache_time) {
             $outfile = GantryGZipper::_getOutHeader("css", $expires_time);
             foreach ($files as $file => $details) {
                 $detailspath = $dir . DS . $file;
                 if (JFile::exists($detailspath)) {
                     $css_content = JFile::read($detailspath);
                     if ($strip_css) {
                         $css_content = GantryGZipper::_stripCSSWhiteSpace($css_content);
                     }
                     $outfile .= "\n\n/*** " . $file . " ***/\n\n" . $css_content;
                 }
             }
             JFile::write($cache_fullpath, $outfile);
         }
         $cache_file_name = $path . "/" . $cache_filename;
         $gantry->document->addStyleSheet($cache_file_name);
     }
 }
 public static function processCSSFiles()
 {
     /** @global $gantry Gantry */
     global $gantry;
     $cache_time = $gantry->get("gzipper-time");
     $expires_time = $gantry->get("gzipper-expirestime", 1440);
     $strip_css = $gantry->get("gzipper-stripwhitespace", 1);
     $grouped_priories = array();
     $output = array();
     foreach ($gantry->_styles as $priorities) {
         foreach ($priorities as $links) {
             $css_links[$links->getPath()] = $links->getUrl();
         }
     }
     //		$css_links = $gantry->_styles;
     ksort($gantry->_styles);
     foreach ($gantry->_styles as $style_priority => $styles) {
         $order_keeper = 0;
         $bump_ok = false;
         foreach ($styles as $style_entry) {
             if ($style_entry->getType() == 'url') {
                 $directory = 'REMOTE_URL';
                 $filename = $style_entry->getUrl();
                 $bump_ok = true;
             } else {
                 $directory = dirname($style_entry->getPath());
                 $filename = basename($style_entry->getPath());
             }
             $grouped_priories[$style_priority][$order_keeper][$directory][$filename] = $style_entry;
             if ($bump_ok) {
                 $order_keeper++;
                 $bump_ok = false;
             }
         }
     }
     foreach ($grouped_priories as $priority => $order_kept_entries) {
         foreach ($order_kept_entries as $ordered_files) {
             foreach ($ordered_files as $dir => $files) {
                 // Process full urls
                 if ($dir == 'REMOTE_URL') {
                     foreach ($files as $file => $link) {
                         $gantry->document->addStyleSheet($link->getUrl());
                     }
                     continue;
                 } else {
                     if (!is_writable($dir)) {
                         foreach ($files as $css_file) {
                             $gantry->document->addStyleSheet($css_file->getUrl());
                         }
                         continue;
                     }
                     $md5sum = "";
                     $path = "";
                     jimport('joomla.filesystem.file');
                     //first trip through to build filename
                     foreach ($files as $file => $details) {
                         $md5sum .= md5($details->getUrl());
                         $detailspath = $dir . '/' . $file;
                         if (JFile::exists($detailspath)) {
                             $path = dirname($details->getUrl());
                         }
                     }
                     $cache_filename = "css-" . md5($md5sum) . ".php";
                     $cache_fullpath = $dir . '/' . $cache_filename;
                     //see if file is stale
                     if (JFile::exists($cache_fullpath)) {
                         $diff = time() - filectime($cache_fullpath);
                     } else {
                         $diff = $cache_time + 1;
                     }
                     if ($diff > $cache_time) {
                         $outfile = GantryGZipper::_getOutHeader("css", $expires_time);
                         foreach ($files as $file => $details) {
                             $detailspath = $dir . '/' . $file;
                             if (JFile::exists($detailspath)) {
                                 $css_content = JFile::read($detailspath);
                                 if ($strip_css) {
                                     $css_content = GantryGZipper::_stripCSSWhiteSpace($css_content);
                                 }
                                 $outfile .= "\n\n/*** " . $file . " ***/\n\n" . $css_content;
                             }
                         }
                         JFile::write($cache_fullpath, $outfile);
                     }
                     $cache_file_name = $path . "/" . $cache_filename;
                     $gantry->document->addStyleSheet($cache_file_name);
                 }
             }
         }
     }
 }
示例#3
0
 function processCSSFiles()
 {
     global $gantry;
     $cache_time = $gantry->get("gzipper-time");
     $expires_time = $gantry->get("gzipper-expirestime", 1440);
     $strip_css = $gantry->get("gzipper-stripwhitespace", 1);
     $grouped_priories = array();
     $output = array();
     foreach ($gantry->_styles as $priorities) {
         foreach ($priorities as $links) {
             $css_links[$links->path] = $links->url;
         }
     }
     //		$css_links = $gantry->_styles;
     ksort($gantry->_styles);
     foreach ($gantry->_styles as $style_priority => $styles) {
         $order_keeper = 0;
         $bump_ok = false;
         foreach ($styles as $style_entry) {
             if ($style_entry->type == 'url') {
                 $directory = 'REMOTE_URL';
                 $filename = $style_entry->url;
                 $bump_ok = true;
             } else {
                 $directory = dirname($style_entry->path);
                 $filename = basename($style_entry->path);
             }
             $grouped_priories[$style_priority][$order_keeper][$directory][$filename] = $style_entry;
             if ($bump_ok) {
                 $order_keeper++;
                 $bump_ok = false;
             }
         }
     }
     foreach ($grouped_priories as $priority => $order_kept_entries) {
         foreach ($order_kept_entries as $ordered_files) {
             foreach ($ordered_files as $dir => $files) {
                 // Process full urls
                 if ($dir == 'REMOTE_URL') {
                     foreach ($files as $file => $link) {
                         $output[0][] = $link;
                     }
                     continue;
                 } else {
                     if (!is_writable($dir)) {
                         foreach ($files as $css_file) {
                             $output[0][] = $css_file;
                         }
                         continue;
                     }
                     $md5sum = "";
                     $path = "";
                     //first trip through to build filename
                     foreach ($files as $file => $details) {
                         $md5sum .= md5($details->url);
                         $detailspath = $dir . DS . $file;
                         if (file_exists($detailspath)) {
                             $path = dirname($details->url);
                         }
                     }
                     $cache_filename = "css-" . md5($md5sum) . ".php";
                     $cache_fullpath = $dir . DS . $cache_filename;
                     //see if file is stale
                     if (file_exists($cache_fullpath)) {
                         $diff = time() - filectime($cache_fullpath);
                     } else {
                         $diff = $cache_time + 1;
                     }
                     if ($diff > $cache_time) {
                         $outfile = GantryGZipper::_getOutHeader("css", $expires_time);
                         foreach ($files as $file => $details) {
                             $detailspath = $dir . DS . $file;
                             if (file_exists($detailspath)) {
                                 $css_content = file_get_contents($detailspath);
                                 if ($strip_css) {
                                     $css_content = GantryGZipper::_stripCSSWhiteSpace($css_content);
                                 }
                                 $outfile .= "\n\n/*** " . $file . " ***/\n\n" . $css_content;
                             }
                         }
                         file_put_contents($cache_fullpath, $outfile);
                     }
                     $cache_file_name = $path . "/" . $cache_filename;
                     $output[0][] = new GantryStyleLink('local', $cache_fullpath, $cache_file_name);
                 }
             }
         }
     }
     $gantry->_styles =& $output;
 }