source: extensions/ContactForm/classes/cf_config_lang.class.php @ 3743

Last change on this file since 3743 was 3743, checked in by Criss, 15 years ago

Put under SVN control
Add obsolete list
Add language configuration for items texts
Add template variable

File size: 3.4 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4class CF_Config_Lang {
5  static $default_keys = array();
6  static private $available_languages = null;
7  protected $defined_languages = array();
8  protected $added_languages = array();
9  protected $keys = array();
10 
11  static private function update_available_languages() {
12    CF_Config_Lang::$available_languages = array();
13    foreach(get_dirs(CF_LANGUAGE) as $language) {
14      array_push(CF_Config_Lang::$available_languages, $language);
15    }
16    return CF_Config_Lang::$available_languages;
17  }
18  static function get_available_languages() {
19    if (empty(CF_Config_Lang::$available_languages)) {
20      CF_Config_Lang::update_available_languages();
21    }
22    return CF_Config_Lang::$available_languages;
23  }
24  /* ************************ */
25  /* ** Constructor        ** */
26  /* ************************ */
27
28  function CF_Config_Lang() {
29    $this->init();
30  }
31
32  /* ************************ */
33  /* ** Accessors          ** */
34  /* ************************ */
35
36  function update_keys() {
37    $this->keys = array();
38    foreach($this->get_merged_values() as $language => $keys) {
39      foreach($keys as $key => $value) {
40        $this->add_key($key);
41      }
42    }
43  }
44 
45  function set_default_values() {
46    foreach(CF_Config_Lang::$default_keys as $default_key => $default_values) {
47      foreach($default_values as $language => $value) {
48        if (empty($this->defined_languages[$language][$default_key])) {
49          $this->defined_languages[$language][$default_key] = $value;
50        }
51      }
52      $this->add_key($default_key);
53    }
54  }
55 
56  function get_keys() {
57    return $this->keys;
58  }
59 
60  function add_key($key) {
61    if (in_array($key, $this->keys)) {
62      // already exists
63      return;
64    }
65    $this->keys[]=$key;
66    // Add key to all languages
67    foreach($this->automatic_values as $language => $keys) {
68      if (!isset($this->defined_languages[$language][$key])) {
69        $this->defined_languages[$language][$key] = '';
70      }
71    }
72    foreach($this->added_languages as $language => $keys) {
73      if (!isset($this->added_languages[$language][$key])) {
74        $this->added_languages[$language][$key] = '';
75      }
76    }
77  }
78 
79  function get_value($language=null, $key=null) {
80    $values = $this->get_merged_values();
81    if (null == $language) {
82      return $values;
83    }
84    if (!isset($values[$language])) {
85      return null;
86    }
87    if (null == $key) {
88      return $values[$language];
89    }
90    if (!isset($values[$language][$key]) or empty($values[$language][$key])) {
91      return null;
92    }
93    return $values[$language][$key];
94  }
95 
96  function set_value($language, $key, $value) {
97    if (isset($this->defined_languages[$language])) {
98      $this->defined_languages[$language][$key] = $value;
99    } else {
100      if (!isset($this->added_languages[$language])) {
101        $this->added_languages[$language] = array();
102      }
103      $this->added_languages[$language][$key] = $value;
104    }
105    $this->add_key($key);
106  }
107 
108  /* ************************ */
109  /* ** Private functions  ** */
110  /* ************************ */
111
112  protected function get_merged_values() {
113    return array_merge_recursive($this->defined_languages, $this->added_languages);
114  }
115 
116  protected function init() {
117    $this->automatic_values = array();
118    foreach(CF_Config_Lang::get_available_languages() as $language) {
119      $this->defined_languages[$language] = array();
120    }
121  }
122}
123?>
Note: See TracBrowser for help on using the repository browser.