/** * Handler method for confirming file deleting for the requested file * * @param string $handler_id Name of the used handler * @param mixed $args Array containing the variable arguments passed to the handler * @param mixed &$data Data passed to the show method * @return boolean Indicating successful request */ public function _handler_delete($handler_id, array $args, array &$data) { $this->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]); $this->_object->require_do('midgard:update'); $this->_object->require_do('midgard:attachments'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); $data['filename'] = $args[1]; $this->_file = $this->_get_file($data['filename']); if (!$this->_file) { throw new midcom_error_notfound("Attachment '{$data['filename']}' of object {$this->_object->guid} was not found."); } // Require delete privilege $this->_file->require_do('midgard:delete'); if (isset($_POST['f_cancel'])) { midcom::get('uimessages')->add(midcom::get('i18n')->get_string('midgard.admin.asgard', 'midgard.admin.asgard'), midcom::get('i18n')->get_string('delete cancelled', 'midgard.admin.asgard')); return new midcom_response_relocate("__mfa/asgard/object/attachments/{$this->_object->guid}/{$data['filename']}/"); } if (isset($_POST['f_confirm'])) { if ($this->_file->delete()) { midcom::get('uimessages')->add(midcom::get('i18n')->get_string('midgard.admin.asgard', 'midgard.admin.asgard'), sprintf(midcom::get('i18n')->get_string('file %s deleted', 'midgard.admin.asgard'), $data['filename'])); return new midcom_response_relocate("__mfa/asgard/object/attachments/{$this->_object->guid}/"); } } midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); }