Clear out stored files and reltaed thumbnails when a File is deleted.

This commit is contained in:
Mikael Nordfeldth 2014-05-12 15:16:41 +02:00
parent ca67e848eb
commit 2755e23707
2 changed files with 28 additions and 0 deletions

View File

@ -924,6 +924,9 @@ EndRssEntryArray: at the end of copying a notice to an array
NoticeDeleteRelated: at the beginning of deleting related fields to a notice NoticeDeleteRelated: at the beginning of deleting related fields to a notice
- $notice: notice being deleted - $notice: notice being deleted
FileDeleteRelated: at the beginning of deleting related fields to a File
- $notice: File being deleted
StartShowHeadTitle: when beginning to show the <title> element StartShowHeadTitle: when beginning to show the <title> element
- $action: action being shown - $action: action being shown

View File

@ -509,4 +509,29 @@ class File extends Managed_DataObject
{ {
return !empty($this->filename); return !empty($this->filename);
} }
public function delete($useWhere=false)
{
// Delete the file, if it exists locally
if (!empty($this->filename) && file_exists(self::path($this->filename))) {
$deleted = @unlink(self::path($this->filename));
if (!$deleted) {
common_log(LOG_ERR, sprintf('Could not unlink existing file: "%s"', self::path($this->filename)));
}
}
// Clear out related things in the database and filesystem, such as thumbnails
if (Event::handle('FileDeleteRelated', array($this))) {
$thumbs = new File_thumbnail();
$thumbs->file_id = $this->id;
if ($thumbs->find()) {
while ($thumbs->fetch()) {
$thumbs->delete();
}
}
}
// And finally remove the entry from the database
return parent::delete($useWhere);
}
} }