Major overhaul of caching system (work in progress)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cache / builder / LanguageCacheBuilder.class.php
1 <?php
2 namespace wcf\system\cache\builder;
3 use wcf\data\language\category\LanguageCategoryList;
4 use wcf\data\language\LanguageList;
5 use wcf\data\DatabaseObject;
6 use wcf\system\WCF;
7
8 /**
9 * Caches languages and the id of the default language.
10 *
11 * @author Marcel Werk
12 * @copyright 2001-2013 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 * @package com.woltlab.wcf
15 * @subpackage system.cache.builder
16 * @category Community Framework
17 */
18 class LanguageCacheBuilder extends AbstractCacheBuilder {
19 /**
20 * @see wcf\system\cache\builder\AbstractCacheBuilder::rebuild()
21 */
22 public function rebuild(array $parameters) {
23 $data = array(
24 'codes' => array(),
25 'countryCodes' => array(),
26 'languages' => array(),
27 'default' => 0,
28 'categories' => array(),
29 'categoryIDs' => array()
30 );
31
32 // get languages
33 $languageList = new LanguageList();
34 $languageList->readObjects();
35 $data['languages'] = $languageList->getObjects();
36 foreach ($languageList->getObjects() as $language) {
37 // default language
38 if ($language->isDefault) {
39 $data['default'] = $language->languageID;
40 }
41
42 // language code to language id
43 $data['codes'][$language->languageCode] = $language->languageID;
44
45 // country code to language id
46 $data['countryCode'][$language->languageID] = $language->countryCode;
47 }
48
49 DatabaseObject::sort($data['languages'], 'languageName');
50
51 // get language categories
52 $languageCategoryList = new LanguageCategoryList();
53 $languageCategoryList->readObjects();
54 foreach ($languageCategoryList->getObjects() as $languageCategory) {
55 $data['categories'][$languageCategory->languageCategory] = $languageCategory;
56 $data['categoryIDs'][$languageCategory->languageCategoryID] = $languageCategory->languageCategory;
57 }
58
59 return $data;
60 }
61 }