Major overhaul of caching system (work in progress)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cache / builder / CleanupAdapterCacheBuilder.class.php
1 <?php
2 namespace wcf\system\cache\builder;
3 use wcf\system\WCF;
4
5 /**
6 * Caches cleanup adapters.
7 *
8 * @author Alexander Ebert
9 * @copyright 2001-2011 WoltLab GmbH
10 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
11 * @package com.woltlab.wcf
12 * @subpackage system.cache.builder
13 * @category Community Framework
14 */
15 class CleanupAdapterCacheBuilder implements ICacheBuilder {
16 /**
17 * @see wcf\system\cache\ICacheBuilder::getData()
18 */
19 public function getData(array $cacheResource) {
20 $data = array(
21 'adapters' => array(),
22 'objectTypes' => array(),
23 'packageIDs' => array()
24 );
25
26 $sql = "SELECT listener.*, package.packageDir
27 FROM wcf".WCF_N."_cleanup_listener listener
28 LEFT JOIN wcf".WCF_N."_package package
29 ON (package.packageID = listener.packageID)";
30 $statement = WCF::getDB()->prepareStatement($sql);
31 $statement->execute();
32 while ($row = $statement->fetchArray()) {
33 if (!is_array($data['adapters'][$row['objectType']])) $data['adapters'][$row['objectType']] = array();
34 $data['adapters'][$row['objectType']][] = $row;
35
36 if (!is_array($data['objectTypes'][$row['objectType']])) $data['objectTypes'][$row['objectType']] = array();
37 $data['objectTypes'][$row['objectType']][] = $row['packageID'];
38 }
39
40 $data['objectTypes'] = array_unique($data['objectTypes']);
41 $data['packageIDs'] = array_unique($data['packageIDs']);
42
43 return $data;
44 }
45 }