Commit | Line | Data |
---|---|---|
11ade432 AE |
1 | <?php |
2 | namespace wcf\data\cronjob; | |
099c2fd2 | 3 | use wcf\data\language\LanguageList; |
11ade432 | 4 | use wcf\data\DatabaseObjectEditor; |
b522d4f1 | 5 | use wcf\data\IEditableCachedObject; |
b401cd0d | 6 | use wcf\system\cache\builder\CronjobCacheBuilder; |
099c2fd2 MS |
7 | use wcf\system\language\LanguageFactory; |
8 | use wcf\system\WCF; | |
11ade432 AE |
9 | |
10 | /** | |
11 | * Provides functions to edit cronjobs. | |
12 | * | |
099c2fd2 | 13 | * @author Alexander Ebert, Matthias Schmidt |
b401cd0d | 14 | * @copyright 2001-2013 WoltLab GmbH |
11ade432 AE |
15 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
16 | * @package com.woltlab.wcf | |
17 | * @subpackage data.cronjob | |
9f959ced | 18 | * @category Community Framework |
11ade432 | 19 | */ |
b522d4f1 | 20 | class CronjobEditor extends DatabaseObjectEditor implements IEditableCachedObject { |
11ade432 | 21 | /** |
b522d4f1 | 22 | * @see wcf\data\DatabaseObjectDecorator::$baseClass |
11ade432 AE |
23 | */ |
24 | protected static $baseClass = 'wcf\data\cronjob\Cronjob'; | |
25 | ||
099c2fd2 MS |
26 | /** |
27 | * @see wcf\data\IEditableObject::create() | |
28 | */ | |
29 | public static function create(array $parameters = array()) { | |
30 | $descriptions = array(); | |
31 | if (isset($parameters['description']) && is_array($parameters['description'])) { | |
32 | if (count($parameters['description']) > 1) { | |
33 | $descriptions = $parameters['description']; | |
34 | $parameters['description'] = ''; | |
35 | } | |
36 | else { | |
37 | $parameters['description'] = reset($parameters['description']); | |
38 | } | |
39 | } | |
40 | ||
41 | $cronjob = parent::create($parameters); | |
42 | ||
43 | // save cronjob description | |
44 | if (!empty($descriptions)) { | |
45 | // set default value | |
46 | if (isset($descriptions[''])) { | |
47 | $defaultValue = $descriptions['']; | |
48 | } | |
49 | else if (isset($descriptions['en'])) { | |
50 | // fallback to English | |
51 | $defaultValue = $descriptions['en']; | |
52 | } | |
53 | else if (isset($descriptions[WCF::getLanguage()->getFixedLanguageCode()])) { | |
54 | // fallback to the language of the current user | |
55 | $defaultValue = $descriptions[WCF::getLanguage()->getFixedLanguageCode()]; | |
56 | } | |
57 | else { | |
58 | // fallback to first description | |
59 | $defaultValue = reset($descriptions); | |
60 | } | |
61 | ||
62 | // fetch data directly from database during framework installation | |
63 | if (!PACKAGE_ID) { | |
64 | $sql = "SELECT * | |
65 | FROM wcf".WCF_N."_language_category | |
66 | WHERE languageCategory = ?"; | |
67 | $statement = WCF::getDB()->prepareStatement($sql); | |
68 | $statement->execute(array('wcf.acp.cronjob')); | |
69 | $languageCategory = $statement->fetchObject('wcf\data\language\category\LanguageCategory'); | |
70 | ||
71 | $languages = new LanguageList(); | |
099c2fd2 MS |
72 | $languages->readObjects(); |
73 | } | |
74 | else { | |
75 | $languages = LanguageFactory::getInstance()->getLanguages(); | |
76 | $languageCategory = LanguageFactory::getInstance()->getCategory('wcf.acp.cronjob'); | |
77 | } | |
78 | ||
79 | $sql = "INSERT INTO wcf".WCF_N."_language_item | |
80 | (languageID, languageItem, languageItemValue, languageCategoryID, packageID) | |
81 | VALUES (?, ?, ?, ?, ?)"; | |
82 | $statement = WCF::getDB()->prepareStatement($sql); | |
83 | ||
84 | foreach ($languages as $language) { | |
85 | $value = $defaultValue; | |
86 | if (isset($descriptions[$language->languageCode])) { | |
87 | $value = $descriptions[$language->languageCode]; | |
88 | } | |
89 | ||
90 | $statement->execute(array( | |
91 | $language->languageID, | |
92 | 'wcf.acp.cronjob.description.cronjob'.$cronjob->cronjobID, | |
93 | $value, | |
94 | $languageCategory->languageCategoryID, | |
95 | $cronjob->packageID | |
96 | )); | |
97 | } | |
98 | ||
99 | // update cronjob | |
100 | $cronjobEditor = new CronjobEditor($cronjob); | |
101 | $cronjobEditor->update(array( | |
102 | 'description' => 'wcf.acp.cronjob.description.cronjob'.$cronjob->cronjobID | |
103 | )); | |
104 | } | |
105 | ||
106 | return $cronjob; | |
107 | } | |
108 | ||
11ade432 | 109 | /** |
9f959ced | 110 | * @see wcf\data\IEditableCachedObject::resetCache() |
11ade432 AE |
111 | */ |
112 | public static function resetCache() { | |
b401cd0d | 113 | CronjobCacheBuilder::getInstance()->reset(); |
11ade432 AE |
114 | } |
115 | } |