From 2fa4e5d90b2244c4e82134975874209317f9360b Mon Sep 17 00:00:00 2001 From: Alan Date: Tue, 19 Dec 2023 14:53:26 +0800 Subject: [PATCH] fix #7937 - image upload filename issue --- DataObjects/Images.php | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/DataObjects/Images.php b/DataObjects/Images.php index 8c6cabf5..109dc561 100644 --- a/DataObjects/Images.php +++ b/DataObjects/Images.php @@ -201,37 +201,53 @@ class Pman_Core_DataObjects_Images extends DB_DataObject * @return - target file name */ function getStoreName() + { + return self::staticGetStoreName($this); + + } + + static function staticGetStoreName($o) { $opts = HTML_FlexyFramework::get()->Pman; - $fn = preg_replace('/[^a-z0-9_\.]+/i', '_', $this->filename); + $fn = preg_replace('/[^a-z0-9\.]+/i', '_', $o->filename); return implode( '/', array( - $opts['storedir'], '_images_', date('Y/m', strtotime($this->created)), $this->id . '-'. $fn + $opts['storedir'], '_images_', date('Y/m', strtotime($o->created)), $o->id . '-'. $fn )); - } /** * does the files exist? */ function exists() + { + return self::staticExists($this); + } + + static function staticExists($o) { clearstatcache(); - //var_dump($this->getStoreName()); - $ret = file_exists($this->getStoreName()); + $ret = file_exists(self::staticGetStoreName($o)); if (!$ret) { - return $this->canFix(); + return self::staticCanFix($o); } 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() { + function canFix() + { + return self::staticCanFix($this); + } + + static function staticCanFix($o) + { // look for the image in the folder, with matching id. // this is problematic.. - $fn = $this->getStoreName(); + $fn = self::staticGetStoreName($o); if (file_exists($fn . '-really-missing')) { return false; } @@ -243,7 +259,7 @@ class Pman_Core_DataObjects_Images extends DB_DataObject continue; } $bits = explode('-', $n); - if ($bits[0] != $this->id) { + if ($bits[0] != $o->id) { continue; } if (preg_match('/\.[0-9]+x[0-9]]+\.jpeg$/', $n)) { -- 2.39.2