Beispiel #1
0
 /**
  * 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);
 }