ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilCachedLanguage.php
Go to the documentation of this file.
1 <?php
2 require_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 
138  public function setLanguageKey($language_key)
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 }
static getInstance($component)
setTranslations($translations)
deleteInCache()
Delete the cache entry for this language without flushing the whole global cache Using this function ...
foreach($_POST as $key=> $value) $res
global $DIC
Definition: goto.php:24
setLanguageKey($language_key)
__construct(Container $dic, ilPlugin $plugin)
global $ilDB
Class ilCachedLanguage.