comment
[Pman.Core] / DataObjects / Images.php
index 537a68f..31fd50b 100644 (file)
@@ -217,7 +217,44 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
     {
         clearstatcache();
         //var_dump($this->getStoreName());
-        return file_exists($this->getStoreName());
+        $ret =  file_exists($this->getStoreName());
+        if (!$ret) {
+            return $this->canFix();
+        }
+        return $ret;
+    }
+    /**
+     * the getStorename code got changed, and some old files may not end up with the correct name anymore.
+     * this tries to fix it.
+     *
+     */
+    function canFix() {
+        // look for the image in the folder, with matching id.
+        // this is problematic..
+        $fn = $this->getStoreName();
+        if (file_exists($fn . '-really-missing')) {
+            return false;
+        }
+        if (!file_exists(dirname($fn))) {
+            return false;
+        }
+        foreach( scandir(dirname($fn)) as $n) {
+            if (empty($n) || $n[0] == '.') {
+                continue;
+            }
+            $bits = explode('-', $n);
+            if ($bits[0] != $this->id) {
+                continue;
+            }
+            if (preg_match('/\.[0-9]+x[0-9]]+\.jpeg$/', $n)) {
+                continue;
+            }
+            copy(dirname($fn). '/'.  $n, $fn);
+            clearstatcache();
+            return true;
+        }
+        // fixme - flag it as bad
+        touch($fn . '-really-missing');
     }
     
     
@@ -668,6 +705,8 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
      */
     function toFileConvert()
     {
+        $fn = $this->getStoreName();
+        
         require_once 'File/Convert.php';
         $fc = new File_Convert($this->getStoreName(), $this->mimetype);
         return $fc;