From 20eb1cf7378ec801d5520eba9de5952075918f6c Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Mon, 26 Jul 2021 10:04:35 +1200 Subject: [PATCH 1/1] Activity tasks - don't add invalid tasks Instead of 'handling the task code building invalid tasks - #20945' - this proposes to only attempt to add a page if it is for a valid task. This keeps the grouchiness in the generic controller to warn us of other mistakes. This code is pretty fugly! However, it really is just called internally within this class. --- CRM/Activity/StateMachine/Search.php | 14 ++++---------- CRM/Activity/Task.php | 9 ++++----- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/CRM/Activity/StateMachine/Search.php b/CRM/Activity/StateMachine/Search.php index 56c408af12..28a3c8815b 100644 --- a/CRM/Activity/StateMachine/Search.php +++ b/CRM/Activity/StateMachine/Search.php @@ -35,16 +35,10 @@ class CRM_Activity_StateMachine_Search extends CRM_Core_StateMachine { $this->_pages = []; $this->_pages['CRM_Activity_Form_Search'] = NULL; - list($task, $result) = $this->taskName($controller, 'Search'); + list($task) = $this->taskName($controller, 'Search'); $this->_task = $task; - - if (is_array($task)) { - foreach ($task as $t) { - $this->_pages[$t] = NULL; - } - } - else { - $this->_pages[$task] = NULL; + foreach ($task as $t) { + $this->_pages[$t] = NULL; } $this->addSequentialPages($this->_pages, $action); @@ -63,7 +57,7 @@ class CRM_Activity_StateMachine_Search extends CRM_Core_StateMachine { * @return array * the name of the form that will handle the task */ - public function taskName($controller, $formName = 'Search') { + protected function taskName($controller, $formName = 'Search') { // total hack, check POST vars and then session to determine stuff $value = $_POST['task'] ?? NULL; if (!isset($value)) { diff --git a/CRM/Activity/Task.php b/CRM/Activity/Task.php index 94c1d62779..a2305a2c55 100644 --- a/CRM/Activity/Task.php +++ b/CRM/Activity/Task.php @@ -156,11 +156,10 @@ class CRM_Activity_Task extends CRM_Core_Task { // make the print task by default $value = self::TASK_PRINT; } - - return [ - self::$_tasks[$value]['class'], - self::$_tasks[$value]['result'], - ]; + if (isset(self::$_tasks[$value])) { + return [[self::$_tasks[$value]['class']], self::$_tasks[$value]['result']]; + } + return [[], NULL]; } } -- 2.25.1