‪TYPO3CMS  11.5
SystemStatusUpdateTaskNotificationEmailField.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
25 
32 {
38  protected ‪$fields = ['notificationEmail', 'notificationAll'];
39 
45  protected ‪$fieldPrefix = 'SystemStatusUpdate';
46 
55  public function ‪getAdditionalFields(array &$taskInfo, $task, ‪SchedulerModuleController $schedulerModule)
56  {
57  $currentSchedulerModuleAction = $schedulerModule->‪getCurrentAction();
58 
59  if ($currentSchedulerModuleAction->equals(‪Action::EDIT)) {
60  $taskInfo[$this->fieldPrefix . 'NotificationEmail'] = $task->getNotificationEmail();
61  $taskInfo[$this->fieldPrefix . 'NotificationAll'] = $task->getNotificationAll();
62  }
63  // build html for additional email field
64  $fieldName = $this->‪getFullFieldName('notificationEmail');
65  $fieldId = 'task_' . $fieldName;
66  $fieldContent = $taskInfo[$fieldName] ?? '';
67  $fieldHtml = '<textarea class="form-control" rows="5" cols="50" name="tx_scheduler[' . $fieldName . ']" id="' . $fieldId . '" >' . htmlspecialchars($fieldContent) . '</textarea>';
68 
69  $additionalFields = [];
70  $additionalFields[$fieldId] = [
71  'code' => $fieldHtml,
72  'label' => 'LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_updateTaskField_notificationEmails',
73  'cshKey' => '',
74  'cshLabel' => $fieldId,
75  ];
76 
77  // build html for additional mail all checkbox field
78  $fieldName = $this->‪getFullFieldName('notificationAll');
79  $fieldId = 'task_' . $fieldName;
80  $fieldChecked = (bool)($taskInfo[$fieldName] ?? false);
81  $fieldHtml = '<input type="checkbox" name="tx_scheduler[' . $fieldName . ']" id="' . $fieldId . '" value="1"' . ($fieldChecked ? ' checked="checked"' : '') . '>';
82 
83  $additionalFields[$fieldId] = [
84  'code' => $fieldHtml,
85  'label' => 'LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_updateTaskField_notificationAll',
86  'cshKey' => '',
87  'cshLabel' => $fieldId,
88  ];
89 
90  return $additionalFields;
91  }
92 
100  public function ‪validateAdditionalFields(array &$submittedData, ‪SchedulerModuleController $schedulerModule)
101  {
102  $validInput = true;
103  $notificationEmails = ‪GeneralUtility::trimExplode(LF, $submittedData[$this->fieldPrefix . 'NotificationEmail'], true);
104  foreach ($notificationEmails as $notificationEmail) {
105  if (!GeneralUtility::validEmail($notificationEmail)) {
106  $validInput = false;
107  break;
108  }
109  }
110  if (!$validInput || empty($submittedData[$this->fieldPrefix . 'NotificationEmail'])) {
111  $this->‪addMessage($this->‪getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_updateTaskField_notificationEmails_invalid'), ‪FlashMessage::ERROR);
112  $validInput = false;
113  }
114  return $validInput;
115  }
116 
124  public function ‪saveAdditionalFields(array $submittedData, ‪AbstractTask $task)
125  {
126  if (!$task instanceof ‪SystemStatusUpdateTask) {
127  throw new \InvalidArgumentException('Expected a task of type ' . SystemStatusUpdateTask::class . ', but got ' . get_class($task), 1295012802);
128  }
129  $task->setNotificationEmail($submittedData[$this->fieldPrefix . 'NotificationEmail']);
130  $task->setNotificationAll(!empty($submittedData[$this->fieldPrefix . 'NotificationAll']));
131  }
132 
139  protected function ‪getFullFieldName($fieldName)
140  {
141  return $this->fieldPrefix . ucfirst($fieldName);
142  }
143 
147  protected function ‪getLanguageService()
148  {
149  return ‪$GLOBALS['LANG'];
150  }
151 }
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static list< string > trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:999
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTask
Definition: SystemStatusUpdateTask.php:33
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\saveAdditionalFields
‪saveAdditionalFields(array $submittedData, AbstractTask $task)
Definition: SystemStatusUpdateTaskNotificationEmailField.php:122
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\validateAdditionalFields
‪bool validateAdditionalFields(array &$submittedData, SchedulerModuleController $schedulerModule)
Definition: SystemStatusUpdateTaskNotificationEmailField.php:98
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\getAdditionalFields
‪array getAdditionalFields(array &$taskInfo, $task, SchedulerModuleController $schedulerModule)
Definition: SystemStatusUpdateTaskNotificationEmailField.php:53
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\$fieldPrefix
‪string $fieldPrefix
Definition: SystemStatusUpdateTaskNotificationEmailField.php:43
‪TYPO3\CMS\Scheduler\AbstractAdditionalFieldProvider
Definition: AbstractAdditionalFieldProvider.php:28
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\getLanguageService
‪LanguageService getLanguageService()
Definition: SystemStatusUpdateTaskNotificationEmailField.php:145
‪TYPO3\CMS\Scheduler\AbstractAdditionalFieldProvider\addMessage
‪addMessage(string $message, int $severity=FlashMessage::OK)
Definition: AbstractAdditionalFieldProvider.php:35
‪TYPO3\CMS\Scheduler\Task\AbstractTask
Definition: AbstractTask.php:35
‪TYPO3\CMS\Scheduler\Controller\SchedulerModuleController
Definition: SchedulerModuleController.php:58
‪TYPO3\CMS\Scheduler\Task\Enumeration\Action\EDIT
‪const EDIT
Definition: Action.php:30
‪TYPO3\CMS\Scheduler\Controller\SchedulerModuleController\getCurrentAction
‪Action getCurrentAction()
Definition: SchedulerModuleController.php:192
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:26
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\getFullFieldName
‪string getFullFieldName($fieldName)
Definition: SystemStatusUpdateTaskNotificationEmailField.php:137
‪TYPO3\CMS\Scheduler\Task\Enumeration\Action
Definition: Action.php:26
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField
Definition: SystemStatusUpdateTaskNotificationEmailField.php:32
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Reports\Task
Definition: SystemStatusUpdateTask.php:16
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Reports\Task\SystemStatusUpdateTaskNotificationEmailField\$fields
‪array $fields
Definition: SystemStatusUpdateTaskNotificationEmailField.php:37
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31