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. * @param $createit_comment * If variable doesn't exist, create it with the default value * and createit_comment value as comment * @return * The value of the variable. * @global $conf * A cache of the configuration. */ function variable_get($name, $default = null, $createit_comment = null) { global $conf; variable_init_maybe(); if (isset($conf[$name])) { return $conf[$name]; } elseif (!is_null($createit_comment)) { variable_set($name, $default, $createit_comment); } return $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, $comment=null) { global $conf, $db, $err; $err->log('variable', 'variable_set', '+'.serialize($value).'+'.$comment.'+'); $conf[$name] = $value; if (is_object($value) || is_array($value)) { $value = serialize($value); } if ( empty($comment) ) { $query = "INSERT INTO variable (name, value) values ('".$name."', '".$value."') on duplicate key update name='$name', value='$value';"; } else { $comment=mysql_real_escape_string($comment); $query = "INSERT INTO variable (name, value, comment) values ('".$name."', '".$value."', '$comment') on duplicate key update name='$name', value='$value', comment='$comment';"; } $db->query("$query"); variable_init(); } /** * 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]); } function variables_list() { global $db; $t=array(); $db->query("SELECT * FROM `variable` WHERE `comment` IS NOT NULL ORDER BY `name`"); while ($db->next_record()) { $t[]=$db->Record; } return $t; } ?>