ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilCachedLanguage.php
Go to the documentation of this file.
1<?php
2require_once('./Services/GlobalCache/classes/class.ilGlobalCache.php');
3
11{
12 protected $global_cache;
16 protected $loaded = false;
20 protected $language_key = 'en';
24 protected $translations = array();
28 protected static $instances = array();
29
30
34 protected function __construct($language_key)
35 {
42 $this->readFromCache();
43 if (!$this->getLoaded()) {
44 $this->readFromDB();
45 $this->writeToCache();
46 $this->setLoaded(true);
47 }
48 }
49
50
54 public function isActive()
55 {
56 return $this->global_cache->isActive();
57 }
58
59
60 protected function readFromCache()
61 {
62 if ($this->global_cache->isActive()) {
63 $translations = $this->global_cache->get('translations_' . $this->getLanguageKey());
64 if (is_array($translations)) {
66 $this->setLoaded(true);
67 }
68 }
69 }
70
71
72 public function writeToCache()
73 {
74 if ($this->global_cache->isActive()) {
75 $this->global_cache->set('translations_' . $this->getLanguageKey(), $this->getTranslations());
76 }
77 }
78
85 public function deleteInCache() {
86 if ($this->global_cache->isActive()) {
87 $this->global_cache->delete('translations_' . $this->getLanguageKey());
88 $this->setLoaded(false);
89 }
90 }
91
92 protected function readFromDB()
93 {
94 global $DIC;
95 $ilDB = $DIC->database();
96
97 $q = 'SELECT module, lang_array FROM lng_modules WHERE lang_key = %s';
98 $res = $ilDB->queryF($q, array( 'text' ), array( $this->getLanguageKey() ));
99 $translations = array();
100 while ($set = $ilDB->fetchObject($res)) {
101 $lang_array = unserialize($set->lang_array);
102 if (is_array($lang_array)) {
103 $translations[$set->module] = $lang_array;
104 }
105 }
107 }
108
109
115 public static function getInstance($key)
116 {
117 if (!isset(self::$instances[$key])) {
118 self::$instances[$key] = new self($key);
119 }
120
121 return self::$instances[$key];
122 }
123
124
125 public function flush()
126 {
127 if ($this->global_cache->isActive()) {
128 $this->global_cache->flush();
129 }
130 $this->readFromDB();
131 $this->writeToCache();
132 }
133
134
139 {
140 $this->language_key = $language_key;
141 }
142
143
147 public function getLanguageKey()
148 {
149 return $this->language_key;
150 }
151
152
156 public function setLoaded($loaded)
157 {
158 $this->loaded = $loaded;
159 }
160
161
165 public function getLoaded()
166 {
167 return $this->loaded;
168 }
169
170
175 {
176 $this->translations = $translations;
177 }
178
179
183 public function getTranslations()
184 {
185 return $this->translations;
186 }
187}
An exception for terminatinating execution or to throw for unit testing.
Class ilCachedLanguage.
setTranslations($translations)
setLanguageKey($language_key)
deleteInCache()
Delete the cache entry for this language without flushing the whole global cache Using this function ...
static getInstance($component)
global $DIC
Definition: goto.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
foreach($_POST as $key=> $value) $res
global $ilDB