JsCompile.php
[Pman.Core] / JsCompile.php
index f076449..8808bde 100644 (file)
@@ -64,10 +64,18 @@ class Pman_Core_JsCompile  extends Pman
         }
         exit;
     }
+    /**
+     * packScript:
+     *
+     * @param {String} basedir absolute path to files
+     * @param {Array}  list of files (ontop of basedir) 
+     *
+     *
+     *
+     */
     
     
-    
-    function packScript($basedir, $files,  $output_path, $output_url)
+    function packScript($basedir, $files,  $output_url)
     {
         // this outputs <script tags..>
         // either for just the original files,
@@ -75,36 +83,132 @@ class Pman_Core_JsCompile  extends Pman
         // first expand files..
         
         $arfiles = array();
+        $ofiles = array();
         foreach($files as $f) {
+             if (!file_exists($basedir .'/' .$f)) {
+                continue;
+            }
             if (!is_dir($basedir .'/' .$f)) {
+                
                 $arfiles[$basedir .'/' .$f] = filemtime($basedir .'/' .$f);
+                 $ofiles[] = $f;
                 continue;
             }
             foreach(glob($basedir .'/' .$f.'/*.js') as $fx) {
                 $arfiles[$fx] = filemtime($fx);
+                $ofiles [] = $f . '/'. basename($fx);
             }
         }
         
         $output = md5(serialize($arfiles)) .'.js';
         
-        if (!file_exists($output_path.'/'.$output)) {
-            $this->pack($arfiles,$output_path.'/'.$output);
+        if (!file_exists($basedir.'/_cache_/'.$output)) {
+            $this->pack($arfiles,$basedir.'/_cache_/'.$output);
         }
         
-        if (file_exists($output_path.'/'.$output)) {
+        if (file_exists($basedir.'/_cache_/'.$output)) {
             
-            echo '<script type="text/javascript" src="'.$output_url.'/'. $output.'"></script>';
+            echo '<script type="text/javascript" src="'.$output_url.'/_cache_/'. $output.'"></script>';
             return;
         }
-        echo "output original..";
-        exit;
+        foreach($ofiles as $f) {
+            echo '<script type="text/javascript" src="'.$output_url.'/'.$f.'"></script>'."\n";
+            
+        }
+         
         
+    }
+    function packCss($basedir, $files,   $output_url)
+    {
+        // this outputs <script tags..>
+        // either for just the original files,
+        // or the compressed version.
+        // first expand files..
         
+        $arfiles = array();
+        $ofiles = array();
+        //print_R($files);
+        foreach($files as $f) {
+            if (!file_exists($basedir .'/' .$f)) {
+                continue;
+            }
+            if (!is_dir($basedir .'/' .$f)) {
+                $arfiles[$basedir .'/' .$f] = filemtime($basedir .'/' .$f);
+                $ofiles[] = $f;
+                continue;
+            }
+            foreach(glob($basedir .'/' .$f.'/*.css') as $fx) {
+                $arfiles[$fx] = filemtime($fx);
+                $ofiles [] = $f . '/'. basename($fx);
+            }
+        }
         
+        $output = md5(serialize($arfiles)) .'.css';
         
+        if (!file_exists($basedir.'/_cache_/'.$output)) {
+            $this->packCssCore($arfiles,$basedir.'/_cache_/'.$output);
+        }
+        //var_dump()$basedir. '/_cache_/'.$output);
+        if (file_exists($basedir. '/_cache_/'.$output)) {
+            echo '<link type="text/css" rel="stylesheet" media="screen" href="'.$output_url. '/_cache_/'. $output.'" />';
+            return;
+        }
+        foreach($ofiles as $f ) {
+            echo '<link type="text/css" rel="stylesheet" media="screen" href="'.$output_url.'/'.$f.'" />'."\n";
+             
+        }
+         
+        
+    }
+     /**
+     * wrapper arroudn packer...
+     * @param {Array} map of $files => filemtime the files to pack
+     * @param {String} $output name fo file to output
+     *
+     */
+    function packCssCore($files, $output)
+    {
+        
+         
+        $o = HTML_FlexyFramework::get()->Pman_Core;
+        
+        if (empty($o['cssminify']) || !file_exists($o['cssminify'])) {
+            echo '<!-- jspacker not set -->';
+            return false;
+        }
+        require_once 'System.php';
+        $seed= System::which('seed');
+        if (!$seed) {
+            echo '<!-- seed not installed -->';
+            return false;
+            
+        }
+        $targetm = file_exists($output) ? filemtime($output) : 0;
+        $max = 0;
+        $ofiles = array();
+        foreach($files as $f => $mt) {
+            $max = max($max,$mt);
+            $ofiles[] = escapeshellarg($f);
+        }
+        if ($max < $targetm)  {
+            return true;
+        }
+        if (!file_exists(dirname($output))) {
+            mkdir(dirname($output), 0755, true);
+        }
+        $eoutput = escapeshellarg($output);
+        $cmd = "$seed {$o['cssminify']}  $eoutput " . implode($ofiles, ' ');
+        //echo "<PRE>$cmd\n"; echo `$cmd`; exit;
+        `$cmd`;
+        
+        
+        // we should do more checking.. return val etc..
+        if (file_exists($output) && ($max < filemtime($output) ) ) {
+            return true;
+        }
+        return false;
         
     }
-    
     /**
      * wrapper arroudn packer...
      * @param {Array} map of $files => filemtime the files to pack
@@ -139,20 +243,30 @@ class Pman_Core_JsCompile  extends Pman
         if ($max < $targetm)  {
             return true;
         }
+        //var_dump($output);
         if (!file_exists(dirname($output))) {
             mkdir(dirname($output), 0755, true);
         }
+        sort($ofiles);
         $eoutput = escapeshellarg($output);
-        $cmd = "$seed {$o['jspacker']}/pack.js  -o $eoutput " . implode($ofiles, ' ');
+        $cmd = "$seed {$o['jspacker']}/pack.js  -o $eoutput " . implode($ofiles, ' ') . ' 2>&1';
         //echo "<PRE>$cmd\n";
         //echo `$cmd`;
-        `$cmd`;
-        
+        $res = `$cmd`;
+        //exit;
         
         // we should do more checking.. return val etc..
         if (file_exists($output) && ($max < filemtime($output) ) ) {
+            
             return true;
         }
+        echo "<!-- packed file did not exist
+          
+            " . htmlspecialchars($cmd) . "
+            
+            " . htmlspecialchars($res) . "
+            
+            -->";
         return false;
         
     }