From 4ddab26ac732f349d4b5b3363df95d3c0e7ebe5f Mon Sep 17 00:00:00 2001 From: joebordes Date: Sun, 31 Oct 2021 13:00:25 +0100 Subject: [PATCH] fix(Workflow) show permission message when trying to delete a workflow user does not have access to --- .../com_vtiger_workflow/VTWorkflowManager.inc | 17 +++++++++++------ modules/com_vtiger_workflow/deleteworkflow.php | 8 ++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/com_vtiger_workflow/VTWorkflowManager.inc b/modules/com_vtiger_workflow/VTWorkflowManager.inc index a4d25f367d..c2ccb2c501 100644 --- a/modules/com_vtiger_workflow/VTWorkflowManager.inc +++ b/modules/com_vtiger_workflow/VTWorkflowManager.inc @@ -366,12 +366,17 @@ class VTWorkflowManager { public function delete($id) { global $current_user; $dwf = is_admin($current_user) ? '!=1' : '=2'; - $this->adb->pquery( - 'DELETE FROM com_vtiger_workflowtasks WHERE workflow_id IN - (SELECT workflow_id FROM com_vtiger_workflows WHERE workflow_id=? AND (defaultworkflow IS NULL OR defaultworkflow'.$dwf.'))', - array($id) - ); - $this->adb->pquery('DELETE FROM com_vtiger_workflows WHERE workflow_id=? AND (defaultworkflow IS NULL OR defaultworkflow'.$dwf.')', array($id)); + $count = $this->adb->pquery('SELECT count(*) FROM com_vtiger_workflows WHERE workflow_id=? AND (defaultworkflow IS NULL OR defaultworkflow'.$dwf.')', array($id)); + $count = (int)$this->adb->query_result($count, 0, 0); + if ($count) { + $this->adb->pquery( + 'DELETE FROM com_vtiger_workflowtasks WHERE workflow_id IN + (SELECT workflow_id FROM com_vtiger_workflows WHERE workflow_id=? AND (defaultworkflow IS NULL OR defaultworkflow'.$dwf.'))', + array($id) + ); + $this->adb->pquery('DELETE FROM com_vtiger_workflows WHERE workflow_id=? AND (defaultworkflow IS NULL OR defaultworkflow'.$dwf.')', array($id)); + } + return $count; } public function newWorkflow($moduleName) { diff --git a/modules/com_vtiger_workflow/deleteworkflow.php b/modules/com_vtiger_workflow/deleteworkflow.php index e0dfd96b93..19c7e78b54 100644 --- a/modules/com_vtiger_workflow/deleteworkflow.php +++ b/modules/com_vtiger_workflow/deleteworkflow.php @@ -24,8 +24,12 @@ function vtDeleteWorkflow($adb, $request) { } $wm = new VTWorkflowManager($adb); - $wm->delete($request['workflow_id']); - + $affected = $wm->delete($request['workflow_id']); + if ($affected==0) { + $errorUrl = $module->errorPageUrl(getTranslatedString('LBL_PERMISSION', $module->name)); + $util->redirectTo($errorUrl, getTranslatedString('LBL_PERMISSION', $module->name)); + return; + } if (isset($request['return_url'])) { $returnUrl=$request['return_url']; } else {