Apply PSR-12 code style (#3886)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cronjob / StatDailyBuilderCronjob.class.php
1 <?php
2
3 namespace wcf\system\cronjob;
4
5 use wcf\data\cronjob\Cronjob;
6 use wcf\data\object\type\ObjectTypeCache;
7 use wcf\system\WCF;
8 use wcf\util\DateUtil;
9
10 /**
11 * Builds daily statistics.
12 *
13 * @author Marcel Werk
14 * @copyright 2001-2019 WoltLab GmbH
15 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
16 * @package WoltLabSuite\Core\System\Cronjob
17 */
18 class StatDailyBuilderCronjob extends AbstractCronjob
19 {
20 /**
21 * @inheritDoc
22 */
23 public function execute(Cronjob $cronjob)
24 {
25 parent::execute($cronjob);
26
27 // get date
28 $d = DateUtil::getDateTimeByTimestamp(TIME_NOW);
29 $d->setTimezone(new \DateTimeZone(TIMEZONE));
30 $d->sub(new \DateInterval('P1D'));
31 $d->setTime(0, 0);
32 $date = $d->getTimestamp();
33
34 // prepare insert statement
35 $sql = "INSERT IGNORE INTO wcf" . WCF_N . "_stat_daily
36 (objectTypeID, date, counter, total)
37 VALUES (?, ?, ?, ?)";
38 $statement = WCF::getDB()->prepareStatement($sql);
39
40 // get object types
41 foreach (ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.statDailyHandler') as $objectType) {
42 $data = $objectType->getProcessor()->getData($date);
43
44 $statement->execute([$objectType->objectTypeID, $d->format('Y-m-d'), $data['counter'], $data['total']]);
45 }
46 }
47 }