query('SELECT * FROM `variable`'); while ($db->next_record($result)) { /* maybe the data is *not* serialized, in that case, take it verbatim */ $variable = $db->Record; if (($variables[$variable['name']] = unserialize($variable['value'])) === FALSE) { $variables[$variable['name']] = $variable['value']; } } foreach ($conf as $name => $value) { $variables[$name] = $value; } return $variables; } /** * Initialize the global $conf array if necessary * * @global $conf the global conf array * @uses variable_init() */ function variable_init_maybe() { global $conf; if (!isset($conf)) { $conf = variable_init(); } } /** * Return a persistent variable. * * @param $name * The name of the variable to return. * @param $default * The default value to use if this variable has never been set. * @return * The value of the variable. * @global $conf * A cache of the configuration. */ function variable_get($name, $default = null) { global $conf; variable_init_maybe(); return isset($conf[$name]) ? $conf[$name] : $default; } /** * Set a persistent variable. * * @param $name * The name of the variable to set. * @param $value * The value to set. This can be any PHP data type; these functions take care * of serialization as necessary. */ function variable_set($name, $value) { global $conf, $db; $conf[$name] = $value; if (is_object($value) || is_array($value)) { $value = serialize($value); } @$db->query("INSERT IGNORE INTO `variable` (name, value) VALUES ('".$name."', '".$value."')"); if ($db->affected_rows() < 1) { $db->query("UPDATE `variable` SET value = '".$value."' WHERE name = '".$name."'"); } variable_init_maybe(); } /** * Unset a persistent variable. * * @param $name * The name of the variable to undefine. */ function variable_del($name) { global $conf, $db; $db->query("DELETE FROM `variable` WHERE name = '".$name."'"); unset($conf[$name]); } ?>