Esempio n. 1
0
 /**
  * Function that will merge & minify the provided files
  *
  * @param   array   $files      - array with relative paths to js files
  * @param   string  $cachePath  - where to save the new merged & minified file
  *
  * @return string
  */
 public static function shrink(array $files, $cachePath)
 {
     $times = array();
     $md5 = md5(json_encode($files));
     $url = $cachePath . '/' . $md5 . '.min.js';
     $minFile = JPATH_ROOT . '/' . $url;
     // Lets read the times of the files we need to merge
     foreach ($files as $file) {
         if (file_exists(JPATH_ROOT . '/' . $file)) {
             $times[] = filemtime(JPATH_ROOT . '/' . $file);
         }
     }
     // If the minFile doesn't exist or the minFile time is older than any of the times, let's do our job!
     if (!file_exists($minFile) || max($times) > filemtime($minFile)) {
         $js = '';
         foreach ($files as $file) {
             if (file_exists(JPATH_ROOT . '/' . $file)) {
                 $js[] = file_get_contents(JPATH_ROOT . '/' . $file);
             }
         }
         // Do the actual minifying
         $minJs = CompojoomMinifier::minify(implode($js));
         JFile::write($minFile, $minJs);
     }
     return $url;
 }