Added new table called "user preferences" which can be used for
storing arbitrary preferences for each user. Thanks to Jon Papaioannou for the first draft of this code which I modified.
This commit is contained in:
+7
-4
@@ -933,10 +933,7 @@ function get_user_info_from_db($field, $value) {
|
||||
}
|
||||
|
||||
if ($admins = get_records("user_admins", "userid", $user->id)) {
|
||||
foreach ($admins as $admin) {
|
||||
$user->admin = true;
|
||||
break;
|
||||
}
|
||||
$user->admin = true;
|
||||
}
|
||||
|
||||
if ($displays = get_records("course_display", "userid", $user->id)) {
|
||||
@@ -952,6 +949,12 @@ function get_user_info_from_db($field, $value) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($preferences = get_records('user_preferences', 'userid', $user->id)) {
|
||||
foreach ($preferences as $preference) {
|
||||
$user->preference[$preference->name] = $preference->value;
|
||||
}
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
|
||||
@@ -618,6 +618,19 @@ function main_upgrade($oldversion=0) {
|
||||
) TYPE=MyISAM COMMENT='For everything with a time associated to it'; ");
|
||||
}
|
||||
|
||||
if ($oldversion < 2004012800) {
|
||||
modify_database("", "CREATE TABLE `prefix_user_preferences` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`userid` int(10) unsigned NOT NULL default '0',
|
||||
`name` varchar(50) NOT NULL default '',
|
||||
`value` varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id` (`id`),
|
||||
KEY `useridname` (userid,name)
|
||||
) TYPE=MyISAM COMMENT='Allows modules to store arbitrary user preferences'; ");
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
@@ -314,6 +314,25 @@ CREATE TABLE `prefix_user_admins` (
|
||||
) TYPE=MyISAM COMMENT='One record per administrator user';
|
||||
# --------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Table structure for table `user_preferences`
|
||||
#
|
||||
|
||||
CREATE TABLE `prefix_user_preferences` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`userid` int(10) unsigned NOT NULL default '0',
|
||||
`name` varchar(50) NOT NULL default '',
|
||||
`value` varchar(255) NOT NULL default '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id` (`id`),
|
||||
KEY `useridname` (userid,name)
|
||||
) TYPE=MyISAM COMMENT='Allows modules to store arbitrary user preferences';
|
||||
# --------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Table structure for table `user_students`
|
||||
#
|
||||
|
||||
@@ -365,6 +365,17 @@ function main_upgrade($oldversion=0) {
|
||||
}
|
||||
|
||||
|
||||
if ($oldversion < 2004012800) {
|
||||
modify_database("", "CREATE TABLE prefix_user_preferences (
|
||||
id SERIAL PRIMARY KEY,
|
||||
userid integer NOT NULL default '0',
|
||||
name varchar(50) NOT NULL default '',
|
||||
value varchar(255) NOT NULL default ''
|
||||
); ");
|
||||
|
||||
modify_database("", "CREATE INDEX prefix_user_preferences_useridname_idx ON prefix_user_preferences (userid,name);");
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
@@ -205,6 +205,15 @@ CREATE TABLE prefix_user_admins (
|
||||
userid integer NOT NULL default '0'
|
||||
);
|
||||
|
||||
CREATE TABLE prefix_user_preferences (
|
||||
id SERIAL PRIMARY KEY,
|
||||
userid integer NOT NULL default '0',
|
||||
name varchar(50) NOT NULL default '',
|
||||
value varchar(255) NOT NULL default ''
|
||||
);
|
||||
|
||||
CREATE INDEX prefix_user_preferences_useridname_idx ON prefix_user_preferences (userid,name);
|
||||
|
||||
CREATE TABLE prefix_user_students (
|
||||
id SERIAL PRIMARY KEY,
|
||||
userid integer NOT NULL default '0',
|
||||
|
||||
@@ -60,6 +60,7 @@ function optional_variable(&$var, $default=0) {
|
||||
|
||||
function set_config($name, $value) {
|
||||
/// No need for get_config because they are usually always available in $CFG
|
||||
|
||||
global $CFG;
|
||||
|
||||
$CFG->$name = $value; // So it's defined for this invocation at least
|
||||
@@ -74,6 +75,84 @@ function set_config($name, $value) {
|
||||
}
|
||||
|
||||
|
||||
function reload_user_preferences() {
|
||||
/// Refresh current USER with all their current preferences
|
||||
|
||||
global $USER;
|
||||
|
||||
unset($USER->preference);
|
||||
|
||||
if ($preferences = get_records('user_preferences', 'userid', $USER->id)) {
|
||||
foreach ($preferences as $preference) {
|
||||
$USER->preference[$preference->name] = $preference->value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function set_user_preference($name, $value) {
|
||||
/// Sets a preference for the current user
|
||||
|
||||
global $USER;
|
||||
|
||||
if (empty($name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($preference = get_record('user_preferences', 'userid', $USER->id, 'name', $name)) {
|
||||
return set_field("user_preferences", "value", $value, "id", $preference->id);
|
||||
|
||||
} else {
|
||||
$preference->userid = $USER->id;
|
||||
$preference->name = $name;
|
||||
$preference->value = (string)$value;
|
||||
if (insert_record('user_preferences', $record)) {
|
||||
$USER->preference[$name] = $value;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function set_user_preferences($prefarray) {
|
||||
/// Sets a whole array of preferences for the current user
|
||||
|
||||
if (!is_array($prefarray) or empty($prefarray)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$return = true;
|
||||
foreach ($prefarray as $name => $value) {
|
||||
// The order is important; if the test for return is done first,
|
||||
// then if one function call fails all the remaining ones will
|
||||
// be "optimized away"
|
||||
$return = set_user_preference($name, $value) and $return;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function get_user_preferences($name=NULL, $default=NULL) {
|
||||
/// Without arguments, returns all the current user preferences
|
||||
/// as an array. If a name is specified, then this function
|
||||
/// attempts to return that particular preference value. If
|
||||
/// none is found, then the optional value $default is returned,
|
||||
/// otherwise NULL.
|
||||
|
||||
global $USER;
|
||||
|
||||
if (empty($USER->preference)) {
|
||||
return $default; // Default value (or NULL)
|
||||
}
|
||||
if (empty($name)) {
|
||||
return $USER->preference; // Whole array
|
||||
}
|
||||
if (!isset($USER->preference[$name])) {
|
||||
return $default; // Default value (or NULL)
|
||||
}
|
||||
return $USER->preference[$name]; // The single value
|
||||
}
|
||||
|
||||
|
||||
/// FUNCTIONS FOR HANDLING TIME ////////////////////////////////////////////
|
||||
|
||||
function make_timestamp($year, $month=1, $day=1, $hour=0, $minute=0, $second=0, $timezone=99) {
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
// database to determine whether upgrades should
|
||||
// be performed (see lib/db/*.php)
|
||||
|
||||
$version = 2004012700; // The current version is a date (YYYYMMDDXX)
|
||||
$version = 2004012800; // The current version is a date (YYYYMMDDXX)
|
||||
|
||||
$release = "1.2 development"; // User-friendly version number
|
||||
|
||||
|
||||
Reference in New Issue
Block a user