Merge remote-tracking branch 'origin/6.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cronjob / PruneIpAddressesCronjob.class.php
CommitLineData
3e1845c7 1<?php
a9229942 2
3e1845c7 3namespace wcf\system\cronjob;
a9229942 4
3e1845c7
AE
5use wcf\data\cronjob\Cronjob;
6use wcf\system\WCF;
7
8/**
9 * Prunes old ip addresses.
a9229942 10 *
f3596681 11 * @author Alexander Ebert
a9229942 12 * @copyright 2001-2019 WoltLab GmbH
f3596681 13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
dd2d8c0c 14 * @since 5.2
3e1845c7 15 */
a9229942
TD
16class PruneIpAddressesCronjob extends AbstractCronjob
17{
18 /**
19 * list of columns
20 * [
21 * <tableName> => [
22 * <ipAddressColumn> => <timestampColumn>
23 * ]
24 * ]
25 * @var string[][]
26 */
27 public $columns = [];
28
29 /**
30 * @inheritDoc
31 */
32 public function execute(Cronjob $cronjob)
33 {
34 if (!PRUNE_IP_ADDRESS) {
35 return;
36 }
37
38 $this->columns['wcf' . WCF_N . '_user']['registrationIpAddress'] = 'registrationDate';
39
40 parent::execute($cronjob);
41
42 foreach ($this->columns as $tableName => $columnData) {
43 foreach ($columnData as $ipAddressColumn => $timestampColumn) {
44 $sql = "UPDATE {$tableName}
45 SET {$ipAddressColumn} = ?
685c665f
SG
46 WHERE {$timestampColumn} <= ?
47 AND {$ipAddressColumn} <> ?";
a9229942
TD
48 $statement = WCF::getDB()->prepareStatement($sql);
49 $statement->execute([
50 '',
51 TIME_NOW - 86400 * PRUNE_IP_ADDRESS, // 86400 = 1 day
685c665f 52 '',
a9229942
TD
53 ]);
54 }
55 }
56 }
3e1845c7 57}