Asset.php
[Pman.Core] / Asset.php
index 7b0a3ea..407ffb7 100644 (file)
--- a/Asset.php
+++ b/Asset.php
@@ -36,6 +36,13 @@ class Pman_Core_Asset extends Pman {
     
     function get($s='', $opts = Array())
     {
+        if(
+            !empty($_REQUEST['_clear_cache']) &&
+            !empty($_REQUEST['_clear_module'])
+        ) {
+            $this->clearCompiledFilesCache($_REQUEST['_clear_module']);
+        }
+        
         
         $this->sessionState(0);
         
@@ -55,9 +62,6 @@ class Pman_Core_Asset extends Pman {
      
         $fn = $compile . '/'. $s .'.'. $bits[0];
         
-        
-        
-        
         if (!file_exists($fn)) {
             header('Content-Type: '. $this->types[$bits[0]]);
         
@@ -65,7 +69,6 @@ class Pman_Core_Asset extends Pman {
             exit;
         }
         
-        
         $supportsGzip = !empty($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) !== false;
 
         
@@ -119,46 +122,70 @@ class Pman_Core_Asset extends Pman {
         exit;
         
     }
+    
     function post($s='') {
         die('invalid');
     }
      
-    static function getCompileDir($type)
+    static function getCompileDir($type, $module = '', $is_mkdir = true)
     {
+        $ff = HTML_FlexyFramework::get();
+        
         $ui = posix_getpwuid(posix_geteuid());
         
-        $ff = HTML_FlexyFramework::get();
+        $compile_dir = session_save_path() . "/";
+        
+        $module = (empty($module)) ? $ff->project : $module;
         
         switch($type) {
             case 'js':
             case 'css':
-                $compile_dir = session_save_path() . '/' . implode("-", array(
+                $compile_dir .= implode("-", array(
                     $ui['name'],
-                    $ff->project,
+                    $module,
                     $ff->version,
                     "{$type}compile"
                 ));
                 break;
-            case 'template':
-                break;
+            // template config?
             default:
                 return false;
         }
         
-        exit;
-        
-        
-        
-        
-        
         if (file_exists($compile_dir)) {
             return $compile_dir;
         }
         
+        if(!$is_mkdir) {
+            return false;
+        }
+        
         if(mkdir($compile_dir, 0700, true)) {
             return $compile_dir;
         }
         
         return false;
     }
+    
+    function clearCompiledFilesCache($module)
+    {
+        require_once 'System.php';
+        $mods = $this->modulesList();
+        
+        foreach ($mods as $mod) {
+            $compile_dir = $this->getCompileDir('js', $module, false);
+        
+            if(!empty($compile_dir)) {
+                System::rm(array('-r', $compiledir));
+            }
+            $compile_dir = $this->getCompileDir('css', $module, false);
+        
+            if(!empty($compile_dir)) {
+                System::rm(array('-r', $compiledir));
+            }
+        }
+        
+        
+        $this->jok('DONE');
+    }
 }