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