summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2003-09-10 19:30:34 +0000
committerDries Buytaert <dries@buytaert.net>2003-09-10 19:30:34 +0000
commitb9633dcdede3dcc3e9466382dbed6b1fb7603bee (patch)
tree4f8afec588da7d6e1cc9f756a0953c91410d6229 /modules
parent81591038cb845c13286b74adbeac3665fcf3aff9 (diff)
downloadbrdo-b9633dcdede3dcc3e9466382dbed6b1fb7603bee.tar.gz
brdo-b9633dcdede3dcc3e9466382dbed6b1fb7603bee.tar.bz2
- Patch by Bart Jansen:
<quote> This adds session support for anonymous users and fixes a bug/typo. 1. changed rid for user #0 from 0 to 1 (rid 1 == anonymous user) to make inner join work. 2. replaced "if ($user .." by "if ($user->uid .." because now $user is always set (my previous change probably caused this). 3. db_next_id("user_uid") -> db_next_id("users_uid"); </quote> I repeat: "This adds session support for anonymous users and fixes a bug/typo."
Diffstat (limited to 'modules')
-rw-r--r--modules/node.module8
-rw-r--r--modules/node/node.module8
-rw-r--r--modules/user.module35
-rw-r--r--modules/user/user.module35
4 files changed, 32 insertions, 54 deletions
diff --git a/modules/node.module b/modules/node.module
index 978b01839..77667b614 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -983,19 +983,19 @@ function node_feed($nodes = 0, $channel = array()) {
/*
** Load the specified node:
*/
-
+
$item = node_load(array("nid" => $node->nid));
-
+
/*
** Transform the node information into an RSS item:
*/
-
+
$items .= format_rss_item($item->title, url(node_url($node)), ($item->teaser ? $item->teaser : $item->body));
/*
** Determine the publication date:
*/
-
+
if ($item->updated > $pubdate) {
$pubdate = $item->updated;
}
diff --git a/modules/node/node.module b/modules/node/node.module
index 978b01839..77667b614 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -983,19 +983,19 @@ function node_feed($nodes = 0, $channel = array()) {
/*
** Load the specified node:
*/
-
+
$item = node_load(array("nid" => $node->nid));
-
+
/*
** Transform the node information into an RSS item:
*/
-
+
$items .= format_rss_item($item->title, url(node_url($node)), ($item->teaser ? $item->teaser : $item->body));
/*
** Determine the publication date:
*/
-
+
if ($item->updated > $pubdate) {
$pubdate = $item->updated;
}
diff --git a/modules/user.module b/modules/user.module
index 2759ff4d7..bb13b1e62 100644
--- a/modules/user.module
+++ b/modules/user.module
@@ -37,8 +37,13 @@ function sess_read($key) {
}
function sess_write($key, $value) {
+ global $user;
+
+ db_query("UPDATE {sessions} SET uid = %d, hostname = '%s', session = '%s', timestamp = %d WHERE sid = '$key'", $user->uid, $_SERVER["REMOTE_ADDR"], $value, time());
- db_query("UPDATE {sessions} SET hostname = '%s', session = '%s', timestamp = %d WHERE sid = '$key'", $_SERVER["REMOTE_ADDR"], $value, time());
+ if (!db_affected_rows()) {
+ db_query("INSERT INTO {sessions} (uid, sid, hostname, session, timestamp) values(%d, '%s', '%s', '%s', %d)", $user->uid, $key, $_SERVER["REMOTE_ADDR"], $value, time());
+ }
return '';
}
@@ -142,7 +147,7 @@ function user_save($account, $array = array()) {
}
else {
$array["timestamp"] = time();
- $array["uid"] = db_next_id("user_uid");
+ $array["uid"] = db_next_id("users_uid");
foreach ($array as $key => $value) {
if ($key == "pass") {
@@ -587,7 +592,7 @@ function user_login($edit = array(), $msg = "") {
** Try to log in the user locally:
*/
- if (!$user) {
+ if (!$user->uid) {
$name = $edit["name"];
$pass = $edit["pass"];
$user = user_load(array("name" => $name, "pass" => $pass, "status" => 1));
@@ -607,7 +612,7 @@ function user_login($edit = array(), $msg = "") {
** When possible, determine corrosponding external auth source. Invoke source, and login user if successful:
*/
- if (!$user && $server && $result = user_get_authmaps("$name@$server")) {
+ if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) {
if (module_invoke(key($result), "auth", $name, $pass, $server)) {
$user = user_external_load("$name@$server");
watchdog("user", "external load: $name@$server, module: ". key($result));
@@ -621,7 +626,7 @@ function user_login($edit = array(), $msg = "") {
** Try each external authentication source in series. Register user if successful.
*/
- else if (!$user && $server) {
+ else if (!$user->uid && $server) {
foreach (module_list() as $module) {
if (module_hook($module, "auth")) {
if (module_invoke($module, "auth", $name, $pass, $server)) {
@@ -638,24 +643,8 @@ function user_login($edit = array(), $msg = "") {
if ($user->uid) {
watchdog("user", "session opened for '$user->name'");
- /*
- ** Write session ID to database:
- ** (TODO: Currently we only save the session if a user is logged in.
- ** we should also add support for anonymous user sessions.)
- */
-
- if ($user->uid) {
- // update the user's session if it already exists
- db_query("UPDATE {sessions} SET timestamp = '%d' WHERE sid = '%s'", time(), session_id());
-
- // if no changes, this is a new session to be added
- if (!db_affected_rows()) {
- db_query("INSERT INTO {sessions} (uid, sid, hostname, timestamp) values(%d, '%s', '%s', %d)", $user->uid, session_id(), $_SERVER["REMOTE_ADDR"], time());
- }
-
- // also update the user table timestamp noting user has logged in
- db_query("UPDATE {users} SET timestamp = '%d' WHERE uid = '%s'", time(), $user->uid);
- }
+ // update the user table timestamp noting user has logged in
+ db_query("UPDATE {users} SET timestamp = '%d' WHERE uid = '%s'", time(), $user->uid);
/*
** If the user wants to be remembered, set the proper cookie such
diff --git a/modules/user/user.module b/modules/user/user.module
index 2759ff4d7..bb13b1e62 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -37,8 +37,13 @@ function sess_read($key) {
}
function sess_write($key, $value) {
+ global $user;
+
+ db_query("UPDATE {sessions} SET uid = %d, hostname = '%s', session = '%s', timestamp = %d WHERE sid = '$key'", $user->uid, $_SERVER["REMOTE_ADDR"], $value, time());
- db_query("UPDATE {sessions} SET hostname = '%s', session = '%s', timestamp = %d WHERE sid = '$key'", $_SERVER["REMOTE_ADDR"], $value, time());
+ if (!db_affected_rows()) {
+ db_query("INSERT INTO {sessions} (uid, sid, hostname, session, timestamp) values(%d, '%s', '%s', '%s', %d)", $user->uid, $key, $_SERVER["REMOTE_ADDR"], $value, time());
+ }
return '';
}
@@ -142,7 +147,7 @@ function user_save($account, $array = array()) {
}
else {
$array["timestamp"] = time();
- $array["uid"] = db_next_id("user_uid");
+ $array["uid"] = db_next_id("users_uid");
foreach ($array as $key => $value) {
if ($key == "pass") {
@@ -587,7 +592,7 @@ function user_login($edit = array(), $msg = "") {
** Try to log in the user locally:
*/
- if (!$user) {
+ if (!$user->uid) {
$name = $edit["name"];
$pass = $edit["pass"];
$user = user_load(array("name" => $name, "pass" => $pass, "status" => 1));
@@ -607,7 +612,7 @@ function user_login($edit = array(), $msg = "") {
** When possible, determine corrosponding external auth source. Invoke source, and login user if successful:
*/
- if (!$user && $server && $result = user_get_authmaps("$name@$server")) {
+ if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) {
if (module_invoke(key($result), "auth", $name, $pass, $server)) {
$user = user_external_load("$name@$server");
watchdog("user", "external load: $name@$server, module: ". key($result));
@@ -621,7 +626,7 @@ function user_login($edit = array(), $msg = "") {
** Try each external authentication source in series. Register user if successful.
*/
- else if (!$user && $server) {
+ else if (!$user->uid && $server) {
foreach (module_list() as $module) {
if (module_hook($module, "auth")) {
if (module_invoke($module, "auth", $name, $pass, $server)) {
@@ -638,24 +643,8 @@ function user_login($edit = array(), $msg = "") {
if ($user->uid) {
watchdog("user", "session opened for '$user->name'");
- /*
- ** Write session ID to database:
- ** (TODO: Currently we only save the session if a user is logged in.
- ** we should also add support for anonymous user sessions.)
- */
-
- if ($user->uid) {
- // update the user's session if it already exists
- db_query("UPDATE {sessions} SET timestamp = '%d' WHERE sid = '%s'", time(), session_id());
-
- // if no changes, this is a new session to be added
- if (!db_affected_rows()) {
- db_query("INSERT INTO {sessions} (uid, sid, hostname, timestamp) values(%d, '%s', '%s', %d)", $user->uid, session_id(), $_SERVER["REMOTE_ADDR"], time());
- }
-
- // also update the user table timestamp noting user has logged in
- db_query("UPDATE {users} SET timestamp = '%d' WHERE uid = '%s'", time(), $user->uid);
- }
+ // update the user table timestamp noting user has logged in
+ db_query("UPDATE {users} SET timestamp = '%d' WHERE uid = '%s'", time(), $user->uid);
/*
** If the user wants to be remembered, set the proper cookie such