Exemplo n.º 1
0
 protected static function compressFiles()
 {
     ini_set('max_execution_time', 120);
     self::$_mincode['js'] = '';
     self::$_mincode['css'] = '';
     $curl = new CURLRequest();
     $css = new CSSCompression();
     $css->option('readability', CSSCompression::READ_NONE);
     $css->option('mode', self::$_opt['cssLevel']);
     foreach (self::$_files as $file) {
         $code = $file['data'];
         $hash = md5($code);
         $cache = self::$_cacheDir . $hash;
         if (file_exists($cache) === true) {
             self::$_mincode[$file['ext']] .= file_get_contents($cache);
         } else {
             if (self::$_opt['compressCode'] === false) {
                 self::$_mincode[$file['ext']] .= $code;
             } else {
                 if ($file['ext'] === 'js') {
                     if (self::$_opt['useLocalJS'] === false) {
                         if (strlen($code) / 1000 / 1000 > 1) {
                             $file = basename($file['path']);
                             $msg = '%s is bigger than 1000kB,';
                             $msg .= ' split the code into multiple files or';
                             $msg .= ' enable local compression for javascript.';
                             $msg = sprintf($msg, $file);
                             throw new Exception($msg);
                         }
                         $post = array('js_code' => $code, 'compilation_level' => 'SIMPLE_OPTIMIZATIONS', 'output_format' => 'json');
                         // Workaround to allow multiple output_info in query.
                         $post = http_build_query($post);
                         $post .= '&output_info=errors&output_info=compiled_code';
                         $return = $curl->get('http://closure-compiler.appspot.com/compile', array(CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => $post, CURLOPT_POST => true));
                         $data = json_decode($return['content'], true);
                         if (isset($data['errors']) === true || isset($data['serverErrors']) === true) {
                             $error = $data['errors'][0]['error'];
                             $file = basename($file['path']);
                             $line = $data['errors'][0]['lineno'];
                             $msg = 'Web Service returned %s in %s on line %u.';
                             $msg = sprintf($msg, $error, $file, $line);
                             throw new Exception($msg);
                         } else {
                             if (isset($data['compiledCode']) === true) {
                                 $code = $data['compiledCode'];
                                 self::$_mincode[$file['ext']] .= $code;
                                 file_put_contents($cache, $code);
                             } else {
                                 throw new Exception('An unknown error has occured.');
                             }
                         }
                         //end if
                     }
                     //end if
                 } else {
                     if ($file['ext'] === 'css') {
                         $code = trim($css->compress($code));
                         self::$_mincode[$file['ext']] .= $code;
                         file_put_contents($cache, $code);
                     }
                 }
                 //end if
             }
             //end if
         }
         //end if
     }
     //end foreach
 }