function getStoreName()
{
$opts = HTML_FlexyFramework::get()->Pman;
- $fn = preg_replace('/[^a-z0-9\.]+/i', '_', $this->filename);
+ $fn = preg_replace('/[^a-z0-9_\.]+/i', '_', $this->filename);
return implode( '/', array(
$opts['storedir'], '_images_', date('Y/m', strtotime($this->created)), $this->id . '-'. $fn
));
*/
function exists()
{
- return file_exists($this->getStoreName());
+ clearstatcache();
+ //var_dump($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');
}
$fn = $this->getStoreName();
$b = basename($fn);
+ clearstatcache();
if (file_exists($fn)) {
if (file_exists($deldir . '/'. $b)) {
$dh = opendir($d);
while (false !== ($fn = readdir($dh))) {
if (substr($fn, 0, strlen($b)) == $b) {
-
+ clearstatcache();
if (file_exists($deldir . '/'. $fn)) {
unlink($d. '/'. $fn);
continue;
}
- rename($d. '/'. $fn, $deldir .'/'. $fn);
+ if (file_exists($d. '/'. $fn)) {
+ rename($d. '/'. $fn, $deldir .'/'. $fn);
+ }
}
}
}
- $ret['shorten_name'] = $ret['filename'] = $this->shorten_name();
+ $ret['shorten_name'] = $this->shorten_name();
return $ret;
}
*
*
*/
- function URL($size , $provider = '/Images/Thumb', $baseURL=false)
+ function URL($size , $provider = '/Images/Thumb', $baseURL=false, $to_type=false)
{
if (!$this->id) {
return 'about:blank';
$fc = $this->toFileConvert();
// print_r($size);
// exit;
- $mt = $this->mimetype;
+ $mt = $to_type === false ? $this->mimetype : $to_type;
if (!preg_match('#^image/#i',$mt)) {
$mt = 'image/jpeg';
}
- $fc->convert($mt, $size);
+ $cn = $fc->convert($mt, $size);
+ $shorten_name = $this->shorten_name(basename($cn));
return $baseURL . $provider . "/$size/{$this->id}/{$shorten_name}"; // -- this breaks the rss feed #image-{$this->id}";
}
-
+ /**
+ *
+ * tries to get an image from then URL - not always has based... - also from the normal url
+ */
function getFromHashURL($url)
{
$id = false;
$id = $matches[1];
} else if (preg_match('#Images/([0-9]+)/#', $url, $matches)) {
$id = $matches[1];
+ } else if (preg_match('#images[^/]+/([0-9]+)/#i', $url, $matches)) {
+ // supports images.xxxxx.com/{number}/name...
+ $id = $matches[1];
}
-
if ($id === false || $id < 1) {
return false;
}
}
- function shorten_name()
+ function shorten_name($fn = false)
{
if(empty($this->filename)) {
return;
}
+ $fn = $fn === false ? $this->filename : $fn;
- $filename = explode('.', $this->filename);
+ $filename = explode('.', $fn);
$ext = array_pop($filename);
$name = preg_replace("/[^A-Z0-9.]+/i", '-', implode('-', $filename)) ;
*/
function toFileConvert()
{
+ $fn = $this->getStoreName();
+
require_once 'File/Convert.php';
$fc = new File_Convert($this->getStoreName(), $this->mimetype);
return $fc;