Major overhaul of caching system (work in progress)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cache / builder / VersionCacheBuilder.class.php
1 <?php
2 namespace wcf\system\cache\builder;
3 use wcf\data\object\type\ObjectTypeCache;
4 use wcf\system\package\PackageDependencyHandler;
5 use wcf\system\WCF;
6
7 /**
8 * Caches the versions for a certain package and object type.
9 *
10 * @author Jeffrey Reichardt
11 * @copyright 2001-2013 WoltLab GmbH
12 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
13 * @package com.woltlab.wcf
14 * @subpackage system.cache.builder
15 * @category Community Framework
16 */
17 class VersionCacheBuilder extends AbstractCacheBuilder {
18 /**
19 * @see wcf\system\cache\builder\AbstractCacheBuilder::rebuild()
20 */
21 public function rebuild(array $parameters) {
22 // get object types
23 $objectTypes = ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.versionableObject');
24
25 $data = array(
26 'versions' => array(),
27 'versionIDs' => array()
28 );
29
30 foreach ($objectTypes as $objectTypeID => $objectType) {
31 $processorObject = $objectType->getProcessor();
32
33 $sql = "SELECT *
34 FROM ".$processorObject::getDatabaseVersionTableName();
35 $statement = WCF::getDB()->prepareStatement($sql);
36 $statement->execute(array());
37
38 while ($row = $statement->fetchArray()) {
39 $object = new $objectType->className(null, $row);
40 $data['versions'][$objectTypeID][$object->{$processorObject::getDatabaseIndexName()}] = $object;
41 $data['versionIDs'][$objectTypeID][$object->{$processorObject::getDatabaseIndexName()}][] = $object->{$processorObject::getDatabaseVersionTableIndexName()};
42 }
43 }
44
45 return $data;
46 }
47 }