diff --git a/typo3/sysext/extbase/Classes/Scheduler/FieldProvider.php b/typo3/sysext/extbase/Classes/Scheduler/FieldProvider.php index 9f83cebb0c54f168f1d64af5358e9e53ab3b3e60..f3a639f4a6382b6a5f3c19bbd28b012428d3e102 100644 --- a/typo3/sysext/extbase/Classes/Scheduler/FieldProvider.php +++ b/typo3/sysext/extbase/Classes/Scheduler/FieldProvider.php @@ -15,6 +15,8 @@ namespace TYPO3\CMS\Extbase\Scheduler; */ use TYPO3\CMS\Extbase\Utility\TypeHandlingUtility; +use TYPO3\CMS\Scheduler\Controller\SchedulerModuleController; +use TYPO3\CMS\Scheduler\Task\AbstractTask; /** * Field provider for Extbase CommandController Scheduler task @@ -59,12 +61,12 @@ class FieldProvider implements \TYPO3\CMS\Scheduler\AdditionalFieldProviderInter * Render additional information fields within the scheduler backend. * * @param array &$taskInfo Array information of task to return - * @param mixed $task \TYPO3\CMS\Scheduler\Task\AbstractTask or \TYPO3\CMS\Scheduler\Execution instance - * @param \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule Reference to the calling object (BE module of the Scheduler) + * @param AbstractTask|null $task When editing, reference to the current task. NULL when adding. + * @param SchedulerModuleController $schedulerModule Reference to the calling object (BE module of the Scheduler) * @return array Additional fields * @see \TYPO3\CMS\Scheduler\AdditionalFieldProvider#getAdditionalFields($taskInfo, $task, $schedulerModule) */ - public function getAdditionalFields(array &$taskInfo, $task, \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule) + public function getAdditionalFields(array &$taskInfo, $task, SchedulerModuleController $schedulerModule) { $this->task = $task; if ($this->task !== null) { @@ -86,10 +88,10 @@ class FieldProvider implements \TYPO3\CMS\Scheduler\AdditionalFieldProviderInter * Validates additional selected fields * * @param array &$submittedData - * @param \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule + * @param SchedulerModuleController $schedulerModule * @return bool */ - public function validateAdditionalFields(array &$submittedData, \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule) + public function validateAdditionalFields(array &$submittedData, SchedulerModuleController $schedulerModule) { return true; } @@ -98,10 +100,10 @@ class FieldProvider implements \TYPO3\CMS\Scheduler\AdditionalFieldProviderInter * Saves additional field values * * @param array $submittedData - * @param \TYPO3\CMS\Scheduler\Task\AbstractTask $task + * @param AbstractTask $task * @return bool */ - public function saveAdditionalFields(array $submittedData, \TYPO3\CMS\Scheduler\Task\AbstractTask $task) + public function saveAdditionalFields(array $submittedData, AbstractTask $task) { $task->setCommandIdentifier($submittedData['task_extbase']['action']); $task->setArguments((array)$submittedData['task_extbase']['arguments']); diff --git a/typo3/sysext/linkvalidator/Classes/Task/ValidatorTaskAdditionalFieldProvider.php b/typo3/sysext/linkvalidator/Classes/Task/ValidatorTaskAdditionalFieldProvider.php index 929bf62c03ef13f5d81d58bad58a8511444b4913..66ac3abe097a184a02821050b37b4368779ca1a1 100644 --- a/typo3/sysext/linkvalidator/Classes/Task/ValidatorTaskAdditionalFieldProvider.php +++ b/typo3/sysext/linkvalidator/Classes/Task/ValidatorTaskAdditionalFieldProvider.php @@ -38,7 +38,7 @@ class ValidatorTaskAdditionalFieldProvider implements AdditionalFieldProviderInt * Render additional information fields within the scheduler backend. * * @param array $taskInfo Array information of task to return - * @param ValidatorTask $task Task object + * @param AbstractTask|null $task The task object being edited. Null when adding a task! * @param SchedulerModuleController $schedulerModule Reference to the BE module of the Scheduler * @return array Additional fields * @see AdditionalFieldProviderInterface->getAdditionalFields($taskInfo, $task, $schedulerModule) diff --git a/typo3/sysext/reports/Classes/Task/SystemStatusUpdateTaskNotificationEmailField.php b/typo3/sysext/reports/Classes/Task/SystemStatusUpdateTaskNotificationEmailField.php index f7ed23bc5a6c4c77118d2953b49abde663408d92..8ec7d86f33240612c1055353ad3e0efd46cc2ce4 100644 --- a/typo3/sysext/reports/Classes/Task/SystemStatusUpdateTaskNotificationEmailField.php +++ b/typo3/sysext/reports/Classes/Task/SystemStatusUpdateTaskNotificationEmailField.php @@ -13,6 +13,7 @@ namespace TYPO3\CMS\Reports\Task; * * The TYPO3 project - inspiring people to share! */ + use TYPO3\CMS\Core\Localization\LanguageService; use TYPO3\CMS\Core\Messaging\FlashMessage; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -44,8 +45,8 @@ class SystemStatusUpdateTaskNotificationEmailField implements AdditionalFieldPro * Gets additional fields to render in the form to add/edit a task * * @param array $taskInfo Values of the fields from the add/edit task form - * @param \TYPO3\CMS\Scheduler\Task\AbstractTask $task The task object being edited. Null when adding a task! - * @param \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule Reference to the scheduler backend module + * @param AbstractTask|null $task When editing, reference to the current task. NULL when adding. + * @param SchedulerModuleController $schedulerModule Reference to the scheduler backend module * @return array A two dimensional array, array('Identifier' => array('fieldId' => array('code' => '', 'label' => '', 'cshKey' => '', 'cshLabel' => '')) */ public function getAdditionalFields(array &$taskInfo, $task, SchedulerModuleController $schedulerModule) @@ -86,7 +87,7 @@ class SystemStatusUpdateTaskNotificationEmailField implements AdditionalFieldPro * Validates the additional fields' values * * @param array $submittedData An array containing the data submitted by the add/edit task form - * @param \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $schedulerModule Reference to the scheduler backend module + * @param SchedulerModuleController $schedulerModule Reference to the scheduler backend module * @return bool TRUE if validation was ok (or selected class is not relevant), FALSE otherwise */ public function validateAdditionalFields(array &$submittedData, SchedulerModuleController $schedulerModule) @@ -110,7 +111,7 @@ class SystemStatusUpdateTaskNotificationEmailField implements AdditionalFieldPro * Takes care of saving the additional fields' values in the task's object * * @param array $submittedData An array containing the data submitted by the add/edit task form - * @param \TYPO3\CMS\Scheduler\Task\AbstractTask $task Reference to the scheduler backend module + * @param AbstractTask $task Reference to the scheduler backend module */ public function saveAdditionalFields(array $submittedData, AbstractTask $task) { diff --git a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php index 99dcf6061a1fbe6f7ff14e8a236c4fe2daff9080..a008f3e01466e9c06f68c43277aa46c695625786 100644 --- a/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php +++ b/typo3/sysext/scheduler/Classes/Controller/SchedulerModuleController.php @@ -592,12 +592,11 @@ class SchedulerModuleController } } } - } else { - if (!empty($registeredClasses[$taskInfo['class']]['provider'])) { - $providerObject = GeneralUtility::makeInstance($registeredClasses[$taskInfo['class']]['provider']); - if ($providerObject instanceof AdditionalFieldProviderInterface) { - $allAdditionalFields[$taskInfo['class']] = $providerObject->getAdditionalFields($taskInfo, $task, $this); - } + } elseif ($task !== null && !empty($registeredClasses[$taskInfo['class']]['provider'])) { + // only try to fetch additionalFields if the task is valid + $providerObject = GeneralUtility::makeInstance($registeredClasses[$taskInfo['class']]['provider']); + if ($providerObject instanceof AdditionalFieldProviderInterface) { + $allAdditionalFields[$taskInfo['class']] = $providerObject->getAdditionalFields($taskInfo, $task, $this); } } diff --git a/typo3/sysext/scheduler/Classes/Task/ExecuteSchedulableCommandAdditionalFieldProvider.php b/typo3/sysext/scheduler/Classes/Task/ExecuteSchedulableCommandAdditionalFieldProvider.php index e2974504f768056cf4ae824ab71bae5299dff83f..0f63ed9269a35617efa50309465616c3fb359bb3 100644 --- a/typo3/sysext/scheduler/Classes/Task/ExecuteSchedulableCommandAdditionalFieldProvider.php +++ b/typo3/sysext/scheduler/Classes/Task/ExecuteSchedulableCommandAdditionalFieldProvider.php @@ -87,7 +87,7 @@ class ExecuteSchedulableCommandAdditionalFieldProvider implements AdditionalFiel * Render additional information fields within the scheduler backend. * * @param array &$taskInfo Array information of task to return - * @param mixed $task \TYPO3\CMS\Scheduler\Task\AbstractTask or \TYPO3\CMS\Scheduler\Execution instance + * @param AbstractTask|null $task When editing, reference to the current task. NULL when adding. * @param SchedulerModuleController $schedulerModule Reference to the calling object (BE module of the Scheduler) * @return array Additional fields * @see \TYPO3\CMS\Scheduler\AdditionalFieldProvider#getAdditionalFields($taskInfo, $task, $schedulerModule) diff --git a/typo3/sysext/scheduler/Classes/Task/FileStorageExtractionAdditionalFieldProvider.php b/typo3/sysext/scheduler/Classes/Task/FileStorageExtractionAdditionalFieldProvider.php index ead35f11a2c6ba1b4854aef0ba6f2529756bfae4..478812b61fb667a2204510a016379d5091d71982 100644 --- a/typo3/sysext/scheduler/Classes/Task/FileStorageExtractionAdditionalFieldProvider.php +++ b/typo3/sysext/scheduler/Classes/Task/FileStorageExtractionAdditionalFieldProvider.php @@ -50,7 +50,7 @@ class FileStorageExtractionAdditionalFieldProvider implements AdditionalFieldPro /** * Returns a field configuration including a selectbox for available storages * - * @param FileStorageExtractionTask $task When editing, reference to the current task object. NULL when adding. + * @param FileStorageExtractionTask|null $task When editing, reference to the current task object. NULL when adding. * @return array Array containing all the information pertaining to the additional fields */ protected function getAllStoragesField(FileStorageExtractionTask $task = null) @@ -82,7 +82,7 @@ class FileStorageExtractionAdditionalFieldProvider implements AdditionalFieldPro /** * Returns a field configuration including an input field for the file count * - * @param FileStorageExtractionTask $task When editing, reference to the current task object. NULL when adding. + * @param FileStorageExtractionTask|null $task When editing, reference to the current task object. NULL when adding. * @return array Array containing all the information pertaining to the additional fields */ protected function getFileCountField(FileStorageExtractionTask $task = null) @@ -104,7 +104,7 @@ class FileStorageExtractionAdditionalFieldProvider implements AdditionalFieldPro /** * Returns a field configuration telling about the status of registered extractors. * - * @param FileStorageExtractionTask $task When editing, reference to the current task object. NULL when adding. + * @param FileStorageExtractionTask|null $task When editing, reference to the current task object. NULL when adding. * @return array Array containing all the information pertaining to the additional fields */ protected function getRegisteredExtractorsField(FileStorageExtractionTask $task = null) @@ -172,12 +172,12 @@ class FileStorageExtractionAdditionalFieldProvider implements AdditionalFieldPro * Save additional field in task * * @param array $submittedData Contains data submitted by the user - * @param \TYPO3\CMS\Scheduler\Task\AbstractTask $task Reference to the current task object + * @param AbstractTask $task Reference to the current task object * @throws \InvalidArgumentException */ - public function saveAdditionalFields(array $submittedData, \TYPO3\CMS\Scheduler\Task\AbstractTask $task) + public function saveAdditionalFields(array $submittedData, AbstractTask $task) { - if ($task !== null && !$task instanceof FileStorageExtractionTask) { + if (!$task instanceof FileStorageExtractionTask) { throw new \InvalidArgumentException('Task not of type FileStorageExtractionTask', 1384275698); } $task->storageUid = (int)$submittedData['scheduler_fileStorageIndexing_storage'];