‪TYPO3CMS  ‪main
IpAnonymizationAdditionalFieldProvider.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 
23 
29 {
38  public function ‪getAdditionalFields(array &$taskInfo, $task, ‪SchedulerModuleController $schedulerModule)
39  {
40  $additionalFields = [];
41  $additionalFields['task_ipAnonymization_table'] = $this->‪getTableAdditionalField($taskInfo, $task, $schedulerModule);
42  $additionalFields['task_ipAnonymization_numberOfDays'] = $this->‪getNumberOfDaysAdditionalField($taskInfo, $task, $schedulerModule);
43  $additionalFields['task_ipAnonymization_mask'] = $this->‪getMaskAdditionalField($taskInfo, $task, $schedulerModule);
44  return $additionalFields;
45  }
46 
55  protected function ‪getTableAdditionalField(array &$taskInfo, $task, ‪SchedulerModuleController $schedulerModule)
56  {
57  $currentSchedulerModuleAction = $schedulerModule->‪getCurrentAction();
58  $tableConfiguration = ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][IpAnonymizationTask::class]['options']['tables'];
59  $options = [];
60  // Add an empty option on top if an existing task is configured
61  // with a table that can not be found in configuration anymore
62  if ($task && !array_key_exists($task->table, $tableConfiguration) && $currentSchedulerModuleAction === SchedulerManagementAction::EDIT) {
63  $options[] = '<option value="" selected="selected"></option>';
64  }
65  foreach ($tableConfiguration as $tableName => $configuration) {
66  if ($currentSchedulerModuleAction === SchedulerManagementAction::ADD && empty($options)) {
67  // Select first table by default if adding a new task
68  $options[] = '<option value="' . $tableName . '" selected="selected">' . $tableName . '</option>';
69  } elseif ($task && $task->table === $tableName) {
70  // Select currently selected table
71  $options[] = '<option value="' . $tableName . '" selected="selected">' . $tableName . '</option>';
72  } else {
73  $options[] = '<option value="' . $tableName . '">' . $tableName . '</option>';
74  }
75  }
76  $fieldName = 'tx_scheduler[scheduler_ipAnonymization_table]';
77  $fieldId = 'task_ipAnonymization_table';
78  $fieldHtml = [];
79  // Add table drop down html
80  $fieldHtml[] = '<select class="form-select" name="' . $fieldName . '" id="' . $fieldId . '">'
81  . implode(LF, $options) . '</select>';
82  $fieldConfiguration = [
83  'code' => implode(LF, $fieldHtml),
84  'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.table',
85  'cshKey' => '_MOD_system_txschedulerM1',
86  'cshLabel' => $fieldId,
87  'type' => 'select',
88  ];
89  return $fieldConfiguration;
90  }
91 
100  protected function ‪getNumberOfDaysAdditionalField(array &$taskInfo, $task, ‪SchedulerModuleController $schedulerModule)
101  {
102  $fieldId = 'scheduler_ipAnonymization_numberOfDays';
103  if (empty($taskInfo[$fieldId])) {
104  $taskInfo[$fieldId] = $task->numberOfDays ?? 180;
105  }
106  $fieldName = 'tx_scheduler[' . $fieldId . ']';
107  $fieldHtml = '<input class="form-control form-control-clearable t3js-clearable" type="text" name="' . $fieldName . '" id="' . $fieldId . '" value="'
108  . (int)$taskInfo[$fieldId] . '" size="4">';
109  $fieldConfiguration = [
110  'code' => $fieldHtml,
111  'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.numberOfDays',
112  'cshKey' => '_MOD_system_txschedulerM1',
113  'cshLabel' => $fieldId,
114  'type' => 'input',
115  ];
116  return $fieldConfiguration;
117  }
118 
127  protected function ‪getMaskAdditionalField(array &$taskInfo, $task, ‪SchedulerModuleController $schedulerModule)
128  {
129  $fieldId = 'scheduler_ipAnonymization_mask';
130  if (empty($taskInfo[$fieldId])) {
131  $taskInfo[$fieldId] = $task->mask ?? 2;
132  }
133  $fieldName = 'tx_scheduler[' . $fieldId . ']';
134 
135  $fieldHtml = '';
136  foreach ([1, 2] as $mask) {
137  $selected = (int)$taskInfo[$fieldId] === $mask ? ' selected' : '';
138  $fieldHtml .= '<option value="' . $mask . '"' . $selected . '>'
139  . htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.mask.' . $mask))
140  . '</option>';
141  }
142 
143  $fieldHtml = '<select class="form-select" name="' . $fieldName . '" id="' . $fieldId . '">' . $fieldHtml
144  . '</select>';
145 
146  $fieldConfiguration = [
147  'code' => $fieldHtml,
148  'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.mask',
149  'cshKey' => '_MOD_system_txschedulerM1',
150  'cshLabel' => $fieldId,
151  'type' => 'select',
152  ];
153  return $fieldConfiguration;
154  }
155 
163  public function ‪validateAdditionalFields(array &$submittedData, ‪SchedulerModuleController $schedulerModule)
164  {
165  return $this->‪validateTableAdditionalField($submittedData, $schedulerModule)
166  && $this->‪validateNumberOfDaysAdditionalField($submittedData, $schedulerModule);
167  }
168 
176  public function ‪validateTableAdditionalField(array &$submittedData, ‪SchedulerModuleController $schedulerModule)
177  {
178  $validData = false;
179  $tableConfiguration = ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][IpAnonymizationTask::class]['options']['tables'];
180  if (!isset($submittedData['scheduler_ipAnonymization_table'])) {
181  $validData = true;
182  } elseif (array_key_exists($submittedData['scheduler_ipAnonymization_table'], $tableConfiguration)) {
183  $validData = true;
184  }
185  return $validData;
186  }
187 
195  public function ‪validateNumberOfDaysAdditionalField(array &$submittedData, ‪SchedulerModuleController $schedulerModule)
196  {
197  $validData = false;
198  if (!isset($submittedData['scheduler_ipAnonymization_numberOfDays'])) {
199  $validData = true;
200  } elseif ((int)$submittedData['scheduler_ipAnonymization_numberOfDays'] >= 0) {
201  $validData = true;
202  } else {
203  // Issue error message
204  $this->‪addMessage($this->‪getLanguageService()->sL('LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:msg.invalidNumberOfDays'), ContextualFeedbackSeverity::ERROR);
205  }
206  return $validData;
207  }
208 
215  public function ‪saveAdditionalFields(array $submittedData, ‪AbstractTask $task)
216  {
217  $task->table = $submittedData['scheduler_ipAnonymization_table'];
218  $task->mask = (int)$submittedData['scheduler_ipAnonymization_mask'];
219  $task->numberOfDays = (int)$submittedData['scheduler_ipAnonymization_numberOfDays'];
220  }
221 
223  {
224  return ‪$GLOBALS['LANG'];
225  }
226 }
‪TYPO3\CMS\Scheduler\SchedulerManagementAction
‪SchedulerManagementAction
Definition: SchedulerManagementAction.php:25
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider
Definition: IpAnonymizationAdditionalFieldProvider.php:29
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\validateNumberOfDaysAdditionalField
‪bool validateNumberOfDaysAdditionalField(array &$submittedData, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:195
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\getTableAdditionalField
‪array getTableAdditionalField(array &$taskInfo, $task, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:55
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\getAdditionalFields
‪array getAdditionalFields(array &$taskInfo, $task, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:38
‪TYPO3\CMS\Scheduler\Task
Definition: AbstractTask.php:16
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\validateTableAdditionalField
‪bool validateTableAdditionalField(array &$submittedData, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:176
‪TYPO3\CMS\Scheduler\AbstractAdditionalFieldProvider
Definition: AbstractAdditionalFieldProvider.php:29
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\getLanguageService
‪getLanguageService()
Definition: IpAnonymizationAdditionalFieldProvider.php:222
‪TYPO3\CMS\Core\Type\ContextualFeedbackSeverity
‪ContextualFeedbackSeverity
Definition: ContextualFeedbackSeverity.php:25
‪TYPO3\CMS\Scheduler\Controller\SchedulerModuleController\getCurrentAction
‪getCurrentAction()
Definition: SchedulerModuleController.php:196
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\getNumberOfDaysAdditionalField
‪array getNumberOfDaysAdditionalField(array &$taskInfo, $task, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:100
‪TYPO3\CMS\Scheduler\Task\AbstractTask
Definition: AbstractTask.php:33
‪TYPO3\CMS\Scheduler\AbstractAdditionalFieldProvider\addMessage
‪addMessage(string $message, ContextualFeedbackSeverity $severity=ContextualFeedbackSeverity::OK)
Definition: AbstractAdditionalFieldProvider.php:36
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\getMaskAdditionalField
‪array getMaskAdditionalField(array &$taskInfo, $task, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:127
‪TYPO3\CMS\Scheduler\Controller\SchedulerModuleController
Definition: SchedulerModuleController.php:60
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\saveAdditionalFields
‪saveAdditionalFields(array $submittedData, AbstractTask $task)
Definition: IpAnonymizationAdditionalFieldProvider.php:215
‪TYPO3\CMS\Scheduler\Task\IpAnonymizationAdditionalFieldProvider\validateAdditionalFields
‪bool validateAdditionalFields(array &$submittedData, SchedulerModuleController $schedulerModule)
Definition: IpAnonymizationAdditionalFieldProvider.php:163