. // Copyright © 2007-2014 Erwan Briand // // This program is free software: you can redistribute it and/or modify it // under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, version 3 only. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public // License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . /** * @file * This file contains the Config class * * Update, get or list the configuration keys stored in the database. */ /** * Config class */ class Config { private $ct_db; function __construct ($db) { $this->ct_db = $db; } /** * List keys * * List all the stored configuration keys (this is a static method). * @return * An array with the keys list. */ static public function listkeys($db) { $req = $db->select('config', FALSE); $return = array(); foreach ($req as $key) { $group = $key['group']; if (!array_key_exists($group, $return)) $return[$group] = array(); $return[$group][$key['field']] = $key; } return $return; } /** * Update * * Update if the key exists or create it. * @param $group * The group of the key. * @param $field * The field of the key. * @param $value * The value of the key. */ public function update($group, $field, $value) { $idn = count($this->ct_db->select('config', array('group' => $group, 'field' => $field))); if ($idn == 0) $insert = $this->ct_db->insert('config', array('group' => $group, 'field' => $field, 'value' => $value)); else $insert = $this->ct_db->update('config', array('value' => $value), array('group' => $group, 'field' => $field)); } /** * Get * * Get a configuration key. * @param $group * The group of the key. * @param $field * The field of the key. * @return * The value of the key. */ public function get($group, $field) { global $ct_dbconfig; if (is_null($ct_dbconfig)) $ct_dbconfig = Config::listkeys($this->ct_db); if (array_key_exists($group, $ct_dbconfig)) { $group = $ct_dbconfig[$group]; if (array_key_exists($field, $group)) { $return = $group[$field]['value']; if ($return) { if (in_array($return, array('true', 'false'))) { switch ($return) { case 'true': return TRUE; break; case 'false': return FALSE; } } else return $return; } } } return FALSE; } } ?>