Commit | Line | Data |
---|---|---|
3e1845c7 | 1 | <?php |
a9229942 | 2 | |
3e1845c7 | 3 | namespace wcf\system\cronjob; |
a9229942 | 4 | |
3e1845c7 AE |
5 | use wcf\data\cronjob\Cronjob; |
6 | use 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 |
16 | class 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 | } |