forked from GNUsocial/gnu-social
Clear out stored files and reltaed thumbnails when a File is deleted.
This commit is contained in:
parent
ca67e848eb
commit
2755e23707
@ -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
|
||||
- $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
|
||||
- $action: action being shown
|
||||
|
||||
|
@ -509,4 +509,29 @@ class File extends Managed_DataObject
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user