Properly cleanup temporary saved attachment files

This commit is contained in:
Thomas Bruederli 2012-08-01 16:26:49 +02:00
parent 8062cdb94a
commit c8b6f57d66
2 changed files with 20 additions and 2 deletions

View file

@ -1747,7 +1747,7 @@ class calendar extends rcube_plugin
$eventid = 'cal:'.$event['id']; $eventid = 'cal:'.$event['id'];
if (!empty($_SESSION['event_session']) && ($eventid = $_SESSION['event_session']['id'])) { if (!empty($_SESSION['event_session']) && ($eventid = $_SESSION['event_session']['id'])) {
$this->rc->plugins->exec_hook('attachments_cleanup', array('group' => $eventid)); $this->rc->plugins->exec_hook('attachments_cleanup', array('group' => $eventid));
unset($_SESSION['event_session']); $this->rc->session->remove('event_session');
} }
} }

View file

@ -162,13 +162,16 @@ class tasklist extends rcube_plugin
if ($success = $this->driver->create_task($rec)) { if ($success = $this->driver->create_task($rec)) {
$refresh = $this->driver->get_task($rec); $refresh = $this->driver->get_task($rec);
if ($temp_id) $refresh['tempid'] = $temp_id; if ($temp_id) $refresh['tempid'] = $temp_id;
$this->cleanup_task($rec);
} }
break; break;
case 'edit': case 'edit':
$rec = $this->prepare_task($rec); $rec = $this->prepare_task($rec);
if ($success = $this->driver->edit_task($rec)) if ($success = $this->driver->edit_task($rec)) {
$refresh = $this->driver->get_task($rec); $refresh = $this->driver->get_task($rec);
$this->cleanup_task($rec);
}
break; break;
case 'delete': case 'delete':
@ -319,6 +322,21 @@ class tasklist extends rcube_plugin
return $rec; return $rec;
} }
/**
* Releases some resources after successful save
*/
private function cleanup_task(&$rec)
{
// remove temp. attachment files
$taskid = $rec['id'];
if (!empty($_SESSION['tasklist_session']) && ($taskid = $_SESSION['tasklist_session']['id'])) {
$this->rc->plugins->exec_hook('attachments_cleanup', array('group' => $taskid));
$this->rc->session->remove('tasklist_session');
}
}
/** /**
* *
*/ */