DataObjects/core.sql
[Pman.Core] / Images.php
index 6719144..9554939 100644 (file)
@@ -206,13 +206,33 @@ class Pman_Core_Images extends Pman
             die("invalid scale - ".$this->size);
         }
     }
+    /**
+     * replace image urls
+     *
+     * The idea of this code was to replace urls for images when you have an admin
+     * and a distribution page. with different urls.
+     *
+     * it may be usefull later if things like embedded images in emails. but
+     * I think it's proably better not to use this.
+     *
+     * The key problem being how to determine if we are replacing 'our' images or some external one..
+     * 
+     *
+     */
     
     
-    
-    static function replaceImg($html, $baseURL)
+    static function replaceImageURLS($html)
     {
-        preg_match_all('/<img[^>]+>/i',$html, $result); 
-
+        
+        $ff = HTML_FlexyFramework::get();
+        if (!isset($ff->Pman_Images['public_baseURL'])) {
+            return $html;
+        }
+        //var_dump($ff->Pman_Images['public_baseURL']);
+        $baseURL = $ff->Pman_Images['public_baseURL'];
+        
+        preg_match_all('/<img\s+[^>]+>/i',$html, $result); 
+        //print_r($result);
         $matches = array_unique($result[0]);
         foreach($matches as $img) {
             $imatch = array();
@@ -223,73 +243,94 @@ class Pman_Core_Images extends Pman
             foreach($imatch[1] as $i=>$key) {
                 $attr[$key] = $imatch[2][$i];
             }
-            if (!isset($attr['src'])) {
+            if (!isset($attr['src']) || 0 !== strpos($attr['src'], $baseURL)) {
                 continue;
             }
-            $html = self::replaceImgUrl($html, $baseURL, $img, $attr, $attr['src'] );
+            $html = self::replaceImgUrl($html, $baseURL, $img, $attr,  'src' );
         }
-    }
-    static function replaceImgUrl($html, $baseURL, $tag, $attr, $attr_url) 
+        
+        $result = array();
+        preg_match_all('/<a\s+[^>]+>/i',$html, $result); 
+
+        $matches = array_unique($result[0]);
+        foreach($matches as $img) {
+            $imatch = array();
+            preg_match_all('/(href)="([^"]*)"/i',$img, $imatch);
+            // build a keymap
+            $attr =  array();
             
+            foreach($imatch[1] as $i=>$key) {
+                $attr[$key] = $imatch[2][$i];
+            }
+            if (!isset($attr['href']) || 0 !== strpos($attr['href'], $baseURL)) { 
+                continue;
+            }
+            $html = self::replaceImgUrl($html, $baseURL, $img, $attr, 'href' );
+        }
+        
+        return $html;
+    }
+    static function replaceImgUrl($html, $baseURL, $tag, $attr, $attr_name) 
+    {
         
         //print_R($attr);
         // see if it's an image url..
         // Images/{ID}/fullname.xxxx
         // Images/Thumb/200/{ID}/fullname.xxxx
         // Images/Download/{ID}/fullname.xxxx
+        
+        $attr_url = $attr[$attr_name];
         $umatch  = false;
         if(!preg_match('#/(Images|Images/Thumb/[a-z0-9]+|Images/Download)/([0-9]+)/(.*)$#', $attr_url, $umatch))  {
             continue;
         }
         $id = $umatch[2];
         $img = DB_DataObject::factory('Images');
-        if (!$imgObj->get($id)) {
+        if (!$img->get($id)) {
             return $html;
         }
         $type = explode('/', $umatch[1]);
         $thumbsize = -1;
-        $new_thumbsize = -1;
-        
+         
         if (count($type) > 2 && $type[1] == 'Thumb') {
             $thumbsize = $type[2];
-            $provider = 'Images/Thumb';
+            $provider = '/Images/Thumb';
         } else {
-            $provider = $umatch[1];
+            $provider = '/'.$umatch[1];
         }
         
         if (!empty($attr['width']) || !empty($attr['height']) )
         {
             // no support for %...
-            $new_thumbsize =
+            $thumbsize =
                 (empty($attr['width']) ? '0' : $attr['width'] * 1) .
                 'x' .
                 (empty($attr['height']) ? '0' : $attr['height'] * 1);
-            
+             $provider = '/Images/Thumb';
             
         }
-        if ($new_thumbsize != $thumbsize) {
+        
+        if ($thumbsize !== -1) {
             // change in size..
             // need to regenerate it..
-            if (!$new_thumbsize) {
-                $type = array('Image');
-            } else {
-                
-                $type = array('Image', 'Thumb', $new_thumbsize);
-                
-                $fc = $img->toFileConvert();
-                // make sure it's available..
-                $fc->convert($img->mimetype, $new_thumbsize);
+            
+            $type = array('Images', 'Thumb', $thumbsize);
                 
-            }
+            $fc = $img->toFileConvert();
+            // make sure it's available..
+            $fc->convert($img->mimetype, $thumbsize);
             
+            
+        } else {
+            $provider = $provider == 'Images/Thumb' ? 'Images' : $provider; 
         }
         
         
         // finally replace the original TAG with the new version..
         
         $new_tag = str_replace(
-            'src="'. $attr['src'] . '"',
-            'src="'. htmlspecialchars($imgObj->URL($new_thumbsize , $provider, $baseURL)) . '"',
+            $attr_name. '="'. $attr_url . '"',
+            $attr_name .'="'. htmlspecialchars($img->URL($thumbsize, $provider, $baseURL)) . '"',
             $tag
         );