Non significant spaces suck.
[platal.git] / classes / plupload.php
index 743a090..bab7286 100644 (file)
@@ -53,9 +53,9 @@ class PlUpload
                 trigger_error('can\'t create upload directory: ' . $filename, E_USER_ERROR);
             }
         }
-        $filename .= $this->forlife . '-' . $this->category;
+        $filename .= $this->forlife . '--' . $this->category;
         if ($file_id) {
-            $filename .= '-' . $file_id;
+            $filename .= '--' . $file_id;
         }
         return $filename;
     }
@@ -74,7 +74,7 @@ class PlUpload
         } else if (!move_uploaded_file($file['tmp_name'], $this->filename)) {
             return false;
         }
-        $this->checkContentType(); 
+        $this->checkContentType();
         return true;
     }
 
@@ -116,7 +116,7 @@ class PlUpload
     public function rm()
     {
         @unlink($this->filename);
-        clearstatcache();
+        @clearstatcache();
     }
 
     public function rename($fn)
@@ -139,22 +139,46 @@ class PlUpload
         return file_exists($this->filename);
     }
 
-    static public function listFiles($forlife = '*', $category = '*', $basename = false)
+    static public function listRawFiles($forlife = '*', $category = '*', $uniq = false, $basename = false)
     {
         global $globals;
         $filename = $globals->spoolroot . '/spool/uploads/temp/';
-        $filename .= $forlife . '-' . $category;
+        $filename .= $forlife . '--' . $category;
+        if (!$uniq) {
+            $filename .= '--*';
+        }
         $files = glob($filename);
         if ($basename) {
-            array_walk($files, 'basename');
+            $files = array_map('basename', $files);
+        }
+        return $files;
+    }
+
+    static public function listFilenames($forlife = '*', $category = '*')
+    {
+        $files = PlUpload::listRawFiles($forlife, $category, false, true);
+        foreach ($files as &$name) {
+            list($forlife, $cat, $fn) = explode('--', $name, 3);
+            $name = $fn;
         }
         return $files;
     }
 
-    static public function clear($user = '*', $category = '*')
+    static public function &listFiles($forlife = '*', $category = '*', $uniq = false)
+    {
+        $res   = array();
+        $files = PlUpload::listRawFiles($forlife, $category, $uniq, true);
+        foreach ($files as $name) {
+            list($forlife, $cat, $fn) = explode('--', $name, 3);
+            $res[$fn] = new PlUpload($forlife, $cat, $fn);
+        }
+        return $res;
+    }
+
+    static public function clear($user = '*', $category = '*', $uniq = false)
     {
-        $files = PlUpload::listFiles($user, $category, false);
-        array_walk($files, 'unlink');
+        $files = PlUpload::listRawFiles($user, $category, $uniq, false);
+        array_map('unlink', $files);
     }
 
     public function contentType()
@@ -175,7 +199,14 @@ class PlUpload
     {
         static $map;
         if (!isset($map)) {
-            $map = array (1 => 'gif', 2 => 'jpeg', 3 => 'png');
+            $tmpmap = array (IMG_GIF => 'gif', IMG_JPG => 'jpeg', IMG_PNG => 'png', IMG_WBMP => 'bmp', IMG_XPM => 'xpm');
+            $map = array();
+            $supported = imagetypes();
+            foreach ($tmpmap as $type=>$mime) {
+                if ($supported & $type) {
+                    $map[$type] = $mime;
+                }
+            }
         }
         $array = getimagesize($this->filename);
         $array[2] = @$map[$array[2]];