2 declare(strict_types = 1);
58 $configuration =
$GLOBALS[
'TYPO3_CONF_VARS'][
'SC_OPTIONS'][
'scheduler'][
'tasks'][self::class][
'options'][
'tables'][
$this->table] ?? [];
59 if (empty($configuration)) {
60 throw new \RuntimeException(self::class .
' misconfiguration: ' . $this->table .
' does not exist in configuration', 1524502548);
76 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable(
$table);
77 $queryBuilder = $connection->createQueryBuilder();
78 $queryBuilder->getRestrictions()->removeAll();
80 if (empty($configuration[
'dateField'])) {
81 throw new \RuntimeException(self::class .
' misconfiguration: "dateField" must be defined for table ' .
$table, 1524502549);
83 if (empty($configuration[
'ipField'])) {
84 throw new \RuntimeException(self::class .
' misconfiguration: "ipField" must be defined for table ' .
$table, 1524502666);
86 $deleteTimestamp = strtotime(
'-' . $this->numberOfDays .
'days');
87 if ($deleteTimestamp ===
false) {
88 throw new \RuntimeException(self::class .
' misconfiguration: number of days could not be calculated for table ' .
$table, 1524526354);
90 if ($this->mask === 2) {
91 $notLikeMaskPattern =
'%.0.0';
93 $notLikeMaskPattern =
'%.0';
96 $result = $queryBuilder
97 ->select(
'uid', $configuration[
'ipField'])
99 $queryBuilder->expr()->lt(
100 $configuration[
'dateField'],
101 $queryBuilder->createNamedParameter($deleteTimestamp, \PDO::PARAM_INT)
103 $queryBuilder->expr()->neq(
104 $configuration[
'ipField'],
105 $queryBuilder->createNamedParameter(
'', \PDO::PARAM_STR)
107 $queryBuilder->expr()->isNotNull($configuration[
'ipField']),
108 $queryBuilder->expr()->notLike(
109 $configuration[
'ipField'],
110 $queryBuilder->createNamedParameter($notLikeMaskPattern, \PDO::PARAM_STR)
112 $queryBuilder->expr()->notLike(
113 $configuration[
'ipField'],
114 $queryBuilder->createNamedParameter(
'%::', \PDO::PARAM_STR)
120 while ($row = $result->fetch()) {
121 $ip = (string)$row[$configuration[
'ipField']];
133 }
catch (\Exception $e) {
134 throw new \RuntimeException(self::class .
' failed for table ' . $this->table .
' with error: ' . $e->getMessage(), 1524502550);
146 return sprintf(
$GLOBALS[
'LANG']->sL(
'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.additionalInformationTable'), $this->table, $this->numberOfDays);