12 use Symfony\Component\HttpFoundation\JsonResponse;
13 use Symfony\Component\HttpFoundation\Response;
29 $this->Name =
"ajax-acknowledgement-conf";
30 $this->Title = _(
"Ajax Acknowledgement Configuration");
32 $this->OutputType =
'JSON';
34 parent::__construct();
35 $this->uploadDao = $GLOBALS[
'container']->get(
'dao.upload');
36 $this->
dbManager = $GLOBALS[
'container']->get(
'db.manager');
41 $this->
State = PLUGIN_STATE_READY;
49 $groupId = Auth::getGroupId();
51 if (!$this->uploadDao->isAccessible($uploadId, $groupId)) {
52 return new Response(
'Permission denied', Response::HTTP_FORBIDDEN,
53 array(
'Content-type' =>
'text/plain'));
59 case "updateAcknowledgement":
60 case "deleteAcknowledgement":
61 if (!$this->uploadDao->isEditable($uploadId, $groupId)) {
62 return new Response(
'Permission denied', Response::HTTP_FORBIDDEN,
63 array(
'Content-type' =>
'text/plain'));
65 if ($action ===
"updateAcknowledgement") {
70 return new Response(
'Unknown action', Response::HTTP_BAD_REQUEST,
71 array(
'Content-type' =>
'text/plain'));
81 return "WITH latest_valid_decision AS (
82 SELECT DISTINCT ON (ut.uploadtree_pk)
83 cd.clearing_decision_pk AS decision_id,
87 FROM clearing_decision cd
88 INNER JOIN $uploadTreeTable ut ON ut.uploadtree_pk = cd.uploadtree_fk
89 WHERE cd.decision_type != \$1
91 AND ut.upload_fk = \$3
92 ORDER BY ut.uploadtree_pk, cd.clearing_decision_pk DESC
103 private function cteParams($groupId, $uploadId, $ackText)
109 DecisionTypes::IRRELEVANT,
123 $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($uploadId);
127 SELECT DISTINCT lvd.uploadtree_pk, lvd.ufile_name
128 FROM latest_valid_decision lvd
129 INNER JOIN clearing_decision_event cde
130 ON cde.clearing_decision_fk = lvd.decision_id
131 INNER JOIN clearing_event ce
132 ON ce.clearing_event_pk = cde.clearing_event_fk
133 WHERE lvd.decision_type != \$4
134 AND ce.acknowledgement = \$5
135 AND (ce.removed IS NULL OR ce.removed = FALSE)
136 ORDER BY lvd.ufile_name";
139 $this->
cteParams($groupId, $uploadId, $ackText),
140 __METHOD__ . $uploadTreeTable);
144 foreach ($rows as $row) {
146 'uploadtree_pk' => (
int) $row[
'uploadtree_pk'],
147 'name' => $row[
'ufile_name'],
148 'url' => $tracebackUri .
'?mod=view-license&upload=' . $uploadId
149 .
'&item=' . $row[
'uploadtree_pk']
152 return new JsonResponse($files);
165 $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($uploadId);
169 UPDATE clearing_event SET acknowledgement = \$6
170 WHERE clearing_event_pk IN (
171 SELECT ce.clearing_event_pk
172 FROM latest_valid_decision lvd
173 INNER JOIN clearing_decision_event cde
174 ON cde.clearing_decision_fk = lvd.decision_id
175 INNER JOIN clearing_event ce
176 ON ce.clearing_event_pk = cde.clearing_event_fk
177 WHERE lvd.decision_type != \$4
178 AND ce.acknowledgement = \$5
179 AND (ce.removed IS NULL OR ce.removed = FALSE)
182 $params = $this->
cteParams($groupId, $uploadId, $oldAck);
185 $stmt = __METHOD__ . $uploadTreeTable;
187 $res = $this->
dbManager->execute($stmt, $params);
191 SELECT COUNT(DISTINCT lvd.uploadtree_pk) AS cnt
192 FROM latest_valid_decision lvd
193 INNER JOIN clearing_decision_event cde
194 ON cde.clearing_decision_fk = lvd.decision_id
195 INNER JOIN clearing_event ce
196 ON ce.clearing_event_pk = cde.clearing_event_fk
197 WHERE lvd.decision_type != \$4
198 AND ce.acknowledgement = \$5
199 AND (ce.removed IS NULL OR ce.removed = FALSE)";
200 $countRow = $this->
dbManager->getSingleRow($countSql,
201 $this->
cteParams($groupId, $uploadId, $newAck),
202 __METHOD__ .
'Count' . $uploadTreeTable);
204 return new JsonResponse(array(
'status' =>
'success',
'count' => (
int) $countRow[
'cnt']));
216 $uploadTreeTable = $this->uploadDao->getUploadtreeTableName($uploadId);
220 UPDATE clearing_event SET acknowledgement = ''
221 WHERE clearing_event_pk IN (
222 SELECT ce.clearing_event_pk
223 FROM latest_valid_decision lvd
224 INNER JOIN clearing_decision_event cde
225 ON cde.clearing_decision_fk = lvd.decision_id
226 INNER JOIN clearing_event ce
227 ON ce.clearing_event_pk = cde.clearing_event_fk
228 WHERE lvd.decision_type != \$4
229 AND ce.acknowledgement = \$5
230 AND (ce.removed IS NULL OR ce.removed = FALSE)
233 $stmt = __METHOD__ . $uploadTreeTable;
236 $this->
cteParams($groupId, $uploadId, $ackText));
239 return new JsonResponse(array(
'status' =>
'success'));
244 $NewPlugin->Initialize();
AJAX handler for acknowledgement operations on report-conf page.
doUpdateAcknowledgement($uploadId, $groupId)
Update acknowledgement text on the clearing_event records.
__construct()
base constructor. Most plugins will just use this
cteParams($groupId, $uploadId, $ackText)
Return Common params array for the query.
Output()
This function is called when user output is requested. This function is responsible for content....
doDeleteAcknowledgement($uploadId, $groupId)
Clear acknowledgement from the clearing_event records.
latestValidDecisionCte($uploadTreeTable)
doGetFiles($uploadId, $groupId)
Return files containing a given acknowledgement text for an upload.
PostInitialize()
This function is called before the plugin is used and after all plugins have been initialized....
This is the Plugin class. All plugins should:
Contains the constants and helpers for authentication of user.
Traceback_uri()
Get the URI without query to this location.
GetParm($parameterName, $parameterType)
This function will retrieve the variables and check data types.
#define PLUGIN_DB_WRITE
Plugin requires write permission on DB.
fo_dbManager * dbManager
fo_dbManager object