XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
config.php
Go to the documentation of this file.
1 <?php
19 defined('XOOPS_ROOT_PATH') or die('Restricted access');
20 
21 require_once $GLOBALS['xoops']->path('kernel/configoption.php');
22 require_once $GLOBALS['xoops']->path('kernel/configitem.php');
23 
35 {
36 
44 
52 
60  var $_cachedConfigs = array();
61 
67  function XoopsConfigHandler(&$db)
68  {
69  $this->_cHandler = new XoopsConfigItemHandler($db);
70  $this->_oHandler = new XoopsConfigOptionHandler($db);
71  }
72 
79  function &createConfig()
80  {
81  $instance =& $this->_cHandler->create();
82  return $instance;
83  }
84 
92  function &getConfig($id, $withoptions = false)
93  {
94  $config =& $this->_cHandler->get($id);
95  if ($withoptions == true) {
96  $config->setConfOptions($this->getConfigOptions(new Criteria('conf_id', $id)));
97  }
98  return $config;
99  }
100 
106  function insertConfig(&$config)
107  {
108  if (!$this->_cHandler->insert($config)) {
109  return false;
110  }
111  $options =& $config->getConfOptions();
112  $count = count($options);
113  $conf_id = $config->getVar('conf_id');
114  for($i = 0; $i < $count; $i ++) {
115  $options[$i]->setVar('conf_id', $conf_id);
116  if (!$this->_oHandler->insert($options[$i])) {
117  foreach ($options[$i]->getErrors() as $msg) {
118  $config->setErrors($msg);
119  }
120  }
121  }
122  if (!empty($this->_cachedConfigs[$config->getVar('conf_modid')][$config->getVar('conf_catid')])) {
123  unset($this->_cachedConfigs[$config->getVar('conf_modid')][$config->getVar('conf_catid')]);
124  }
125  return true;
126  }
127 
133  function deleteConfig(&$config)
134  {
135  if (!$this->_cHandler->delete($config)) {
136  return false;
137  }
138  $options = & $config->getConfOptions();
139  $count = count($options);
140  if ($count == 0) {
141  $options = $this->getConfigOptions(new Criteria('conf_id', $config->getVar('conf_id')));
142  $count = count($options);
143  }
144  if (is_array($options) && $count > 0) {
145  for($i = 0; $i < $count; $i ++) {
146  $this->_oHandler->delete($options[$i]);
147  }
148  }
149  if (!empty($this->_cachedConfigs[$config->getVar('conf_modid')][$config->getVar('conf_catid')])) {
150  unset($this->_cachedConfigs[$config->getVar('conf_modid')][$config->getVar('conf_catid')]);
151  }
152  return true;
153  }
154 
164  function getConfigs($criteria = null, $id_as_key = false, $with_options = false)
165  {
166  return $this->_cHandler->getObjects($criteria, $id_as_key);
167  }
168 
174  function getConfigCount($criteria = null)
175  {
176  return $this->_cHandler->getCount($criteria);
177  }
178 
187  function &getConfigsByCat($category, $module = 0)
188  {
189  static $_cachedConfigs;
190  if (!empty($_cachedConfigs[$module][$category])) {
191  return $_cachedConfigs[$module][$category];
192  } else {
193  $ret = array();
194  $criteria = new CriteriaCompo(new Criteria('conf_modid', intval($module)));
195  if (! empty($category)) {
196  $criteria->add(new Criteria('conf_catid', intval($category)));
197  }
198  $configs = $this->getConfigs($criteria, true);
199  if (is_array($configs)) {
200  foreach (array_keys($configs) as $i) {
201  $ret[$configs[$i]->getVar('conf_name')] = $configs[$i]->getConfValueForOutput();
202  }
203  }
204  $_cachedConfigs[$module][$category] = $ret;
205  return $_cachedConfigs[$module][$category];
206  }
207  }
208 
214  function &createConfigOption()
215  {
216  $inst =& $this->_oHandler->create();
217  return $inst;
218  }
219 
227  function &getConfigOption($id)
228  {
229  $inst =& $this->_oHandler->get($id);
230  return $inst;
231  }
232 
241  function getConfigOptions($criteria = null, $id_as_key = false)
242  {
243  return $this->_oHandler->getObjects($criteria, $id_as_key);
244  }
245 
253  function getConfigOptionsCount($criteria = null)
254  {
255  return $this->_oHandler->getCount($criteria);
256  }
257 
266  function getConfigList($conf_modid, $conf_catid = 0)
267  {
268  if (!empty($this->_cachedConfigs[$conf_modid][$conf_catid])) {
269  return $this->_cachedConfigs[$conf_modid][$conf_catid];
270  } else {
271  $criteria = new CriteriaCompo(new Criteria('conf_modid', $conf_modid));
272  if (empty($conf_catid)) {
273  $criteria->add(new Criteria('conf_catid', $conf_catid));
274  }
275  $configs = $this->_cHandler->getObjects($criteria);
276  $confcount = count($configs);
277  $ret = array();
278  for ($i = 0; $i < $confcount; $i++) {
279  $ret[$configs[$i]->getVar('conf_name')] = $configs[$i]->getConfValueForOutput();
280  }
281  $this->_cachedConfigs[$conf_modid][$conf_catid] = & $ret;
282  return $ret;
283  }
284  }
285 
289  function deleteConfigOption(&$criteria)
290  {
291  trigger_error(__CLASS__ . "::" . __FUNCTION__ . ' is deprecated', E_USER_WARNING);
292  return false;
293  }
295 }
296 ?>