Delete file on class destruction or we do it too quickly
Source image was removed when trying to use it for resizeTo
This commit is contained in:
parent
fc440ba7e7
commit
e8e996182f
@ -120,6 +120,14 @@ class ImageFile
|
|||||||
Event::handle('FillImageFileMetadata', array($this));
|
Event::handle('FillImageFileMetadata', array($this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function __destruct()
|
||||||
|
{
|
||||||
|
if (strlen($this->filepath) > 0 && (!$this->fileRecord instanceof File || $this->filepath !== $this->fileRecord->getPath())) {
|
||||||
|
common_debug(__METHOD__.': Deleting temporary file that was created as image file thumbnail source: '._ve($this->filepath));
|
||||||
|
@unlink($this->filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function fromFileObject(File $file)
|
public static function fromFileObject(File $file)
|
||||||
{
|
{
|
||||||
$imgPath = null;
|
$imgPath = null;
|
||||||
@ -152,9 +160,6 @@ class ImageFile
|
|||||||
try {
|
try {
|
||||||
$image = new ImageFile($file->getID(), $imgPath);
|
$image = new ImageFile($file->getID(), $imgPath);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
common_debug(sprintf('Exception caught when creating ImageFile for File id==%s and imgPath==', _ve($file->id), _ve($imgPath)));
|
|
||||||
throw $e;
|
|
||||||
} finally {
|
|
||||||
// Avoid deleting the original
|
// Avoid deleting the original
|
||||||
try {
|
try {
|
||||||
if (strlen($imgPath) > 0 && $imgPath !== $file->getPath()) {
|
if (strlen($imgPath) > 0 && $imgPath !== $file->getPath()) {
|
||||||
@ -166,6 +171,8 @@ class ImageFile
|
|||||||
// doesn't exist anyway, so it's safe to delete $imgPath
|
// doesn't exist anyway, so it's safe to delete $imgPath
|
||||||
@unlink($imgPath);
|
@unlink($imgPath);
|
||||||
}
|
}
|
||||||
|
common_debug(sprintf('Exception caught when creating ImageFile for File id==%s and imgPath==', _ve($file->id), _ve($imgPath)));
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
return $image;
|
return $image;
|
||||||
}
|
}
|
||||||
@ -587,7 +594,7 @@ class ImageFile
|
|||||||
list($width, $height, $x, $y, $w, $h) = $this->scaleToFit($width, $height, $crop);
|
list($width, $height, $x, $y, $w, $h) = $this->scaleToFit($width, $height, $crop);
|
||||||
|
|
||||||
$thumb = File_thumbnail::pkeyGet(array(
|
$thumb = File_thumbnail::pkeyGet(array(
|
||||||
'file_id'=> $this->fileRecord->id,
|
'file_id'=> $this->fileRecord->getID(),
|
||||||
'width' => $width,
|
'width' => $width,
|
||||||
'height' => $height,
|
'height' => $height,
|
||||||
));
|
));
|
||||||
@ -597,7 +604,7 @@ class ImageFile
|
|||||||
|
|
||||||
$filename = $this->fileRecord->filehash ?: $this->filename; // Remote files don't have $this->filehash
|
$filename = $this->fileRecord->filehash ?: $this->filename; // Remote files don't have $this->filehash
|
||||||
$extension = File::guessMimeExtension($this->mimetype);
|
$extension = File::guessMimeExtension($this->mimetype);
|
||||||
$outname = "thumb-{$this->fileRecord->id}-{$width}x{$height}-{$filename}." . $extension;
|
$outname = "thumb-{$this->fileRecord->getID()}-{$width}x{$height}-{$filename}." . $extension;
|
||||||
$outpath = File_thumbnail::path($outname);
|
$outpath = File_thumbnail::path($outname);
|
||||||
|
|
||||||
// The boundary box for our resizing
|
// The boundary box for our resizing
|
||||||
@ -615,7 +622,7 @@ class ImageFile
|
|||||||
throw new ServerException('Bad thumbnail size parameters.');
|
throw new ServerException('Bad thumbnail size parameters.');
|
||||||
}
|
}
|
||||||
|
|
||||||
common_debug(sprintf('Generating a thumbnail of File id==%u of size %ux%u', $this->fileRecord->id, $width, $height));
|
common_debug(sprintf('Generating a thumbnail of File id==%u of size %ux%u', $this->fileRecord->getID(), $width, $height));
|
||||||
|
|
||||||
// Perform resize and store into file
|
// Perform resize and store into file
|
||||||
$this->resizeTo($outpath, $box);
|
$this->resizeTo($outpath, $box);
|
||||||
|
Loading…
Reference in New Issue
Block a user