From c65ad9cedbf05a7a1c9fc4f5a1146fe5b8fa1dc3 Mon Sep 17 00:00:00 2001 From: Alan Date: Mon, 27 Mar 2023 12:52:23 +0800 Subject: [PATCH] Fix #7608 - fix image names --- DataObjects/Images.php | 42 ++++++++++++++++++++++++++++++++++-------- Images.php | 17 ++++++++++------- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/DataObjects/Images.php b/DataObjects/Images.php index 907b890d..5783a2d2 100644 --- a/DataObjects/Images.php +++ b/DataObjects/Images.php @@ -200,13 +200,10 @@ class Pman_Core_DataObjects_Images extends DB_DataObject * * @return - target file name */ - function getStoreName($alt = false) + function getStoreName() { $opts = HTML_FlexyFramework::get()->Pman; $fn = preg_replace('/[^a-z0-9_\.]+/i', '_', $this->filename); - if ($alt) { - $fn = preg_replace('/[^a-z0-9\.]+/i', '_', $this->filename); - } return implode( '/', array( $opts['storedir'], '_images_', date('Y/m', strtotime($this->created)), $this->id . '-'. $fn )); @@ -220,7 +217,39 @@ 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; + } + + 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 } @@ -672,9 +701,6 @@ class Pman_Core_DataObjects_Images extends DB_DataObject function toFileConvert() { $fn = $this->getStoreName(); - if (!file_exists($fn)) { - $fn = $this->getStoreName(true); - } require_once 'File/Convert.php'; $fc = new File_Convert($this->getStoreName(), $this->mimetype); diff --git a/Images.php b/Images.php index 92c99e91..fc1294d1 100644 --- a/Images.php +++ b/Images.php @@ -218,8 +218,9 @@ class Pman_Core_Images extends Pman } function imgErr($reason,$path) { - header('Location: ' . $this->rootURL . '/Pman/templates/images/file-broken.png?reason=' . - urlencode($reason) .'&path='.urlencode($path)); + header('Location: ' . $this->rootURL . '/Pman/templates/images/file-broken.png?reason=' . urlencode($reason) ); + header('X-Error: ' . $reason . ':' . $path); + echo $reason . ':' . $path; exit; } @@ -285,11 +286,9 @@ class Pman_Core_Images extends Pman { $this->sessionState(0); // turn off session... - locking... require_once 'File/Convert.php'; - if (!file_exists($img->getStoreName()) && !file_exists($img->getStoreName(true))) { -// print_r($img);exit; - header('Location: ' . $this->rootURL . '/Pman/templates/images/file-broken.png?reason=' . - urlencode("Original file was missing : " . $img->getStoreName())); - + if (!$img->exists()) { + $this->imgErr("serve = missing-image", $img->getStoreName()); + } // print_r($img);exit; $x = $img->toFileConvert(); @@ -664,4 +663,8 @@ class Pman_Core_Images extends Pman } } + + + + } -- 2.39.2