diff --git a/src/delagent/ui/admin-upload-delete.php b/src/delagent/ui/admin-upload-delete.php index c7009013..433c11a6 100644 --- a/src/delagent/ui/admin-upload-delete.php +++ b/src/delagent/ui/admin-upload-delete.php @@ -1,171 +1,186 @@ Name = "admin_upload_delete"; $this->Title = TITLE_admin_upload_delete; $this->MenuList = "Organize::Uploads::Delete Uploaded File"; $this->DBaccess = PLUGIN_DB_WRITE; parent::__construct(); } + /** + * \brief Given a folder_pk, try to add a job after checking permissions. + * \param $uploadpk - the upload(upload_id) you want to delete + * + * \return string with the message. + */ + function TryToDelete($uploadpk) { + if (! GetUploadPerm($uploadpk) >= Auth::PERM_WRITE) { + $text=_("You dont have permissions to delete the upload"); + return DisplayMessage($text); + } + + $rc = $this->Delete($uploadpk); + + if (! empty($rc)) { + $text=_("Deletion Scheduling failed: "); + return DisplayMessage($text.$rc); + } + + /* Need to refresh the screen */ + $URL = Traceback_uri() . "?mod=showjobs&upload=$uploadpk "; + $LinkText = _("View Jobs"); + $text=_("Deletion added to job queue."); + $msg = "$text $LinkText"; + return displayMessage($msg); + } + /** * \brief Given a folder_pk, add a job. * \param $uploadpk - the upload(upload_id) you want to delete * \param $Depends - Depends is not used for now * * \return NULL on success, string on failure. */ function Delete($uploadpk, $Depends = NULL) { /* Prepare the job: job "Delete" */ $user_pk = Auth::getUserId(); $group_pk = Auth::getGroupId(); $jobpk = JobAddJob($user_pk, $group_pk, "Delete", $uploadpk); if (empty($jobpk) || ($jobpk < 0)) { $text = _("Failed to create job record"); return ($text); } /* Add job: job "Delete" has jobqueue item "delagent" */ $jqargs = "DELETE UPLOAD $uploadpk"; $jobqueuepk = JobQueueAdd($jobpk, "delagent", $jqargs, NULL, NULL); if (empty($jobqueuepk)) { $text = _("Failed to place delete in job queue"); return ($text); } /* Tell the scheduler to check the queue. */ $success = fo_communicate_with_scheduler("database", $output, $error_msg); if (!$success) { $error_msg = _("Is the scheduler running? Your jobs have been added to job queue."); $URL = Traceback_uri() . "?mod=showjobs&upload=$uploadpk "; $LinkText = _("View Jobs"); $msg = "$error_msg $LinkText"; return $msg; } return (NULL); } // Delete() /** * \brief Generate the text for this plugin. */ public function Output() { $V = ""; /* If this is a POST, then process the request. */ $uploadpk = GetParm('upload', PARM_INTEGER); if (!empty($uploadpk)) { - $rc = $this->Delete($uploadpk); - if (empty($rc)) { - /* Need to refresh the screen */ - $URL = Traceback_uri() . "?mod=showjobs&upload=$uploadpk "; - $LinkText = _("View Jobs"); - $text=_("Deletion added to job queue."); - $msg = "$text $LinkText"; - $V.= displayMessage($msg); - } - else { - $text=_("Deletion Scheduling failed: "); - $V.= DisplayMessage($text.$rc); - } + $V.= $this->TryToDelete($uploadpk); } /* Create the AJAX (Active HTTP) javascript for doing the reply and showing the response. */ $V.= ActiveHTTPscript("Uploads"); $V.= "\n"; /* Build HTML form */ $V.= "
\n"; return $V; } } $NewPlugin = new admin_upload_delete;