FOSSology  4.4.0
Open Source License Compliance by Open Source Software
delete-helper.php
1 <?php
2 # SPDX-FileCopyrightText: © Fossology contributors
3 
4 # SPDX-License-Identifier: GPL-2.0-only
5 
6 include_once dirname(dirname(__DIR__)) . "/lib/php/common.php";
7 include_once "DeleteResponse.php";
8 include_once "DeleteMessages.php";
11 
20 function TryToDelete($uploadpk, $user_pk, $group_pk, $uploadDao)
21 {
22  if (! $uploadDao->isEditable($uploadpk, $group_pk)) {
23  $returnMessage = DeleteMessages::NO_PERMISSION;
24  return new DeleteResponse($returnMessage);
25  }
26 
27  $rc = DeleteUpload(intval($uploadpk), $user_pk, $group_pk, $uploadDao);
28 
29  if (! empty($rc)) {
30  $returnMessage = DeleteMessages::SCHEDULING_FAILED;
31  return new DeleteResponse($returnMessage);
32  }
33 
34  /* Need to refresh the screen */
35  $URL = Traceback_uri() . "?mod=showjobs&upload=$uploadpk ";
36  $LinkText = _("View Jobs");
37  $returnMessage = DeleteMessages::SUCCESS;
38  return new DeleteResponse($returnMessage,
39  " <a href=$URL>$LinkText</a>");
40 }
41 
50 function DeleteUpload($uploadpk, $user_pk, $group_pk, $Depends = NULL)
51 {
52  /* Prepare the job: job "Delete" */
53  $jobpk = JobAddJob($user_pk, $group_pk, "Delete", $uploadpk);
54  if (empty($jobpk) || ($jobpk < 0)) {
55  $text = _("Failed to create job record");
56  return ($text);
57  }
58  /* Add job: job "Delete" has jobqueue item "delagent" */
59  $jqargs = "DELETE UPLOAD $uploadpk";
60  $jobqueuepk = JobQueueAdd($jobpk, "delagent", $jqargs, NULL, NULL);
61  if (empty($jobqueuepk)) {
62  $text = _("Failed to place delete in job queue");
63  return ($text);
64  }
65 
66  /* Tell the scheduler to check the queue. */
67  $success = fo_communicate_with_scheduler("database", $output, $error_msg);
68  if (!$success) {
69  $error_msg = _("Is the scheduler running? Your jobs have been added to job queue.");
70  $URL = Traceback_uri() . "?mod=showjobs&upload=$uploadpk ";
71  $LinkText = _("View Jobs");
72  return "$error_msg <a href=$URL>$LinkText</a>";
73  }
74  return (null);
75 } // Delete()
76 
82 function initDeletion($uploadpks)
83 {
84  if (sizeof($uploadpks) <= 0) {
85  return DisplayMessage("No uploads selected");
86  }
87 
88  $V = "";
89  $errorMessages = [];
90  $deleteResponse = null;
91  for ($i=0; $i < sizeof($uploadpks); $i++) {
92  $deleteResponse = TryToDelete(intval($uploadpks[$i]));
93 
94  if ($deleteResponse->getDeleteMessageCode() != DeleteMessages::SUCCESS) {
95  $errorMessages[] = $deleteResponse;
96  }
97  }
98 
99  if (sizeof($uploadpks) == 1) {
100  $V .= DisplayMessage($deleteResponse->getDeleteMessageString().$deleteResponse->getAdditionalMessage());
101  } else {
102  $displayMessage = "";
103 
104  if (in_array(DeleteMessages::SCHEDULING_FAILED, $errorMessages)) {
105  $displayMessage .= "<br/>Scheduling failed for " .
106  array_count_values($errorMessages)[DeleteMessages::SCHEDULING_FAILED] . " uploads<br/>";
107  }
108 
109  if (in_array(DeleteMessages::NO_PERMISSION, $errorMessages)) {
110  $displayMessage .= "No permission to delete " .
111  array_count_values($errorMessages)[DeleteMessages::NO_PERMISSION]. " uploads<br/>";
112  }
113 
114  $displayMessage .= "Deletion of " .
115  (sizeof($uploadpks)-sizeof($errorMessages)) . " projects queued";
116  $V .= DisplayMessage($displayMessage);
117  }
118  return $V;
119 }
Messages which can be generated by delagent.
Handle response from delagent.
JobQueueAdd($job_pk, $jq_type, $jq_args, $jq_runonpfile, $Depends, $host=NULL, $jq_cmd_args=NULL)
Insert a jobqueue + jobdepends records.
Definition: common-job.php:157
Traceback_uri()
Get the URI without query to this location.
Definition: common-parm.php:97
fo_communicate_with_scheduler($input, &$output, &$error_msg)
Communicate with scheduler, send commands to the scheduler, then get the output.