diff options
Diffstat (limited to 'includes/user.inc')
-rw-r--r-- | includes/user.inc | 72 |
1 files changed, 32 insertions, 40 deletions
diff --git a/includes/user.inc b/includes/user.inc index 9c4f38f66..0bb12d0ec 100644 --- a/includes/user.inc +++ b/includes/user.inc @@ -6,46 +6,46 @@ class User { $result = db_query("SELECT * FROM users WHERE LOWER(userid) = LOWER('$userid') && passwd = PASSWORD('$passwd') && STATUS = 2"); if (db_num_rows($result) == 1) { foreach (db_fetch_row($result) as $key=>$value) { $field = mysql_field_name($result, $key); $this->$field = stripslashes($value); $this->field[] = $field; } - db_query("UPDATE users SET last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_HOST]' WHERE id = $this->id"); + db_query("UPDATE users SET last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_ADDR]' WHERE id = $this->id"); } } else { $result = db_query("SELECT * FROM users WHERE userid = '$userid' && STATUS = 2"); if (db_num_rows($result) == 1) { foreach (db_fetch_row($result) as $key=>$value) { $field = mysql_field_name($result, $key); $this->$field = stripslashes($value); $this->field[] = $field; } - db_query("UPDATE users SET last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_HOST]' WHERE id = $this->id"); + db_query("UPDATE users SET last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_ADDR]' WHERE id = $this->id"); } } } } -function user_load() { +function user_init() { global $db_name; session_name($db_name); session_start(); } -function user_save($data, $id = 0) { - global $user; +function user_load($username) { + return new User($username); +} - foreach ($data as $key=>$value) { +function user_save($account, $array) { + // dynamically compose query: + foreach ($array as $key=>$value) { if ($key == "passwd") $query .= "$key = PASSWORD('". addslashes($value) ."'), "; else $query .= "$key = '". addslashes($value) ."', "; } - if (empty($id)) { - db_query("INSERT INTO users SET $query last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_HOST]'"); - } - else { - db_query("UPDATE users SET $query last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_HOST]' WHERE id = $id"); - $result = db_query("SELECT * FROM users WHERE id = $id AND status = 2"); - if (db_num_rows($result) == 1) foreach (db_fetch_array($result) as $key=>$value) { $user->$key = stripslashes($value); } - else $user = 0; - } + // update or instert account: + if ($account->id) db_query("UPDATE users SET $query last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_ADDR]' WHERE id = '$account->id'"); + else db_query("INSERT INTO users SET $query last_access = '". time() ."', last_host = '$GLOBALS[REMOTE_ADDR]'"); + + // return account: + return user_load(($account->userid ? $account->userid : $array["userid"])); } -function user_get_history($history, $field) { - $data = explode(";", $history); +function user_get($account, $column, $field) { + $data = explode(";", $account->$column); for (reset($data); current($data); next($data)) { $entry = explode(":", current($data)); if (reset($entry) == $field) $rval = end($entry); @@ -53,46 +53,38 @@ function user_get_history($history, $field) { return $rval; } -function user_set_history($field, $value) { - global $user; - $history = $user->history; +function user_set($account, $column, $name, $value) { + $field = $account->$column; + if (!$value) { // remove entry: - $data = explode(";", $history); + $data = explode(";", $field); for (reset($data); current($data); next($data)) { $entry = explode(":", current($data)); - if ($entry[0] != $field) $rval .= "$entry[0]:$entry[1];"; + if ($entry[0] != $name) $rval .= "$entry[0]:$entry[1];"; } } - else if (strstr($history, "$field:")) { + else if (strstr($field, "$name:")) { // found: update exsisting entry: - $data = explode(";", $history); + $data = explode(";", $field); for (reset($data); current($data); next($data)) { $entry = explode(":", current($data)); - if ($entry[0] == $field) $entry[1] = $value; + if ($entry[0] == $name) $entry[1] = $value; $rval .= "$entry[0]:$entry[1];"; } } else { - // not found: add new entry: - $rval = "$history$field:$value;"; + // not found: + $rval = "$field$name:$value;"; } - $user->history = $rval; - - // save new history: - $query .= "UPDATE users SET "; - foreach ($user->field as $key=>$field) { $value = $user->$field; $query .= "$field = '". addslashes($value) ."', "; } - $query .= " id = $user->id WHERE id = $user->id"; - db_query($query); -} -function user_rehash() { - global $user; - if ($user->id) $user = new User($user->userid); + return user_save($account, array($column => $rval)); } -function user_permission($account) { - return ($account->permissions == 1 || $account->id == 1); +function user_access($account, $section = 0) { +// print $account->userid ." ". $account->access ."<P>"; + if ($section) return (user_get($account, "access", $section) || $account->id == 1); + else return ($account->access || $account->id == 1); } ?>
\ No newline at end of file |