}
- $x = new File_Convert($img->getStoreName(), $img->mimetype);
+ $x = $img->toFileConvert();
if (empty($this->as_mimetype)) {
$this->as_mimetype = $img->mimetype;
}
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..
+ *
+ *
+ */
-
- function replaceImg($html)
+ 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();
foreach($imatch[1] as $i=>$key) {
$attr[$key] = $imatch[2][$i];
}
- 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
- $umatch = false;
- if(!preg_match('#/(Images|Images/Thumb/[a-z0-9]+|Images/Download)/([0-9]+)/(.*)$#', $attr['src'], $umatch)) {
+ if (!isset($attr['src']) || 0 !== strpos($attr['src'], $baseURL)) {
+ continue;
+ }
+ $html = self::replaceImgUrl($html, $baseURL, $img, $attr, 'src' );
+ }
+
+ $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;
}
- // make an image url..
- print_R($umatch);exit;
- }
+ $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 (!$img->get($id)) {
+ return $html;
+ }
+ $type = explode('/', $umatch[1]);
+ $thumbsize = -1;
+
+ if (count($type) > 2 && $type[1] == 'Thumb') {
+ $thumbsize = $type[2];
+ $provider = '/Images/Thumb';
+ } else {
+ $provider = '/'.$umatch[1];
+ }
+
+ if (!empty($attr['width']) || !empty($attr['height']) )
+ {
+ // no support for %...
+ $thumbsize =
+ (empty($attr['width']) ? '0' : $attr['width'] * 1) .
+ 'x' .
+ (empty($attr['height']) ? '0' : $attr['height'] * 1);
+ $provider = '/Images/Thumb';
+
+ }
+
+ if ($thumbsize !== -1) {
+ // change in size..
+ // need to regenerate it..
+
+ $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(
+ $attr_name. '="'. $attr_url . '"',
+ $attr_name .'="'. htmlspecialchars($img->URL($thumbsize, $provider, $baseURL)) . '"',
+ $tag
+ );
+
+ return str_replace($tag, $new_tag, $html);
+
}
}