X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Futil.php;h=1a83f0fffa9a140d058ab2643115c8be442088e9;hb=c8162f7d978c56c29a504302419b5569c0aa37f3;hp=8f357e19f1e2b9587bbf53b197dcb8ff19680d3d;hpb=91af9de7e4e477da422880fe9b7f3a49617dc77e;p=quix0rs-gnu-social.git diff --git a/lib/util.php b/lib/util.php index 8f357e19f1..1a83f0fffa 100644 --- a/lib/util.php +++ b/lib/util.php @@ -97,7 +97,7 @@ function common_element_end($tag) { 'br', 'param', 'img', 'area', 'input', 'col'); global $xw; - # TODO check namespace + # XXX: check namespace if (in_array($tag, $empty_tag)) { $xw->endElement(); } else { @@ -106,10 +106,12 @@ function common_element_end($tag) { } function common_element($tag, $attrs=NULL, $content=NULL) { - common_element_start($tag, $attrs); - global $xw; - $xw->text($content); - common_element_end($tag); + common_element_start($tag, $attrs); + global $xw; + if ($content) { + $xw->text($content); + } + common_element_end($tag); } function common_start_xml($doc=NULL, $public=NULL, $system=NULL) { @@ -419,8 +421,12 @@ function common_check_user($nickname, $password) { if (is_null($user)) { return false; } else { - return (0 == strcmp(common_munge_password($password, $user->id), - $user->password)); + if (0 == strcmp(common_munge_password($password, $user->id), + $user->password)) { + return $user; + } else { + return false; + } } } @@ -439,19 +445,26 @@ function common_ensure_session() { } } -function common_set_user($nickname) { - if (is_null($nickname) && common_have_session()) { +# Three kinds of arguments: +# 1) a user object +# 2) a nickname +# 3) NULL to clear + +function common_set_user($user) { + if (is_null($user) && common_have_session()) { unset($_SESSION['userid']); return true; - } else { + } else if (is_string($user)) { + $nickname = $user; $user = User::staticGet('nickname', $nickname); - if ($user) { - common_ensure_session(); - $_SESSION['userid'] = $user->id; - return true; - } else { - return false; - } + } else if (!($user instanceof User)) { + return false; + } + + if ($user) { + common_ensure_session(); + $_SESSION['userid'] = $user->id; + return $user; } return false; } @@ -475,10 +488,13 @@ function common_set_cookie($key, $value, $expiration=0) { define('REMEMBERME', 'rememberme'); define('REMEMBERME_EXPIRY', 30 * 24 * 60 * 60); -function common_rememberme() { - $user = common_current_user(); +function common_rememberme($user=NULL) { if (!$user) { - return false; + $user = common_current_user(); + if (!$user) { + common_debug('No current user to remember', __FILE__); + return false; + } } $rm = new Remember_me(); $rm->code = common_good_rand(16); @@ -486,6 +502,7 @@ function common_rememberme() { $result = $rm->insert(); if (!$result) { common_log_db_error($rm, 'INSERT', __FILE__); + common_debug('Error adding rememberme record for ' . $user->nickname, __FILE__); return false; } common_log(LOG_INFO, 'adding rememberme cookie for ' . $user->nickname); @@ -517,7 +534,7 @@ function common_remembered_user() { common_real_login(false); # We issue a new cookie, so they can log in # automatically again after this session - common_rememberme(); + common_rememberme($user); } } } @@ -713,7 +730,11 @@ function common_fancy_url($action, $args=NULL) { case 'openidsettings': return common_path('settings/openid'); case 'newnotice': - return common_path('notice/new'); + if ($args && $args['replyto']) { + return common_path('notice/new?replyto='.$args['replyto']); + } else { + return common_path('notice/new'); + } case 'shownotice': return common_path('notice/'.$args['notice']); case 'xrds':