From eb2f9c98ac115ce67e9a740b200c832153ffa05c Mon Sep 17 00:00:00 2001
From: Evan Prodromou
Date: Tue, 23 Dec 2008 14:21:29 -0500
Subject: replace NULL with null
Another global search-and-replace update. Here, I've replaced the PHP
keyword 'NULL' with its lowercase version. This is another PEAR code
standards change.
darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz
---
_darcs/tentative_pristine | 29165 ++------------------------------------------
1 file changed, 1223 insertions(+), 27942 deletions(-)
(limited to '_darcs/tentative_pristine')
diff --git a/_darcs/tentative_pristine b/_darcs/tentative_pristine
index ffadf4b71..62c02a301 100644
--- a/_darcs/tentative_pristine
+++ b/_darcs/tentative_pristine
@@ -1,28057 +1,1338 @@
-hunk ./actions/accesstoken.php 25
-- function handle($args) {
-- parent::handle($args);
-- try {
-- common_debug('getting request from env variables', __FILE__);
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-- common_debug('getting a server', __FILE__);
-- $server = omb_oauth_server();
-- common_debug('fetching the access token', __FILE__);
-- $token = $server->fetch_access_token($req);
-- common_debug('got this token: "'.print_r($token,TRUE).'"', __FILE__);
-- common_debug('printing the access token', __FILE__);
-- print $token;
-- } catch (OAuthException $e) {
-- common_server_error($e->getMessage());
-- }
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ try {
-+ common_debug('getting request from env variables', __FILE__);
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-+ common_debug('getting a server', __FILE__);
-+ $server = omb_oauth_server();
-+ common_debug('fetching the access token', __FILE__);
-+ $token = $server->fetch_access_token($req);
-+ common_debug('got this token: "'.print_r($token,TRUE).'"', __FILE__);
-+ common_debug('printing the access token', __FILE__);
-+ print $token;
-+ } catch (OAuthException $e) {
-+ common_server_error($e->getMessage());
-+ }
-+ }
-hunk ./actions/all.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/all.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/all.php 30
-- $nickname = common_canonical_nickname($this->arg('nickname'));
-- $user = User::staticGet('nickname', $nickname);
-+ $nickname = common_canonical_nickname($this->arg('nickname'));
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/all.php 33
-- if (!$user) {
-- $this->client_error(_('No such user.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error(_('No such user.'));
-+ return;
-+ }
-hunk ./actions/all.php 38
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/all.php 40
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/all.php 45
-- # Looks like we're good; show the header
-+ # Looks like we're good; show the header
-hunk ./actions/all.php 47
-- common_show_header(sprintf(_("%s and friends"), $profile->nickname),
-- array($this, 'show_header'), $user,
-- array($this, 'show_top'));
-+ common_show_header(sprintf(_("%s and friends"), $profile->nickname),
-+ array($this, 'show_header'), $user,
-+ array($this, 'show_top'));
-hunk ./actions/all.php 51
-- $this->show_notices($user);
-+ $this->show_notices($user);
-hunk ./actions/all.php 53
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/all.php 56
-- function show_header($user) {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('allrss', array('nickname' =>
-- $user->nickname)),
-- 'type' => 'application/rss+xml',
-- 'title' => sprintf(_('Feed for friends of %s'), $user->nickname)));
-- }
-+ function show_header($user) {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('allrss', array('nickname' =>
-+ $user->nickname)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => sprintf(_('Feed for friends of %s'), $user->nickname)));
-+ }
-hunk ./actions/all.php 64
-- function show_top($user) {
-- $cur = common_current_user();
-+ function show_top($user) {
-+ $cur = common_current_user();
-hunk ./actions/all.php 67
-- if ($cur && $cur->id == $user->id) {
-- common_notice_form('all');
-- }
-+ if ($cur && $cur->id == $user->id) {
-+ common_notice_form('all');
-+ }
-hunk ./actions/all.php 71
-- $this->views_menu();
-+ $this->views_menu();
-hunk ./actions/all.php 73
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('allrss', array('nickname' => $user->nickname)),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'allrss')));
-- }
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('allrss', array('nickname' => $user->nickname)),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'allrss')));
-+ }
-hunk ./actions/all.php 79
-- function show_notices($user) {
-+ function show_notices($user) {
-hunk ./actions/all.php 81
-- $page = $this->trimmed('page');
-- if (!$page) {
-- $page = 1;
-- }
-+ $page = $this->trimmed('page');
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/all.php 86
-- $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-+ $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-hunk ./actions/all.php 90
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'all', array('nickname' => $user->nickname));
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'all', array('nickname' => $user->nickname));
-+ }
hunk ./actions/allrss.php 28
-- var $user = NULL;
-+ var $user = NULL;
-hunk ./actions/allrss.php 30
-- function init() {
-- $nickname = $this->trimmed('nickname');
-- $this->user = User::staticGet('nickname', $nickname);
-+ function init() {
-+ $nickname = $this->trimmed('nickname');
-+ $this->user = User::staticGet('nickname', $nickname);
-hunk ./actions/allrss.php 34
-- if (!$this->user) {
-- common_user_error(_('No such user.'));
-- return false;
-- } else {
-- return true;
-- }
-- }
-+ if (!$this->user) {
-+ common_user_error(_('No such user.'));
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ }
-hunk ./actions/allrss.php 42
-- function get_notices($limit=0) {
-+ function get_notices($limit=0) {
-hunk ./actions/allrss.php 44
-- $user = $this->user;
--
-- $notice = $user->noticesWithFriends(0, $limit);
--
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ $user = $this->user;
-+
-+ $notice = $user->noticesWithFriends(0, $limit);
-+
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/allrss.php 52
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/allrss.php 55
-- function get_channel() {
-- $user = $this->user;
-- $c = array('url' => common_local_url('allrss',
-- array('nickname' =>
-- $user->nickname)),
-- 'title' => sprintf(_('%s and friends'), $user->nickname),
-- 'link' => common_local_url('all',
-- array('nickname' =>
-- $user->nickname)),
-- 'description' => sprintf(_('Feed for friends of %s'), $user->nickname));
-- return $c;
-- }
-+ function get_channel() {
-+ $user = $this->user;
-+ $c = array('url' => common_local_url('allrss',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'title' => sprintf(_('%s and friends'), $user->nickname),
-+ 'link' => common_local_url('all',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'description' => sprintf(_('Feed for friends of %s'), $user->nickname));
-+ return $c;
-+ }
-hunk ./actions/allrss.php 68
-- function get_image() {
-- $user = $this->user;
-- $profile = $user->getProfile();
-- if (!$profile) {
-- return NULL;
-- }
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- return ($avatar) ? $avatar->url : NULL;
-- }
-+ function get_image() {
-+ $user = $this->user;
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ return NULL;
-+ }
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ return ($avatar) ? $avatar->url : NULL;
-+ }
-hunk ./actions/api.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/api.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/api.php 24
-- var $user;
-- var $content_type;
-- var $api_arg;
-- var $api_method;
-- var $api_action;
-+ var $user;
-+ var $content_type;
-+ var $api_arg;
-+ var $api_method;
-+ var $api_action;
-hunk ./actions/api.php 30
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/api.php 33
-- $this->api_action = $this->arg('apiaction');
-- $method = $this->arg('method');
-- $argument = $this->arg('argument');
-+ $this->api_action = $this->arg('apiaction');
-+ $method = $this->arg('method');
-+ $argument = $this->arg('argument');
-hunk ./actions/api.php 37
-- if (isset($argument)) {
-- $cmdext = explode('.', $argument);
-- $this->api_arg = $cmdext[0];
-- $this->api_method = $method;
-- $this->content_type = strtolower($cmdext[1]);
-- } else {
-+ if (isset($argument)) {
-+ $cmdext = explode('.', $argument);
-+ $this->api_arg = $cmdext[0];
-+ $this->api_method = $method;
-+ $this->content_type = strtolower($cmdext[1]);
-+ } else {
-hunk ./actions/api.php 44
-- # Requested format / content-type will be an extension on the method
-- $cmdext = explode('.', $method);
-- $this->api_method = $cmdext[0];
-- $this->content_type = strtolower($cmdext[1]);
-- }
-+ # Requested format / content-type will be an extension on the method
-+ $cmdext = explode('.', $method);
-+ $this->api_method = $cmdext[0];
-+ $this->content_type = strtolower($cmdext[1]);
-+ }
-hunk ./actions/api.php 50
-- if ($this->requires_auth()) {
-- if (!isset($_SERVER['PHP_AUTH_USER'])) {
-+ if ($this->requires_auth()) {
-+ if (!isset($_SERVER['PHP_AUTH_USER'])) {
-hunk ./actions/api.php 53
-- # This header makes basic auth go
-- header('WWW-Authenticate: Basic realm="Laconica API"');
-+ # This header makes basic auth go
-+ header('WWW-Authenticate: Basic realm="Laconica API"');
-hunk ./actions/api.php 56
-- # If the user hits cancel -- bam!
-- $this->show_basic_auth_error();
-- } else {
-- $nickname = $_SERVER['PHP_AUTH_USER'];
-- $password = $_SERVER['PHP_AUTH_PW'];
-- $user = common_check_user($nickname, $password);
-+ # If the user hits cancel -- bam!
-+ $this->show_basic_auth_error();
-+ } else {
-+ $nickname = $_SERVER['PHP_AUTH_USER'];
-+ $password = $_SERVER['PHP_AUTH_PW'];
-+ $user = common_check_user($nickname, $password);
-hunk ./actions/api.php 63
-- if ($user) {
-- $this->user = $user;
-- $this->process_command();
-- } else {
-- # basic authentication failed
-- $this->show_basic_auth_error();
-- }
-- }
-- } else {
-+ if ($user) {
-+ $this->user = $user;
-+ $this->process_command();
-+ } else {
-+ # basic authentication failed
-+ $this->show_basic_auth_error();
-+ }
-+ }
-+ } else {
-hunk ./actions/api.php 73
-- # Look for the user in the session
-- if (common_logged_in()) {
-- $this->user = common_current_user();
-- }
-+ # Look for the user in the session
-+ if (common_logged_in()) {
-+ $this->user = common_current_user();
-+ }
-hunk ./actions/api.php 78
-- $this->process_command();
-- }
-- }
-+ $this->process_command();
-+ }
-+ }
-hunk ./actions/api.php 82
-- function process_command() {
-- $action = "twitapi$this->api_action";
-- $actionfile = INSTALLDIR."/actions/$action.php";
-+ function process_command() {
-+ $action = "twitapi$this->api_action";
-+ $actionfile = INSTALLDIR."/actions/$action.php";
-hunk ./actions/api.php 86
-- if (file_exists($actionfile)) {
-- require_once($actionfile);
-- $action_class = ucfirst($action)."Action";
-- $action_obj = new $action_class();
-+ if (file_exists($actionfile)) {
-+ require_once($actionfile);
-+ $action_class = ucfirst($action)."Action";
-+ $action_obj = new $action_class();
-hunk ./actions/api.php 95
-- if (method_exists($action_obj, $this->api_method)) {
-- $apidata = array( 'content-type' => $this->content_type,
-- 'api_method' => $this->api_method,
-- 'api_arg' => $this->api_arg,
-- 'user' => $this->user);
-+ if (method_exists($action_obj, $this->api_method)) {
-+ $apidata = array( 'content-type' => $this->content_type,
-+ 'api_method' => $this->api_method,
-+ 'api_arg' => $this->api_arg,
-+ 'user' => $this->user);
-hunk ./actions/api.php 101
-- call_user_func(array($action_obj, $this->api_method), $_REQUEST, $apidata);
-- } else {
-- common_user_error("API method not found!", $code=404);
-- }
-- } else {
-- common_user_error("API method not found!", $code=404);
-- }
-- }
-+ call_user_func(array($action_obj, $this->api_method), $_REQUEST, $apidata);
-+ } else {
-+ common_user_error("API method not found!", $code=404);
-+ }
-+ } else {
-+ common_user_error("API method not found!", $code=404);
-+ }
-+ }
-hunk ./actions/api.php 110
-- # Whitelist of API methods that don't need authentication
-- function requires_auth() {
-- static $noauth = array( 'statuses/public_timeline',
-- 'statuses/show',
-- 'users/show',
-- 'help/test',
-- 'help/downtime_schedule');
-+ # Whitelist of API methods that don't need authentication
-+ function requires_auth() {
-+ static $noauth = array( 'statuses/public_timeline',
-+ 'statuses/show',
-+ 'users/show',
-+ 'help/test',
-+ 'help/downtime_schedule');
-hunk ./actions/api.php 118
-- static $bareauth = array('statuses/user_timeline',
-- 'statuses/friends',
-- 'statuses/followers',
-- 'favorites/favorites');
-+ static $bareauth = array('statuses/user_timeline',
-+ 'statuses/friends',
-+ 'statuses/followers',
-+ 'favorites/favorites');
-hunk ./actions/api.php 129
-- $fullname = "$this->api_action/$this->api_method";
-+ $fullname = "$this->api_action/$this->api_method";
-hunk ./actions/api.php 131
-- if (in_array($fullname, $bareauth)) {
-- # bareauth: only needs auth if without an argument
-- if ($this->api_arg) {
-- return false;
-- } else {
-- return true;
-- }
-- } else if (in_array($fullname, $noauth)) {
-- # noauth: never needs auth
-- return false;
-- } else {
-- # everybody else needs auth
-- return true;
-- }
-- }
-+ if (in_array($fullname, $bareauth)) {
-+ # bareauth: only needs auth if without an argument
-+ if ($this->api_arg) {
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ } else if (in_array($fullname, $noauth)) {
-+ # noauth: never needs auth
-+ return false;
-+ } else {
-+ # everybody else needs auth
-+ return true;
-+ }
-+ }
-hunk ./actions/api.php 147
-- function show_basic_auth_error() {
-- header('HTTP/1.1 401 Unauthorized');
-- $msg = 'Could not authenticate you.';
-+ function show_basic_auth_error() {
-+ header('HTTP/1.1 401 Unauthorized');
-+ $msg = 'Could not authenticate you.';
-hunk ./actions/api.php 151
-- if ($this->content_type == 'xml') {
-- header('Content-Type: application/xml; charset=utf-8');
-- common_start_xml();
-- common_element_start('hash');
-- common_element('error', NULL, $msg);
-- common_element('request', NULL, $_SERVER['REQUEST_URI']);
-- common_element_end('hash');
-- common_end_xml();
-- } else if ($this->content_type == 'json') {
-- header('Content-Type: application/json; charset=utf-8');
-- $error_array = array('error' => $msg, 'request' => $_SERVER['REQUEST_URI']);
-- print(json_encode($error_array));
-- } else {
-- header('Content-type: text/plain');
-- print "$msg\n";
-- }
-- }
-+ if ($this->content_type == 'xml') {
-+ header('Content-Type: application/xml; charset=utf-8');
-+ common_start_xml();
-+ common_element_start('hash');
-+ common_element('error', NULL, $msg);
-+ common_element('request', NULL, $_SERVER['REQUEST_URI']);
-+ common_element_end('hash');
-+ common_end_xml();
-+ } else if ($this->content_type == 'json') {
-+ header('Content-Type: application/json; charset=utf-8');
-+ $error_array = array('error' => $msg, 'request' => $_SERVER['REQUEST_URI']);
-+ print(json_encode($error_array));
-+ } else {
-+ header('Content-type: text/plain');
-+ print "$msg\n";
-+ }
-+ }
-hunk ./actions/api.php 169
-- function is_readonly() {
-- # NOTE: before handle(), can't use $this->arg
-- $apiaction = $_REQUEST['apiaction'];
-- $method = $_REQUEST['method'];
-- list($cmdtext, $fmt) = explode('.', $method);
-+ function is_readonly() {
-+ # NOTE: before handle(), can't use $this->arg
-+ $apiaction = $_REQUEST['apiaction'];
-+ $method = $_REQUEST['method'];
-+ list($cmdtext, $fmt) = explode('.', $method);
-hunk ./actions/api.php 175
-- static $write_methods = array(
-- 'account' => array('update_location', 'update_delivery_device', 'end_session'),
-- 'blocks' => array('create', 'destroy'),
-- 'direct_messages' => array('create', 'destroy'),
-- 'favorites' => array('create', 'destroy'),
-- 'friendships' => array('create', 'destroy'),
-- 'help' => array(),
-- 'notifications' => array('follow', 'leave'),
-- 'statuses' => array('update', 'destroy'),
-- 'users' => array()
-- );
-+ static $write_methods = array(
-+ 'account' => array('update_location', 'update_delivery_device', 'end_session'),
-+ 'blocks' => array('create', 'destroy'),
-+ 'direct_messages' => array('create', 'destroy'),
-+ 'favorites' => array('create', 'destroy'),
-+ 'friendships' => array('create', 'destroy'),
-+ 'help' => array(),
-+ 'notifications' => array('follow', 'leave'),
-+ 'statuses' => array('update', 'destroy'),
-+ 'users' => array()
-+ );
-hunk ./actions/api.php 187
-- if (array_key_exists($apiaction, $write_methods)) {
-- if (!in_array($cmdtext, $write_methods[$apiaction])) {
-- return true;
-- }
-- }
-+ if (array_key_exists($apiaction, $write_methods)) {
-+ if (!in_array($cmdtext, $write_methods[$apiaction])) {
-+ return true;
-+ }
-+ }
-hunk ./actions/api.php 193
-- return false;
-- }
-+ return false;
-+ }
-hunk ./actions/avatarbynickname.php 27
-- $this->client_error(_('No nickname.'));
-- return;
-- }
-- $size = $this->trimmed('size');
-+ $this->client_error(_('No nickname.'));
-+ return;
-+ }
-+ $size = $this->trimmed('size');
-hunk ./actions/avatarbynickname.php 32
-- $this->client_error(_('No size.'));
-- return;
-- }
-- $size = strtolower($size);
-- if (!in_array($size, array('original', '96', '48', '24'))) {
-- $this->client_error(_('Invalid size.'));
-- return;
-- }
-+ $this->client_error(_('No size.'));
-+ return;
-+ }
-+ $size = strtolower($size);
-+ if (!in_array($size, array('original', '96', '48', '24'))) {
-+ $this->client_error(_('Invalid size.'));
-+ return;
-+ }
-hunk ./actions/avatarbynickname.php 41
-- $user = User::staticGet('nickname', $nickname);
-- if (!$user) {
-- $this->client_error(_('No such user.'));
-- return;
-- }
-- $profile = $user->getProfile();
-- if (!$profile) {
-- $this->client_error(_('User has no profile.'));
-- return;
-- }
-- if ($size == 'original') {
-- $avatar = $profile->getOriginal();
-- } else {
-- $avatar = $profile->getAvatar($size+0);
-- }
-+ $user = User::staticGet('nickname', $nickname);
-+ if (!$user) {
-+ $this->client_error(_('No such user.'));
-+ return;
-+ }
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ $this->client_error(_('User has no profile.'));
-+ return;
-+ }
-+ if ($size == 'original') {
-+ $avatar = $profile->getOriginal();
-+ } else {
-+ $avatar = $profile->getAvatar($size+0);
-+ }
-hunk ./actions/avatarbynickname.php 57
-- if ($avatar) {
-- $url = $avatar->url;
-- } else {
-- if ($size == 'original') {
-- $url = common_default_avatar(AVATAR_PROFILE_SIZE);
-- } else {
-- $url = common_default_avatar($size+0);
-- }
-- }
-- common_redirect($url, 302);
-- }
-+ if ($avatar) {
-+ $url = $avatar->url;
-+ } else {
-+ if ($size == 'original') {
-+ $url = common_default_avatar(AVATAR_PROFILE_SIZE);
-+ } else {
-+ $url = common_default_avatar($size+0);
-+ }
-+ }
-+ common_redirect($url, 302);
-+ }
-hunk ./actions/block.php 35
-- $token = $this->trimmed('token');
-+ $token = $this->trimmed('token');
-hunk ./actions/block.php 37
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/block.php 78
-- common_show_header(_('Block user'));
-+ common_show_header(_('Block user'));
-hunk ./actions/confirmaddress.php 46
-- $type = $confirm->address_type;
-- if (!in_array($type, array('email', 'jabber', 'sms'))) {
-- $this->server_error(sprintf(_('Unrecognized address type %s'), $type));
-- return;
-- }
-+ $type = $confirm->address_type;
-+ if (!in_array($type, array('email', 'jabber', 'sms'))) {
-+ $this->server_error(sprintf(_('Unrecognized address type %s'), $type));
-+ return;
-+ }
-hunk ./actions/confirmaddress.php 53
-- return;
-- }
-+ return;
-+ }
-hunk ./actions/confirmaddress.php 60
-- $cur->$type = $confirm->address;
-+ $cur->$type = $confirm->address;
-hunk ./actions/confirmaddress.php 62
-- if ($type == 'sms') {
-- $cur->carrier = ($confirm->address_extra)+0;
-- $carrier = Sms_carrier::staticGet($cur->carrier);
-- $cur->smsemail = $carrier->toEmailAddress($cur->sms);
-- }
-+ if ($type == 'sms') {
-+ $cur->carrier = ($confirm->address_extra)+0;
-+ $carrier = Sms_carrier::staticGet($cur->carrier);
-+ $cur->smsemail = $carrier->toEmailAddress($cur->sms);
-+ }
-hunk ./actions/confirmaddress.php 68
-- $result = $cur->updateKeys($orig_user);
-+ $result = $cur->updateKeys($orig_user);
-hunk ./actions/confirmaddress.php 71
-- common_log_db_error($cur, 'UPDATE', __FILE__);
-+ common_log_db_error($cur, 'UPDATE', __FILE__);
-hunk ./actions/confirmaddress.php 76
-- if ($type == 'email') {
-- $cur->emailChanged();
-- }
-+ if ($type == 'email') {
-+ $cur->emailChanged();
-+ }
-hunk ./actions/confirmaddress.php 83
-- common_log_db_error($confirm, 'DELETE', __FILE__);
-+ common_log_db_error($confirm, 'DELETE', __FILE__);
-hunk ./actions/deletenotice.php 25
-- function handle($args) {
-- parent::handle($args);
-- # XXX: Ajax!
-+ function handle($args) {
-+ parent::handle($args);
-+ # XXX: Ajax!
-hunk ./actions/deletenotice.php 29
-- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->delete_notice();
-- } else if ($_SERVER['REQUEST_METHOD'] == 'GET') {
-- $this->show_form();
-- }
-- }
-+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->delete_notice();
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'GET') {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/deletenotice.php 36
-- function get_instructions() {
-- return _('You are about to permanently delete a notice. Once this is done, it cannot be undone.');
-- }
-+ function get_instructions() {
-+ return _('You are about to permanently delete a notice. Once this is done, it cannot be undone.');
-+ }
-hunk ./actions/deletenotice.php 40
-- function get_title() {
-- return _('Delete notice');
-- }
-+ function get_title() {
-+ return _('Delete notice');
-+ }
+- var $user = NULL;
++ var $user = null;
+hunk ./actions/allrss.php 72
+- return NULL;
++ return null;
+hunk ./actions/allrss.php 75
+- return ($avatar) ? $avatar->url : NULL;
++ return ($avatar) ? $avatar->url : null;
+hunk ./actions/api.php 155
+- common_element('error', NULL, $msg);
+- common_element('request', NULL, $_SERVER['REQUEST_URI']);
++ common_element('error', null, $msg);
++ common_element('request', null, $_SERVER['REQUEST_URI']);
+hunk ./actions/block.php 24
+- var $profile = NULL;
++ var $profile = null;
+hunk ./actions/block.php 80
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/confirmaddress.php 91
+- common_element('p', NULL,
++ common_element('p', null,
hunk ./actions/deletenotice.php 44
-- function show_form($error=NULL) {
-- $user = common_current_user();
-+ function show_form($error=NULL) {
-+ $user = common_current_user();
-hunk ./actions/deletenotice.php 47
-- common_show_header($this->get_title(), array($this, 'show_header'), $error,
-- array($this, 'show_top'));
-- common_element_start('form', array('id' => 'notice_delete_form',
-- 'method' => 'post',
-- 'action' => common_local_url('deletenotice')));
-- common_hidden('token', common_session_token());
-- common_hidden('notice', $this->trimmed('notice'));
-- common_element_start('p');
-- common_element('span', array('id' => 'confirmation_text'), _('Are you sure you want to delete this notice?'));
-+ common_show_header($this->get_title(), array($this, 'show_header'), $error,
-+ array($this, 'show_top'));
-+ common_element_start('form', array('id' => 'notice_delete_form',
-+ 'method' => 'post',
-+ 'action' => common_local_url('deletenotice')));
-+ common_hidden('token', common_session_token());
-+ common_hidden('notice', $this->trimmed('notice'));
-+ common_element_start('p');
-+ common_element('span', array('id' => 'confirmation_text'), _('Are you sure you want to delete this notice?'));
-hunk ./actions/deletenotice.php 57
-- common_element('input', array('id' => 'submit_no',
-- 'name' => 'submit',
-- 'type' => 'submit',
-- 'value' => _('No')));
-- common_element('input', array('id' => 'submit_yes',
-- 'name' => 'submit',
-- 'type' => 'submit',
-- 'value' => _('Yes')));
-- common_element_end('p');
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_element('input', array('id' => 'submit_no',
-+ 'name' => 'submit',
-+ 'type' => 'submit',
-+ 'value' => _('No')));
-+ common_element('input', array('id' => 'submit_yes',
-+ 'name' => 'submit',
-+ 'type' => 'submit',
-+ 'value' => _('Yes')));
-+ common_element_end('p');
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/deletenotice.php 70
-- function delete_notice() {
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-- $url = common_get_returnto();
-- $confirmed = $this->trimmed('submit');
-- if ($confirmed == _('Yes')) {
-- $user = common_current_user();
-- $notice_id = $this->trimmed('notice');
-- $notice = Notice::staticGet($notice_id);
-- $replies = new Reply;
-- $replies->get('notice_id', $notice_id);
-+ function delete_notice() {
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-+ $url = common_get_returnto();
-+ $confirmed = $this->trimmed('submit');
-+ if ($confirmed == _('Yes')) {
-+ $user = common_current_user();
-+ $notice_id = $this->trimmed('notice');
-+ $notice = Notice::staticGet($notice_id);
-+ $replies = new Reply;
-+ $replies->get('notice_id', $notice_id);
-hunk ./actions/deletenotice.php 86
-- common_dequeue_notice($notice);
-- if (common_config('memcached', 'enabled')) {
-- $notice->blowSubsCache();
-- }
-- $replies->delete();
-- $notice->delete();
-- } else {
-- if ($url) {
-- common_set_returnto(NULL);
-- } else {
-- $url = common_local_url('public');
-- }
-- }
-- common_redirect($url);
-- }
-+ common_dequeue_notice($notice);
-+ if (common_config('memcached', 'enabled')) {
-+ $notice->blowSubsCache();
-+ }
-+ $replies->delete();
-+ $notice->delete();
-+ } else {
-+ if ($url) {
-+ common_set_returnto(NULL);
-+ } else {
-+ $url = common_local_url('public');
-+ }
-+ }
-+ common_redirect($url);
-+ }
-hunk ./actions/deleteprofile.php 35
-- function get_instructions() {
-- return _('Export and delete your user information.');
-- }
-+ function get_instructions() {
-+ return _('Export and delete your user information.');
-+ }
+- function show_form($error=NULL) {
++ function show_form($error=null) {
+hunk ./actions/deletenotice.php 94
+- common_set_returnto(NULL);
++ common_set_returnto(null);
hunk ./actions/deleteprofile.php 39
-- function form_header($title, $msg=NULL, $success=false) {
-- common_show_header($title,
-- NULL,
-- array($msg, $success),
-- array($this, 'show_top'));
-- }
-+ function form_header($title, $msg=NULL, $success=false) {
-+ common_show_header($title,
-+ NULL,
-+ array($msg, $success),
-+ array($this, 'show_top'));
-+ }
-hunk ./actions/deleteprofile.php 46
-- function show_feeds_list($feeds) {
-- common_element_start('div', array('class' => 'feedsdel'));
-- common_element('p', null, 'Feeds:');
-- common_element_start('ul', array('class' => 'xoxo'));
-+ function show_feeds_list($feeds) {
-+ common_element_start('div', array('class' => 'feedsdel'));
-+ common_element('p', null, 'Feeds:');
-+ common_element_start('ul', array('class' => 'xoxo'));
-hunk ./actions/deleteprofile.php 51
-- foreach ($feeds as $key => $value) {
-- $this->common_feed_item($feeds[$key]);
-- }
-- common_element_end('ul');
-- common_element_end('div');
-- }
-+ foreach ($feeds as $key => $value) {
-+ $this->common_feed_item($feeds[$key]);
-+ }
-+ common_element_end('ul');
-+ common_element_end('div');
-+ }
-hunk ./actions/deleteprofile.php 59
-- function common_feed_item($feed) {
-+ function common_feed_item($feed) {
-hunk ./actions/deleteprofile.php 61
-- $nickname = $user->nickname;
-+ $nickname = $user->nickname;
-hunk ./actions/deleteprofile.php 63
-- switch($feed['item']) {
-- case 'notices': default:
-- $feed_classname = $feed['type'];
-- $feed_mimetype = "application/".$feed['type']."+xml";
-- $feed_title = "$nickname's ".$feed['version']." notice feed";
-- $feed['textContent'] = "RSS";
-- break;
-+ switch($feed['item']) {
-+ case 'notices': default:
-+ $feed_classname = $feed['type'];
-+ $feed_mimetype = "application/".$feed['type']."+xml";
-+ $feed_title = "$nickname's ".$feed['version']." notice feed";
-+ $feed['textContent'] = "RSS";
-+ break;
-hunk ./actions/deleteprofile.php 71
-- case 'foaf':
-- $feed_classname = "foaf";
-- $feed_mimetype = "application/".$feed['type']."+xml";
-- $feed_title = "$nickname's FOAF file";
-- $feed['textContent'] = "FOAF";
-- break;
-- }
-- common_element_start('li');
-- common_element('a', array('href' => $feed['href'],
-- 'class' => $feed_classname,
-- 'type' => $feed_mimetype,
-- 'title' => $feed_title),
-- $feed['textContent']);
-- common_element_end('li');
-- }
-+ case 'foaf':
-+ $feed_classname = "foaf";
-+ $feed_mimetype = "application/".$feed['type']."+xml";
-+ $feed_title = "$nickname's FOAF file";
-+ $feed['textContent'] = "FOAF";
-+ break;
-+ }
-+ common_element_start('li');
-+ common_element('a', array('href' => $feed['href'],
-+ 'class' => $feed_classname,
-+ 'type' => $feed_mimetype,
-+ 'title' => $feed_title),
-+ $feed['textContent']);
-+ common_element_end('li');
-+ }
+- function form_header($title, $msg=NULL, $success=false) {
++ function form_header($title, $msg=null, $success=false) {
+hunk ./actions/deleteprofile.php 41
+- NULL,
++ null,
hunk ./actions/deleteprofile.php 87
-- function show_form($msg=NULL, $success=false) {
-- $this->form_header(_('Delete my account'), $msg, $success);
-- common_element('h2', NULL, _('Delete my account confirmation'));
-- $this->show_confirm_delete_form();
-- common_show_footer();
-- }
-+ function show_form($msg=NULL, $success=false) {
-+ $this->form_header(_('Delete my account'), $msg, $success);
-+ common_element('h2', NULL, _('Delete my account confirmation'));
-+ $this->show_confirm_delete_form();
-+ common_show_footer();
-+ }
-hunk ./actions/deleteprofile.php 94
-- function show_confirm_delete_form() {
-- $user = common_current_user();
-+ function show_confirm_delete_form() {
-+ $user = common_current_user();
-hunk ./actions/deleteprofile.php 100
-- common_element_start('form', array('method' => 'POST',
-- 'id' => 'delete',
-- 'action' =>
-- common_local_url('deleteprofile')));
-+ common_element_start('form', array('method' => 'POST',
-+ 'id' => 'delete',
-+ 'action' =>
-+ common_local_url('deleteprofile')));
-hunk ./actions/deleteprofile.php 105
-- common_hidden('token', common_session_token());
-+ common_hidden('token', common_session_token());
-hunk ./actions/deleteprofile.php 108
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'notices'),
-- 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
-- 'type' => 'rdf',
-- 'version' => 'FOAF',
-- 'item' => 'foaf')));
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'notices'),
-+ 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
-+ 'type' => 'rdf',
-+ 'version' => 'FOAF',
-+ 'item' => 'foaf')));
-hunk ./actions/deleteprofile.php 119
-- common_submit('deleteaccount', _('Delete my account'));
-- common_element_end('form');
-+ common_submit('deleteaccount', _('Delete my account'));
-+ common_element_end('form');
-hunk ./actions/deleteprofile.php 123
-- function handle_post() {
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ function handle_post() {
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/deleteprofile.php 137
-- function delete_account() {
-- $user = common_current_user();
-- assert(!is_null($user)); # should already be checked
-+ function delete_account() {
-+ $user = common_current_user();
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/deleteprofile.php 222
-- function show_top($arr) {
-- $msg = $arr[0];
-- $success = $arr[1];
-- if ($msg) {
-- $this->message($msg, $success);
-- } else {
-- $inst = $this->get_instructions();
-- $output = common_markup_to_html($inst);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- }
-- $this->settings_menu();
-- }
-+ function show_top($arr) {
-+ $msg = $arr[0];
-+ $success = $arr[1];
-+ if ($msg) {
-+ $this->message($msg, $success);
-+ } else {
-+ $inst = $this->get_instructions();
-+ $output = common_markup_to_html($inst);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ }
-+ $this->settings_menu();
-+ }
-hunk ./actions/deleteprofile.php 239
-- $menu =
-- array('profilesettings' =>
-- array(_('Profile'),
-- _('Change your profile settings')),
-- 'emailsettings' =>
-- array(_('Email'),
-- _('Change email handling')),
-- 'openidsettings' =>
-- array(_('OpenID'),
-- _('Add or remove OpenIDs')),
-- 'smssettings' =>
-- array(_('SMS'),
-- _('Updates by SMS')),
-- 'imsettings' =>
-- array(_('IM'),
-- _('Updates by instant messenger (IM)')),
-- 'twittersettings' =>
-- array(_('Twitter'),
-- _('Twitter integration options')),
-- 'othersettings' =>
-- array(_('Other'),
-- _('Other options')));
-+ $menu =
-+ array('profilesettings' =>
-+ array(_('Profile'),
-+ _('Change your profile settings')),
-+ 'emailsettings' =>
-+ array(_('Email'),
-+ _('Change email handling')),
-+ 'openidsettings' =>
-+ array(_('OpenID'),
-+ _('Add or remove OpenIDs')),
-+ 'smssettings' =>
-+ array(_('SMS'),
-+ _('Updates by SMS')),
-+ 'imsettings' =>
-+ array(_('IM'),
-+ _('Updates by instant messenger (IM)')),
-+ 'twittersettings' =>
-+ array(_('Twitter'),
-+ _('Twitter integration options')),
-+ 'othersettings' =>
-+ array(_('Other'),
-+ _('Other options')));
-hunk ./actions/deleteprofile.php 265
-- if ($menuaction == 'imsettings' &&
-- !common_config('xmpp', 'enabled')) {
-- continue;
-- }
-+ if ($menuaction == 'imsettings' &&
-+ !common_config('xmpp', 'enabled')) {
-+ continue;
-+ }
-hunk ./actions/disfavor.php 24
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/disfavor.php 26
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/disfavor.php 28
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- return;
-- }
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ return;
-+ }
-hunk ./actions/disfavor.php 33
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/disfavor.php 35
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname)));
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname)));
-+ return;
-+ }
-hunk ./actions/disfavor.php 40
-- $id = $this->trimmed('notice');
-+ $id = $this->trimmed('notice');
-hunk ./actions/disfavor.php 42
-- $notice = Notice::staticGet($id);
-+ $notice = Notice::staticGet($id);
-hunk ./actions/disfavor.php 44
-- $token = $this->trimmed('token-'.$notice->id);
-+ $token = $this->trimmed('token-'.$notice->id);
-hunk ./actions/disfavor.php 46
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_("There was a problem with your session token. Try again, please."));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_("There was a problem with your session token. Try again, please."));
-+ return;
-+ }
-hunk ./actions/disfavor.php 51
-- $fave = new Fave();
-- $fave->user_id = $this->id;
-- $fave->notice_id = $notice->id;
-- if (!$fave->find(true)) {
-- $this->client_error(_('This notice is not a favorite!'));
-- return;
-- }
-+ $fave = new Fave();
-+ $fave->user_id = $this->id;
-+ $fave->notice_id = $notice->id;
-+ if (!$fave->find(true)) {
-+ $this->client_error(_('This notice is not a favorite!'));
-+ return;
-+ }
-hunk ./actions/disfavor.php 59
-- $result = $fave->delete();
-+ $result = $fave->delete();
-hunk ./actions/disfavor.php 61
-- if (!$result) {
-- common_log_db_error($fave, 'DELETE', __FILE__);
-- $this->server_error(_('Could not delete favorite.'));
-- return;
-- }
--
-- $user->blowFavesCache();
-+ if (!$result) {
-+ common_log_db_error($fave, 'DELETE', __FILE__);
-+ $this->server_error(_('Could not delete favorite.'));
-+ return;
-+ }
-+
-+ $user->blowFavesCache();
-hunk ./actions/disfavor.php 69
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Add to favorites'));
-- common_element_end('head');
-- common_element_start('body');
-- common_favor_form($notice);
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- common_redirect(common_local_url('showfavorites',
-- array('nickname' => $user->nickname)));
-- }
-- }
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Add to favorites'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_favor_form($notice);
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ common_redirect(common_local_url('showfavorites',
-+ array('nickname' => $user->nickname)));
-+ }
-+ }
-hunk ./actions/doc.php 24
-- function handle($args) {
-- parent::handle($args);
-- $title = $this->trimmed('title');
-- $filename = INSTALLDIR.'/doc/'.$title;
-- if (!file_exists($filename)) {
-- common_user_error(_('No such document.'));
-- return;
-- }
-- $c = file_get_contents($filename);
-- $output = common_markup_to_html($c);
-- common_show_header(_(ucfirst($title)));
-- common_raw($output);
-- common_show_footer();
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ $title = $this->trimmed('title');
-+ $filename = INSTALLDIR.'/doc/'.$title;
-+ if (!file_exists($filename)) {
-+ common_user_error(_('No such document.'));
-+ return;
-+ }
-+ $c = file_get_contents($filename);
-+ $output = common_markup_to_html($c);
-+ common_show_header(_(ucfirst($title)));
-+ common_raw($output);
-+ common_show_footer();
-+ }
-hunk ./actions/emailsettings.php 26
-- function get_instructions() {
-- return _('Manage how you get email from %%site.name%%.');
-- }
-+ function get_instructions() {
-+ return _('Manage how you get email from %%site.name%%.');
-+ }
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
+hunk ./actions/deleteprofile.php 89
+- common_element('h2', NULL, _('Delete my account confirmation'));
++ common_element('h2', null, _('Delete my account confirmation'));
+hunk ./actions/deleteprofile.php 216
+- common_set_user(NULL);
++ common_set_user(null);
hunk ./actions/emailsettings.php 30
-- function show_form($msg=NULL, $success=false) {
-- $user = common_current_user();
-- $this->form_header(_('Email Settings'), $msg, $success);
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'emailsettings',
-- 'action' =>
-- common_local_url('emailsettings')));
-- common_hidden('token', common_session_token());
-+ function show_form($msg=NULL, $success=false) {
-+ $user = common_current_user();
-+ $this->form_header(_('Email Settings'), $msg, $success);
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'emailsettings',
-+ 'action' =>
-+ common_local_url('emailsettings')));
-+ common_hidden('token', common_session_token());
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
hunk ./actions/emailsettings.php 39
-- common_element('h2', NULL, _('Address'));
-+ common_element('h2', NULL, _('Address'));
-hunk ./actions/emailsettings.php 41
-- if ($user->email) {
-- common_element_start('p');
-- common_element('span', 'address confirmed', $user->email);
-- common_element('span', 'input_instructions',
-- _('Current confirmed email address.'));
-- common_hidden('email', $user->email);
-- common_element_end('p');
-- common_submit('remove', _('Remove'));
-- } else {
-- $confirm = $this->get_confirmation();
-- if ($confirm) {
-- common_element_start('p');
-- common_element('span', 'address unconfirmed', $confirm->address);
-- common_element('span', 'input_instructions',
-- _('Awaiting confirmation on this address. Check your inbox (and spam box!) for a message with further instructions.'));
-- common_hidden('email', $confirm->address);
-- common_element_end('p');
-- common_submit('cancel', _('Cancel'));
-- } else {
-- common_input('email', _('Email Address'),
-- ($this->arg('email')) ? $this->arg('email') : NULL,
-- _('Email address, like "UserName@example.org"'));
-- common_submit('add', _('Add'));
-- }
-- }
-+ if ($user->email) {
-+ common_element_start('p');
-+ common_element('span', 'address confirmed', $user->email);
-+ common_element('span', 'input_instructions',
-+ _('Current confirmed email address.'));
-+ common_hidden('email', $user->email);
-+ common_element_end('p');
-+ common_submit('remove', _('Remove'));
-+ } else {
-+ $confirm = $this->get_confirmation();
-+ if ($confirm) {
-+ common_element_start('p');
-+ common_element('span', 'address unconfirmed', $confirm->address);
-+ common_element('span', 'input_instructions',
-+ _('Awaiting confirmation on this address. Check your inbox (and spam box!) for a message with further instructions.'));
-+ common_hidden('email', $confirm->address);
-+ common_element_end('p');
-+ common_submit('cancel', _('Cancel'));
-+ } else {
-+ common_input('email', _('Email Address'),
-+ ($this->arg('email')) ? $this->arg('email') : NULL,
-+ _('Email address, like "UserName@example.org"'));
-+ common_submit('add', _('Add'));
-+ }
-+ }
-hunk ./actions/emailsettings.php 67
-- if ($user->email) {
-- common_element('h2', NULL, _('Incoming email'));
--
-- if ($user->incomingemail) {
-- common_element_start('p');
-- common_element('span', 'address', $user->incomingemail);
-- common_element('span', 'input_instructions',
-- _('Send email to this address to post new notices.'));
-- common_element_end('p');
-- common_submit('removeincoming', _('Remove'));
-- }
--
-- common_element_start('p');
-- common_element('span', 'input_instructions',
-- _('Make a new email address for posting to; cancels the old one.'));
-- common_element_end('p');
-- common_submit('newincoming', _('New'));
-- }
--
-- common_element('h2', NULL, _('Preferences'));
-+ if ($user->email) {
-+ common_element('h2', NULL, _('Incoming email'));
-+
-+ if ($user->incomingemail) {
-+ common_element_start('p');
-+ common_element('span', 'address', $user->incomingemail);
-+ common_element('span', 'input_instructions',
-+ _('Send email to this address to post new notices.'));
-+ common_element_end('p');
-+ common_submit('removeincoming', _('Remove'));
-+ }
-+
-+ common_element_start('p');
-+ common_element('span', 'input_instructions',
-+ _('Make a new email address for posting to; cancels the old one.'));
-+ common_element_end('p');
-+ common_submit('newincoming', _('New'));
-+ }
-+
-+ common_element('h2', NULL, _('Preferences'));
-hunk ./actions/emailsettings.php 88
-- common_checkbox('emailnotifysub',
-- _('Send me notices of new subscriptions through email.'),
-- $user->emailnotifysub);
-- common_checkbox('emailnotifyfav',
-- _('Send me email when someone adds my notice as a favorite.'),
-- $user->emailnotifyfav);
-- common_checkbox('emailnotifymsg',
-- _('Send me email when someone sends me a private message.'),
-- $user->emailnotifymsg);
-- common_checkbox('emailnotifynudge',
-- _('Allow friends to nudge me and send me an email.'),
-- $user->emailnotifynudge);
-- common_checkbox('emailpost',
-- _('I want to post notices by email.'),
-- $user->emailpost);
-- common_checkbox('emailmicroid',
-- _('Publish a MicroID for my email address.'),
-- $user->emailmicroid);
-+ common_checkbox('emailnotifysub',
-+ _('Send me notices of new subscriptions through email.'),
-+ $user->emailnotifysub);
-+ common_checkbox('emailnotifyfav',
-+ _('Send me email when someone adds my notice as a favorite.'),
-+ $user->emailnotifyfav);
-+ common_checkbox('emailnotifymsg',
-+ _('Send me email when someone sends me a private message.'),
-+ $user->emailnotifymsg);
-+ common_checkbox('emailnotifynudge',
-+ _('Allow friends to nudge me and send me an email.'),
-+ $user->emailnotifynudge);
-+ common_checkbox('emailpost',
-+ _('I want to post notices by email.'),
-+ $user->emailpost);
-+ common_checkbox('emailmicroid',
-+ _('Publish a MicroID for my email address.'),
-+ $user->emailmicroid);
-hunk ./actions/emailsettings.php 107
-- common_submit('save', _('Save'));
--
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_submit('save', _('Save'));
-+
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/emailsettings.php 113
-- function get_confirmation() {
-- $user = common_current_user();
-- $confirm = new Confirm_address();
-- $confirm->user_id = $user->id;
-- $confirm->address_type = 'email';
-- if ($confirm->find(TRUE)) {
-- return $confirm;
-- } else {
-- return NULL;
-- }
-- }
-+ function get_confirmation() {
-+ $user = common_current_user();
-+ $confirm = new Confirm_address();
-+ $confirm->user_id = $user->id;
-+ $confirm->address_type = 'email';
-+ if ($confirm->find(TRUE)) {
-+ return $confirm;
-+ } else {
-+ return NULL;
-+ }
-+ }
-hunk ./actions/emailsettings.php 125
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/emailsettings.php 127
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 134
-- if ($this->arg('save')) {
-- $this->save_preferences();
-- } else if ($this->arg('add')) {
-- $this->add_address();
-- } else if ($this->arg('cancel')) {
-- $this->cancel_confirmation();
-- } else if ($this->arg('remove')) {
-- $this->remove_address();
-- } else if ($this->arg('removeincoming')) {
-- $this->remove_incoming();
-- } else if ($this->arg('newincoming')) {
-- $this->new_incoming();
-- } else {
-- $this->show_form(_('Unexpected form submission.'));
-- }
-- }
-+ if ($this->arg('save')) {
-+ $this->save_preferences();
-+ } else if ($this->arg('add')) {
-+ $this->add_address();
-+ } else if ($this->arg('cancel')) {
-+ $this->cancel_confirmation();
-+ } else if ($this->arg('remove')) {
-+ $this->remove_address();
-+ } else if ($this->arg('removeincoming')) {
-+ $this->remove_incoming();
-+ } else if ($this->arg('newincoming')) {
-+ $this->new_incoming();
-+ } else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-+ }
-hunk ./actions/emailsettings.php 151
-- function save_preferences() {
-+ function save_preferences() {
-hunk ./actions/emailsettings.php 153
-- $emailnotifysub = $this->boolean('emailnotifysub');
-- $emailnotifyfav = $this->boolean('emailnotifyfav');
-- $emailnotifymsg = $this->boolean('emailnotifymsg');
-- $emailnotifynudge = $this->boolean('emailnotifynudge');
-- $emailmicroid = $this->boolean('emailmicroid');
-- $emailpost = $this->boolean('emailpost');
-+ $emailnotifysub = $this->boolean('emailnotifysub');
-+ $emailnotifyfav = $this->boolean('emailnotifyfav');
-+ $emailnotifymsg = $this->boolean('emailnotifymsg');
-+ $emailnotifynudge = $this->boolean('emailnotifynudge');
-+ $emailmicroid = $this->boolean('emailmicroid');
-+ $emailpost = $this->boolean('emailpost');
-hunk ./actions/emailsettings.php 160
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/emailsettings.php 162
-- assert(!is_null($user)); # should already be checked
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/emailsettings.php 164
-- $user->query('BEGIN');
-+ $user->query('BEGIN');
-hunk ./actions/emailsettings.php 166
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/emailsettings.php 168
-- $user->emailnotifysub = $emailnotifysub;
-- $user->emailnotifyfav = $emailnotifyfav;
-- $user->emailnotifymsg = $emailnotifymsg;
-- $user->emailnotifynudge = $emailnotifynudge;
-- $user->emailmicroid = $emailmicroid;
-- $user->emailpost = $emailpost;
-+ $user->emailnotifysub = $emailnotifysub;
-+ $user->emailnotifyfav = $emailnotifyfav;
-+ $user->emailnotifymsg = $emailnotifymsg;
-+ $user->emailnotifynudge = $emailnotifynudge;
-+ $user->emailmicroid = $emailmicroid;
-+ $user->emailpost = $emailpost;
-hunk ./actions/emailsettings.php 175
-- $result = $user->update($original);
-+ $result = $user->update($original);
-hunk ./actions/emailsettings.php 177
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 183
-- $user->query('COMMIT');
-+ $user->query('COMMIT');
-hunk ./actions/emailsettings.php 185
-- $this->show_form(_('Preferences saved.'), true);
-- }
-+ $this->show_form(_('Preferences saved.'), true);
-+ }
-hunk ./actions/emailsettings.php 188
-- function add_address() {
-+ function add_address() {
-hunk ./actions/emailsettings.php 190
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/emailsettings.php 192
-- $email = $this->trimmed('email');
-+ $email = $this->trimmed('email');
-hunk ./actions/emailsettings.php 194
-- # Some validation
-+ # Some validation
-hunk ./actions/emailsettings.php 196
-- if (!$email) {
-- $this->show_form(_('No email address.'));
-- return;
-- }
-+ if (!$email) {
-+ $this->show_form(_('No email address.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 201
-- $email = common_canonical_email($email);
-+ $email = common_canonical_email($email);
-hunk ./actions/emailsettings.php 203
-- if (!$email) {
-- $this->show_form(_('Cannot normalize that email address'));
-- return;
-- }
-- if (!Validate::email($email, true)) {
-- $this->show_form(_('Not a valid email address'));
-- return;
-- } else if ($user->email == $email) {
-- $this->show_form(_('That is already your email address.'));
-- return;
-- } else if ($this->email_exists($email)) {
-- $this->show_form(_('That email address already belongs to another user.'));
-- return;
-- }
-+ if (!$email) {
-+ $this->show_form(_('Cannot normalize that email address'));
-+ return;
-+ }
-+ if (!Validate::email($email, true)) {
-+ $this->show_form(_('Not a valid email address'));
-+ return;
-+ } else if ($user->email == $email) {
-+ $this->show_form(_('That is already your email address.'));
-+ return;
-+ } else if ($this->email_exists($email)) {
-+ $this->show_form(_('That email address already belongs to another user.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 218
-- $confirm = new Confirm_address();
-- $confirm->address = $email;
-- $confirm->address_type = 'email';
-- $confirm->user_id = $user->id;
-- $confirm->code = common_confirmation_code(64);
-+ $confirm = new Confirm_address();
-+ $confirm->address = $email;
-+ $confirm->address_type = 'email';
-+ $confirm->user_id = $user->id;
-+ $confirm->code = common_confirmation_code(64);
-hunk ./actions/emailsettings.php 224
-- $result = $confirm->insert();
-+ $result = $confirm->insert();
-hunk ./actions/emailsettings.php 226
-- if ($result === FALSE) {
-- common_log_db_error($confirm, 'INSERT', __FILE__);
-- common_server_error(_('Couldn\'t insert confirmation code.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($confirm, 'INSERT', __FILE__);
-+ common_server_error(_('Couldn\'t insert confirmation code.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 232
-- mail_confirm_address($user, $confirm->code, $user->nickname, $email);
-+ mail_confirm_address($user, $confirm->code, $user->nickname, $email);
-hunk ./actions/emailsettings.php 234
-- $msg = _('A confirmation code was sent to the email address you added. Check your inbox (and spam box!) for the code and instructions on how to use it.');
-+ $msg = _('A confirmation code was sent to the email address you added. Check your inbox (and spam box!) for the code and instructions on how to use it.');
-hunk ./actions/emailsettings.php 236
-- $this->show_form($msg, TRUE);
-- }
-+ $this->show_form($msg, TRUE);
-+ }
-hunk ./actions/emailsettings.php 239
-- function cancel_confirmation() {
-- $email = $this->arg('email');
-- $confirm = $this->get_confirmation();
-- if (!$confirm) {
-- $this->show_form(_('No pending confirmation to cancel.'));
-- return;
-- }
-- if ($confirm->address != $email) {
-- $this->show_form(_('That is the wrong IM address.'));
-- return;
-- }
-+ function cancel_confirmation() {
-+ $email = $this->arg('email');
-+ $confirm = $this->get_confirmation();
-+ if (!$confirm) {
-+ $this->show_form(_('No pending confirmation to cancel.'));
-+ return;
-+ }
-+ if ($confirm->address != $email) {
-+ $this->show_form(_('That is the wrong IM address.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 254
-- common_log_db_error($confirm, 'DELETE', __FILE__);
-+ common_log_db_error($confirm, 'DELETE', __FILE__);
-hunk ./actions/emailsettings.php 260
-- }
-+ }
-hunk ./actions/emailsettings.php 262
-- function remove_address() {
-+ function remove_address() {
-hunk ./actions/emailsettings.php 264
-- $user = common_current_user();
-- $email = $this->arg('email');
-+ $user = common_current_user();
-+ $email = $this->arg('email');
-hunk ./actions/emailsettings.php 267
-- # Maybe an old tab open...?
-+ # Maybe an old tab open...?
-hunk ./actions/emailsettings.php 269
-- if ($user->email != $email) {
-- $this->show_form(_('That is not your email address.'));
-- return;
-- }
-+ if ($user->email != $email) {
-+ $this->show_form(_('That is not your email address.'));
-+ return;
-+ }
-hunk ./actions/emailsettings.php 274
-- $user->query('BEGIN');
-- $original = clone($user);
-- $user->email = NULL;
-- $result = $user->updateKeys($original);
-- if (!$result) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-- $user->query('COMMIT');
-+ $user->query('BEGIN');
-+ $original = clone($user);
-+ $user->email = NULL;
-+ $result = $user->updateKeys($original);
-+ if (!$result) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-+ $user->query('COMMIT');
-hunk ./actions/emailsettings.php 285
-- $this->show_form(_('The address was removed.'), TRUE);
-- }
-+ $this->show_form(_('The address was removed.'), TRUE);
-+ }
-hunk ./actions/emailsettings.php 288
-- function remove_incoming() {
-- $user = common_current_user();
--
-- if (!$user->incomingemail) {
-- $this->show_form(_('No incoming email address.'));
-- return;
-- }
--
-- $orig = clone($user);
-- $user->incomingemail = NULL;
-+ function remove_incoming() {
-+ $user = common_current_user();
-+
-+ if (!$user->incomingemail) {
-+ $this->show_form(_('No incoming email address.'));
-+ return;
-+ }
-+
-+ $orig = clone($user);
-+ $user->incomingemail = NULL;
-hunk ./actions/emailsettings.php 299
-- if (!$user->updateKeys($orig)) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- $this->server_error(_("Couldn't update user record."));
-- }
--
-- $this->show_form(_('Incoming email address removed.'), TRUE);
-- }
-+ if (!$user->updateKeys($orig)) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ $this->server_error(_("Couldn't update user record."));
-+ }
-+
-+ $this->show_form(_('Incoming email address removed.'), TRUE);
-+ }
-hunk ./actions/emailsettings.php 307
-- function new_incoming() {
-- $user = common_current_user();
--
-- $orig = clone($user);
-- $user->incomingemail = mail_new_incoming_address();
--
-- if (!$user->updateKeys($orig)) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- $this->server_error(_("Couldn't update user record."));
-- }
-+ function new_incoming() {
-+ $user = common_current_user();
-+
-+ $orig = clone($user);
-+ $user->incomingemail = mail_new_incoming_address();
-+
-+ if (!$user->updateKeys($orig)) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ $this->server_error(_("Couldn't update user record."));
-+ }
-hunk ./actions/emailsettings.php 318
-- $this->show_form(_('New incoming email address added.'), TRUE);
-- }
--
-- function email_exists($email) {
-- $user = common_current_user();
-- $other = User::staticGet('email', $email);
-- if (!$other) {
-- return false;
-- } else {
-- return $other->id != $user->id;
-- }
-- }
-+ $this->show_form(_('New incoming email address added.'), TRUE);
-+ }
-+
-+ function email_exists($email) {
-+ $user = common_current_user();
-+ $other = User::staticGet('email', $email);
-+ if (!$other) {
-+ return false;
-+ } else {
-+ return $other->id != $user->id;
-+ }
-+ }
-hunk ./actions/facebookhome.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/facebookhome.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/facebookhome.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/facebookhome.php 29
-- $this->login();
-- }
-+ $this->login();
-+ }
-hunk ./actions/facebookhome.php 32
-- function login() {
-+ function login() {
-hunk ./actions/facebookhome.php 34
-- $user = null;
-+ $user = null;
-hunk ./actions/facebookhome.php 36
-- $facebook = $this->get_facebook();
-- $fbuid = $facebook->require_login();
-+ $facebook = $this->get_facebook();
-+ $fbuid = $facebook->require_login();
-hunk ./actions/facebookhome.php 39
-- # check to see whether there's already a Facebook link for this user
-- $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook
-+ # check to see whether there's already a Facebook link for this user
-+ $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook
-hunk ./actions/facebookhome.php 42
-- if ($flink) {
-+ if ($flink) {
-hunk ./actions/facebookhome.php 44
-- $user = $flink->getUser();
-- $this->show_home($facebook, $fbuid, $user);
-+ $user = $flink->getUser();
-+ $this->show_home($facebook, $fbuid, $user);
-hunk ./actions/facebookhome.php 47
-- } else {
-+ } else {
-hunk ./actions/facebookhome.php 49
-- # Make the user put in her Laconica creds
-- $nickname = common_canonical_nickname($this->trimmed('nickname'));
-- $password = $this->arg('password');
-+ # Make the user put in her Laconica creds
-+ $nickname = common_canonical_nickname($this->trimmed('nickname'));
-+ $password = $this->arg('password');
-hunk ./actions/facebookhome.php 53
-- if ($nickname) {
-+ if ($nickname) {
-hunk ./actions/facebookhome.php 55
-- if (common_check_user($nickname, $password)) {
-+ if (common_check_user($nickname, $password)) {
-hunk ./actions/facebookhome.php 58
-- $user = User::staticGet('nickname', $nickname);
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/facebookhome.php 60
-- if (!$user) {
-- echo '';
-- $this->show_login_form();
-- }
-+ if (!$user) {
-+ echo '';
-+ $this->show_login_form();
-+ }
-hunk ./actions/facebookhome.php 65
-- $flink = DB_DataObject::factory('foreign_link');
-- $flink->user_id = $user->id;
-- $flink->foreign_id = $fbuid;
-- $flink->service = 2; # Facebook
-- $flink->created = common_sql_now();
-+ $flink = DB_DataObject::factory('foreign_link');
-+ $flink->user_id = $user->id;
-+ $flink->foreign_id = $fbuid;
-+ $flink->service = 2; # Facebook
-+ $flink->created = common_sql_now();
-hunk ./actions/facebookhome.php 71
-- # $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-+ # $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-hunk ./actions/facebookhome.php 73
-- $flink_id = $flink->insert();
-+ $flink_id = $flink->insert();
-hunk ./actions/facebookhome.php 75
-- if ($flink_id) {
-- echo '';
-- }
-+ if ($flink_id) {
-+ echo '';
-+ }
-hunk ./actions/facebookhome.php 79
-- $this->show_home($facebook, $fbuid, $user);
-+ $this->show_home($facebook, $fbuid, $user);
-hunk ./actions/facebookhome.php 81
-- return;
-- } else {
-- echo '';
-- }
-- }
-+ return;
-+ } else {
-+ echo '';
-+ }
-+ }
-hunk ./actions/facebookhome.php 87
-- $this->show_login_form();
-- }
-+ $this->show_login_form();
-+ }
-hunk ./actions/facebookhome.php 90
-- }
-+ }
-hunk ./actions/facebookhome.php 92
-- function show_home($facebook, $fbuid, $user) {
-+ function show_home($facebook, $fbuid, $user) {
-hunk ./actions/facebookhome.php 94
-- $this->show_header('Home');
-+ $this->show_header('Home');
-hunk ./actions/facebookhome.php 96
-- echo $this->show_notices($user);
-- $this->update_profile_box($facebook, $fbuid, $user);
-+ echo $this->show_notices($user);
-+ $this->update_profile_box($facebook, $fbuid, $user);
-hunk ./actions/facebookhome.php 99
-- $this->show_footer();
-- }
-+ $this->show_footer();
-+ }
-hunk ./actions/facebookhome.php 102
-- function show_notices($user) {
-+ function show_notices($user) {
-hunk ./actions/facebookhome.php 104
-- $page = $this->trimmed('page');
-- if (!$page) {
-- $page = 1;
-- }
-+ $page = $this->trimmed('page');
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/facebookhome.php 109
-- $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-+ $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-hunk ./actions/facebookhome.php 111
-- echo '';
-+ echo '';
-hunk ./actions/facebookhome.php 113
-- $cnt = 0;
-+ $cnt = 0;
-hunk ./actions/facebookhome.php 115
-- while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
-- $cnt++;
-+ while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
-+ $cnt++;
-hunk ./actions/facebookhome.php 118
-- if ($cnt > NOTICES_PER_PAGE) {
-- break;
-- }
-+ if ($cnt > NOTICES_PER_PAGE) {
-+ break;
-+ }
-hunk ./actions/facebookhome.php 122
-- echo $this->render_notice($notice);
-- }
-+ echo $this->render_notice($notice);
-+ }
-hunk ./actions/facebookhome.php 125
-- echo '';
-+ echo '';
-hunk ./actions/facebookhome.php 127
-- $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'index.php', array('nickname' => $user->nickname));
-+ $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'index.php', array('nickname' => $user->nickname));
-hunk ./actions/facebookhome.php 130
-- }
-+ }
-hunk ./actions/facebookinvite.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/facebookinvite.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/facebookinvite.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/facebookinvite.php 29
-- $this->display();
-- }
-+ $this->display();
-+ }
-hunk ./actions/facebookinvite.php 32
-- function display() {
-+ function display() {
-hunk ./actions/facebookinvite.php 34
-- $facebook = $this->get_facebook();
-+ $facebook = $this->get_facebook();
-hunk ./actions/facebookinvite.php 36
-- $fbuid = $facebook->require_login();
-+ $fbuid = $facebook->require_login();
-hunk ./actions/facebookinvite.php 38
-- $this->show_header('Invite');
-+ $this->show_header('Invite');
-hunk ./actions/facebookinvite.php 40
-- echo 'Coming soon...
';
-+ echo 'Coming soon...
';
-hunk ./actions/facebookinvite.php 42
-- $this->show_footer();
-+ $this->show_footer();
-hunk ./actions/facebookinvite.php 44
-- }
-+ }
-hunk ./actions/facebookremove.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/facebookremove.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/facebookremove.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/facebookremove.php 29
-- $secret = common_config('facebook', 'secret');
-+ $secret = common_config('facebook', 'secret');
-hunk ./actions/facebookremove.php 31
-- $sig = '';
-+ $sig = '';
-hunk ./actions/facebookremove.php 33
-- ksort($_POST);
-+ ksort($_POST);
-hunk ./actions/facebookremove.php 35
-- foreach ($_POST as $key => $val) {
-- if (substr($key, 0, 7) == 'fb_sig_') {
-- $sig .= substr($key, 7) . '=' . $val;
-- }
-- }
-+ foreach ($_POST as $key => $val) {
-+ if (substr($key, 0, 7) == 'fb_sig_') {
-+ $sig .= substr($key, 7) . '=' . $val;
-+ }
-+ }
-hunk ./actions/facebookremove.php 41
-- $sig .= $secret;
-- $verify = md5($sig);
-+ $sig .= $secret;
-+ $verify = md5($sig);
-hunk ./actions/facebookremove.php 44
-- if ($verify == $this->arg('fb_sig')) {
-+ if ($verify == $this->arg('fb_sig')) {
-hunk ./actions/facebookremove.php 46
-- $flink = Foreign_link::getByForeignID($this->arg('fb_sig_user'), 2);
-+ $flink = Foreign_link::getByForeignID($this->arg('fb_sig_user'), 2);
-hunk ./actions/facebookremove.php 48
-- common_debug("Removing foreign link to Facebook - local user ID: $flink->user_id, Facebook ID: $flink->foreign_id");
-+ common_debug("Removing foreign link to Facebook - local user ID: $flink->user_id, Facebook ID: $flink->foreign_id");
-hunk ./actions/facebookremove.php 50
-- $result = $flink->delete();
-+ $result = $flink->delete();
-hunk ./actions/facebookremove.php 52
-- if (!$result) {
-- common_log_db_error($flink, 'DELETE', __FILE__);
-- common_server_error(_('Couldn\'t remove Facebook user.'));
-- return;
-- }
-+ if (!$result) {
-+ common_log_db_error($flink, 'DELETE', __FILE__);
-+ common_server_error(_('Couldn\'t remove Facebook user.'));
-+ return;
-+ }
-hunk ./actions/facebookremove.php 58
-- } else {
-- # Someone bad tried to remove facebook link?
-- common_log(LOG_ERR, "Someone from $_SERVER[REMOTE_ADDR] " .
-- 'unsuccessfully tried to remove a foreign link to Facebook!');
-- }
-- }
-+ } else {
-+ # Someone bad tried to remove facebook link?
-+ common_log(LOG_ERR, "Someone from $_SERVER[REMOTE_ADDR] " .
-+ 'unsuccessfully tried to remove a foreign link to Facebook!');
-+ }
-+ }
-hunk ./actions/facebooksettings.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/facebooksettings.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/facebooksettings.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/facebooksettings.php 29
-- $this->display();
-- }
-+ $this->display();
-+ }
-hunk ./actions/facebooksettings.php 32
-- function display() {
-+ function display() {
-hunk ./actions/facebooksettings.php 34
-- $facebook = $this->get_facebook();
-+ $facebook = $this->get_facebook();
-hunk ./actions/facebooksettings.php 36
-- $fbuid = $facebook->require_login();
-+ $fbuid = $facebook->require_login();
-hunk ./actions/facebooksettings.php 38
-- $fbml = ''
-- .'Add an Identi.ca box to your profile!
'
-- .''
-- .'';
-+ $fbml = ''
-+ .'Add an Identi.ca box to your profile!
'
-+ .''
-+ .'';
-hunk ./actions/facebooksettings.php 44
-- $this->show_header('Settings');
-+ $this->show_header('Settings');
-hunk ./actions/facebooksettings.php 46
-- echo $fbml;
-+ echo $fbml;
-hunk ./actions/facebooksettings.php 48
-- $this->show_footer();
-+ $this->show_footer();
-hunk ./actions/facebooksettings.php 50
-- }
-+ }
-hunk ./actions/favor.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/favor.php 29
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- return;
-- }
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ return;
-+ }
-hunk ./actions/favor.php 34
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/favor.php 36
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname)));
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname)));
-+ return;
-+ }
-hunk ./actions/favor.php 41
-- $id = $this->trimmed('notice');
-+ $id = $this->trimmed('notice');
-hunk ./actions/favor.php 43
-- $notice = Notice::staticGet($id);
-+ $notice = Notice::staticGet($id);
-hunk ./actions/favor.php 45
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/favor.php 47
-- $token = $this->trimmed('token-'.$notice->id);
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_("There was a problem with your session token. Try again, please."));
-- return;
-- }
-+ $token = $this->trimmed('token-'.$notice->id);
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_("There was a problem with your session token. Try again, please."));
-+ return;
-+ }
-hunk ./actions/favor.php 53
-- if ($user->hasFave($notice)) {
-- $this->client_error(_('This notice is already a favorite!'));
-- return;
-- }
-+ if ($user->hasFave($notice)) {
-+ $this->client_error(_('This notice is already a favorite!'));
-+ return;
-+ }
-hunk ./actions/favor.php 58
-- $fave = Fave::addNew($user, $notice);
-+ $fave = Fave::addNew($user, $notice);
-hunk ./actions/favor.php 60
-- if (!$fave) {
-- $this->server_error(_('Could not create favorite.'));
-- return;
-- }
-+ if (!$fave) {
-+ $this->server_error(_('Could not create favorite.'));
-+ return;
-+ }
-hunk ./actions/favor.php 65
-- $this->notify($fave, $notice, $user);
-- $user->blowFavesCache();
--
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Disfavor favorite'));
-- common_element_end('head');
-- common_element_start('body');
-- common_disfavor_form($notice);
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- common_redirect(common_local_url('showfavorites',
-- array('nickname' => $user->nickname)));
-- }
-- }
-+ $this->notify($fave, $notice, $user);
-+ $user->blowFavesCache();
-+
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Disfavor favorite'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_disfavor_form($notice);
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ common_redirect(common_local_url('showfavorites',
-+ array('nickname' => $user->nickname)));
-+ }
-+ }
-hunk ./actions/favor.php 83
-- function notify($fave, $notice, $user) {
-- $other = User::staticGet('id', $notice->profile_id);
-- if ($other && $other->id != $user->id) {
-- if ($other->email && $other->emailnotifyfav) {
-- mail_notify_fave($other, $user, $notice);
-- }
-- # XXX: notify by IM
-- # XXX: notify by SMS
-- }
-- }
-+ function notify($fave, $notice, $user) {
-+ $other = User::staticGet('id', $notice->profile_id);
-+ if ($other && $other->id != $user->id) {
-+ if ($other->email && $other->emailnotifyfav) {
-+ mail_notify_fave($other, $user, $notice);
-+ }
-+ # XXX: notify by IM
-+ # XXX: notify by SMS
-+ }
-+ }
-hunk ./actions/favorited.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/favorited.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/favorited.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/favorited.php 29
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/favorited.php 31
-- common_show_header(_('Popular notices'),
-- array($this, 'show_header'), NULL,
-- array($this, 'show_top'));
-+ common_show_header(_('Popular notices'),
-+ array($this, 'show_header'), NULL,
-+ array($this, 'show_top'));
-hunk ./actions/favorited.php 35
-- $this->show_notices($page);
-+ $this->show_notices($page);
-hunk ./actions/favorited.php 37
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/favorited.php 40
-- function show_top() {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- $this->public_views_menu();
-- }
-+ function show_top() {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ $this->public_views_menu();
-+ }
-hunk ./actions/favorited.php 49
-- function show_header() {
-+ function show_header() {
-hunk ./actions/favorited.php 51
-- }
-+ }
-hunk ./actions/favorited.php 53
-- function get_instructions() {
-- return _('Showing recently popular notices');
-- }
-+ function get_instructions() {
-+ return _('Showing recently popular notices');
-+ }
-hunk ./actions/favorited.php 57
-- function show_notices($page) {
-+ function show_notices($page) {
-hunk ./actions/favorited.php 59
-- $qry = 'SELECT notice.*, sum(exp(-(now() - fave.modified) / %s)) as weight ' .
-- 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
-- 'GROUP BY fave.notice_id ' .
-- 'ORDER BY weight DESC';
-+ $qry = 'SELECT notice.*, sum(exp(-(now() - fave.modified) / %s)) as weight ' .
-+ 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
-+ 'GROUP BY fave.notice_id ' .
-+ 'ORDER BY weight DESC';
-hunk ./actions/favorited.php 64
-- $offset = ($page - 1) * NOTICES_PER_PAGE;
-- $limit = NOTICES_PER_PAGE + 1;
-+ $offset = ($page - 1) * NOTICES_PER_PAGE;
-+ $limit = NOTICES_PER_PAGE + 1;
-hunk ./actions/favorited.php 67
-- if (common_config('db','type') == 'pgsql') {
-- $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-- } else {
-- $qry .= ' LIMIT ' . $offset . ', ' . $limit;
-- }
-+ if (common_config('db','type') == 'pgsql') {
-+ $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-+ } else {
-+ $qry .= ' LIMIT ' . $offset . ', ' . $limit;
-+ }
-hunk ./actions/favorited.php 73
-- # Figure out how to cache this query
-+ # Figure out how to cache this query
-hunk ./actions/favorited.php 75
-- $notice = new Notice;
-- $notice->query(sprintf($qry, common_config('popular', 'dropoff')));
-+ $notice = new Notice;
-+ $notice->query(sprintf($qry, common_config('popular', 'dropoff')));
-hunk ./actions/favorited.php 78
-- common_element_start('ul', array('id' => 'notices'));
-+ common_element_start('ul', array('id' => 'notices'));
-hunk ./actions/favorited.php 80
-- $cnt = 0;
-+ $cnt = 0;
-hunk ./actions/favorited.php 82
-- while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
-- $cnt++;
-+ while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
-+ $cnt++;
-hunk ./actions/favorited.php 85
-- if ($cnt > NOTICES_PER_PAGE) {
-- break;
-- }
-+ if ($cnt > NOTICES_PER_PAGE) {
-+ break;
-+ }
-hunk ./actions/favorited.php 91
-- }
-+ }
-hunk ./actions/favorited.php 93
-- common_element_end('ul');
-+ common_element_end('ul');
-hunk ./actions/favorited.php 95
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'favorited');
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'favorited');
-+ }
+- common_element('h2', NULL, _('Address'));
++ common_element('h2', null, _('Address'));
+hunk ./actions/emailsettings.php 61
+- ($this->arg('email')) ? $this->arg('email') : NULL,
++ ($this->arg('email')) ? $this->arg('email') : null,
+hunk ./actions/emailsettings.php 68
+- common_element('h2', NULL, _('Incoming email'));
++ common_element('h2', null, _('Incoming email'));
+hunk ./actions/emailsettings.php 86
+- common_element('h2', NULL, _('Preferences'));
++ common_element('h2', null, _('Preferences'));
+hunk ./actions/emailsettings.php 121
+- return NULL;
++ return null;
+hunk ./actions/emailsettings.php 276
+- $user->email = NULL;
++ $user->email = null;
+hunk ./actions/emailsettings.php 297
+- $user->incomingemail = NULL;
++ $user->incomingemail = null;
+hunk ./actions/favorited.php 32
+- array($this, 'show_header'), NULL,
++ array($this, 'show_header'), null,
hunk ./actions/favoritesrss.php 28
-- var $user = NULL;
--
-- function init() {
-- $nickname = $this->trimmed('nickname');
-- $this->user = User::staticGet('nickname', $nickname);
-+ var $user = NULL;
-+
-+ function init() {
-+ $nickname = $this->trimmed('nickname');
-+ $this->user = User::staticGet('nickname', $nickname);
-hunk ./actions/favoritesrss.php 34
-- if (!$this->user) {
-- common_user_error(_('No such user.'));
-- return false;
-- } else {
-- return true;
-- }
-- }
-+ if (!$this->user) {
-+ common_user_error(_('No such user.'));
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ }
-hunk ./actions/favoritesrss.php 42
-- function get_notices($limit=0) {
-+ function get_notices($limit=0) {
-hunk ./actions/favoritesrss.php 44
-- $user = $this->user;
-+ $user = $this->user;
-hunk ./actions/favoritesrss.php 46
-- $notice = $user->favoriteNotices(0, $limit);
-+ $notice = $user->favoriteNotices(0, $limit);
-hunk ./actions/favoritesrss.php 48
-- $notices = array();
-+ $notices = array();
-hunk ./actions/favoritesrss.php 50
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/favoritesrss.php 54
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/favoritesrss.php 57
-- function get_channel() {
-- $user = $this->user;
-- $c = array('url' => common_local_url('favoritesrss',
-- array('nickname' =>
-- $user->nickname)),
-- 'title' => sprintf(_("%s favorite notices"), $user->nickname),
-- 'link' => common_local_url('showfavorites',
-- array('nickname' =>
-- $user->nickname)),
-- 'description' => sprintf(_('Feed of favorite notices of %s'), $user->nickname));
-- return $c;
-- }
-+ function get_channel() {
-+ $user = $this->user;
-+ $c = array('url' => common_local_url('favoritesrss',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'title' => sprintf(_("%s favorite notices"), $user->nickname),
-+ 'link' => common_local_url('showfavorites',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'description' => sprintf(_('Feed of favorite notices of %s'), $user->nickname));
-+ return $c;
-+ }
-hunk ./actions/favoritesrss.php 70
-- function get_image() {
-- return NULL;
-- }
-+ function get_image() {
-+ return NULL;
-+ }
-hunk ./actions/featured.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/featured.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/featured.php 27
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/featured.php 30
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/featured.php 32
-- common_show_header(_('Featured users'),
-- array($this, 'show_header'), NULL,
-- array($this, 'show_top'));
-+ common_show_header(_('Featured users'),
-+ array($this, 'show_header'), NULL,
-+ array($this, 'show_top'));
-hunk ./actions/featured.php 36
-- $this->show_notices($page);
-+ $this->show_notices($page);
-hunk ./actions/featured.php 38
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/featured.php 41
-- function show_top() {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- $this->public_views_menu();
-- }
-+ function show_top() {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ $this->public_views_menu();
-+ }
-hunk ./actions/featured.php 50
-- function show_header() {
-- }
-+ function show_header() {
-+ }
-hunk ./actions/featured.php 53
-- function get_instructions() {
-- return _('Featured users');
-- }
-+ function get_instructions() {
-+ return _('Featured users');
-+ }
-hunk ./actions/featured.php 57
-- function show_notices($page) {
-+ function show_notices($page) {
-hunk ./actions/featured.php 59
-- // XXX: Note I'm doing it this two-stage way because a raw query
-- // with a JOIN was *not* working. --Zach
-+ // XXX: Note I'm doing it this two-stage way because a raw query
-+ // with a JOIN was *not* working. --Zach
-hunk ./actions/featured.php 62
-- $featured_nicks = common_config('nickname', 'featured');
-+ $featured_nicks = common_config('nickname', 'featured');
-hunk ./actions/featured.php 64
-- if (count($featured_nicks) > 0) {
-+ if (count($featured_nicks) > 0) {
-hunk ./actions/featured.php 66
-- $quoted = array();
-+ $quoted = array();
-hunk ./actions/featured.php 68
-- foreach ($featured_nicks as $nick) {
-- $quoted[] = "'$nick'";
-- }
-+ foreach ($featured_nicks as $nick) {
-+ $quoted[] = "'$nick'";
-+ }
-hunk ./actions/featured.php 72
-- $user = new User;
-- $user->whereAdd(sprintf('nickname IN (%s)', implode(',', $quoted)));
-- $user->limit(($page - 1) * PROFILES_PER_PAGE, PROFILES_PER_PAGE + 1);
-- $user->orderBy('user.nickname ASC');
-+ $user = new User;
-+ $user->whereAdd(sprintf('nickname IN (%s)', implode(',', $quoted)));
-+ $user->limit(($page - 1) * PROFILES_PER_PAGE, PROFILES_PER_PAGE + 1);
-+ $user->orderBy('user.nickname ASC');
-hunk ./actions/featured.php 77
-- $user->find();
-+ $user->find();
-hunk ./actions/featured.php 79
-- $profile_ids = array();
-+ $profile_ids = array();
-hunk ./actions/featured.php 81
-- while ($user->fetch()) {
-- $profile_ids[] = $user->id;
-- }
-+ while ($user->fetch()) {
-+ $profile_ids[] = $user->id;
-+ }
-hunk ./actions/featured.php 85
-- $profile = new Profile;
-- $profile->whereAdd(sprintf('profile.id IN (%s)', implode(',', $profile_ids)));
-- $profile->orderBy('nickname ASC');
-+ $profile = new Profile;
-+ $profile->whereAdd(sprintf('profile.id IN (%s)', implode(',', $profile_ids)));
-+ $profile->orderBy('nickname ASC');
-hunk ./actions/featured.php 89
-- $cnt = $profile->find();
-+ $cnt = $profile->find();
-hunk ./actions/featured.php 91
-- if ($cnt > 0) {
-- $featured = new ProfileList($profile);
-- $featured->show_list();
-- }
-+ if ($cnt > 0) {
-+ $featured = new ProfileList($profile);
-+ $featured->show_list();
-+ }
-hunk ./actions/featured.php 96
-- $profile->free();
-+ $profile->free();
-hunk ./actions/featured.php 98
-- common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, $page, 'featured');
-- }
-- }
-+ common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, $page, 'featured');
-+ }
-+ }
-hunk ./actions/finishaddopenid.php 26
-- function handle($args) {
-- parent::handle($args);
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- } else {
-- $this->try_login();
-- }
-- }
--
-- function try_login() {
-+ function handle($args) {
-+ parent::handle($args);
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ } else {
-+ $this->try_login();
-+ }
-+ }
-+
-+ function try_login() {
-hunk ./actions/finishaddopenid.php 37
-- $consumer =& oid_consumer();
-+ $consumer =& oid_consumer();
-hunk ./actions/finishaddopenid.php 39
-- $response = $consumer->complete(common_local_url('finishaddopenid'));
-+ $response = $consumer->complete(common_local_url('finishaddopenid'));
-hunk ./actions/finishaddopenid.php 41
-- if ($response->status == Auth_OpenID_CANCEL) {
-- $this->message(_('OpenID authentication cancelled.'));
-- return;
-- } else if ($response->status == Auth_OpenID_FAILURE) {
-- // Authentication failed; display the error message.
-- $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message));
-- } else if ($response->status == Auth_OpenID_SUCCESS) {
-+ if ($response->status == Auth_OpenID_CANCEL) {
-+ $this->message(_('OpenID authentication cancelled.'));
-+ return;
-+ } else if ($response->status == Auth_OpenID_FAILURE) {
-+ // Authentication failed; display the error message.
-+ $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message));
-+ } else if ($response->status == Auth_OpenID_SUCCESS) {
-hunk ./actions/finishaddopenid.php 49
-- $display = $response->getDisplayIdentifier();
-- $canonical = ($response->endpoint && $response->endpoint->canonicalID) ?
-- $response->endpoint->canonicalID : $display;
-+ $display = $response->getDisplayIdentifier();
-+ $canonical = ($response->endpoint && $response->endpoint->canonicalID) ?
-+ $response->endpoint->canonicalID : $display;
-hunk ./actions/finishaddopenid.php 53
-- $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
-+ $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
-hunk ./actions/finishaddopenid.php 55
-- if ($sreg_resp) {
-- $sreg = $sreg_resp->contents();
-- }
-+ if ($sreg_resp) {
-+ $sreg = $sreg_resp->contents();
-+ }
-hunk ./actions/finishaddopenid.php 59
-- $cur =& common_current_user();
-- $other = oid_get_user($canonical);
-+ $cur =& common_current_user();
-+ $other = oid_get_user($canonical);
-hunk ./actions/finishaddopenid.php 62
-- if ($other) {
-- if ($other->id == $cur->id) {
-- $this->message(_('You already have this OpenID!'));
-- } else {
-- $this->message(_('Someone else already has this OpenID.'));
-- }
-- return;
-- }
-+ if ($other) {
-+ if ($other->id == $cur->id) {
-+ $this->message(_('You already have this OpenID!'));
-+ } else {
-+ $this->message(_('Someone else already has this OpenID.'));
-+ }
-+ return;
-+ }
-hunk ./actions/finishaddopenid.php 71
-- # start a transaction
-+ # start a transaction
-hunk ./actions/finishaddopenid.php 73
-- $cur->query('BEGIN');
-+ $cur->query('BEGIN');
-hunk ./actions/finishaddopenid.php 75
-- $result = oid_link_user($cur->id, $canonical, $display);
-+ $result = oid_link_user($cur->id, $canonical, $display);
-hunk ./actions/finishaddopenid.php 77
-- if (!$result) {
-- $this->message(_('Error connecting user.'));
-- return;
-- }
-- if ($sreg) {
-- if (!oid_update_user($cur, $sreg)) {
-- $this->message(_('Error updating profile'));
-- return;
-- }
-- }
-+ if (!$result) {
-+ $this->message(_('Error connecting user.'));
-+ return;
-+ }
-+ if ($sreg) {
-+ if (!oid_update_user($cur, $sreg)) {
-+ $this->message(_('Error updating profile'));
-+ return;
-+ }
-+ }
-hunk ./actions/finishaddopenid.php 88
-- # success!
-+ # success!
-hunk ./actions/finishaddopenid.php 90
-- $cur->query('COMMIT');
-+ $cur->query('COMMIT');
-hunk ./actions/finishaddopenid.php 92
-- oid_set_last($display);
-+ oid_set_last($display);
-hunk ./actions/finishaddopenid.php 94
-- common_redirect(common_local_url('openidsettings'));
-- }
-- }
-+ common_redirect(common_local_url('openidsettings'));
-+ }
-+ }
-hunk ./actions/finishaddopenid.php 98
-- function message($msg) {
-- common_show_header(_('OpenID Login'));
-- common_element('p', NULL, $msg);
-- common_show_footer();
-- }
-+ function message($msg) {
-+ common_show_header(_('OpenID Login'));
-+ common_element('p', NULL, $msg);
-+ common_show_footer();
-+ }
-hunk ./actions/finishimmediate.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/finishimmediate.php 29
-- $consumer = oid_consumer();
-+ $consumer = oid_consumer();
-hunk ./actions/finishimmediate.php 31
-- $response = $consumer->complete(common_local_url('finishimmediate'));
-+ $response = $consumer->complete(common_local_url('finishimmediate'));
-hunk ./actions/finishimmediate.php 33
-- if ($response->status == Auth_OpenID_SUCCESS) {
-- $display = $response->getDisplayIdentifier();
-- $canonical = ($response->endpoint->canonicalID) ?
-- $response->endpoint->canonicalID : $response->getDisplayIdentifier();
-+ if ($response->status == Auth_OpenID_SUCCESS) {
-+ $display = $response->getDisplayIdentifier();
-+ $canonical = ($response->endpoint->canonicalID) ?
-+ $response->endpoint->canonicalID : $response->getDisplayIdentifier();
-hunk ./actions/finishimmediate.php 38
-- $user = oid_get_user($canonical);
-+ $user = oid_get_user($canonical);
-hunk ./actions/finishimmediate.php 40
-- if ($user) {
-- oid_update_user($user, $sreg);
-- oid_set_last($display); # refresh for another year
-- common_set_user($user->nickname);
-- $this->go_backto();
-- return;
-- }
-- }
-+ if ($user) {
-+ oid_update_user($user, $sreg);
-+ oid_set_last($display); # refresh for another year
-+ common_set_user($user->nickname);
-+ $this->go_backto();
-+ return;
-+ }
-+ }
-hunk ./actions/finishimmediate.php 49
-- # Failure! Clear openid so we don't try it again
-+ # Failure! Clear openid so we don't try it again
-hunk ./actions/finishimmediate.php 51
-- oid_clear_last();
-- $this->go_backto();
-- return;
-- }
-+ oid_clear_last();
-+ $this->go_backto();
-+ return;
-+ }
-hunk ./actions/finishimmediate.php 56
-- function go_backto() {
-- common_ensure_session();
-- $backto = $_SESSION['openid_immediate_backto'];
-- if (!$backto) {
-- # gar. Well, push them to the public page
-- $backto = common_local_url('public');
-- }
-- common_redirect($backto);
-- }
-+ function go_backto() {
-+ common_ensure_session();
-+ $backto = $_SESSION['openid_immediate_backto'];
-+ if (!$backto) {
-+ # gar. Well, push them to the public page
-+ $backto = common_local_url('public');
-+ }
-+ common_redirect($backto);
-+ }
-hunk ./actions/finishopenidlogin.php 26
-- function handle($args) {
-- parent::handle($args);
-- if (common_logged_in()) {
-- common_user_error(_('Already logged in.'));
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-- if ($this->arg('create')) {
-- if (!$this->boolean('license')) {
-- $this->show_form(_('You can\'t register if you don\'t agree to the license.'),
-- $this->trimmed('newname'));
-- return;
-- }
-- $this->create_new_user();
-- } else if ($this->arg('connect')) {
-- $this->connect_user();
-- } else {
-- common_debug(print_r($this->args, true), __FILE__);
-- $this->show_form(_('Something weird happened.'),
-- $this->trimmed('newname'));
-- }
-- } else {
-- $this->try_login();
-- }
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ if (common_logged_in()) {
-+ common_user_error(_('Already logged in.'));
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-+ if ($this->arg('create')) {
-+ if (!$this->boolean('license')) {
-+ $this->show_form(_('You can\'t register if you don\'t agree to the license.'),
-+ $this->trimmed('newname'));
-+ return;
-+ }
-+ $this->create_new_user();
-+ } else if ($this->arg('connect')) {
-+ $this->connect_user();
-+ } else {
-+ common_debug(print_r($this->args, true), __FILE__);
-+ $this->show_form(_('Something weird happened.'),
-+ $this->trimmed('newname'));
-+ }
-+ } else {
-+ $this->try_login();
-+ }
-+ }
+- var $user = NULL;
++ var $user = null;
+hunk ./actions/favoritesrss.php 71
+- return NULL;
++ return null;
+hunk ./actions/featured.php 33
+- array($this, 'show_header'), NULL,
++ array($this, 'show_header'), null,
+hunk ./actions/finishaddopenid.php 100
+- common_element('p', NULL, $msg);
++ common_element('p', null, $msg);
hunk ./actions/finishopenidlogin.php 55
-- function show_top($error=NULL) {
-- if ($error) {
-- common_element('div', array('class' => 'error'), $error);
-- } else {
-- global $config;
-- common_element('div', 'instructions',
-- sprintf(_('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), $config['site']['name']));
-- }
-- }
-+ function show_top($error=NULL) {
-+ if ($error) {
-+ common_element('div', array('class' => 'error'), $error);
-+ } else {
-+ global $config;
-+ common_element('div', 'instructions',
-+ sprintf(_('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), $config['site']['name']));
-+ }
-+ }
+- function show_top($error=NULL) {
++ function show_top($error=null) {
hunk ./actions/finishopenidlogin.php 65
-- function show_form($error=NULL, $username=NULL) {
-- common_show_header(_('OpenID Account Setup'), NULL, $error,
-- array($this, 'show_top'));
-+ function show_form($error=NULL, $username=NULL) {
-+ common_show_header(_('OpenID Account Setup'), NULL, $error,
-+ array($this, 'show_top'));
-hunk ./actions/finishopenidlogin.php 69
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'account_connect',
-- 'action' => common_local_url('finishopenidlogin')));
-- common_hidden('token', common_session_token());
-- common_element('h2', NULL,
-- _('Create new account'));
-- common_element('p', NULL,
-- _('Create a new user with this nickname.'));
-- common_input('newname', _('New nickname'),
-- ($username) ? $username : '',
-- _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-- common_element_start('p');
-- common_element('input', array('type' => 'checkbox',
-- 'id' => 'license',
-- 'name' => 'license',
-- 'value' => 'true'));
-- common_text(_('My text and files are available under '));
-- common_element('a', array(href => common_config('license', 'url')),
-- common_config('license', 'title'));
-- common_text(_(' except this private data: password, email address, IM address, phone number.'));
-- common_element_end('p');
-- common_submit('create', _('Create'));
-- common_element('h2', NULL,
-- _('Connect existing account'));
-- common_element('p', NULL,
-- _('If you already have an account, login with your username and password to connect it to your OpenID.'));
-- common_input('nickname', _('Existing nickname'));
-- common_password('password', _('Password'));
-- common_submit('connect', _('Connect'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'account_connect',
-+ 'action' => common_local_url('finishopenidlogin')));
-+ common_hidden('token', common_session_token());
-+ common_element('h2', NULL,
-+ _('Create new account'));
-+ common_element('p', NULL,
-+ _('Create a new user with this nickname.'));
-+ common_input('newname', _('New nickname'),
-+ ($username) ? $username : '',
-+ _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-+ common_element_start('p');
-+ common_element('input', array('type' => 'checkbox',
-+ 'id' => 'license',
-+ 'name' => 'license',
-+ 'value' => 'true'));
-+ common_text(_('My text and files are available under '));
-+ common_element('a', array(href => common_config('license', 'url')),
-+ common_config('license', 'title'));
-+ common_text(_(' except this private data: password, email address, IM address, phone number.'));
-+ common_element_end('p');
-+ common_submit('create', _('Create'));
-+ common_element('h2', NULL,
-+ _('Connect existing account'));
-+ common_element('p', NULL,
-+ _('If you already have an account, login with your username and password to connect it to your OpenID.'));
-+ common_input('nickname', _('Existing nickname'));
-+ common_password('password', _('Password'));
-+ common_submit('connect', _('Connect'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/finishopenidlogin.php 102
-- function try_login() {
-+ function try_login() {
-hunk ./actions/finishopenidlogin.php 104
-- $consumer = oid_consumer();
-+ $consumer = oid_consumer();
-hunk ./actions/finishopenidlogin.php 106
-- $response = $consumer->complete(common_local_url('finishopenidlogin'));
-+ $response = $consumer->complete(common_local_url('finishopenidlogin'));
-hunk ./actions/finishopenidlogin.php 108
-- if ($response->status == Auth_OpenID_CANCEL) {
-- $this->message(_('OpenID authentication cancelled.'));
-- return;
-- } else if ($response->status == Auth_OpenID_FAILURE) {
-- // Authentication failed; display the error message.
-- $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message));
-- } else if ($response->status == Auth_OpenID_SUCCESS) {
-- // This means the authentication succeeded; extract the
-- // identity URL and Simple Registration data (if it was
-- // returned).
-- $display = $response->getDisplayIdentifier();
-- $canonical = ($response->endpoint->canonicalID) ?
-- $response->endpoint->canonicalID : $response->getDisplayIdentifier();
-+ if ($response->status == Auth_OpenID_CANCEL) {
-+ $this->message(_('OpenID authentication cancelled.'));
-+ return;
-+ } else if ($response->status == Auth_OpenID_FAILURE) {
-+ // Authentication failed; display the error message.
-+ $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message));
-+ } else if ($response->status == Auth_OpenID_SUCCESS) {
-+ // This means the authentication succeeded; extract the
-+ // identity URL and Simple Registration data (if it was
-+ // returned).
-+ $display = $response->getDisplayIdentifier();
-+ $canonical = ($response->endpoint->canonicalID) ?
-+ $response->endpoint->canonicalID : $response->getDisplayIdentifier();
-hunk ./actions/finishopenidlogin.php 122
-- $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
-+ $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
-hunk ./actions/finishopenidlogin.php 124
-- if ($sreg_resp) {
-- $sreg = $sreg_resp->contents();
-- }
-+ if ($sreg_resp) {
-+ $sreg = $sreg_resp->contents();
-+ }
-hunk ./actions/finishopenidlogin.php 128
-- $user = oid_get_user($canonical);
-+ $user = oid_get_user($canonical);
-hunk ./actions/finishopenidlogin.php 130
-- if ($user) {
-- oid_set_last($display);
-- # XXX: commented out at @edd's request until better
-- # control over how data flows from OpenID provider.
-- # oid_update_user($user, $sreg);
-- common_set_user($user);
-- common_real_login(true);
-- if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) {
-- common_rememberme($user);
-- }
-+ if ($user) {
-+ oid_set_last($display);
-+ # XXX: commented out at @edd's request until better
-+ # control over how data flows from OpenID provider.
-+ # oid_update_user($user, $sreg);
-+ common_set_user($user);
-+ common_real_login(true);
-+ if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) {
-+ common_rememberme($user);
-+ }
-hunk ./actions/finishopenidlogin.php 141
-- $this->go_home($user->nickname);
-- } else {
-- $this->save_values($display, $canonical, $sreg);
-- $this->show_form(NULL, $this->best_new_nickname($display, $sreg));
-- }
-- }
-- }
-+ $this->go_home($user->nickname);
-+ } else {
-+ $this->save_values($display, $canonical, $sreg);
-+ $this->show_form(NULL, $this->best_new_nickname($display, $sreg));
-+ }
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 149
-- function message($msg) {
-- common_show_header(_('OpenID Login'));
-- common_element('p', NULL, $msg);
-- common_show_footer();
-- }
-+ function message($msg) {
-+ common_show_header(_('OpenID Login'));
-+ common_element('p', NULL, $msg);
-+ common_show_footer();
-+ }
-hunk ./actions/finishopenidlogin.php 155
-- function save_values($display, $canonical, $sreg) {
-- common_ensure_session();
-- $_SESSION['openid_display'] = $display;
-- $_SESSION['openid_canonical'] = $canonical;
-- $_SESSION['openid_sreg'] = $sreg;
-- }
-+ function save_values($display, $canonical, $sreg) {
-+ common_ensure_session();
-+ $_SESSION['openid_display'] = $display;
-+ $_SESSION['openid_canonical'] = $canonical;
-+ $_SESSION['openid_sreg'] = $sreg;
-+ }
-hunk ./actions/finishopenidlogin.php 162
-- function get_saved_values() {
-- return array($_SESSION['openid_display'],
-- $_SESSION['openid_canonical'],
-- $_SESSION['openid_sreg']);
-- }
-+ function get_saved_values() {
-+ return array($_SESSION['openid_display'],
-+ $_SESSION['openid_canonical'],
-+ $_SESSION['openid_sreg']);
-+ }
-hunk ./actions/finishopenidlogin.php 168
-- function create_new_user() {
-+ function create_new_user() {
-hunk ./actions/finishopenidlogin.php 172
-- if (common_config('site', 'closed') || common_config('site', 'inviteonly')) {
-- common_user_error(_('Registration not allowed.'));
-+ if (common_config('site', 'closed') || common_config('site', 'inviteonly')) {
-+ common_user_error(_('Registration not allowed.'));
-hunk ./actions/finishopenidlogin.php 177
-- $nickname = $this->trimmed('newname');
-+ $nickname = $this->trimmed('newname');
-hunk ./actions/finishopenidlogin.php 179
-- if (!Validate::string($nickname, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-- return;
-- }
-+ if (!Validate::string($nickname, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 186
-- if (!User::allowed_nickname($nickname)) {
-- $this->show_form(_('Nickname not allowed.'));
-- return;
-- }
-+ if (!User::allowed_nickname($nickname)) {
-+ $this->show_form(_('Nickname not allowed.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 191
-- if (User::staticGet('nickname', $nickname)) {
-- $this->show_form(_('Nickname already in use. Try another one.'));
-- return;
-- }
-+ if (User::staticGet('nickname', $nickname)) {
-+ $this->show_form(_('Nickname already in use. Try another one.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 196
-- list($display, $canonical, $sreg) = $this->get_saved_values();
-+ list($display, $canonical, $sreg) = $this->get_saved_values();
-hunk ./actions/finishopenidlogin.php 198
-- if (!$display || !$canonical) {
-- common_server_error(_('Stored OpenID not found.'));
-- return;
-- }
-+ if (!$display || !$canonical) {
-+ common_server_error(_('Stored OpenID not found.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 203
-- # Possible race condition... let's be paranoid
-+ # Possible race condition... let's be paranoid
-hunk ./actions/finishopenidlogin.php 205
-- $other = oid_get_user($canonical);
-+ $other = oid_get_user($canonical);
-hunk ./actions/finishopenidlogin.php 207
-- if ($other) {
-- common_server_error(_('Creating new account for OpenID that already has a user.'));
-- return;
-- }
-+ if ($other) {
-+ common_server_error(_('Creating new account for OpenID that already has a user.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 212
-- if ($sreg['country']) {
-- if ($sreg['postcode']) {
-- # XXX: use postcode to get city and region
-- # XXX: also, store postcode somewhere -- it's valuable!
-- $location = $sreg['postcode'] . ', ' . $sreg['country'];
-- } else {
-- $location = $sreg['country'];
-- }
-- }
-+ if ($sreg['country']) {
-+ if ($sreg['postcode']) {
-+ # XXX: use postcode to get city and region
-+ # XXX: also, store postcode somewhere -- it's valuable!
-+ $location = $sreg['postcode'] . ', ' . $sreg['country'];
-+ } else {
-+ $location = $sreg['country'];
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 222
-- if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
-- $fullname = $sreg['fullname'];
-- }
-+ if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
-+ $fullname = $sreg['fullname'];
-+ }
-hunk ./actions/finishopenidlogin.php 226
-- if ($sreg['email'] && Validate::email($sreg['email'], true)) {
-- $email = $sreg['email'];
-- }
-+ if ($sreg['email'] && Validate::email($sreg['email'], true)) {
-+ $email = $sreg['email'];
-+ }
-hunk ./actions/finishopenidlogin.php 230
-- # XXX: add language
-- # XXX: add timezone
-+ # XXX: add language
-+ # XXX: add timezone
-hunk ./actions/finishopenidlogin.php 233
-- $user = User::register(array('nickname' => $nickname,
-- 'email' => $email,
-- 'fullname' => $fullname,
-- 'location' => $location));
-+ $user = User::register(array('nickname' => $nickname,
-+ 'email' => $email,
-+ 'fullname' => $fullname,
-+ 'location' => $location));
-hunk ./actions/finishopenidlogin.php 238
-- $result = oid_link_user($user->id, $canonical, $display);
-+ $result = oid_link_user($user->id, $canonical, $display);
-hunk ./actions/finishopenidlogin.php 240
-- oid_set_last($display);
-- common_set_user($user);
-- common_real_login(true);
-+ oid_set_last($display);
-+ common_set_user($user);
-+ common_real_login(true);
-hunk ./actions/finishopenidlogin.php 244
-- common_rememberme($user);
-- }
-+ common_rememberme($user);
-+ }
-hunk ./actions/finishopenidlogin.php 247
-- common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)));
-- }
-+ common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)));
-+ }
-hunk ./actions/finishopenidlogin.php 250
-- function connect_user() {
-+ function connect_user() {
-hunk ./actions/finishopenidlogin.php 252
-- $nickname = $this->trimmed('nickname');
-- $password = $this->trimmed('password');
-+ $nickname = $this->trimmed('nickname');
-+ $password = $this->trimmed('password');
-hunk ./actions/finishopenidlogin.php 255
-- if (!common_check_user($nickname, $password)) {
-- $this->show_form(_('Invalid username or password.'));
-- return;
-- }
-+ if (!common_check_user($nickname, $password)) {
-+ $this->show_form(_('Invalid username or password.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 260
-- # They're legit!
-+ # They're legit!
-hunk ./actions/finishopenidlogin.php 262
-- $user = User::staticGet('nickname', $nickname);
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/finishopenidlogin.php 264
-- list($display, $canonical, $sreg) = $this->get_saved_values();
-+ list($display, $canonical, $sreg) = $this->get_saved_values();
-hunk ./actions/finishopenidlogin.php 266
-- if (!$display || !$canonical) {
-- common_server_error(_('Stored OpenID not found.'));
-- return;
-- }
-+ if (!$display || !$canonical) {
-+ common_server_error(_('Stored OpenID not found.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 271
-- $result = oid_link_user($user->id, $canonical, $display);
-+ $result = oid_link_user($user->id, $canonical, $display);
-hunk ./actions/finishopenidlogin.php 273
-- if (!$result) {
-- common_server_error(_('Error connecting user to OpenID.'));
-- return;
-- }
-+ if (!$result) {
-+ common_server_error(_('Error connecting user to OpenID.'));
-+ return;
-+ }
-hunk ./actions/finishopenidlogin.php 278
-- oid_update_user($user, $sreg);
-- oid_set_last($display);
-- common_set_user($user);
-- common_real_login(true);
-+ oid_update_user($user, $sreg);
-+ oid_set_last($display);
-+ common_set_user($user);
-+ common_real_login(true);
-hunk ./actions/finishopenidlogin.php 283
-- common_rememberme($user);
-- }
-- unset($_SESSION['openid_rememberme']);
-- $this->go_home($user->nickname);
-- }
-+ common_rememberme($user);
-+ }
-+ unset($_SESSION['openid_rememberme']);
-+ $this->go_home($user->nickname);
-+ }
-hunk ./actions/finishopenidlogin.php 289
-- function go_home($nickname) {
-- $url = common_get_returnto();
-- if ($url) {
-- # We don't have to return to it again
-- common_set_returnto(NULL);
-- } else {
-- $url = common_local_url('all',
-- array('nickname' =>
-- $nickname));
-- }
-- common_redirect($url);
-- }
-+ function go_home($nickname) {
-+ $url = common_get_returnto();
-+ if ($url) {
-+ # We don't have to return to it again
-+ common_set_returnto(NULL);
-+ } else {
-+ $url = common_local_url('all',
-+ array('nickname' =>
-+ $nickname));
-+ }
-+ common_redirect($url);
-+ }
-hunk ./actions/finishopenidlogin.php 302
-- function best_new_nickname($display, $sreg) {
-+ function best_new_nickname($display, $sreg) {
-hunk ./actions/finishopenidlogin.php 304
-- # Try the passed-in nickname
-+ # Try the passed-in nickname
-hunk ./actions/finishopenidlogin.php 306
-- if ($sreg['nickname']) {
-- $nickname = $this->nicknamize($sreg['nickname']);
-- if ($this->is_new_nickname($nickname)) {
-- return $nickname;
-- }
-- }
-+ if ($sreg['nickname']) {
-+ $nickname = $this->nicknamize($sreg['nickname']);
-+ if ($this->is_new_nickname($nickname)) {
-+ return $nickname;
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 313
-- # Try the full name
-+ # Try the full name
-hunk ./actions/finishopenidlogin.php 315
-- if ($sreg['fullname']) {
-- $fullname = $this->nicknamize($sreg['fullname']);
-- if ($this->is_new_nickname($fullname)) {
-- return $fullname;
-- }
-- }
-+ if ($sreg['fullname']) {
-+ $fullname = $this->nicknamize($sreg['fullname']);
-+ if ($this->is_new_nickname($fullname)) {
-+ return $fullname;
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 322
-- # Try the URL
-+ # Try the URL
-hunk ./actions/finishopenidlogin.php 324
-- $from_url = $this->openid_to_nickname($display);
-+ $from_url = $this->openid_to_nickname($display);
-hunk ./actions/finishopenidlogin.php 326
-- if ($from_url && $this->is_new_nickname($from_url)) {
-- return $from_url;
-- }
-+ if ($from_url && $this->is_new_nickname($from_url)) {
-+ return $from_url;
-+ }
-hunk ./actions/finishopenidlogin.php 330
-- # XXX: others?
-+ # XXX: others?
+- function show_form($error=NULL, $username=NULL) {
+- common_show_header(_('OpenID Account Setup'), NULL, $error,
++ function show_form($error=null, $username=null) {
++ common_show_header(_('OpenID Account Setup'), null, $error,
+hunk ./actions/finishopenidlogin.php 73
+- common_element('h2', NULL,
++ common_element('h2', null,
+hunk ./actions/finishopenidlogin.php 75
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/finishopenidlogin.php 91
+- common_element('h2', NULL,
++ common_element('h2', null,
+hunk ./actions/finishopenidlogin.php 93
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/finishopenidlogin.php 144
+- $this->show_form(NULL, $this->best_new_nickname($display, $sreg));
++ $this->show_form(null, $this->best_new_nickname($display, $sreg));
+hunk ./actions/finishopenidlogin.php 151
+- common_element('p', NULL, $msg);
++ common_element('p', null, $msg);
+hunk ./actions/finishopenidlogin.php 293
+- common_set_returnto(NULL);
++ common_set_returnto(null);
hunk ./actions/finishopenidlogin.php 332
-- return NULL;
-- }
-+ return NULL;
-+ }
-hunk ./actions/finishopenidlogin.php 335
-- function is_new_nickname($str) {
-- if (!Validate::string($str, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- return false;
-- }
-- if (!User::allowed_nickname($str)) {
-- return false;
-- }
-- if (User::staticGet('nickname', $str)) {
-- return false;
-- }
-- return true;
-- }
-+ function is_new_nickname($str) {
-+ if (!Validate::string($str, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ return false;
-+ }
-+ if (!User::allowed_nickname($str)) {
-+ return false;
-+ }
-+ if (User::staticGet('nickname', $str)) {
-+ return false;
-+ }
-+ return true;
-+ }
-hunk ./actions/finishopenidlogin.php 350
-- function openid_to_nickname($openid) {
-+ function openid_to_nickname($openid) {
-hunk ./actions/finishopenidlogin.php 352
-- return $this->xri_to_nickname($openid);
-- } else {
-- return $this->url_to_nickname($openid);
-- }
-- }
-+ return $this->xri_to_nickname($openid);
-+ } else {
-+ return $this->url_to_nickname($openid);
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 358
-- # We try to use an OpenID URL as a legal Laconica user name in this order
-- # 1. Plain hostname, like http://evanp.myopenid.com/
-- # 2. One element in path, like http://profile.typekey.com/EvanProdromou/
-- # or http://getopenid.com/evanprodromou
-+ # We try to use an OpenID URL as a legal Laconica user name in this order
-+ # 1. Plain hostname, like http://evanp.myopenid.com/
-+ # 2. One element in path, like http://profile.typekey.com/EvanProdromou/
-+ # or http://getopenid.com/evanprodromou
-hunk ./actions/finishopenidlogin.php 364
-- static $bad = array('query', 'user', 'password', 'port', 'fragment');
-+ static $bad = array('query', 'user', 'password', 'port', 'fragment');
-hunk ./actions/finishopenidlogin.php 366
-- $parts = parse_url($openid);
-+ $parts = parse_url($openid);
-hunk ./actions/finishopenidlogin.php 368
-- # If any of these parts exist, this won't work
-+ # If any of these parts exist, this won't work
-hunk ./actions/finishopenidlogin.php 370
-- foreach ($bad as $badpart) {
-- if (array_key_exists($badpart, $parts)) {
-- return NULL;
-- }
-- }
-+ foreach ($bad as $badpart) {
-+ if (array_key_exists($badpart, $parts)) {
-+ return NULL;
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 376
-- # We just have host and/or path
-+ # We just have host and/or path
-hunk ./actions/finishopenidlogin.php 378
-- # If it's just a host...
-- if (array_key_exists('host', $parts) &&
-- (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0))
-- {
-- $hostparts = explode('.', $parts['host']);
-+ # If it's just a host...
-+ if (array_key_exists('host', $parts) &&
-+ (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0))
-+ {
-+ $hostparts = explode('.', $parts['host']);
-hunk ./actions/finishopenidlogin.php 384
-- # Try to catch common idiom of nickname.service.tld
-+ # Try to catch common idiom of nickname.service.tld
-hunk ./actions/finishopenidlogin.php 386
-- if ((count($hostparts) > 2) &&
-- (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au
-- (strcmp($hostparts[0], 'www') != 0))
-- {
-- return $this->nicknamize($hostparts[0]);
-- } else {
-- # Do the whole hostname
-- return $this->nicknamize($parts['host']);
-- }
-- } else {
-- if (array_key_exists('path', $parts)) {
-- # Strip starting, ending slashes
-- $path = preg_replace('@/$@', '', $parts['path']);
-- $path = preg_replace('@^/@', '', $path);
-- if (strpos($path, '/') === false) {
-- return $this->nicknamize($path);
-- }
-- }
-- }
-+ if ((count($hostparts) > 2) &&
-+ (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au
-+ (strcmp($hostparts[0], 'www') != 0))
-+ {
-+ return $this->nicknamize($hostparts[0]);
-+ } else {
-+ # Do the whole hostname
-+ return $this->nicknamize($parts['host']);
-+ }
-+ } else {
-+ if (array_key_exists('path', $parts)) {
-+ # Strip starting, ending slashes
-+ $path = preg_replace('@/$@', '', $parts['path']);
-+ $path = preg_replace('@^/@', '', $path);
-+ if (strpos($path, '/') === false) {
-+ return $this->nicknamize($path);
-+ }
-+ }
-+ }
+- return NULL;
++ return null;
+hunk ./actions/finishopenidlogin.php 372
+- return NULL;
++ return null;
hunk ./actions/finishopenidlogin.php 406
-- return NULL;
-- }
-+ return NULL;
-+ }
-hunk ./actions/finishopenidlogin.php 409
-- function xri_to_nickname($xri) {
-- $base = $this->xri_base($xri);
-+ function xri_to_nickname($xri) {
-+ $base = $this->xri_base($xri);
-hunk ./actions/finishopenidlogin.php 412
-- if (!$base) {
-- return NULL;
-- } else {
-- # =evan.prodromou
-- # or @gratis*evan.prodromou
-- $parts = explode('*', substr($base, 1));
-- return $this->nicknamize(array_pop($parts));
-- }
-- }
-+ if (!$base) {
-+ return NULL;
-+ } else {
-+ # =evan.prodromou
-+ # or @gratis*evan.prodromou
-+ $parts = explode('*', substr($base, 1));
-+ return $this->nicknamize(array_pop($parts));
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 422
-- function xri_base($xri) {
-- if (substr($xri, 0, 6) == 'xri://') {
-- return substr($xri, 6);
-- } else {
-- return $xri;
-- }
-- }
-+ function xri_base($xri) {
-+ if (substr($xri, 0, 6) == 'xri://') {
-+ return substr($xri, 6);
-+ } else {
-+ return $xri;
-+ }
-+ }
-hunk ./actions/finishopenidlogin.php 430
-- # Given a string, try to make it work as a nickname
-+ # Given a string, try to make it work as a nickname
-hunk ./actions/finishopenidlogin.php 432
-- function nicknamize($str) {
-- $str = preg_replace('/\W/', '', $str);
-- return strtolower($str);
-- }
-+ function nicknamize($str) {
-+ $str = preg_replace('/\W/', '', $str);
-+ return strtolower($str);
-+ }
-hunk ./actions/finishremotesubscribe.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/finishremotesubscribe.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/finishremotesubscribe.php 30
-- if (common_logged_in()) {
-- common_user_error(_('You can use the local subscription!'));
-- return;
-- }
-+ if (common_logged_in()) {
-+ common_user_error(_('You can use the local subscription!'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 35
-- $omb = $_SESSION['oauth_authorization_request'];
-+ $omb = $_SESSION['oauth_authorization_request'];
-hunk ./actions/finishremotesubscribe.php 37
-- if (!$omb) {
-- common_user_error(_('Not expecting this response!'));
-- return;
-- }
-+ if (!$omb) {
-+ common_user_error(_('Not expecting this response!'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 42
-- common_debug('stored request: '.print_r($omb,true), __FILE__);
-+ common_debug('stored request: '.print_r($omb,true), __FILE__);
-hunk ./actions/finishremotesubscribe.php 44
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-hunk ./actions/finishremotesubscribe.php 47
-- $token = $req->get_parameter('oauth_token');
-+ $token = $req->get_parameter('oauth_token');
-hunk ./actions/finishremotesubscribe.php 49
-- # I think this is the success metric
-+ # I think this is the success metric
-hunk ./actions/finishremotesubscribe.php 51
-- if ($token != $omb['token']) {
-- common_user_error(_('Not authorized.'));
-- return;
-- }
-+ if ($token != $omb['token']) {
-+ common_user_error(_('Not authorized.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 56
-- $version = $req->get_parameter('omb_version');
-+ $version = $req->get_parameter('omb_version');
-hunk ./actions/finishremotesubscribe.php 58
-- if ($version != OMB_VERSION_01) {
-- common_user_error(_('Unknown version of OMB protocol.'));
-- return;
-- }
-+ if ($version != OMB_VERSION_01) {
-+ common_user_error(_('Unknown version of OMB protocol.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 63
-- $nickname = $req->get_parameter('omb_listener_nickname');
-+ $nickname = $req->get_parameter('omb_listener_nickname');
-hunk ./actions/finishremotesubscribe.php 65
-- if (!$nickname) {
-- common_user_error(_('No nickname provided by remote server.'));
-- return;
-- }
-+ if (!$nickname) {
-+ common_user_error(_('No nickname provided by remote server.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 70
-- $profile_url = $req->get_parameter('omb_listener_profile');
-+ $profile_url = $req->get_parameter('omb_listener_profile');
-hunk ./actions/finishremotesubscribe.php 72
-- if (!$profile_url) {
-- common_user_error(_('No profile URL returned by server.'));
-- return;
-- }
-+ if (!$profile_url) {
-+ common_user_error(_('No profile URL returned by server.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 77
-- if (!Validate::uri($profile_url, array('allowed_schemes' => array('http', 'https')))) {
-- common_user_error(_('Invalid profile URL returned by server.'));
-- return;
-- }
-+ if (!Validate::uri($profile_url, array('allowed_schemes' => array('http', 'https')))) {
-+ common_user_error(_('Invalid profile URL returned by server.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 82
-- if ($profile_url == common_local_url('showstream', array('nickname' => $nickname))) {
-- common_user_error(_('You can use the local subscription!'));
-- return;
-- }
-+ if ($profile_url == common_local_url('showstream', array('nickname' => $nickname))) {
-+ common_user_error(_('You can use the local subscription!'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 87
-- common_debug('listenee: "'.$omb['listenee'].'"', __FILE__);
-+ common_debug('listenee: "'.$omb['listenee'].'"', __FILE__);
-hunk ./actions/finishremotesubscribe.php 89
-- $user = User::staticGet('nickname', $omb['listenee']);
-+ $user = User::staticGet('nickname', $omb['listenee']);
-hunk ./actions/finishremotesubscribe.php 91
-- if (!$user) {
-- common_user_error(_('User being listened to doesn\'t exist.'));
-- return;
-- }
-+ if (!$user) {
-+ common_user_error(_('User being listened to doesn\'t exist.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 96
-- $other = User::staticGet('uri', $omb['listener']);
-+ $other = User::staticGet('uri', $omb['listener']);
-hunk ./actions/finishremotesubscribe.php 98
-- if ($other) {
-- common_user_error(_('You can use the local subscription!'));
-- return;
-- }
-+ if ($other) {
-+ common_user_error(_('You can use the local subscription!'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 103
-- $fullname = $req->get_parameter('omb_listener_fullname');
-- $homepage = $req->get_parameter('omb_listener_homepage');
-- $bio = $req->get_parameter('omb_listener_bio');
-- $location = $req->get_parameter('omb_listener_location');
-- $avatar_url = $req->get_parameter('omb_listener_avatar');
-+ $fullname = $req->get_parameter('omb_listener_fullname');
-+ $homepage = $req->get_parameter('omb_listener_homepage');
-+ $bio = $req->get_parameter('omb_listener_bio');
-+ $location = $req->get_parameter('omb_listener_location');
-+ $avatar_url = $req->get_parameter('omb_listener_avatar');
-hunk ./actions/finishremotesubscribe.php 109
-- list($newtok, $newsecret) = $this->access_token($omb);
-+ list($newtok, $newsecret) = $this->access_token($omb);
-hunk ./actions/finishremotesubscribe.php 111
-- if (!$newtok || !$newsecret) {
-- common_user_error(_('Couldn\'t convert request tokens to access tokens.'));
-- return;
-- }
-+ if (!$newtok || !$newsecret) {
-+ common_user_error(_('Couldn\'t convert request tokens to access tokens.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 116
-- # XXX: possible attack point; subscribe and return someone else's profile URI
-+ # XXX: possible attack point; subscribe and return someone else's profile URI
-hunk ./actions/finishremotesubscribe.php 118
-- $remote = Remote_profile::staticGet('uri', $omb['listener']);
-+ $remote = Remote_profile::staticGet('uri', $omb['listener']);
-hunk ./actions/finishremotesubscribe.php 120
-- if ($remote) {
-- $exists = true;
-- $profile = Profile::staticGet($remote->id);
-- $orig_remote = clone($remote);
-- $orig_profile = clone($profile);
-- # XXX: compare current postNotice and updateProfile URLs to the ones
-- # stored in the DB to avoid (possibly...) above attack
-- } else {
-- $exists = false;
-- $remote = new Remote_profile();
-- $remote->uri = $omb['listener'];
-- $profile = new Profile();
-- }
-+ if ($remote) {
-+ $exists = true;
-+ $profile = Profile::staticGet($remote->id);
-+ $orig_remote = clone($remote);
-+ $orig_profile = clone($profile);
-+ # XXX: compare current postNotice and updateProfile URLs to the ones
-+ # stored in the DB to avoid (possibly...) above attack
-+ } else {
-+ $exists = false;
-+ $remote = new Remote_profile();
-+ $remote->uri = $omb['listener'];
-+ $profile = new Profile();
-+ }
-hunk ./actions/finishremotesubscribe.php 134
-- $profile->nickname = $nickname;
-- $profile->profileurl = $profile_url;
-+ $profile->nickname = $nickname;
-+ $profile->profileurl = $profile_url;
-hunk ./actions/finishremotesubscribe.php 137
-- if ($fullname) {
-- $profile->fullname = $fullname;
-- }
-- if ($homepage) {
-- $profile->homepage = $homepage;
-- }
-- if ($bio) {
-- $profile->bio = $bio;
-- }
-- if ($location) {
-- $profile->location = $location;
-- }
-+ if ($fullname) {
-+ $profile->fullname = $fullname;
-+ }
-+ if ($homepage) {
-+ $profile->homepage = $homepage;
-+ }
-+ if ($bio) {
-+ $profile->bio = $bio;
-+ }
-+ if ($location) {
-+ $profile->location = $location;
-+ }
-hunk ./actions/finishremotesubscribe.php 150
-- if ($exists) {
-- $profile->update($orig_profile);
-- } else {
-- $profile->created = DB_DataObject_Cast::dateTime(); # current time
-- $id = $profile->insert();
-- if (!$id) {
-- common_server_error(_('Error inserting new profile'));
-- return;
-- }
-- $remote->id = $id;
-- }
-+ if ($exists) {
-+ $profile->update($orig_profile);
-+ } else {
-+ $profile->created = DB_DataObject_Cast::dateTime(); # current time
-+ $id = $profile->insert();
-+ if (!$id) {
-+ common_server_error(_('Error inserting new profile'));
-+ return;
-+ }
-+ $remote->id = $id;
-+ }
-hunk ./actions/finishremotesubscribe.php 162
-- if ($avatar_url) {
-- if (!$this->add_avatar($profile, $avatar_url)) {
-- common_server_error(_('Error inserting avatar'));
-- return;
-- }
-- }
-+ if ($avatar_url) {
-+ if (!$this->add_avatar($profile, $avatar_url)) {
-+ common_server_error(_('Error inserting avatar'));
-+ return;
-+ }
-+ }
-hunk ./actions/finishremotesubscribe.php 169
-- $remote->postnoticeurl = $omb['post_notice_url'];
-- $remote->updateprofileurl = $omb['update_profile_url'];
-+ $remote->postnoticeurl = $omb['post_notice_url'];
-+ $remote->updateprofileurl = $omb['update_profile_url'];
-hunk ./actions/finishremotesubscribe.php 172
-- if ($exists) {
-- if (!$remote->update($orig_remote)) {
-- common_server_error(_('Error updating remote profile'));
-- return;
-- }
-- } else {
-- $remote->created = DB_DataObject_Cast::dateTime(); # current time
-- if (!$remote->insert()) {
-- common_server_error(_('Error inserting remote profile'));
-- return;
-- }
-- }
-+ if ($exists) {
-+ if (!$remote->update($orig_remote)) {
-+ common_server_error(_('Error updating remote profile'));
-+ return;
-+ }
-+ } else {
-+ $remote->created = DB_DataObject_Cast::dateTime(); # current time
-+ if (!$remote->insert()) {
-+ common_server_error(_('Error inserting remote profile'));
-+ return;
-+ }
-+ }
-hunk ./actions/finishremotesubscribe.php 190
-- $sub = new Subscription();
-+ $sub = new Subscription();
-hunk ./actions/finishremotesubscribe.php 192
-- $sub->subscriber = $remote->id;
-- $sub->subscribed = $user->id;
-+ $sub->subscriber = $remote->id;
-+ $sub->subscribed = $user->id;
-hunk ./actions/finishremotesubscribe.php 205
-- $sub->token = $newtok;
-- $sub->secret = $newsecret;
-+ $sub->token = $newtok;
-+ $sub->secret = $newsecret;
-hunk ./actions/finishremotesubscribe.php 214
-- if (!$result) {
-+ if (!$result) {
-hunk ./actions/finishremotesubscribe.php 216
-- common_user_error(_('Couldn\'t insert new subscription.'));
-- return;
-- }
-+ common_user_error(_('Couldn\'t insert new subscription.'));
-+ return;
-+ }
-hunk ./actions/finishremotesubscribe.php 220
-- # Notify user, if necessary
-+ # Notify user, if necessary
-hunk ./actions/finishremotesubscribe.php 222
-- mail_subscribe_notify_profile($user, $profile);
-+ mail_subscribe_notify_profile($user, $profile);
-hunk ./actions/finishremotesubscribe.php 224
-- # Clear the data
-- unset($_SESSION['oauth_authorization_request']);
-+ # Clear the data
-+ unset($_SESSION['oauth_authorization_request']);
-hunk ./actions/finishremotesubscribe.php 227
-- # If we show subscriptions in reverse chron order, this should
-- # show up close to the top of the page
-+ # If we show subscriptions in reverse chron order, this should
-+ # show up close to the top of the page
-hunk ./actions/finishremotesubscribe.php 230
-- common_redirect(common_local_url('subscribers', array('nickname' =>
-- $user->nickname)));
-- }
-+ common_redirect(common_local_url('subscribers', array('nickname' =>
-+ $user->nickname)));
-+ }
-hunk ./actions/finishremotesubscribe.php 234
-- function add_avatar($profile, $url) {
-- $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
-- copy($url, $temp_filename);
-- return $profile->setOriginal($temp_filename);
-- }
-+ function add_avatar($profile, $url) {
-+ $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
-+ copy($url, $temp_filename);
-+ return $profile->setOriginal($temp_filename);
-+ }
-hunk ./actions/finishremotesubscribe.php 240
-- function access_token($omb) {
-+ function access_token($omb) {
-hunk ./actions/finishremotesubscribe.php 242
-- common_debug('starting request for access token', __FILE__);
-+ common_debug('starting request for access token', __FILE__);
-hunk ./actions/finishremotesubscribe.php 244
-- $con = omb_oauth_consumer();
-- $tok = new OAuthToken($omb['token'], $omb['secret']);
-+ $con = omb_oauth_consumer();
-+ $tok = new OAuthToken($omb['token'], $omb['secret']);
-hunk ./actions/finishremotesubscribe.php 247
-- common_debug('using request token "'.$tok.'"', __FILE__);
-+ common_debug('using request token "'.$tok.'"', __FILE__);
-hunk ./actions/finishremotesubscribe.php 249
-- $url = $omb['access_token_url'];
-+ $url = $omb['access_token_url'];
-hunk ./actions/finishremotesubscribe.php 251
-- common_debug('using access token url "'.$url.'"', __FILE__);
-+ common_debug('using access token url "'.$url.'"', __FILE__);
-hunk ./actions/finishremotesubscribe.php 253
-- # XXX: Is this the right thing to do? Strip off GET params and make them
-- # POST params? Seems wrong to me.
-+ # XXX: Is this the right thing to do? Strip off GET params and make them
-+ # POST params? Seems wrong to me.
-hunk ./actions/finishremotesubscribe.php 256
-- $parsed = parse_url($url);
-- $params = array();
-- parse_str($parsed['query'], $params);
-+ $parsed = parse_url($url);
-+ $params = array();
-+ parse_str($parsed['query'], $params);
-hunk ./actions/finishremotesubscribe.php 260
-- $req = OAuthRequest::from_consumer_and_token($con, $tok, "POST", $url, $params);
-+ $req = OAuthRequest::from_consumer_and_token($con, $tok, "POST", $url, $params);
-hunk ./actions/finishremotesubscribe.php 262
-- $req->set_parameter('omb_version', OMB_VERSION_01);
-+ $req->set_parameter('omb_version', OMB_VERSION_01);
-hunk ./actions/finishremotesubscribe.php 264
-- # XXX: test to see if endpoint accepts this signature method
-+ # XXX: test to see if endpoint accepts this signature method
-hunk ./actions/finishremotesubscribe.php 266
-- $req->sign_request(omb_hmac_sha1(), $con, $tok);
-+ $req->sign_request(omb_hmac_sha1(), $con, $tok);
-hunk ./actions/finishremotesubscribe.php 268
-- # We re-use this tool's fetcher, since it's pretty good
-+ # We re-use this tool's fetcher, since it's pretty good
-hunk ./actions/finishremotesubscribe.php 270
-- common_debug('posting to access token url "'.$req->get_normalized_http_url().'"', __FILE__);
-- common_debug('posting request data "'.$req->to_postdata().'"', __FILE__);
-+ common_debug('posting to access token url "'.$req->get_normalized_http_url().'"', __FILE__);
-+ common_debug('posting request data "'.$req->to_postdata().'"', __FILE__);
-hunk ./actions/finishremotesubscribe.php 273
-- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-- $result = $fetcher->post($req->get_normalized_http_url(),
-- $req->to_postdata(),
-+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-+ $result = $fetcher->post($req->get_normalized_http_url(),
-+ $req->to_postdata(),
-hunk ./actions/finishremotesubscribe.php 278
-- common_debug('got result: "'.print_r($result,TRUE).'"', __FILE__);
-+ common_debug('got result: "'.print_r($result,TRUE).'"', __FILE__);
-hunk ./actions/finishremotesubscribe.php 280
-- if ($result->status != 200) {
-- return NULL;
-- }
-+ if ($result->status != 200) {
-+ return NULL;
-+ }
-hunk ./actions/finishremotesubscribe.php 284
-- parse_str($result->body, $return);
-+ parse_str($result->body, $return);
-hunk ./actions/finishremotesubscribe.php 286
-- return array($return['oauth_token'], $return['oauth_token_secret']);
-- }
-+ return array($return['oauth_token'], $return['oauth_token_secret']);
-+ }
-hunk ./actions/foaf.php 28
-- function is_readonly() {
-- return true;
-- }
-+ function is_readonly() {
-+ return true;
-+ }
-hunk ./actions/foaf.php 32
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/foaf.php 35
-- $nickname = $this->trimmed('nickname');
-+ $nickname = $this->trimmed('nickname');
-hunk ./actions/foaf.php 37
-- $user = User::staticGet('nickname', $nickname);
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/foaf.php 39
-- if (!$user) {
-- common_user_error(_('No such user.'), 404);
-- return;
-- }
-+ if (!$user) {
-+ common_user_error(_('No such user.'), 404);
-+ return;
-+ }
-hunk ./actions/foaf.php 44
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/foaf.php 46
-- if (!$profile) {
-- common_server_error(_('User has no profile.'), 500);
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'), 500);
-+ return;
-+ }
-hunk ./actions/foaf.php 51
-- header('Content-Type: application/rdf+xml');
-+ header('Content-Type: application/rdf+xml');
-hunk ./actions/foaf.php 53
-- common_start_xml();
-- common_element_start('rdf:RDF', array('xmlns:rdf' =>
-- 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
-- 'xmlns:rdfs' =>
-- 'http://www.w3.org/2000/01/rdf-schema#',
-- 'xmlns:geo' =>
-- 'http://www.w3.org/2003/01/geo/wgs84_pos#',
-- 'xmlns' => 'http://xmlns.com/foaf/0.1/'));
-+ common_start_xml();
-+ common_element_start('rdf:RDF', array('xmlns:rdf' =>
-+ 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
-+ 'xmlns:rdfs' =>
-+ 'http://www.w3.org/2000/01/rdf-schema#',
-+ 'xmlns:geo' =>
-+ 'http://www.w3.org/2003/01/geo/wgs84_pos#',
-+ 'xmlns' => 'http://xmlns.com/foaf/0.1/'));
-hunk ./actions/foaf.php 62
-- # This is the document about the user
-+ # This is the document about the user
-hunk ./actions/foaf.php 64
-- $this->show_ppd('', $user->uri);
-+ $this->show_ppd('', $user->uri);
-hunk ./actions/foaf.php 66
-- # XXX: might not be a person
-- common_element_start('Person', array('rdf:about' =>
-- $user->uri));
-- common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email));
-- if ($profile->fullname) {
-- common_element('name', NULL, $profile->fullname);
-- }
-- if ($profile->homepage) {
-- common_element('homepage', array('rdf:resource' => $profile->homepage));
-- }
-- if ($profile->bio) {
-- common_element('rdfs:comment', NULL, $profile->bio);
-- }
-- # XXX: more structured location data
-- if ($profile->location) {
-- common_element_start('based_near');
-- common_element_start('geo:SpatialThing');
-- common_element('name', NULL, $profile->location);
-- common_element_end('geo:SpatialThing');
-- common_element_end('based_near');
-- }
-+ # XXX: might not be a person
-+ common_element_start('Person', array('rdf:about' =>
-+ $user->uri));
-+ common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email));
-+ if ($profile->fullname) {
-+ common_element('name', NULL, $profile->fullname);
-+ }
-+ if ($profile->homepage) {
-+ common_element('homepage', array('rdf:resource' => $profile->homepage));
-+ }
-+ if ($profile->bio) {
-+ common_element('rdfs:comment', NULL, $profile->bio);
-+ }
-+ # XXX: more structured location data
-+ if ($profile->location) {
-+ common_element_start('based_near');
-+ common_element_start('geo:SpatialThing');
-+ common_element('name', NULL, $profile->location);
-+ common_element_end('geo:SpatialThing');
-+ common_element_end('based_near');
-+ }
-hunk ./actions/foaf.php 88
-- $this->show_microblogging_account($profile, common_root_url());
-+ $this->show_microblogging_account($profile, common_root_url());
-hunk ./actions/foaf.php 90
-- $avatar = $profile->getOriginalAvatar();
-+ $avatar = $profile->getOriginalAvatar();
-hunk ./actions/foaf.php 92
-- if ($avatar) {
-- common_element_start('img');
-- common_element_start('Image', array('rdf:about' => $avatar->url));
-- foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-- $scaled = $profile->getAvatar($size);
-- if (!$scaled->original) { # sometimes the original has one of our scaled sizes
-- common_element_start('thumbnail');
-- common_element('Image', array('rdf:about' => $scaled->url));
-- common_element_end('thumbnail');
-- }
-- }
-- common_element_end('Image');
-- common_element_end('img');
-- }
-+ if ($avatar) {
-+ common_element_start('img');
-+ common_element_start('Image', array('rdf:about' => $avatar->url));
-+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-+ $scaled = $profile->getAvatar($size);
-+ if (!$scaled->original) { # sometimes the original has one of our scaled sizes
-+ common_element_start('thumbnail');
-+ common_element('Image', array('rdf:about' => $scaled->url));
-+ common_element_end('thumbnail');
-+ }
-+ }
-+ common_element_end('Image');
-+ common_element_end('img');
-+ }
-hunk ./actions/foaf.php 107
-- # Get people user is subscribed to
-+ # Get people user is subscribed to
-hunk ./actions/foaf.php 109
-- $person = array();
-+ $person = array();
-hunk ./actions/foaf.php 111
-- $sub = new Subscription();
-- $sub->subscriber = $profile->id;
-- $sub->whereAdd('subscriber != subscribed');
--
-- if ($sub->find()) {
-- while ($sub->fetch()) {
-- if ($sub->token) {
-- $other = Remote_profile::staticGet('id', $sub->subscribed);
-- } else {
-- $other = User::staticGet('id', $sub->subscribed);
-- }
-- if (!$other) {
-- common_debug('Got a bad subscription: '.print_r($sub,TRUE));
-- continue;
-- }
-- common_element('knows', array('rdf:resource' => $other->uri));
-- $person[$other->uri] = array(LISTENEE, $other);
-- }
-- }
-+ $sub = new Subscription();
-+ $sub->subscriber = $profile->id;
-+ $sub->whereAdd('subscriber != subscribed');
-+
-+ if ($sub->find()) {
-+ while ($sub->fetch()) {
-+ if ($sub->token) {
-+ $other = Remote_profile::staticGet('id', $sub->subscribed);
-+ } else {
-+ $other = User::staticGet('id', $sub->subscribed);
-+ }
-+ if (!$other) {
-+ common_debug('Got a bad subscription: '.print_r($sub,TRUE));
-+ continue;
-+ }
-+ common_element('knows', array('rdf:resource' => $other->uri));
-+ $person[$other->uri] = array(LISTENEE, $other);
-+ }
-+ }
-hunk ./actions/foaf.php 131
-- # Get people who subscribe to user
-+ # Get people who subscribe to user
-hunk ./actions/foaf.php 133
-- $sub = new Subscription();
-- $sub->subscribed = $profile->id;
-- $sub->whereAdd('subscriber != subscribed');
-+ $sub = new Subscription();
-+ $sub->subscribed = $profile->id;
-+ $sub->whereAdd('subscriber != subscribed');
-hunk ./actions/foaf.php 137
-- if ($sub->find()) {
-- while ($sub->fetch()) {
-- if ($sub->token) {
-- $other = Remote_profile::staticGet('id', $sub->subscriber);
-- } else {
-- $other = User::staticGet('id', $sub->subscriber);
-- }
-- if (!$other) {
-- common_debug('Got a bad subscription: '.print_r($sub,TRUE));
-- continue;
-- }
-- if (array_key_exists($other->uri, $person)) {
-- $person[$other->uri][0] = BOTH;
-- } else {
-- $person[$other->uri] = array(LISTENER, $other);
-- }
-- }
-- }
-+ if ($sub->find()) {
-+ while ($sub->fetch()) {
-+ if ($sub->token) {
-+ $other = Remote_profile::staticGet('id', $sub->subscriber);
-+ } else {
-+ $other = User::staticGet('id', $sub->subscriber);
-+ }
-+ if (!$other) {
-+ common_debug('Got a bad subscription: '.print_r($sub,TRUE));
-+ continue;
-+ }
-+ if (array_key_exists($other->uri, $person)) {
-+ $person[$other->uri][0] = BOTH;
-+ } else {
-+ $person[$other->uri] = array(LISTENER, $other);
-+ }
-+ }
-+ }
-hunk ./actions/foaf.php 156
-- common_element_end('Person');
-+ common_element_end('Person');
-hunk ./actions/foaf.php 158
-- foreach ($person as $uri => $p) {
-- $foaf_url = NULL;
-- if ($p[1] instanceof User) {
-- $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname));
-- }
-- $profile = Profile::staticGet($p[1]->id);
-- common_element_start('Person', array('rdf:about' => $uri));
-- if ($p[0] == LISTENER || $p[0] == BOTH) {
-- common_element('knows', array('rdf:resource' => $user->uri));
-- }
-- $this->show_microblogging_account($profile, ($p[1] instanceof User) ?
-- common_root_url() : NULL);
-- if ($foaf_url) {
-- common_element('rdfs:seeAlso', array('rdf:resource' => $foaf_url));
-- }
-- common_element_end('Person');
-- if ($foaf_url) {
-- $this->show_ppd($foaf_url, $uri);
-- }
-- }
-+ foreach ($person as $uri => $p) {
-+ $foaf_url = NULL;
-+ if ($p[1] instanceof User) {
-+ $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname));
-+ }
-+ $profile = Profile::staticGet($p[1]->id);
-+ common_element_start('Person', array('rdf:about' => $uri));
-+ if ($p[0] == LISTENER || $p[0] == BOTH) {
-+ common_element('knows', array('rdf:resource' => $user->uri));
-+ }
-+ $this->show_microblogging_account($profile, ($p[1] instanceof User) ?
-+ common_root_url() : NULL);
-+ if ($foaf_url) {
-+ common_element('rdfs:seeAlso', array('rdf:resource' => $foaf_url));
-+ }
-+ common_element_end('Person');
-+ if ($foaf_url) {
-+ $this->show_ppd($foaf_url, $uri);
-+ }
-+ }
-hunk ./actions/foaf.php 179
-- common_element_end('rdf:RDF');
-- }
-+ common_element_end('rdf:RDF');
-+ }
-hunk ./actions/foaf.php 182
-- function show_ppd($foaf_url, $person_uri) {
-- common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url));
-- common_element('maker', array('rdf:resource' => $person_uri));
-- common_element('primaryTopic', array('rdf:resource' => $person_uri));
-- common_element_end('PersonalProfileDocument');
-- }
-+ function show_ppd($foaf_url, $person_uri) {
-+ common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url));
-+ common_element('maker', array('rdf:resource' => $person_uri));
-+ common_element('primaryTopic', array('rdf:resource' => $person_uri));
-+ common_element_end('PersonalProfileDocument');
-+ }
+- return NULL;
++ return null;
+hunk ./actions/finishopenidlogin.php 413
+- return NULL;
++ return null;
+hunk ./actions/finishremotesubscribe.php 281
+- return NULL;
++ return null;
+hunk ./actions/foaf.php 69
+- common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email));
++ common_element('mbox_sha1sum', null, sha1('mailto:' . $user->email));
+hunk ./actions/foaf.php 71
+- common_element('name', NULL, $profile->fullname);
++ common_element('name', null, $profile->fullname);
+hunk ./actions/foaf.php 77
+- common_element('rdfs:comment', NULL, $profile->bio);
++ common_element('rdfs:comment', null, $profile->bio);
+hunk ./actions/foaf.php 83
+- common_element('name', NULL, $profile->location);
++ common_element('name', null, $profile->location);
+hunk ./actions/foaf.php 159
+- $foaf_url = NULL;
++ $foaf_url = null;
+hunk ./actions/foaf.php 169
+- common_root_url() : NULL);
++ common_root_url() : null);
hunk ./actions/foaf.php 189
-- function show_microblogging_account($profile, $service=NULL) {
-- # Their account
-- common_element_start('holdsAccount');
-- common_element_start('OnlineAccount');
-- if ($service) {
-- common_element('accountServiceHomepage', array('rdf:resource' =>
-- $service));
-- }
-- common_element('accountName', NULL, $profile->nickname);
-- common_element('homepage', array('rdf:resource' => $profile->profileurl));
-- common_element_end('OnlineAccount');
-- common_element_end('holdsAccount');
-- }
-+ function show_microblogging_account($profile, $service=NULL) {
-+ # Their account
-+ common_element_start('holdsAccount');
-+ common_element_start('OnlineAccount');
-+ if ($service) {
-+ common_element('accountServiceHomepage', array('rdf:resource' =>
-+ $service));
-+ }
-+ common_element('accountName', NULL, $profile->nickname);
-+ common_element('homepage', array('rdf:resource' => $profile->profileurl));
-+ common_element_end('OnlineAccount');
-+ common_element_end('holdsAccount');
-+ }
-hunk ./actions/imsettings.php 27
-- function get_instructions() {
-- return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.');
-- }
-+ function get_instructions() {
-+ return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.');
-+ }
+- function show_microblogging_account($profile, $service=NULL) {
++ function show_microblogging_account($profile, $service=null) {
+hunk ./actions/foaf.php 197
+- common_element('accountName', NULL, $profile->nickname);
++ common_element('accountName', null, $profile->nickname);
hunk ./actions/imsettings.php 31
-- function show_form($msg=NULL, $success=false) {
-- $user = common_current_user();
-- $this->form_header(_('IM Settings'), $msg, $success);
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'imsettings',
-- 'action' =>
-- common_local_url('imsettings')));
-- common_hidden('token', common_session_token());
-+ function show_form($msg=NULL, $success=false) {
-+ $user = common_current_user();
-+ $this->form_header(_('IM Settings'), $msg, $success);
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'imsettings',
-+ 'action' =>
-+ common_local_url('imsettings')));
-+ common_hidden('token', common_session_token());
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
hunk ./actions/imsettings.php 40
-- common_element('h2', NULL, _('Address'));
-+ common_element('h2', NULL, _('Address'));
-hunk ./actions/imsettings.php 42
-- if ($user->jabber) {
-- common_element_start('p');
-- common_element('span', 'address confirmed', $user->jabber);
-- common_element('span', 'input_instructions',
-- _('Current confirmed Jabber/GTalk address.'));
-- common_hidden('jabber', $user->jabber);
-- common_element_end('p');
-- common_submit('remove', _('Remove'));
-- } else {
-- $confirm = $this->get_confirmation();
-- if ($confirm) {
-- common_element_start('p');
-- common_element('span', 'address unconfirmed', $confirm->address);
-- common_element('span', 'input_instructions',
-- sprintf(_('Awaiting confirmation on this address. Check your Jabber/GTalk account for a message with further instructions. (Did you add %s to your buddy list?)'), jabber_daemon_address()));
-- common_hidden('jabber', $confirm->address);
-- common_element_end('p');
-- common_submit('cancel', _('Cancel'));
-- } else {
-- common_input('jabber', _('IM Address'),
-- ($this->arg('jabber')) ? $this->arg('jabber') : NULL,
-- sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address()));
-- common_submit('add', _('Add'));
-- }
-- }
-+ if ($user->jabber) {
-+ common_element_start('p');
-+ common_element('span', 'address confirmed', $user->jabber);
-+ common_element('span', 'input_instructions',
-+ _('Current confirmed Jabber/GTalk address.'));
-+ common_hidden('jabber', $user->jabber);
-+ common_element_end('p');
-+ common_submit('remove', _('Remove'));
-+ } else {
-+ $confirm = $this->get_confirmation();
-+ if ($confirm) {
-+ common_element_start('p');
-+ common_element('span', 'address unconfirmed', $confirm->address);
-+ common_element('span', 'input_instructions',
-+ sprintf(_('Awaiting confirmation on this address. Check your Jabber/GTalk account for a message with further instructions. (Did you add %s to your buddy list?)'), jabber_daemon_address()));
-+ common_hidden('jabber', $confirm->address);
-+ common_element_end('p');
-+ common_submit('cancel', _('Cancel'));
-+ } else {
-+ common_input('jabber', _('IM Address'),
-+ ($this->arg('jabber')) ? $this->arg('jabber') : NULL,
-+ sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address()));
-+ common_submit('add', _('Add'));
-+ }
-+ }
+- common_element('h2', NULL, _('Address'));
++ common_element('h2', null, _('Address'));
+hunk ./actions/imsettings.php 62
+- ($this->arg('jabber')) ? $this->arg('jabber') : NULL,
++ ($this->arg('jabber')) ? $this->arg('jabber') : null,
hunk ./actions/imsettings.php 68
-- common_element('h2', NULL, _('Preferences'));
-+ common_element('h2', NULL, _('Preferences'));
-hunk ./actions/imsettings.php 70
-- common_checkbox('jabbernotify',
-- _('Send me notices through Jabber/GTalk.'),
-- $user->jabbernotify);
-- common_checkbox('updatefrompresence',
-- _('Post a notice when my Jabber/GTalk status changes.'),
-- $user->updatefrompresence);
-- common_checkbox('jabberreplies',
-- _('Send me replies through Jabber/GTalk from people I\'m not subscribed to.'),
-- $user->jabberreplies);
-- common_checkbox('jabbermicroid',
-- _('Publish a MicroID for my Jabber/GTalk address.'),
-- $user->jabbermicroid);
-- common_submit('save', _('Save'));
-+ common_checkbox('jabbernotify',
-+ _('Send me notices through Jabber/GTalk.'),
-+ $user->jabbernotify);
-+ common_checkbox('updatefrompresence',
-+ _('Post a notice when my Jabber/GTalk status changes.'),
-+ $user->updatefrompresence);
-+ common_checkbox('jabberreplies',
-+ _('Send me replies through Jabber/GTalk from people I\'m not subscribed to.'),
-+ $user->jabberreplies);
-+ common_checkbox('jabbermicroid',
-+ _('Publish a MicroID for my Jabber/GTalk address.'),
-+ $user->jabbermicroid);
-+ common_submit('save', _('Save'));
-hunk ./actions/imsettings.php 84
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/imsettings.php 88
-- function get_confirmation() {
-- $user = common_current_user();
-- $confirm = new Confirm_address();
-- $confirm->user_id = $user->id;
-- $confirm->address_type = 'jabber';
-- if ($confirm->find(TRUE)) {
-- return $confirm;
-- } else {
-- return NULL;
-- }
-- }
-+ function get_confirmation() {
-+ $user = common_current_user();
-+ $confirm = new Confirm_address();
-+ $confirm->user_id = $user->id;
-+ $confirm->address_type = 'jabber';
-+ if ($confirm->find(TRUE)) {
-+ return $confirm;
-+ } else {
-+ return NULL;
-+ }
-+ }
-hunk ./actions/imsettings.php 100
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/imsettings.php 102
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 109
-- if ($this->arg('save')) {
-- $this->save_preferences();
-- } else if ($this->arg('add')) {
-- $this->add_address();
-- } else if ($this->arg('cancel')) {
-- $this->cancel_confirmation();
-- } else if ($this->arg('remove')) {
-- $this->remove_address();
-- } else {
-- $this->show_form(_('Unexpected form submission.'));
-- }
-- }
-+ if ($this->arg('save')) {
-+ $this->save_preferences();
-+ } else if ($this->arg('add')) {
-+ $this->add_address();
-+ } else if ($this->arg('cancel')) {
-+ $this->cancel_confirmation();
-+ } else if ($this->arg('remove')) {
-+ $this->remove_address();
-+ } else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-+ }
-hunk ./actions/imsettings.php 122
-- function save_preferences() {
-+ function save_preferences() {
-hunk ./actions/imsettings.php 124
-- $jabbernotify = $this->boolean('jabbernotify');
-- $updatefrompresence = $this->boolean('updatefrompresence');
-- $jabberreplies = $this->boolean('jabberreplies');
-- $jabbermicroid = $this->boolean('jabbermicroid');
-+ $jabbernotify = $this->boolean('jabbernotify');
-+ $updatefrompresence = $this->boolean('updatefrompresence');
-+ $jabberreplies = $this->boolean('jabberreplies');
-+ $jabbermicroid = $this->boolean('jabbermicroid');
-hunk ./actions/imsettings.php 129
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/imsettings.php 131
-- assert(!is_null($user)); # should already be checked
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/imsettings.php 133
-- $user->query('BEGIN');
-+ $user->query('BEGIN');
-hunk ./actions/imsettings.php 135
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/imsettings.php 137
-- $user->jabbernotify = $jabbernotify;
-- $user->updatefrompresence = $updatefrompresence;
-- $user->jabberreplies = $jabberreplies;
-- $user->jabbermicroid = $jabbermicroid;
-+ $user->jabbernotify = $jabbernotify;
-+ $user->updatefrompresence = $updatefrompresence;
-+ $user->jabberreplies = $jabberreplies;
-+ $user->jabbermicroid = $jabbermicroid;
-hunk ./actions/imsettings.php 142
-- $result = $user->update($original);
-+ $result = $user->update($original);
-hunk ./actions/imsettings.php 144
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 150
-- $user->query('COMMIT');
-+ $user->query('COMMIT');
-hunk ./actions/imsettings.php 152
-- $this->show_form(_('Preferences saved.'), true);
-- }
-+ $this->show_form(_('Preferences saved.'), true);
-+ }
-hunk ./actions/imsettings.php 155
-- function add_address() {
-+ function add_address() {
-hunk ./actions/imsettings.php 157
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/imsettings.php 159
-- $jabber = $this->trimmed('jabber');
-+ $jabber = $this->trimmed('jabber');
-hunk ./actions/imsettings.php 161
-- # Some validation
-+ # Some validation
-hunk ./actions/imsettings.php 163
-- if (!$jabber) {
-- $this->show_form(_('No Jabber ID.'));
-- return;
-- }
-+ if (!$jabber) {
-+ $this->show_form(_('No Jabber ID.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 168
-- $jabber = jabber_normalize_jid($jabber);
-+ $jabber = jabber_normalize_jid($jabber);
-hunk ./actions/imsettings.php 170
-- if (!$jabber) {
-- $this->show_form(_('Cannot normalize that Jabber ID'));
-- return;
-- }
-- if (!jabber_valid_base_jid($jabber)) {
-- $this->show_form(_('Not a valid Jabber ID'));
-- return;
-- } else if ($user->jabber == $jabber) {
-- $this->show_form(_('That is already your Jabber ID.'));
-- return;
-- } else if ($this->jabber_exists($jabber)) {
-- $this->show_form(_('Jabber ID already belongs to another user.'));
-- return;
-- }
-+ if (!$jabber) {
-+ $this->show_form(_('Cannot normalize that Jabber ID'));
-+ return;
-+ }
-+ if (!jabber_valid_base_jid($jabber)) {
-+ $this->show_form(_('Not a valid Jabber ID'));
-+ return;
-+ } else if ($user->jabber == $jabber) {
-+ $this->show_form(_('That is already your Jabber ID.'));
-+ return;
-+ } else if ($this->jabber_exists($jabber)) {
-+ $this->show_form(_('Jabber ID already belongs to another user.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 185
-- $confirm = new Confirm_address();
-- $confirm->address = $jabber;
-- $confirm->address_type = 'jabber';
-- $confirm->user_id = $user->id;
-- $confirm->code = common_confirmation_code(64);
-+ $confirm = new Confirm_address();
-+ $confirm->address = $jabber;
-+ $confirm->address_type = 'jabber';
-+ $confirm->user_id = $user->id;
-+ $confirm->code = common_confirmation_code(64);
-hunk ./actions/imsettings.php 191
-- $result = $confirm->insert();
-+ $result = $confirm->insert();
-hunk ./actions/imsettings.php 193
-- if ($result === FALSE) {
-- common_log_db_error($confirm, 'INSERT', __FILE__);
-- common_server_error(_('Couldn\'t insert confirmation code.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($confirm, 'INSERT', __FILE__);
-+ common_server_error(_('Couldn\'t insert confirmation code.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 199
-- if (!common_config('queue', 'enabled')) {
-- jabber_confirm_address($confirm->code,
-- $user->nickname,
-- $jabber);
-- }
-+ if (!common_config('queue', 'enabled')) {
-+ jabber_confirm_address($confirm->code,
-+ $user->nickname,
-+ $jabber);
-+ }
-hunk ./actions/imsettings.php 205
-- $msg = sprintf(_('A confirmation code was sent to the IM address you added. You must approve %s for sending messages to you.'), jabber_daemon_address());
-+ $msg = sprintf(_('A confirmation code was sent to the IM address you added. You must approve %s for sending messages to you.'), jabber_daemon_address());
-hunk ./actions/imsettings.php 207
-- $this->show_form($msg, TRUE);
-- }
-+ $this->show_form($msg, TRUE);
-+ }
-hunk ./actions/imsettings.php 210
-- function cancel_confirmation() {
-- $jabber = $this->arg('jabber');
-- $confirm = $this->get_confirmation();
-- if (!$confirm) {
-- $this->show_form(_('No pending confirmation to cancel.'));
-- return;
-- }
-- if ($confirm->address != $jabber) {
-- $this->show_form(_('That is the wrong IM address.'));
-- return;
-- }
-+ function cancel_confirmation() {
-+ $jabber = $this->arg('jabber');
-+ $confirm = $this->get_confirmation();
-+ if (!$confirm) {
-+ $this->show_form(_('No pending confirmation to cancel.'));
-+ return;
-+ }
-+ if ($confirm->address != $jabber) {
-+ $this->show_form(_('That is the wrong IM address.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 225
-- common_log_db_error($confirm, 'DELETE', __FILE__);
-+ common_log_db_error($confirm, 'DELETE', __FILE__);
-hunk ./actions/imsettings.php 231
-- }
-+ }
-hunk ./actions/imsettings.php 233
-- function remove_address() {
-+ function remove_address() {
-hunk ./actions/imsettings.php 235
-- $user = common_current_user();
-- $jabber = $this->arg('jabber');
-+ $user = common_current_user();
-+ $jabber = $this->arg('jabber');
-hunk ./actions/imsettings.php 238
-- # Maybe an old tab open...?
-+ # Maybe an old tab open...?
-hunk ./actions/imsettings.php 240
-- if ($user->jabber != $jabber) {
-- $this->show_form(_('That is not your Jabber ID.'));
-- return;
-- }
-+ if ($user->jabber != $jabber) {
-+ $this->show_form(_('That is not your Jabber ID.'));
-+ return;
-+ }
-hunk ./actions/imsettings.php 245
-- $user->query('BEGIN');
-- $original = clone($user);
-- $user->jabber = NULL;
-- $result = $user->updateKeys($original);
-- if (!$result) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-- $user->query('COMMIT');
-+ $user->query('BEGIN');
-+ $original = clone($user);
-+ $user->jabber = NULL;
-+ $result = $user->updateKeys($original);
-+ if (!$result) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-+ $user->query('COMMIT');
-hunk ./actions/imsettings.php 256
-- # XXX: unsubscribe to the old address
-+ # XXX: unsubscribe to the old address
-hunk ./actions/imsettings.php 258
-- $this->show_form(_('The address was removed.'), TRUE);
-- }
-+ $this->show_form(_('The address was removed.'), TRUE);
-+ }
-hunk ./actions/imsettings.php 261
-- function jabber_exists($jabber) {
-- $user = common_current_user();
-- $other = User::staticGet('jabber', $jabber);
-- if (!$other) {
-- return false;
-- } else {
-- return $other->id != $user->id;
-- }
-- }
-+ function jabber_exists($jabber) {
-+ $user = common_current_user();
-+ $other = User::staticGet('jabber', $jabber);
-+ if (!$other) {
-+ return false;
-+ } else {
-+ return $other->id != $user->id;
-+ }
-+ }
-hunk ./actions/invite.php 24
-- function is_readonly() {
-- return false;
-- }
-+ function is_readonly() {
-+ return false;
-+ }
-hunk ./actions/invite.php 30
-- if (!common_logged_in()) {
-- $this->client_error(sprintf(_('You must be logged in to invite other users to use %s'),
-- common_config('site', 'name')));
-- return;
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->send_invitations();
-- } else {
-- $this->show_form();
-- }
-- }
-+ if (!common_logged_in()) {
-+ $this->client_error(sprintf(_('You must be logged in to invite other users to use %s'),
-+ common_config('site', 'name')));
-+ return;
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->send_invitations();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/invite.php 41
-- function send_invitations() {
-+ function send_invitations() {
-hunk ./actions/invite.php 43
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/invite.php 50
-- $user = common_current_user();
-- $profile = $user->getProfile();
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-hunk ./actions/invite.php 53
-- $bestname = $profile->getBestName();
-- $sitename = common_config('site', 'name');
-- $personal = $this->trimmed('personal');
-+ $bestname = $profile->getBestName();
-+ $sitename = common_config('site', 'name');
-+ $personal = $this->trimmed('personal');
-hunk ./actions/invite.php 57
-- $addresses = explode("\n", $this->trimmed('addresses'));
-+ $addresses = explode("\n", $this->trimmed('addresses'));
-hunk ./actions/invite.php 59
-- foreach ($addresses as $email) {
-- $email = trim($email);
-- if (!Validate::email($email, true)) {
-- $this->show_form(sprintf(_('Invalid email address: %s'), $email));
-- return;
-- }
-- }
-+ foreach ($addresses as $email) {
-+ $email = trim($email);
-+ if (!Validate::email($email, true)) {
-+ $this->show_form(sprintf(_('Invalid email address: %s'), $email));
-+ return;
-+ }
-+ }
-hunk ./actions/invite.php 67
-- $already = array();
-- $subbed = array();
-+ $already = array();
-+ $subbed = array();
-hunk ./actions/invite.php 70
-- foreach ($addresses as $email) {
-- $email = common_canonical_email($email);
-- $other = User::staticGet('email', $email);
-- if ($other) {
-- if ($user->isSubscribed($other)) {
-- $already[] = $other;
-- } else {
-- subs_subscribe_to($user, $other);
-- $subbed[] = $other;
-- }
-- } else {
-- $sent[] = $email;
-- $this->send_invitation($email, $user, $personal);
-- }
-- }
-+ foreach ($addresses as $email) {
-+ $email = common_canonical_email($email);
-+ $other = User::staticGet('email', $email);
-+ if ($other) {
-+ if ($user->isSubscribed($other)) {
-+ $already[] = $other;
-+ } else {
-+ subs_subscribe_to($user, $other);
-+ $subbed[] = $other;
-+ }
-+ } else {
-+ $sent[] = $email;
-+ $this->send_invitation($email, $user, $personal);
-+ }
-+ }
-hunk ./actions/invite.php 86
-- common_show_header(_('Invitation(s) sent'));
-- if ($already) {
-- common_element('p', NULL, _('You are already subscribed to these users:'));
-- common_element_start('ul');
-- foreach ($already as $other) {
-- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
-- }
-- common_element_end('ul');
-- }
-- if ($subbed) {
-- common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:'));
-- common_element_start('ul');
-- foreach ($subbed as $other) {
-- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
-- }
-- common_element_end('ul');
-- }
-- if ($sent) {
-- common_element('p', NULL, _('Invitation(s) sent to the following people:'));
-- common_element_start('ul');
-- foreach ($sent as $other) {
-- common_element('li', NULL, $other);
-- }
-- common_element_end('ul');
-- common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!'));
-- }
-- common_show_footer();
-- }
-+ common_show_header(_('Invitation(s) sent'));
-+ if ($already) {
-+ common_element('p', NULL, _('You are already subscribed to these users:'));
-+ common_element_start('ul');
-+ foreach ($already as $other) {
-+ common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
-+ }
-+ common_element_end('ul');
-+ }
-+ if ($subbed) {
-+ common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:'));
-+ common_element_start('ul');
-+ foreach ($subbed as $other) {
-+ common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
-+ }
-+ common_element_end('ul');
-+ }
-+ if ($sent) {
-+ common_element('p', NULL, _('Invitation(s) sent to the following people:'));
-+ common_element_start('ul');
-+ foreach ($sent as $other) {
-+ common_element('li', NULL, $other);
-+ }
-+ common_element_end('ul');
-+ common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!'));
-+ }
-+ common_show_footer();
-+ }
+- common_element('h2', NULL, _('Preferences'));
++ common_element('h2', null, _('Preferences'));
+hunk ./actions/imsettings.php 96
+- return NULL;
++ return null;
+hunk ./actions/imsettings.php 247
+- $user->jabber = NULL;
++ $user->jabber = null;
+hunk ./actions/invite.php 88
+- common_element('p', NULL, _('You are already subscribed to these users:'));
++ common_element('p', null, _('You are already subscribed to these users:'));
+hunk ./actions/invite.php 91
+- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
++ common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email));
+hunk ./actions/invite.php 96
+- common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:'));
++ common_element('p', null, _('These people are already users and you were automatically subscribed to them:'));
+hunk ./actions/invite.php 99
+- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email));
++ common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email));
+hunk ./actions/invite.php 104
+- common_element('p', NULL, _('Invitation(s) sent to the following people:'));
++ common_element('p', null, _('Invitation(s) sent to the following people:'));
+hunk ./actions/invite.php 107
+- common_element('li', NULL, $other);
++ common_element('li', null, $other);
+hunk ./actions/invite.php 110
+- common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!'));
++ common_element('p', null, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!'));
hunk ./actions/invite.php 115
-- function show_top($error=NULL) {
-- if ($error) {
-- common_element('p', 'error', $error);
-- } else {
-- common_element_start('div', 'instructions');
-- common_element('p', NULL,
-- _('Use this form to invite your friends and colleagues to use this service.'));
-- common_element_end('div');
-- }
-- }
-+ function show_top($error=NULL) {
-+ if ($error) {
-+ common_element('p', 'error', $error);
-+ } else {
-+ common_element_start('div', 'instructions');
-+ common_element('p', NULL,
-+ _('Use this form to invite your friends and colleagues to use this service.'));
-+ common_element_end('div');
-+ }
-+ }
+- function show_top($error=NULL) {
++ function show_top($error=null) {
+hunk ./actions/invite.php 120
+- common_element('p', NULL,
++ common_element('p', null,
hunk ./actions/invite.php 126
-- function show_form($error=NULL) {
-+ function show_form($error=NULL) {
-hunk ./actions/invite.php 128
-- global $config;
-+ global $config;
+- function show_form($error=NULL) {
++ function show_form($error=null) {
hunk ./actions/invite.php 130
-- common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top'));
-+ common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top'));
-hunk ./actions/invite.php 132
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'invite',
-- 'action' => common_local_url('invite')));
-- common_hidden('token', common_session_token());
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'invite',
-+ 'action' => common_local_url('invite')));
-+ common_hidden('token', common_session_token());
-hunk ./actions/invite.php 137
-- common_textarea('addresses', _('Email addresses'),
-- $this->trimmed('addresses'),
-- _('Addresses of friends to invite (one per line)'));
-+ common_textarea('addresses', _('Email addresses'),
-+ $this->trimmed('addresses'),
-+ _('Addresses of friends to invite (one per line)'));
-hunk ./actions/invite.php 141
-- common_textarea('personal', _('Personal message'),
-- $this->trimmed('personal'),
-- _('Optionally add a personal message to the invitation.'));
-+ common_textarea('personal', _('Personal message'),
-+ $this->trimmed('personal'),
-+ _('Optionally add a personal message to the invitation.'));
-hunk ./actions/invite.php 145
-- common_submit('send', _('Send'));
-+ common_submit('send', _('Send'));
-hunk ./actions/invite.php 147
-- common_element_end('form');
-+ common_element_end('form');
-hunk ./actions/invite.php 149
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/invite.php 152
-- function send_invitation($email, $user, $personal) {
-+ function send_invitation($email, $user, $personal) {
-hunk ./actions/invite.php 154
-- $profile = $user->getProfile();
-- $bestname = $profile->getBestName();
-+ $profile = $user->getProfile();
-+ $bestname = $profile->getBestName();
-hunk ./actions/invite.php 157
-- $sitename = common_config('site', 'name');
-+ $sitename = common_config('site', 'name');
-hunk ./actions/invite.php 159
-- $invite = new Invitation();
-+ $invite = new Invitation();
-hunk ./actions/invite.php 161
-- $invite->address = $email;
-- $invite->address_type = 'email';
-- $invite->code = common_confirmation_code(128);
-- $invite->user_id = $user->id;
-- $invite->created = common_sql_now();
-+ $invite->address = $email;
-+ $invite->address_type = 'email';
-+ $invite->code = common_confirmation_code(128);
-+ $invite->user_id = $user->id;
-+ $invite->created = common_sql_now();
-hunk ./actions/invite.php 167
-- if (!$invite->insert()) {
-- common_log_db_error($invite, 'INSERT', __FILE__);
-- return false;
-- }
-+ if (!$invite->insert()) {
-+ common_log_db_error($invite, 'INSERT', __FILE__);
-+ return false;
-+ }
-hunk ./actions/invite.php 172
-- $recipients = array($email);
-+ $recipients = array($email);
-hunk ./actions/invite.php 174
-- $headers['From'] = mail_notify_from();
-- $headers['To'] = $email;
-- $headers['Subject'] = sprintf(_('%1$s has invited you to join them on %2$s'), $bestname, $sitename);
-+ $headers['From'] = mail_notify_from();
-+ $headers['To'] = $email;
-+ $headers['Subject'] = sprintf(_('%1$s has invited you to join them on %2$s'), $bestname, $sitename);
-hunk ./actions/invite.php 178
-- $body = sprintf(_("%1\$s has invited you to join them on %2\$s (%3\$s).\n\n".
-- "%2\$s is a micro-blogging service that lets you keep up-to-date with people you know and people who interest you.\n\n".
-- "You can also share news about yourself, your thoughts, or your life online with people who know about you. ".
-- "It's also great for meeting new people who share your interests.\n\n".
-- "%1\$s said:\n\n%4\$s\n\n".
-- "You can see %1\$s's profile page on %2\$s here:\n\n".
-- "%5\$s\n\n".
-- "If you'd like to try the service, click on the link below to accept the invitation.\n\n".
-- "%6\$s\n\n".
-- "If not, you can ignore this message. Thanks for your patience and your time.\n\n".
-- "Sincerely, %2\$s\n"),
-- $bestname,
-- $sitename,
-- common_root_url(),
-- $personal,
-- common_local_url('showstream', array('nickname' => $user->nickname)),
-- common_local_url('register', array('code' => $invite->code)));
-+ $body = sprintf(_("%1\$s has invited you to join them on %2\$s (%3\$s).\n\n".
-+ "%2\$s is a micro-blogging service that lets you keep up-to-date with people you know and people who interest you.\n\n".
-+ "You can also share news about yourself, your thoughts, or your life online with people who know about you. ".
-+ "It's also great for meeting new people who share your interests.\n\n".
-+ "%1\$s said:\n\n%4\$s\n\n".
-+ "You can see %1\$s's profile page on %2\$s here:\n\n".
-+ "%5\$s\n\n".
-+ "If you'd like to try the service, click on the link below to accept the invitation.\n\n".
-+ "%6\$s\n\n".
-+ "If not, you can ignore this message. Thanks for your patience and your time.\n\n".
-+ "Sincerely, %2\$s\n"),
-+ $bestname,
-+ $sitename,
-+ common_root_url(),
-+ $personal,
-+ common_local_url('showstream', array('nickname' => $user->nickname)),
-+ common_local_url('register', array('code' => $invite->code)));
-hunk ./actions/invite.php 196
-- mail_send($recipients, $headers, $body);
-- }
-+ mail_send($recipients, $headers, $body);
-+ }
-hunk ./actions/login.php 24
-- function is_readonly() {
-- return true;
-- }
-+ function is_readonly() {
-+ return true;
-+ }
-hunk ./actions/login.php 28
-- function handle($args) {
-- parent::handle($args);
-- if (common_is_real_login()) {
-- common_user_error(_('Already logged in.'));
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->check_login();
-- } else {
-- $this->show_form();
-- }
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ if (common_is_real_login()) {
-+ common_user_error(_('Already logged in.'));
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->check_login();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/login.php 39
-- function check_login() {
-- # XXX: login throttle
-+ function check_login() {
-+ # XXX: login throttle
-hunk ./actions/login.php 42
-- # CSRF protection - token set in common_notice_form()
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection - token set in common_notice_form()
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/login.php 49
-- $nickname = common_canonical_nickname($this->trimmed('nickname'));
-- $password = $this->arg('password');
-- if (common_check_user($nickname, $password)) {
-- # success!
-- if (!common_set_user($nickname)) {
-- common_server_error(_('Error setting user.'));
-- return;
-- }
-- common_real_login(true);
-- if ($this->boolean('rememberme')) {
-- common_debug('Adding rememberme cookie for ' . $nickname);
-- common_rememberme();
-- }
-- # success!
-- $url = common_get_returnto();
-- if ($url) {
-- # We don't have to return to it again
-- common_set_returnto(NULL);
-- } else {
-- $url = common_local_url('all',
-- array('nickname' =>
-- $nickname));
-- }
-- common_redirect($url);
-- } else {
-- $this->show_form(_('Incorrect username or password.'));
-- return;
-- }
-+ $nickname = common_canonical_nickname($this->trimmed('nickname'));
-+ $password = $this->arg('password');
-+ if (common_check_user($nickname, $password)) {
-+ # success!
-+ if (!common_set_user($nickname)) {
-+ common_server_error(_('Error setting user.'));
-+ return;
-+ }
-+ common_real_login(true);
-+ if ($this->boolean('rememberme')) {
-+ common_debug('Adding rememberme cookie for ' . $nickname);
-+ common_rememberme();
-+ }
-+ # success!
-+ $url = common_get_returnto();
-+ if ($url) {
-+ # We don't have to return to it again
-+ common_set_returnto(NULL);
-+ } else {
-+ $url = common_local_url('all',
-+ array('nickname' =>
-+ $nickname));
-+ }
-+ common_redirect($url);
-+ } else {
-+ $this->show_form(_('Incorrect username or password.'));
-+ return;
-+ }
-hunk ./actions/login.php 78
-- # success!
-- if (!common_set_user($user)) {
-- common_server_error(_('Error setting user.'));
-- return;
-- }
-+ # success!
-+ if (!common_set_user($user)) {
-+ common_server_error(_('Error setting user.'));
-+ return;
-+ }
-hunk ./actions/login.php 84
-- common_real_login(true);
-+ common_real_login(true);
-hunk ./actions/login.php 86
-- if ($this->boolean('rememberme')) {
-- common_debug('Adding rememberme cookie for ' . $nickname);
-- common_rememberme($user);
-- }
-- # success!
-- $url = common_get_returnto();
-- if ($url) {
-- # We don't have to return to it again
-- common_set_returnto(NULL);
-- } else {
-- $url = common_local_url('all',
-- array('nickname' =>
-- $nickname));
-- }
-- common_redirect($url);
-- }
-+ if ($this->boolean('rememberme')) {
-+ common_debug('Adding rememberme cookie for ' . $nickname);
-+ common_rememberme($user);
-+ }
-+ # success!
-+ $url = common_get_returnto();
-+ if ($url) {
-+ # We don't have to return to it again
-+ common_set_returnto(NULL);
-+ } else {
-+ $url = common_local_url('all',
-+ array('nickname' =>
-+ $nickname));
-+ }
-+ common_redirect($url);
-+ }
+- common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top'));
++ common_show_header(_('Invite new users'), null, $error, array($this, 'show_top'));
+hunk ./actions/login.php 66
+- common_set_returnto(NULL);
++ common_set_returnto(null);
+hunk ./actions/login.php 94
+- common_set_returnto(NULL);
++ common_set_returnto(null);
hunk ./actions/login.php 103
-- function show_form($error=NULL) {
-- common_show_header(_('Login'), NULL, $error, array($this, 'show_top'));
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'login',
-- 'action' => common_local_url('login')));
-- common_input('nickname', _('Nickname'));
-- common_password('password', _('Password'));
-- common_checkbox('rememberme', _('Remember me'), false,
-- _('Automatically login in the future; ' .
-- 'not for shared computers!'));
-- common_submit('submit', _('Login'));
-- common_hidden('token', common_session_token());
-- common_element_end('form');
-- common_element_start('p');
-- common_element('a', array('href' => common_local_url('recoverpassword')),
-- _('Lost or forgotten password?'));
-- common_element_end('p');
-- common_show_footer();
-- }
-+ function show_form($error=NULL) {
-+ common_show_header(_('Login'), NULL, $error, array($this, 'show_top'));
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'login',
-+ 'action' => common_local_url('login')));
-+ common_input('nickname', _('Nickname'));
-+ common_password('password', _('Password'));
-+ common_checkbox('rememberme', _('Remember me'), false,
-+ _('Automatically login in the future; ' .
-+ 'not for shared computers!'));
-+ common_submit('submit', _('Login'));
-+ common_hidden('token', common_session_token());
-+ common_element_end('form');
-+ common_element_start('p');
-+ common_element('a', array('href' => common_local_url('recoverpassword')),
-+ _('Lost or forgotten password?'));
-+ common_element_end('p');
-+ common_show_footer();
-+ }
-hunk ./actions/login.php 123
-- function get_instructions() {
-- if (common_logged_in() &&
-- !common_is_real_login() &&
-- common_get_returnto())
-- {
-- # rememberme logins have to reauthenticate before
-- # changing any profile settings (cookie-stealing protection)
-- return _('For security reasons, please re-enter your ' .
-- 'user name and password ' .
-- 'before changing your settings.');
-- } else {
-- return _('Login with your username and password. ' .
-- 'Don\'t have a username yet? ' .
-- '[Register](%%action.register%%) a new account, or ' .
-- 'try [OpenID](%%action.openidlogin%%). ');
-- }
-- }
-+ function get_instructions() {
-+ if (common_logged_in() &&
-+ !common_is_real_login() &&
-+ common_get_returnto())
-+ {
-+ # rememberme logins have to reauthenticate before
-+ # changing any profile settings (cookie-stealing protection)
-+ return _('For security reasons, please re-enter your ' .
-+ 'user name and password ' .
-+ 'before changing your settings.');
-+ } else {
-+ return _('Login with your username and password. ' .
-+ 'Don\'t have a username yet? ' .
-+ '[Register](%%action.register%%) a new account, or ' .
-+ 'try [OpenID](%%action.openidlogin%%). ');
-+ }
-+ }
+- function show_form($error=NULL) {
+- common_show_header(_('Login'), NULL, $error, array($this, 'show_top'));
++ function show_form($error=null) {
++ common_show_header(_('Login'), null, $error, array($this, 'show_top'));
hunk ./actions/login.php 141
-- function show_top($error=NULL) {
-- if ($error) {
-- common_element('p', 'error', $error);
-- } else {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- }
-- }
-+ function show_top($error=NULL) {
-+ if ($error) {
-+ common_element('p', 'error', $error);
-+ } else {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ }
-+ }
-hunk ./actions/logout.php 25
--
-- function is_readonly() {
-- return true;
-- }
--
-- function handle($args) {
-- parent::handle($args);
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- } else {
-- common_set_user(NULL);
-- common_real_login(false); # not logged in
-- common_forgetme(); # don't log back in!
-- common_redirect(common_local_url('public'));
-- }
-- }
-+
-+ function is_readonly() {
-+ return true;
-+ }
-+
-+ function handle($args) {
-+ parent::handle($args);
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ } else {
-+ common_set_user(NULL);
-+ common_real_login(false); # not logged in
-+ common_forgetme(); # don't log back in!
-+ common_redirect(common_local_url('public'));
-+ }
-+ }
-hunk ./actions/microsummary.php 24
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/microsummary.php 26
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/microsummary.php 28
-- $nickname = common_canonical_nickname($this->arg('nickname'));
-- $user = User::staticGet('nickname', $nickname);
-+ $nickname = common_canonical_nickname($this->arg('nickname'));
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/microsummary.php 31
-- if (!$user) {
-- $this->client_error(_('No such user'), 404);
-- return;
-- }
--
-- $notice = $user->getCurrentNotice();
--
-- if (!$notice) {
-- $this->client_error(_('No current status'), 404);
-- }
--
-- header('Content-Type: text/plain');
--
-- print $user->nickname . ': ' . $notice->content;
-- }
-+ if (!$user) {
-+ $this->client_error(_('No such user'), 404);
-+ return;
-+ }
-+
-+ $notice = $user->getCurrentNotice();
-+
-+ if (!$notice) {
-+ $this->client_error(_('No current status'), 404);
-+ }
-+
-+ header('Content-Type: text/plain');
-+
-+ print $user->nickname . ': ' . $notice->content;
-+ }
-hunk ./actions/newmessage.php 23
--
-- function handle($args) {
-- parent::handle($args);
-+
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/newmessage.php 27
-- if (!common_logged_in()) {
-- $this->client_error(_('Not logged in.'), 403);
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->save_new_message();
-- } else {
-- $this->show_form();
-- }
-- }
-+ if (!common_logged_in()) {
-+ $this->client_error(_('Not logged in.'), 403);
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->save_new_message();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/newmessage.php 36
-- function save_new_message() {
-- $user = common_current_user();
-- assert($user); # XXX: maybe an error instead...
-+ function save_new_message() {
-+ $user = common_current_user();
-+ assert($user); # XXX: maybe an error instead...
-hunk ./actions/newmessage.php 40
-- # CSRF protection
--
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
--
-- $content = $this->trimmed('content');
-- $to = $this->trimmed('to');
--
-- if (!$content) {
-- $this->show_form(_('No content!'));
-- return;
-- } else {
-- $content_shortened = common_shorten_links($content);
-+ # CSRF protection
-+
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-+
-+ $content = $this->trimmed('content');
-+ $to = $this->trimmed('to');
-+
-+ if (!$content) {
-+ $this->show_form(_('No content!'));
-+ return;
-+ } else {
-+ $content_shortened = common_shorten_links($content);
-hunk ./actions/newmessage.php 57
-- if (mb_strlen($content_shortened) > 140) {
-- common_debug("Content = '$content_shortened'", __FILE__);
-- common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__);
-- $this->show_form(_('That\'s too long. Max message size is 140 chars.'));
-- return;
-- }
-- }
-+ if (mb_strlen($content_shortened) > 140) {
-+ common_debug("Content = '$content_shortened'", __FILE__);
-+ common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__);
-+ $this->show_form(_('That\'s too long. Max message size is 140 chars.'));
-+ return;
-+ }
-+ }
-hunk ./actions/newmessage.php 65
-- $other = User::staticGet('id', $to);
--
-- if (!$other) {
-- $this->show_form(_('No recipient specified.'));
-- return;
-- } else if (!$user->mutuallySubscribed($other)) {
-- $this->client_error(_('You can\'t send a message to this user.'), 404);
-- return;
-- } else if ($user->id == $other->id) {
-- $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), 403);
-- return;
-- }
--
-- $message = Message::saveNew($user->id, $other->id, $content, 'web');
--
-- if (is_string($message)) {
-- $this->show_form($message);
-- return;
-- }
-+ $other = User::staticGet('id', $to);
-+
-+ if (!$other) {
-+ $this->show_form(_('No recipient specified.'));
-+ return;
-+ } else if (!$user->mutuallySubscribed($other)) {
-+ $this->client_error(_('You can\'t send a message to this user.'), 404);
-+ return;
-+ } else if ($user->id == $other->id) {
-+ $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), 403);
-+ return;
-+ }
-+
-+ $message = Message::saveNew($user->id, $other->id, $content, 'web');
-+
-+ if (is_string($message)) {
-+ $this->show_form($message);
-+ return;
-+ }
-hunk ./actions/newmessage.php 85
-- $this->notify($user, $other, $message);
-+ $this->notify($user, $other, $message);
-hunk ./actions/newmessage.php 87
-- $url = common_local_url('outbox', array('nickname' => $user->nickname));
-+ $url = common_local_url('outbox', array('nickname' => $user->nickname));
-hunk ./actions/newmessage.php 89
-- common_redirect($url, 303);
-- }
-+ common_redirect($url, 303);
-+ }
-hunk ./actions/newmessage.php 92
-- function show_top($params) {
-+ function show_top($params) {
-hunk ./actions/newmessage.php 94
-- list($content, $user, $to) = $params;
--
-- assert(!is_null($user));
-+ list($content, $user, $to) = $params;
-+
-+ assert(!is_null($user));
-hunk ./actions/newmessage.php 98
-- common_message_form($content, $user, $to);
-- }
-+ common_message_form($content, $user, $to);
-+ }
+- function show_top($error=NULL) {
++ function show_top($error=null) {
+hunk ./actions/logout.php 35
+- common_set_user(NULL);
++ common_set_user(null);
hunk ./actions/newmessage.php 101
-- function show_form($msg=NULL) {
--
-- $content = $this->trimmed('content');
-- $user = common_current_user();
-+ function show_form($msg=NULL) {
-+
-+ $content = $this->trimmed('content');
-+ $user = common_current_user();
-hunk ./actions/newmessage.php 106
-- $to = $this->trimmed('to');
--
-- $other = User::staticGet('id', $to);
-+ $to = $this->trimmed('to');
-+
-+ $other = User::staticGet('id', $to);
-hunk ./actions/newmessage.php 110
-- if (!$other) {
-- $this->client_error(_('No such user'), 404);
-- return;
-- }
-+ if (!$other) {
-+ $this->client_error(_('No such user'), 404);
-+ return;
-+ }
-hunk ./actions/newmessage.php 115
-- if (!$user->mutuallySubscribed($other)) {
-- $this->client_error(_('You can\'t send a message to this user.'), 404);
-- return;
-- }
--
-- common_show_header(_('New message'), NULL,
-- array($content, $user, $other),
-- array($this, 'show_top'));
--
-- if ($msg) {
-- common_element('p', array('id'=>'error'), $msg);
-- }
--
-- common_show_footer();
-- }
--
-- function notify($from, $to, $message) {
-- mail_notify_message($message, $from, $to);
-- # XXX: Jabber, SMS notifications... probably queued
-- }
-+ if (!$user->mutuallySubscribed($other)) {
-+ $this->client_error(_('You can\'t send a message to this user.'), 404);
-+ return;
-+ }
-+
-+ common_show_header(_('New message'), NULL,
-+ array($content, $user, $other),
-+ array($this, 'show_top'));
-+
-+ if ($msg) {
-+ common_element('p', array('id'=>'error'), $msg);
-+ }
-+
-+ common_show_footer();
-+ }
-+
-+ function notify($from, $to, $message) {
-+ mail_notify_message($message, $from, $to);
-+ # XXX: Jabber, SMS notifications... probably queued
-+ }
-hunk ./actions/newnotice.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/newnotice.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/newnotice.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/newnotice.php 29
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-hunk ./actions/newnotice.php 33
-- # CSRF protection - token set in common_notice_form()
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection - token set in common_notice_form()
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/newnotice.php 40
-- $this->save_new_notice();
-- } else {
-- $this->show_form();
-- }
-- }
-+ $this->save_new_notice();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/newnotice.php 46
-- function save_new_notice() {
-+ function save_new_notice() {
-hunk ./actions/newnotice.php 48
-- $user = common_current_user();
-- assert($user); # XXX: maybe an error instead...
-- $content = $this->trimmed('status_textarea');
-+ $user = common_current_user();
-+ assert($user); # XXX: maybe an error instead...
-+ $content = $this->trimmed('status_textarea');
-hunk ./actions/newnotice.php 52
-- if (!$content) {
-- $this->show_form(_('No content!'));
-- return;
-- } else {
-- $content_shortened = common_shorten_links($content);
-+ if (!$content) {
-+ $this->show_form(_('No content!'));
-+ return;
-+ } else {
-+ $content_shortened = common_shorten_links($content);
-hunk ./actions/newnotice.php 58
-- if (mb_strlen($content_shortened) > 140) {
-- common_debug("Content = '$content_shortened'", __FILE__);
-- common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__);
-- $this->show_form(_('That\'s too long. Max notice size is 140 chars.'));
-- return;
-- }
-- }
-+ if (mb_strlen($content_shortened) > 140) {
-+ common_debug("Content = '$content_shortened'", __FILE__);
-+ common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__);
-+ $this->show_form(_('That\'s too long. Max notice size is 140 chars.'));
-+ return;
-+ }
-+ }
-hunk ./actions/newnotice.php 66
-- $inter = new CommandInterpreter();
-+ $inter = new CommandInterpreter();
-hunk ./actions/newnotice.php 68
-- $cmd = $inter->handle_command($user, $content_shortened);
-+ $cmd = $inter->handle_command($user, $content_shortened);
-hunk ./actions/newnotice.php 70
-- if ($cmd) {
-- if ($this->boolean('ajax')) {
-- $cmd->execute(new AjaxWebChannel());
-- } else {
-- $cmd->execute(new WebChannel());
-- }
-- return;
-- }
-+ if ($cmd) {
-+ if ($this->boolean('ajax')) {
-+ $cmd->execute(new AjaxWebChannel());
-+ } else {
-+ $cmd->execute(new WebChannel());
-+ }
-+ return;
-+ }
-hunk ./actions/newnotice.php 79
-- $replyto = $this->trimmed('inreplyto');
-+ $replyto = $this->trimmed('inreplyto');
+- function show_form($msg=NULL) {
++ function show_form($msg=null) {
+hunk ./actions/newmessage.php 120
+- common_show_header(_('New message'), NULL,
++ common_show_header(_('New message'), null,
hunk ./actions/newnotice.php 81
-- $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto);
-+ $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto);
-hunk ./actions/newnotice.php 83
-- if (is_string($notice)) {
-- $this->show_form($notice);
-- return;
-- }
-+ if (is_string($notice)) {
-+ $this->show_form($notice);
-+ return;
-+ }
-hunk ./actions/newnotice.php 88
-- common_broadcast_notice($notice);
-+ common_broadcast_notice($notice);
-hunk ./actions/newnotice.php 90
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Notice posted'));
-- common_element_end('head');
-- common_element_start('body');
-- $this->show_notice($notice);
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- $returnto = $this->trimmed('returnto');
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Notice posted'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ $this->show_notice($notice);
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ $returnto = $this->trimmed('returnto');
-hunk ./actions/newnotice.php 102
-- if ($returnto) {
-- $url = common_local_url($returnto,
-- array('nickname' => $user->nickname));
-- } else {
-- $url = common_local_url('shownotice',
-- array('notice' => $notice->id));
-- }
-- common_redirect($url, 303);
-- }
-- }
-+ if ($returnto) {
-+ $url = common_local_url($returnto,
-+ array('nickname' => $user->nickname));
-+ } else {
-+ $url = common_local_url('shownotice',
-+ array('notice' => $notice->id));
-+ }
-+ common_redirect($url, 303);
-+ }
-+ }
-hunk ./actions/newnotice.php 113
-- function ajax_error_msg($msg) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Ajax Error'));
-- common_element_end('head');
-- common_element_start('body');
-- common_element('p', array('id' => 'error'), $msg);
-- common_element_end('body');
-- common_element_end('html');
-- }
-+ function ajax_error_msg($msg) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Ajax Error'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_element('p', array('id' => 'error'), $msg);
-+ common_element_end('body');
-+ common_element_end('html');
-+ }
+- $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto);
++ $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? null : $replyto);
hunk ./actions/newnotice.php 124
-- function show_top($content=NULL) {
-- common_notice_form(NULL, $content);
-- }
-+ function show_top($content=NULL) {
-+ common_notice_form(NULL, $content);
-+ }
+- function show_top($content=NULL) {
+- common_notice_form(NULL, $content);
++ function show_top($content=null) {
++ common_notice_form(null, $content);
hunk ./actions/newnotice.php 128
-- function show_form($msg=NULL) {
-- if ($msg && $this->boolean('ajax')) {
-- $this->ajax_error_msg($msg);
-- return;
-- }
-- $content = $this->trimmed('status_textarea');
-- if (!$content) {
-- $replyto = $this->trimmed('replyto');
-- $profile = Profile::staticGet('nickname', $replyto);
-- if ($profile) {
-- $content = '@' . $profile->nickname . ' ';
-- }
-- }
-- common_show_header(_('New notice'), NULL, $content,
-- array($this, 'show_top'));
-- if ($msg) {
-- common_element('p', array('id' => 'error'), $msg);
-- }
-- common_show_footer();
-- }
-+ function show_form($msg=NULL) {
-+ if ($msg && $this->boolean('ajax')) {
-+ $this->ajax_error_msg($msg);
-+ return;
-+ }
-+ $content = $this->trimmed('status_textarea');
-+ if (!$content) {
-+ $replyto = $this->trimmed('replyto');
-+ $profile = Profile::staticGet('nickname', $replyto);
-+ if ($profile) {
-+ $content = '@' . $profile->nickname . ' ';
-+ }
-+ }
-+ common_show_header(_('New notice'), NULL, $content,
-+ array($this, 'show_top'));
-+ if ($msg) {
-+ common_element('p', array('id' => 'error'), $msg);
-+ }
-+ common_show_footer();
-+ }
-hunk ./actions/newnotice.php 149
-- function show_notice($notice) {
-+ function show_notice($notice) {
-hunk ./actions/newnotice.php 152
-- }
-+ }
-hunk ./actions/noticesearch.php 28
-- function get_instructions() {
-- return _('Search for notices on %%site.name%% by their contents. Separate search terms by spaces; they must be 3 characters or more.');
-- }
-+ function get_instructions() {
-+ return _('Search for notices on %%site.name%% by their contents. Separate search terms by spaces; they must be 3 characters or more.');
-+ }
-hunk ./actions/noticesearch.php 32
-- function get_title() {
-- return _('Text search');
-- }
-+ function get_title() {
-+ return _('Text search');
-+ }
-hunk ./actions/noticesearch.php 36
-- function show_results($q, $page) {
-+ function show_results($q, $page) {
-hunk ./actions/noticesearch.php 38
-- $notice = new Notice();
-+ $notice = new Notice();
-hunk ./actions/noticesearch.php 40
-- # lcase it for comparison
-- $q = strtolower($q);
-+ # lcase it for comparison
-+ $q = strtolower($q);
-hunk ./actions/noticesearch.php 46
-- # Ask for an extra to see if there's more.
-- $search_engine->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-+ # Ask for an extra to see if there's more.
-+ $search_engine->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-hunk ./actions/noticesearch.php 53
-- $cnt = $notice->find();
-+ $cnt = $notice->find();
-+ }
-+ if ($cnt > 0) {
-+ $terms = preg_split('/[\s,]+/', $q);
-+ common_element_start('ul', array('id' => 'notices'));
-+ for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) {
-+ if ($notice->fetch()) {
-+ $this->show_notice($notice, $terms);
-+ } else {
-+ // shouldn't happen!
-+ break;
-+ }
-+ }
-+ common_element_end('ul');
-+ } else {
-+ common_element('p', 'error', _('No results'));
-hunk ./actions/noticesearch.php 70
-- if ($cnt > 0) {
-- $terms = preg_split('/[\s,]+/', $q);
-- common_element_start('ul', array('id' => 'notices'));
-- for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) {
-- if ($notice->fetch()) {
-- $this->show_notice($notice, $terms);
-- } else {
-- // shouldn't happen!
-- break;
-- }
-- }
-- common_element_end('ul');
-- } else {
-- common_element('p', 'error', _('No results'));
-- }
-hunk ./actions/noticesearch.php 71
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'noticesearch', array('q' => $q));
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'noticesearch', array('q' => $q));
-+ }
-hunk ./actions/noticesearch.php 75
-- function show_header($arr) {
-- if ($arr) {
-- $q = $arr[0];
-- }
-- if ($q) {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('noticesearchrss',
-- array('q' => $q)),
-- 'type' => 'application/rss+xml',
-- 'title' => _('Search Stream Feed')));
-- }
-- }
-+ function show_header($arr) {
-+ if ($arr) {
-+ $q = $arr[0];
-+ }
-+ if ($q) {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('noticesearchrss',
-+ array('q' => $q)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => _('Search Stream Feed')));
-+ }
-+ }
-hunk ./actions/noticesearch.php 88
-- # XXX: refactor and combine with StreamAction::show_notice()
-+ # XXX: refactor and combine with StreamAction::show_notice()
-hunk ./actions/noticesearch.php 90
-- function show_notice($notice, $terms) {
-- $profile = $notice->getProfile();
-- if (!$profile) {
-- common_log_db_error($notice, 'SELECT', __FILE__);
-- $this->server_error(_('Notice without matching profile'));
-- return;
-- }
-- # XXX: RDFa
-- common_element_start('li', array('class' => 'notice_single',
-- 'id' => 'notice-' . $notice->id));
-- $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-- common_element_start('a', array('href' => $profile->profileurl));
-- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE),
-- 'class' => 'avatar stream',
-- 'width' => AVATAR_STREAM_SIZE,
-- 'height' => AVATAR_STREAM_SIZE,
-- 'alt' =>
-- ($profile->fullname) ? $profile->fullname :
-- $profile->nickname));
-- common_element_end('a');
-- common_element('a', array('href' => $profile->profileurl,
-- 'class' => 'nickname'),
-- $profile->nickname);
-- # FIXME: URL, image, video, audio
-- common_element_start('p', array('class' => 'content'));
-- if ($notice->rendered) {
-- common_raw($this->highlight($notice->rendered, $terms));
-- } else {
-- # XXX: may be some uncooked notices in the DB,
-- # we cook them right now. This should probably disappear in future
-- # versions (>> 0.4.x)
-- common_raw($this->highlight(common_render_content($notice->content, $notice), $terms));
-- }
-- common_element_end('p');
-- $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
-- common_element_start('p', 'time');
-- common_element('a', array('class' => 'permalink',
-- 'href' => $noticeurl,
-- 'title' => common_exact_date($notice->created)),
-- common_date_string($notice->created));
-- if ($notice->reply_to) {
-- $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
-- common_text(' (');
-- common_element('a', array('class' => 'inreplyto',
-- 'href' => $replyurl),
-- _('in reply to...'));
-- common_text(')');
-- }
-- common_element_start('a',
-- array('href' => common_local_url('newnotice',
-- array('replyto' => $profile->nickname)),
-- 'onclick' => 'doreply("'.$profile->nickname.'"); return false',
-- 'title' => _('reply'),
-- 'class' => 'replybutton'));
-- common_hidden('posttoken', common_session_token());
--
-- common_raw('→');
-- common_element_end('a');
-- common_element_end('p');
-- common_element_end('li');
-- }
-+ function show_notice($notice, $terms) {
-+ $profile = $notice->getProfile();
-+ if (!$profile) {
-+ common_log_db_error($notice, 'SELECT', __FILE__);
-+ $this->server_error(_('Notice without matching profile'));
-+ return;
-+ }
-+ # XXX: RDFa
-+ common_element_start('li', array('class' => 'notice_single',
-+ 'id' => 'notice-' . $notice->id));
-+ $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-+ common_element_start('a', array('href' => $profile->profileurl));
-+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE),
-+ 'class' => 'avatar stream',
-+ 'width' => AVATAR_STREAM_SIZE,
-+ 'height' => AVATAR_STREAM_SIZE,
-+ 'alt' =>
-+ ($profile->fullname) ? $profile->fullname :
-+ $profile->nickname));
-+ common_element_end('a');
-+ common_element('a', array('href' => $profile->profileurl,
-+ 'class' => 'nickname'),
-+ $profile->nickname);
-+ # FIXME: URL, image, video, audio
-+ common_element_start('p', array('class' => 'content'));
-+ if ($notice->rendered) {
-+ common_raw($this->highlight($notice->rendered, $terms));
-+ } else {
-+ # XXX: may be some uncooked notices in the DB,
-+ # we cook them right now. This should probably disappear in future
-+ # versions (>> 0.4.x)
-+ common_raw($this->highlight(common_render_content($notice->content, $notice), $terms));
-+ }
-+ common_element_end('p');
-+ $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
-+ common_element_start('p', 'time');
-+ common_element('a', array('class' => 'permalink',
-+ 'href' => $noticeurl,
-+ 'title' => common_exact_date($notice->created)),
-+ common_date_string($notice->created));
-+ if ($notice->reply_to) {
-+ $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
-+ common_text(' (');
-+ common_element('a', array('class' => 'inreplyto',
-+ 'href' => $replyurl),
-+ _('in reply to...'));
-+ common_text(')');
-+ }
-+ common_element_start('a',
-+ array('href' => common_local_url('newnotice',
-+ array('replyto' => $profile->nickname)),
-+ 'onclick' => 'doreply("'.$profile->nickname.'"); return false',
-+ 'title' => _('reply'),
-+ 'class' => 'replybutton'));
-+ common_hidden('posttoken', common_session_token());
-+
-+ common_raw('→');
-+ common_element_end('a');
-+ common_element_end('p');
-+ common_element_end('li');
-+ }
-hunk ./actions/noticesearch.php 152
-- function highlight($text, $terms) {
-- /* Highligh serach terms */
-- $pattern = '/('.implode('|',array_map('htmlspecialchars', $terms)).')/i';
-- $result = preg_replace($pattern, '\\1', $text);
-+ function highlight($text, $terms) {
-+ /* Highligh serach terms */
-+ $pattern = '/('.implode('|',array_map('htmlspecialchars', $terms)).')/i';
-+ $result = preg_replace($pattern, '\\1', $text);
-hunk ./actions/noticesearch.php 157
-- /* Remove highlighting from inside links, loop incase multiple highlights in links */
-- $pattern = '/(href="[^"]*)('.implode('|',array_map('htmlspecialchars', $terms)).')<\/strong>([^"]*")/iU';
-- do {
-- $result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count);
-- } while ($count);
-- return $result;
-- }
-+ /* Remove highlighting from inside links, loop incase multiple highlights in links */
-+ $pattern = '/(href="[^"]*)('.implode('|',array_map('htmlspecialchars', $terms)).')<\/strong>([^"]*")/iU';
-+ do {
-+ $result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count);
-+ } while ($count);
-+ return $result;
-+ }
-hunk ./actions/noticesearchrss.php 28
-- function init() {
-- return true;
-- }
-+ function init() {
-+ return true;
-+ }
-hunk ./actions/noticesearchrss.php 32
-- function get_notices($limit=0) {
-+ function get_notices($limit=0) {
-hunk ./actions/noticesearchrss.php 34
-- $q = $this->trimmed('q');
-- $notices = array();
-+ $q = $this->trimmed('q');
-+ $notices = array();
-hunk ./actions/noticesearchrss.php 37
-- $notice = new Notice();
-+ $notice = new Notice();
-hunk ./actions/noticesearchrss.php 39
-- # lcase it for comparison
-- $q = strtolower($q);
-+ # lcase it for comparison
-+ $q = strtolower($q);
-hunk ./actions/noticesearchrss.php 45
-- if (!$limit) $limit = 20;
-+ if (!$limit) $limit = 20;
-hunk ./actions/noticesearchrss.php 48
-- $notice->find();
-+ $notice->find();
-hunk ./actions/noticesearchrss.php 50
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/noticesearchrss.php 54
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/noticesearchrss.php 57
-- function get_channel() {
-- global $config;
-- $q = $this->trimmed('q');
-- $c = array('url' => common_local_url('noticesearchrss', array('q' => $q)),
-- 'title' => $config['site']['name'] . sprintf(_(' Search Stream for "%s"'), $q),
-- 'link' => common_local_url('noticesearch', array('q' => $q)),
-- 'description' => sprintf(_('All updates matching search term "%s"'), $q));
-- return $c;
-- }
-+ function get_channel() {
-+ global $config;
-+ $q = $this->trimmed('q');
-+ $c = array('url' => common_local_url('noticesearchrss', array('q' => $q)),
-+ 'title' => $config['site']['name'] . sprintf(_(' Search Stream for "%s"'), $q),
-+ 'link' => common_local_url('noticesearch', array('q' => $q)),
-+ 'description' => sprintf(_('All updates matching search term "%s"'), $q));
-+ return $c;
-+ }
-hunk ./actions/noticesearchrss.php 67
-- function get_image() {
-- return NULL;
-- }
-+ function get_image() {
-+ return NULL;
-+ }
-hunk ./actions/nudge.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/nudge.php 29
-- if (!common_logged_in()) {
-- $this->client_error(_('Not logged in.'));
-- return;
-- }
-+ if (!common_logged_in()) {
-+ $this->client_error(_('Not logged in.'));
-+ return;
-+ }
-hunk ./actions/nudge.php 34
-- $user = common_current_user();
-- $other = User::staticGet('nickname', $this->arg('nickname'));
-+ $user = common_current_user();
-+ $other = User::staticGet('nickname', $this->arg('nickname'));
-hunk ./actions/nudge.php 37
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- common_redirect(common_local_url('showstream', array('nickname' => $other->nickname)));
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ common_redirect(common_local_url('showstream', array('nickname' => $other->nickname)));
-+ return;
-+ }
-hunk ./actions/nudge.php 42
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/nudge.php 44
-- $token = $this->trimmed('token');
--
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ $token = $this->trimmed('token');
-+
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/nudge.php 56
-- $this->notify($user, $other);
-+ $this->notify($user, $other);
-hunk ./actions/nudge.php 58
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Nudge sent'));
-- common_element_end('head');
-- common_element_start('body');
-- common_nudge_response();
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Nudge sent'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_nudge_response();
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-hunk ./actions/nudge.php 69
-- common_redirect(common_local_url('showstream',
-- array('nickname' => $other->nickname)));
-- }
-- }
-+ common_redirect(common_local_url('showstream',
-+ array('nickname' => $other->nickname)));
-+ }
-+ }
-hunk ./actions/nudge.php 74
-- function notify($user, $other) {
-- if ($other->id != $user->id) {
-- if ($other->email && $other->emailnotifynudge) {
-- mail_notify_nudge($user, $other);
-- }
-- # XXX: notify by IM
-- # XXX: notify by SMS
-- }
-- }
-+ function notify($user, $other) {
-+ if ($other->id != $user->id) {
-+ if ($other->email && $other->emailnotifynudge) {
-+ mail_notify_nudge($user, $other);
-+ }
-+ # XXX: notify by IM
-+ # XXX: notify by SMS
-+ }
-+ }
-hunk ./actions/openidlogin.php 26
-- function handle($args) {
-- parent::handle($args);
-- if (common_logged_in()) {
-- common_user_error(_('Already logged in.'));
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $openid_url = $this->trimmed('openid_url');
-+ function handle($args) {
-+ parent::handle($args);
-+ if (common_logged_in()) {
-+ common_user_error(_('Already logged in.'));
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $openid_url = $this->trimmed('openid_url');
-hunk ./actions/openidlogin.php 33
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'), $openid_url);
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'), $openid_url);
-+ return;
-+ }
-hunk ./actions/openidlogin.php 40
-- $rememberme = $this->boolean('rememberme');
--
-- common_ensure_session();
--
-- $_SESSION['openid_rememberme'] = $rememberme;
--
-- $result = oid_authenticate($openid_url,
-- 'finishopenidlogin');
--
-- if (is_string($result)) { # error message
-- unset($_SESSION['openid_rememberme']);
-- $this->show_form($result, $openid_url);
-- }
-- } else {
-- $openid_url = oid_get_last();
-- $this->show_form(NULL, $openid_url);
-- }
-- }
-+ $rememberme = $this->boolean('rememberme');
-+
-+ common_ensure_session();
-+
-+ $_SESSION['openid_rememberme'] = $rememberme;
-+
-+ $result = oid_authenticate($openid_url,
-+ 'finishopenidlogin');
-+
-+ if (is_string($result)) { # error message
-+ unset($_SESSION['openid_rememberme']);
-+ $this->show_form($result, $openid_url);
-+ }
-+ } else {
-+ $openid_url = oid_get_last();
-+ $this->show_form(NULL, $openid_url);
-+ }
-+ }
-hunk ./actions/openidlogin.php 59
-- function get_instructions() {
-- return _('Login with an [OpenID](%%doc.openid%%) account.');
-- }
-+ function get_instructions() {
-+ return _('Login with an [OpenID](%%doc.openid%%) account.');
-+ }
+- function show_form($msg=NULL) {
++ function show_form($msg=null) {
+hunk ./actions/newnotice.php 141
+- common_show_header(_('New notice'), NULL, $content,
++ common_show_header(_('New notice'), null, $content,
+hunk ./actions/noticesearchrss.php 68
+- return NULL;
++ return null;
+hunk ./actions/openidlogin.php 55
+- $this->show_form(NULL, $openid_url);
++ $this->show_form(null, $openid_url);
hunk ./actions/openidlogin.php 63
-- function show_top($error=NULL) {
-- if ($error) {
-- common_element('div', array('class' => 'error'), $error);
-- } else {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- }
-- }
-+ function show_top($error=NULL) {
-+ if ($error) {
-+ common_element('div', array('class' => 'error'), $error);
-+ } else {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ }
-+ }
+- function show_top($error=NULL) {
++ function show_top($error=null) {
hunk ./actions/openidlogin.php 75
-- function show_form($error=NULL, $openid_url) {
-- common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top'));
-- $formaction = common_local_url('openidlogin');
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'openidlogin',
-- 'action' => $formaction));
-- common_hidden('token', common_session_token());
-- common_input('openid_url', _('OpenID URL'),
-- $openid_url,
-- _('Your OpenID URL'));
-- common_checkbox('rememberme', _('Remember me'), false,
-- _('Automatically login in the future; ' .
-- 'not for shared computers!'));
-- common_submit('submit', _('Login'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ function show_form($error=NULL, $openid_url) {
-+ common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top'));
-+ $formaction = common_local_url('openidlogin');
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'openidlogin',
-+ 'action' => $formaction));
-+ common_hidden('token', common_session_token());
-+ common_input('openid_url', _('OpenID URL'),
-+ $openid_url,
-+ _('Your OpenID URL'));
-+ common_checkbox('rememberme', _('Remember me'), false,
-+ _('Automatically login in the future; ' .
-+ 'not for shared computers!'));
-+ common_submit('submit', _('Login'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/openidsettings.php 27
-- function get_instructions() {
-- return _('[OpenID](%%doc.openid%%) lets you log into many sites ' .
-- ' with the same user account. '.
-- ' Manage your associated OpenIDs from here.');
-- }
-+ function get_instructions() {
-+ return _('[OpenID](%%doc.openid%%) lets you log into many sites ' .
-+ ' with the same user account. '.
-+ ' Manage your associated OpenIDs from here.');
-+ }
+- function show_form($error=NULL, $openid_url) {
+- common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top'));
++ function show_form($error=null, $openid_url) {
++ common_show_header(_('OpenID Login'), null, $error, array($this, 'show_top'));
hunk ./actions/openidsettings.php 33
-- function show_form($msg=NULL, $success=false) {
-+ function show_form($msg=NULL, $success=false) {
-hunk ./actions/openidsettings.php 35
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/openidsettings.php 37
-- $this->form_header(_('OpenID settings'), $msg, $success);
-+ $this->form_header(_('OpenID settings'), $msg, $success);
-hunk ./actions/openidsettings.php 39
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'openidadd',
-- 'action' =>
-- common_local_url('openidsettings')));
-- common_hidden('token', common_session_token());
-- common_element('h2', NULL, _('Add OpenID'));
-- common_element('p', NULL,
-- _('If you want to add an OpenID to your account, ' .
-- 'enter it in the box below and click "Add".'));
-- common_element_start('p');
-- common_element('label', array('for' => 'openid_url'),
-- _('OpenID URL'));
-- common_element('input', array('name' => 'openid_url',
-- 'type' => 'text',
-- 'id' => 'openid_url'));
-- common_element('input', array('type' => 'submit',
-- 'id' => 'add',
-- 'name' => 'add',
-- 'class' => 'submit',
-- 'value' => _('Add')));
-- common_element_end('p');
-- common_element_end('form');
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'openidadd',
-+ 'action' =>
-+ common_local_url('openidsettings')));
-+ common_hidden('token', common_session_token());
-+ common_element('h2', NULL, _('Add OpenID'));
-+ common_element('p', NULL,
-+ _('If you want to add an OpenID to your account, ' .
-+ 'enter it in the box below and click "Add".'));
-+ common_element_start('p');
-+ common_element('label', array('for' => 'openid_url'),
-+ _('OpenID URL'));
-+ common_element('input', array('name' => 'openid_url',
-+ 'type' => 'text',
-+ 'id' => 'openid_url'));
-+ common_element('input', array('type' => 'submit',
-+ 'id' => 'add',
-+ 'name' => 'add',
-+ 'class' => 'submit',
-+ 'value' => _('Add')));
-+ common_element_end('p');
-+ common_element_end('form');
-hunk ./actions/openidsettings.php 62
-- $oid = new User_openid();
-- $oid->user_id = $user->id;
-+ $oid = new User_openid();
-+ $oid->user_id = $user->id;
-hunk ./actions/openidsettings.php 65
-- $cnt = $oid->find();
-+ $cnt = $oid->find();
-hunk ./actions/openidsettings.php 67
-- if ($cnt > 0) {
-+ if ($cnt > 0) {
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
+hunk ./actions/openidsettings.php 44
+- common_element('h2', NULL, _('Add OpenID'));
+- common_element('p', NULL,
++ common_element('h2', null, _('Add OpenID'));
++ common_element('p', null,
hunk ./actions/openidsettings.php 69
-- common_element('h2', NULL, _('Remove OpenID'));
-+ common_element('h2', NULL, _('Remove OpenID'));
-hunk ./actions/openidsettings.php 71
-- if ($cnt == 1 && !$user->password) {
-+ if ($cnt == 1 && !$user->password) {
+- common_element('h2', NULL, _('Remove OpenID'));
++ common_element('h2', null, _('Remove OpenID'));
hunk ./actions/openidsettings.php 73
-- common_element('p', NULL,
-- _('Removing your only OpenID would make it impossible to log in! ' .
-- 'If you need to remove it, add another OpenID first.'));
-+ common_element('p', NULL,
-+ _('Removing your only OpenID would make it impossible to log in! ' .
-+ 'If you need to remove it, add another OpenID first.'));
-hunk ./actions/openidsettings.php 77
-- if ($oid->fetch()) {
-- common_element_start('p');
-- common_element('a', array('href' => $oid->canonical),
-- $oid->display);
-- common_element_end('p');
-- }
-+ if ($oid->fetch()) {
-+ common_element_start('p');
-+ common_element('a', array('href' => $oid->canonical),
-+ $oid->display);
-+ common_element_end('p');
-+ }
-hunk ./actions/openidsettings.php 84
-- } else {
-+ } else {
+- common_element('p', NULL,
++ common_element('p', null,
hunk ./actions/openidsettings.php 86
-- common_element('p', NULL,
-- _('You can remove an OpenID from your account '.
-- 'by clicking the button marked "Remove".'));
-- $idx = 0;
-+ common_element('p', NULL,
-+ _('You can remove an OpenID from your account '.
-+ 'by clicking the button marked "Remove".'));
-+ $idx = 0;
-hunk ./actions/openidsettings.php 91
-- while ($oid->fetch()) {
-- common_element_start('form', array('method' => 'POST',
-- 'id' => 'openiddelete' . $idx,
-- 'action' =>
-- common_local_url('openidsettings')));
-- common_element_start('p');
-- common_hidden('token', common_session_token());
-- common_element('a', array('href' => $oid->canonical),
-- $oid->display);
-- common_element('input', array('type' => 'hidden',
-- 'id' => 'openid_url'.$idx,
-- 'name' => 'openid_url',
-- 'value' => $oid->canonical));
-- common_element('input', array('type' => 'submit',
-- 'id' => 'remove'.$idx,
-- 'name' => 'remove',
-- 'class' => 'submit',
-- 'value' => _('Remove')));
-- common_element_end('p');
-- common_element_end('form');
-- $idx++;
-- }
-- }
-- }
-+ while ($oid->fetch()) {
-+ common_element_start('form', array('method' => 'POST',
-+ 'id' => 'openiddelete' . $idx,
-+ 'action' =>
-+ common_local_url('openidsettings')));
-+ common_element_start('p');
-+ common_hidden('token', common_session_token());
-+ common_element('a', array('href' => $oid->canonical),
-+ $oid->display);
-+ common_element('input', array('type' => 'hidden',
-+ 'id' => 'openid_url'.$idx,
-+ 'name' => 'openid_url',
-+ 'value' => $oid->canonical));
-+ common_element('input', array('type' => 'submit',
-+ 'id' => 'remove'.$idx,
-+ 'name' => 'remove',
-+ 'class' => 'submit',
-+ 'value' => _('Remove')));
-+ common_element_end('p');
-+ common_element_end('form');
-+ $idx++;
-+ }
-+ }
-+ }
-hunk ./actions/openidsettings.php 116
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/openidsettings.php 119
-- function handle_post() {
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ function handle_post() {
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/openidsettings.php 127
-- if ($this->arg('add')) {
-- $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid');
-- if (is_string($result)) { # error message
-- $this->show_form($result);
-- }
-- } else if ($this->arg('remove')) {
-- $this->remove_openid();
-- } else {
-- $this->show_form(_('Something weird happened.'));
-- }
-- }
-+ if ($this->arg('add')) {
-+ $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid');
-+ if (is_string($result)) { # error message
-+ $this->show_form($result);
-+ }
-+ } else if ($this->arg('remove')) {
-+ $this->remove_openid();
-+ } else {
-+ $this->show_form(_('Something weird happened.'));
-+ }
-+ }
-hunk ./actions/openidsettings.php 139
-- function remove_openid() {
-+ function remove_openid() {
-hunk ./actions/openidsettings.php 141
-- $openid_url = $this->trimmed('openid_url');
-- $oid = User_openid::staticGet('canonical', $openid_url);
-- if (!$oid) {
-- $this->show_form(_('No such OpenID.'));
-- return;
-- }
-- $cur = common_current_user();
-- if (!$cur || $oid->user_id != $cur->id) {
-- $this->show_form(_('That OpenID does not belong to you.'));
-- return;
-- }
-- $oid->delete();
-- $this->show_form(_('OpenID removed.'), true);
-- return;
-- }
-+ $openid_url = $this->trimmed('openid_url');
-+ $oid = User_openid::staticGet('canonical', $openid_url);
-+ if (!$oid) {
-+ $this->show_form(_('No such OpenID.'));
-+ return;
-+ }
-+ $cur = common_current_user();
-+ if (!$cur || $oid->user_id != $cur->id) {
-+ $this->show_form(_('That OpenID does not belong to you.'));
-+ return;
-+ }
-+ $oid->delete();
-+ $this->show_form(_('OpenID removed.'), true);
-+ return;
-+ }
-hunk ./actions/opensearch.php 24
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/opensearch.php 26
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/opensearch.php 28
-- $type = $this->trimmed('type');
-+ $type = $this->trimmed('type');
-hunk ./actions/opensearch.php 30
-- $short_name = '';
-- if ($type == 'people') {
-- $type = 'peoplesearch';
-- $short_name = _('People Search');
-- } else {
-- $short_name = _('Notice Search');
-- $type = 'noticesearch';
-- }
-+ $short_name = '';
-+ if ($type == 'people') {
-+ $type = 'peoplesearch';
-+ $short_name = _('People Search');
-+ } else {
-+ $short_name = _('Notice Search');
-+ $type = 'noticesearch';
-+ }
-hunk ./actions/opensearch.php 39
-- header('Content-Type: text/html');
-+ header('Content-Type: text/html');
-hunk ./actions/opensearch.php 41
-- common_start_xml();
-- common_element_start('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/'));
-+ common_start_xml();
-+ common_element_start('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/'));
-hunk ./actions/opensearch.php 44
-- $short_name = common_config('site', 'name').' '.$short_name;
-- common_element('ShortName', NULL, $short_name);
-- common_element('Contact', NULL, common_config('site', 'email'));
-- common_element('Url', array('type' => 'text/html', 'method' => 'get',
-- 'template' => str_replace('---', '{searchTerms}', common_local_url($type, array('q' => '---')))));
-- common_element('Image', array('height' => 16, 'width' => 16, 'type' => 'image/vnd.microsoft.icon'), common_path('favicon.ico'));
-- common_element('Image', array('height' => 50, 'width' => 50, 'type' => 'image/png'), theme_path('logo.png'));
-- common_element('AdultContent', NULL, 'false');
-- common_element('Language', NULL, common_language());
-- common_element('OutputEncoding', NULL, 'UTF-8');
-- common_element('InputEncoding', NULL, 'UTF-8');
-+ $short_name = common_config('site', 'name').' '.$short_name;
-+ common_element('ShortName', NULL, $short_name);
-+ common_element('Contact', NULL, common_config('site', 'email'));
-+ common_element('Url', array('type' => 'text/html', 'method' => 'get',
-+ 'template' => str_replace('---', '{searchTerms}', common_local_url($type, array('q' => '---')))));
-+ common_element('Image', array('height' => 16, 'width' => 16, 'type' => 'image/vnd.microsoft.icon'), common_path('favicon.ico'));
-+ common_element('Image', array('height' => 50, 'width' => 50, 'type' => 'image/png'), theme_path('logo.png'));
-+ common_element('AdultContent', NULL, 'false');
-+ common_element('Language', NULL, common_language());
-+ common_element('OutputEncoding', NULL, 'UTF-8');
-+ common_element('InputEncoding', NULL, 'UTF-8');
-hunk ./actions/opensearch.php 56
-- common_element_end('OpenSearchDescription');
-- common_end_xml();
-- }
-+ common_element_end('OpenSearchDescription');
-+ common_end_xml();
-+ }
-hunk ./actions/othersettings.php 26
-- function get_instructions() {
-- return _('Manage various other options.');
-- }
-+ function get_instructions() {
-+ return _('Manage various other options.');
-+ }
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/opensearch.php 45
+- common_element('ShortName', NULL, $short_name);
+- common_element('Contact', NULL, common_config('site', 'email'));
++ common_element('ShortName', null, $short_name);
++ common_element('Contact', null, common_config('site', 'email'));
+hunk ./actions/opensearch.php 51
+- common_element('AdultContent', NULL, 'false');
+- common_element('Language', NULL, common_language());
+- common_element('OutputEncoding', NULL, 'UTF-8');
+- common_element('InputEncoding', NULL, 'UTF-8');
++ common_element('AdultContent', null, 'false');
++ common_element('Language', null, common_language());
++ common_element('OutputEncoding', null, 'UTF-8');
++ common_element('InputEncoding', null, 'UTF-8');
hunk ./actions/othersettings.php 30
-- function show_form($msg=NULL, $success=false) {
-- $user = common_current_user();
-+ function show_form($msg=NULL, $success=false) {
-+ $user = common_current_user();
-hunk ./actions/othersettings.php 33
-- $this->form_header(_('Other Settings'), $msg, $success);
-+ $this->form_header(_('Other Settings'), $msg, $success);
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
hunk ./actions/othersettings.php 35
-- common_element('h2', NULL, _('URL Auto-shortening'));
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'othersettings',
-- 'action' =>
-- common_local_url('othersettings')));
-- common_hidden('token', common_session_token());
-+ common_element('h2', NULL, _('URL Auto-shortening'));
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'othersettings',
-+ 'action' =>
-+ common_local_url('othersettings')));
-+ common_hidden('token', common_session_token());
-hunk ./actions/othersettings.php 42
-- $services = array(
-- '' => 'None',
-+ $services = array(
-+ '' => 'None',
-hunk ./actions/othersettings.php 48
-- 'tinyurl.com' => 'tinyurl.com',
-- 'is.gd' => 'is.gd',
-- 'snipr.com' => 'snipr.com',
-- 'metamark.net' => 'metamark.net'
-- );
-+ 'tinyurl.com' => 'tinyurl.com',
-+ 'is.gd' => 'is.gd',
-+ 'snipr.com' => 'snipr.com',
-+ 'metamark.net' => 'metamark.net'
-+ );
-hunk ./actions/othersettings.php 54
-- common_dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), FALSE, $user->urlshorteningservice);
-+ common_dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), FALSE, $user->urlshorteningservice);
-hunk ./actions/othersettings.php 56
-- common_submit('save', _('Save'));
-+ common_submit('save', _('Save'));
-hunk ./actions/othersettings.php 58
-- common_element_end('form');
-+ common_element_end('form');
+- common_element('h2', NULL, _('URL Auto-shortening'));
++ common_element('h2', null, _('URL Auto-shortening'));
hunk ./actions/othersettings.php 60
--// common_element('h2', NULL, _('Delete my account'));
--// $this->show_delete_form();
-+// common_element('h2', NULL, _('Delete my account'));
-+// $this->show_delete_form();
-hunk ./actions/othersettings.php 63
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/othersettings.php 66
-- function show_feeds_list($feeds) {
-- common_element_start('div', array('class' => 'feedsdel'));
-- common_element('p', null, 'Feeds:');
-- common_element_start('ul', array('class' => 'xoxo'));
-+ function show_feeds_list($feeds) {
-+ common_element_start('div', array('class' => 'feedsdel'));
-+ common_element('p', null, 'Feeds:');
-+ common_element_start('ul', array('class' => 'xoxo'));
-hunk ./actions/othersettings.php 71
-- foreach ($feeds as $key => $value) {
-- $this->common_feed_item($feeds[$key]);
-- }
-- common_element_end('ul');
-- common_element_end('div');
-- }
-+ foreach ($feeds as $key => $value) {
-+ $this->common_feed_item($feeds[$key]);
-+ }
-+ common_element_end('ul');
-+ common_element_end('div');
-+ }
-hunk ./actions/othersettings.php 79
-- function common_feed_item($feed) {
-+ function common_feed_item($feed) {
-hunk ./actions/othersettings.php 81
-- $nickname = $user->nickname;
-+ $nickname = $user->nickname;
-hunk ./actions/othersettings.php 83
-- switch($feed['item']) {
-- case 'notices': default:
-- $feed_classname = $feed['type'];
-- $feed_mimetype = "application/".$feed['type']."+xml";
-- $feed_title = "$nickname's ".$feed['version']." notice feed";
-- $feed['textContent'] = "RSS";
-- break;
-+ switch($feed['item']) {
-+ case 'notices': default:
-+ $feed_classname = $feed['type'];
-+ $feed_mimetype = "application/".$feed['type']."+xml";
-+ $feed_title = "$nickname's ".$feed['version']." notice feed";
-+ $feed['textContent'] = "RSS";
-+ break;
-hunk ./actions/othersettings.php 91
-- case 'foaf':
-- $feed_classname = "foaf";
-- $feed_mimetype = "application/".$feed['type']."+xml";
-- $feed_title = "$nickname's FOAF file";
-- $feed['textContent'] = "FOAF";
-- break;
-- }
-- common_element_start('li');
-- common_element('a', array('href' => $feed['href'],
-- 'class' => $feed_classname,
-- 'type' => $feed_mimetype,
-- 'title' => $feed_title),
-- $feed['textContent']);
-- common_element_end('li');
-- }
-+ case 'foaf':
-+ $feed_classname = "foaf";
-+ $feed_mimetype = "application/".$feed['type']."+xml";
-+ $feed_title = "$nickname's FOAF file";
-+ $feed['textContent'] = "FOAF";
-+ break;
-+ }
-+ common_element_start('li');
-+ common_element('a', array('href' => $feed['href'],
-+ 'class' => $feed_classname,
-+ 'type' => $feed_mimetype,
-+ 'title' => $feed_title),
-+ $feed['textContent']);
-+ common_element_end('li');
-+ }
-hunk ./actions/othersettings.php 107
--// function show_delete_form() {
--// $user = common_current_user();
-+// function show_delete_form() {
-+// $user = common_current_user();
-hunk ./actions/othersettings.php 113
--// common_element_start('form', array('method' => 'POST',
--// 'id' => 'delete',
--// 'action' =>
--// common_local_url('deleteprofile')));
-+// common_element_start('form', array('method' => 'POST',
-+// 'id' => 'delete',
-+// 'action' =>
-+// common_local_url('deleteprofile')));
-hunk ./actions/othersettings.php 118
--// common_hidden('token', common_session_token());
-+// common_hidden('token', common_session_token());
-hunk ./actions/othersettings.php 121
--// $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
--// 'type' => 'rss',
--// 'version' => 'RSS 1.0',
--// 'item' => 'notices'),
--// 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
--// 'type' => 'rdf',
--// 'version' => 'FOAF',
--// 'item' => 'foaf')));
-+// $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
-+// 'type' => 'rss',
-+// 'version' => 'RSS 1.0',
-+// 'item' => 'notices'),
-+// 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
-+// 'type' => 'rdf',
-+// 'version' => 'FOAF',
-+// 'item' => 'foaf')));
-hunk ./actions/othersettings.php 130
--// common_submit('deleteaccount', _('Delete my account'));
--// common_element_end('form');
--// }
-+// common_submit('deleteaccount', _('Delete my account'));
-+// common_element_end('form');
-+// }
-hunk ./actions/othersettings.php 134
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/othersettings.php 136
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/othersettings.php 143
-- if ($this->arg('save')) {
-- $this->save_preferences();
-- }else {
-- $this->show_form(_('Unexpected form submission.'));
-- }
-- }
-+ if ($this->arg('save')) {
-+ $this->save_preferences();
-+ }else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-+ }
-hunk ./actions/othersettings.php 150
-- function save_preferences() {
-+ function save_preferences() {
-hunk ./actions/othersettings.php 152
-- $urlshorteningservice = $this->trimmed('urlshorteningservice');
-+ $urlshorteningservice = $this->trimmed('urlshorteningservice');
-hunk ./actions/othersettings.php 154
-- if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
-- $this->show_form(_('URL shortening service is too long (max 50 chars).'));
-- return;
-- }
-+ if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
-+ $this->show_form(_('URL shortening service is too long (max 50 chars).'));
-+ return;
-+ }
-hunk ./actions/othersettings.php 159
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/othersettings.php 161
-- assert(!is_null($user)); # should already be checked
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/othersettings.php 163
-- $user->query('BEGIN');
-+ $user->query('BEGIN');
-hunk ./actions/othersettings.php 165
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/othersettings.php 167
-- $user->urlshorteningservice = $urlshorteningservice;
-+ $user->urlshorteningservice = $urlshorteningservice;
-hunk ./actions/othersettings.php 169
-- $result = $user->update($original);
-+ $result = $user->update($original);
-hunk ./actions/othersettings.php 171
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-hunk ./actions/othersettings.php 177
-- $user->query('COMMIT');
-+ $user->query('COMMIT');
-hunk ./actions/othersettings.php 179
-- $this->show_form(_('Preferences saved.'), true);
-- }
-+ $this->show_form(_('Preferences saved.'), true);
-+ }
-hunk ./actions/peoplesearch.php 27
-- function get_instructions() {
-- return _('Search for people on %%site.name%% by their name, location, or interests. ' .
-- 'Separate the terms by spaces; they must be 3 characters or more.');
-- }
-+ function get_instructions() {
-+ return _('Search for people on %%site.name%% by their name, location, or interests. ' .
-+ 'Separate the terms by spaces; they must be 3 characters or more.');
-+ }
-hunk ./actions/peoplesearch.php 32
-- function get_title() {
-- return _('People search');
-- }
-+ function get_title() {
-+ return _('People search');
-+ }
-hunk ./actions/peoplesearch.php 36
-- function show_results($q, $page) {
-+ function show_results($q, $page) {
-hunk ./actions/peoplesearch.php 38
-- $profile = new Profile();
-+ $profile = new Profile();
-hunk ./actions/peoplesearch.php 40
-- # lcase it for comparison
-- $q = strtolower($q);
-+ # lcase it for comparison
-+ $q = strtolower($q);
-hunk ./actions/peoplesearch.php 46
-- # Ask for an extra to see if there's more.
-+ # Ask for an extra to see if there's more.
-hunk ./actions/peoplesearch.php 52
-- $cnt = $profile->find();
-+ $cnt = $profile->find();
-+ }
-+ if ($cnt > 0) {
-+ $terms = preg_split('/[\s,]+/', $q);
-+ $results = new PeopleSearchResults($profile, $terms);
-+ $results->show_list();
-+ } else {
-+ common_element('p', 'error', _('No results'));
-hunk ./actions/peoplesearch.php 61
-- if ($cnt > 0) {
-- $terms = preg_split('/[\s,]+/', $q);
-- $results = new PeopleSearchResults($profile, $terms);
-- $results->show_list();
-- } else {
-- common_element('p', 'error', _('No results'));
-- }
-hunk ./actions/peoplesearch.php 62
-- $profile->free();
--
-- common_pagination($page > 1, $cnt > PROFILES_PER_PAGE,
-- $page, 'peoplesearch', array('q' => $q));
-- }
-+ $profile->free();
-+
-+ common_pagination($page > 1, $cnt > PROFILES_PER_PAGE,
-+ $page, 'peoplesearch', array('q' => $q));
-+ }
+-// common_element('h2', NULL, _('Delete my account'));
++// common_element('h2', null, _('Delete my account'));
hunk ./actions/peoplesearch.php 71
-- var $terms = NULL;
-- var $pattern = NULL;
--
-- function __construct($profile, $terms) {
-- parent::__construct($profile);
-- $this->terms = array_map('preg_quote',
-- array_map('htmlspecialchars', $terms));
-- $this->pattern = '/('.implode('|',$terms).')/i';
-- }
--
-- function highlight($text) {
-- return preg_replace($this->pattern, '\\1', htmlspecialchars($text));
-- }
-+ var $terms = NULL;
-+ var $pattern = NULL;
-+
-+ function __construct($profile, $terms) {
-+ parent::__construct($profile);
-+ $this->terms = array_map('preg_quote',
-+ array_map('htmlspecialchars', $terms));
-+ $this->pattern = '/('.implode('|',$terms).')/i';
-+ }
-+
-+ function highlight($text) {
-+ return preg_replace($this->pattern, '\\1', htmlspecialchars($text));
-+ }
-hunk ./actions/peopletag.php 25
--
-- function handle($args) {
-+
-+ function handle($args) {
-hunk ./actions/peopletag.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/peopletag.php 30
-- $tag = $this->trimmed('tag');
--
-- if (!common_valid_profile_tag($tag)) {
-- $this->client_error(sprintf(_('Not a valid people tag: %s'), $tag));
-- return;
-- }
-+ $tag = $this->trimmed('tag');
-+
-+ if (!common_valid_profile_tag($tag)) {
-+ $this->client_error(sprintf(_('Not a valid people tag: %s'), $tag));
-+ return;
-+ }
-hunk ./actions/peopletag.php 37
-- $page = $this->trimmed('page');
--
-- if (!$page) {
-- $page = 1;
-- }
--
-- # Looks like we're good; show the header
-+ $page = $this->trimmed('page');
-+
-+ if (!$page) {
-+ $page = 1;
-+ }
-+
-+ # Looks like we're good; show the header
-hunk ./actions/peopletag.php 45
-- common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page),
-- NULL, $tag, array($this, 'show_top'));
-+ common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page),
-+ NULL, $tag, array($this, 'show_top'));
-hunk ./actions/peopletag.php 48
-- $this->show_people($tag, $page);
-+ $this->show_people($tag, $page);
-hunk ./actions/peopletag.php 50
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/peopletag.php 53
-- function show_people($tag, $page) {
--
-- $profile = new Profile();
-+ function show_people($tag, $page) {
-+
-+ $profile = new Profile();
-hunk ./actions/peopletag.php 57
-- $offset = ($page-1)*PROFILES_PER_PAGE;
-- $limit = PROFILES_PER_PAGE + 1;
--
-- if (common_config('db','type') == 'pgsql') {
-- $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-- } else {
-- $lim = ' LIMIT ' . $offset . ', ' . $limit;
-- }
-+ $offset = ($page-1)*PROFILES_PER_PAGE;
-+ $limit = PROFILES_PER_PAGE + 1;
-+
-+ if (common_config('db','type') == 'pgsql') {
-+ $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-+ } else {
-+ $lim = ' LIMIT ' . $offset . ', ' . $limit;
-+ }
-hunk ./actions/peopletag.php 66
-- # XXX: memcached this
--
-- $profile->query(sprintf('SELECT profile.* ' .
-- 'FROM profile JOIN profile_tag ' .
-- 'ON profile.id = profile_tag.tagger ' .
-- 'WHERE profile_tag.tagger = profile_tag.tagged ' .
-- 'AND tag = "%s" ' .
-- 'ORDER BY profile_tag.modified DESC ' .
-- $lim, $tag));
-+ # XXX: memcached this
-+
-+ $profile->query(sprintf('SELECT profile.* ' .
-+ 'FROM profile JOIN profile_tag ' .
-+ 'ON profile.id = profile_tag.tagger ' .
-+ 'WHERE profile_tag.tagger = profile_tag.tagged ' .
-+ 'AND tag = "%s" ' .
-+ 'ORDER BY profile_tag.modified DESC ' .
-+ $lim, $tag));
-hunk ./actions/peopletag.php 76
-- $pl = new ProfileList($profile);
-- $cnt = $pl->show_list();
--
-- common_pagination($page > 1,
-- $cnt > PROFILES_PER_PAGE,
-- $page,
-- $this->trimmed('action'),
-- array('tag' => $tag));
-- }
--
-- function show_top($tag) {
-- $instr = sprintf(_('These are users who have tagged themselves "%s" ' .
-- 'to show a common interest, characteristic, hobby or job.'), $tag);
-- common_element_start('div', 'instructions');
-- common_element_start('p');
-- common_text($instr);
-- common_element_end('p');
-- common_element_end('div');
-- }
-+ $pl = new ProfileList($profile);
-+ $cnt = $pl->show_list();
-+
-+ common_pagination($page > 1,
-+ $cnt > PROFILES_PER_PAGE,
-+ $page,
-+ $this->trimmed('action'),
-+ array('tag' => $tag));
-+ }
-+
-+ function show_top($tag) {
-+ $instr = sprintf(_('These are users who have tagged themselves "%s" ' .
-+ 'to show a common interest, characteristic, hobby or job.'), $tag);
-+ common_element_start('div', 'instructions');
-+ common_element_start('p');
-+ common_text($instr);
-+ common_element_end('p');
-+ common_element_end('div');
-+ }
-hunk ./actions/peopletag.php 96
-- function get_title() {
-- return NULL;
-- }
-+ function get_title() {
-+ return NULL;
-+ }
-hunk ./actions/peopletag.php 100
-- function show_header($arr) {
-- return;
-- }
-+ function show_header($arr) {
-+ return;
-+ }
-hunk ./actions/postnotice.php 25
-- function handle($args) {
-- parent::handle($args);
-- try {
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-- # Note: server-to-server function!
-- $server = omb_oauth_server();
-- list($consumer, $token) = $server->verify_request($req);
-- if ($this->save_notice($req, $consumer, $token)) {
-- print "omb_version=".OMB_VERSION_01;
-- }
-- } catch (OAuthException $e) {
-- common_server_error($e->getMessage());
-- return;
-- }
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ try {
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-+ # Note: server-to-server function!
-+ $server = omb_oauth_server();
-+ list($consumer, $token) = $server->verify_request($req);
-+ if ($this->save_notice($req, $consumer, $token)) {
-+ print "omb_version=".OMB_VERSION_01;
-+ }
-+ } catch (OAuthException $e) {
-+ common_server_error($e->getMessage());
-+ return;
-+ }
-+ }
-hunk ./actions/postnotice.php 42
-- function save_notice(&$req, &$consumer, &$token) {
-- $version = $req->get_parameter('omb_version');
-- if ($version != OMB_VERSION_01) {
-- common_user_error(_('Unsupported OMB version'), 400);
-- return false;
-- }
-- # First, check to see
-- $listenee = $req->get_parameter('omb_listenee');
-- $remote_profile = Remote_profile::staticGet('uri', $listenee);
-- if (!$remote_profile) {
-- common_user_error(_('Profile unknown'), 403);
-- return false;
-- }
-- $sub = Subscription::staticGet('token', $token->key);
-- if (!$sub) {
-- common_user_error(_('No such subscription'), 403);
-- return false;
-- }
-- $content = $req->get_parameter('omb_notice_content');
-+ function save_notice(&$req, &$consumer, &$token) {
-+ $version = $req->get_parameter('omb_version');
-+ if ($version != OMB_VERSION_01) {
-+ common_user_error(_('Unsupported OMB version'), 400);
-+ return false;
-+ }
-+ # First, check to see
-+ $listenee = $req->get_parameter('omb_listenee');
-+ $remote_profile = Remote_profile::staticGet('uri', $listenee);
-+ if (!$remote_profile) {
-+ common_user_error(_('Profile unknown'), 403);
-+ return false;
-+ }
-+ $sub = Subscription::staticGet('token', $token->key);
-+ if (!$sub) {
-+ common_user_error(_('No such subscription'), 403);
-+ return false;
-+ }
-+ $content = $req->get_parameter('omb_notice_content');
-hunk ./actions/postnotice.php 66
-- $notice_uri = $req->get_parameter('omb_notice');
-- if (!Validate::uri($notice_uri) &&
-- !common_valid_tag($notice_uri)) {
-- common_user_error(_('Invalid notice uri'), 400);
-- return false;
-- }
-- $notice_url = $req->get_parameter('omb_notice_url');
-- if ($notice_url && !common_valid_http_url($notice_url)) {
-- common_user_error(_('Invalid notice url'), 400);
-- return false;
-- }
-- $notice = Notice::staticGet('uri', $notice_uri);
-- if (!$notice) {
-- $notice = Notice::saveNew($remote_profile->id, $content, 'omb', false, 0, $notice_uri);
-- if (is_string($notice)) {
-- common_server_serror($notice, 500);
-- return false;
-- }
-- common_broadcast_notice($notice, true);
-- }
-- return true;
-- }
-+ $notice_uri = $req->get_parameter('omb_notice');
-+ if (!Validate::uri($notice_uri) &&
-+ !common_valid_tag($notice_uri)) {
-+ common_user_error(_('Invalid notice uri'), 400);
-+ return false;
-+ }
-+ $notice_url = $req->get_parameter('omb_notice_url');
-+ if ($notice_url && !common_valid_http_url($notice_url)) {
-+ common_user_error(_('Invalid notice url'), 400);
-+ return false;
-+ }
-+ $notice = Notice::staticGet('uri', $notice_uri);
-+ if (!$notice) {
-+ $notice = Notice::saveNew($remote_profile->id, $content, 'omb', false, 0, $notice_uri);
-+ if (is_string($notice)) {
-+ common_server_serror($notice, 500);
-+ return false;
-+ }
-+ common_broadcast_notice($notice, true);
-+ }
-+ return true;
-+ }
-hunk ./actions/profilesettings.php 26
-- function get_instructions() {
-- return _('You can update your personal profile info here '.
-- 'so people know more about you.');
-- }
-+ function get_instructions() {
-+ return _('You can update your personal profile info here '.
-+ 'so people know more about you.');
-+ }
+- var $terms = NULL;
+- var $pattern = NULL;
++ var $terms = null;
++ var $pattern = null;
+hunk ./actions/peopletag.php 46
+- NULL, $tag, array($this, 'show_top'));
++ null, $tag, array($this, 'show_top'));
+hunk ./actions/peopletag.php 97
+- return NULL;
++ return null;
hunk ./actions/profilesettings.php 31
-- function show_form($msg=NULL, $success=false) {
-- $this->form_header(_('Profile settings'), $msg, $success);
-- $this->show_settings_form();
-- common_element('h2', NULL, _('Avatar'));
-- $this->show_avatar_form();
-- common_element('h2', NULL, _('Change password'));
-- $this->show_password_form();
--// common_element('h2', NULL, _('Delete my account'));
--// $this->show_delete_form();
-- common_show_footer();
-- }
-+ function show_form($msg=NULL, $success=false) {
-+ $this->form_header(_('Profile settings'), $msg, $success);
-+ $this->show_settings_form();
-+ common_element('h2', NULL, _('Avatar'));
-+ $this->show_avatar_form();
-+ common_element('h2', NULL, _('Change password'));
-+ $this->show_password_form();
-+// common_element('h2', NULL, _('Delete my account'));
-+// $this->show_delete_form();
-+ common_show_footer();
-+ }
-hunk ./actions/profilesettings.php 43
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/profilesettings.php 45
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/profilesettings.php 47
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 53
-- if ($this->arg('save')) {
-- $this->save_profile();
-- } else if ($this->arg('upload')) {
-- $this->upload_avatar();
-- } else if ($this->arg('changepass')) {
-- $this->change_password();
-- }
-+ if ($this->arg('save')) {
-+ $this->save_profile();
-+ } else if ($this->arg('upload')) {
-+ $this->upload_avatar();
-+ } else if ($this->arg('changepass')) {
-+ $this->change_password();
-+ }
-hunk ./actions/profilesettings.php 61
-- }
-+ }
-hunk ./actions/profilesettings.php 63
-- function show_settings_form() {
-+ function show_settings_form() {
-hunk ./actions/profilesettings.php 65
-- $user = common_current_user();
-- $profile = $user->getProfile();
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-hunk ./actions/profilesettings.php 68
-- common_element_start('form', array('method' => 'POST',
-- 'id' => 'profilesettings',
-- 'action' =>
-- common_local_url('profilesettings')));
-- common_hidden('token', common_session_token());
--
-- # too much common patterns here... abstractable?
--
-- common_input('nickname', _('Nickname'),
-- ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
-- _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-- common_input('fullname', _('Full name'),
-- ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname);
-- common_input('homepage', _('Homepage'),
-- ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage,
-- _('URL of your homepage, blog, or profile on another site'));
-- common_textarea('bio', _('Bio'),
-- ($this->arg('bio')) ? $this->arg('bio') : $profile->bio,
-- _('Describe yourself and your interests in 140 chars'));
-- common_input('location', _('Location'),
-- ($this->arg('location')) ? $this->arg('location') : $profile->location,
-- _('Where you are, like "City, State (or Region), Country"'));
-- common_input('tags', _('Tags'),
-- ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()),
-- _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated'));
-+ common_element_start('form', array('method' => 'POST',
-+ 'id' => 'profilesettings',
-+ 'action' =>
-+ common_local_url('profilesettings')));
-+ common_hidden('token', common_session_token());
-+
-+ # too much common patterns here... abstractable?
-+
-+ common_input('nickname', _('Nickname'),
-+ ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
-+ _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-+ common_input('fullname', _('Full name'),
-+ ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname);
-+ common_input('homepage', _('Homepage'),
-+ ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage,
-+ _('URL of your homepage, blog, or profile on another site'));
-+ common_textarea('bio', _('Bio'),
-+ ($this->arg('bio')) ? $this->arg('bio') : $profile->bio,
-+ _('Describe yourself and your interests in 140 chars'));
-+ common_input('location', _('Location'),
-+ ($this->arg('location')) ? $this->arg('location') : $profile->location,
-+ _('Where you are, like "City, State (or Region), Country"'));
-+ common_input('tags', _('Tags'),
-+ ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()),
-+ _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated'));
-hunk ./actions/profilesettings.php 94
-- $language = common_language();
-- common_dropdown('language', _('Language'), get_nice_language_list(), _('Preferred language'), TRUE, $language);
-- $timezone = common_timezone();
-- $timezones = array();
-- foreach(DateTimeZone::listIdentifiers() as $k => $v) {
-- $timezones[$v] = $v;
-- }
-- common_dropdown('timezone', _('Timezone'), $timezones, _('What timezone are you normally in?'), TRUE, $timezone);
-+ $language = common_language();
-+ common_dropdown('language', _('Language'), get_nice_language_list(), _('Preferred language'), TRUE, $language);
-+ $timezone = common_timezone();
-+ $timezones = array();
-+ foreach(DateTimeZone::listIdentifiers() as $k => $v) {
-+ $timezones[$v] = $v;
-+ }
-+ common_dropdown('timezone', _('Timezone'), $timezones, _('What timezone are you normally in?'), TRUE, $timezone);
-hunk ./actions/profilesettings.php 103
-- common_checkbox('autosubscribe', _('Automatically subscribe to whoever subscribes to me (best for non-humans)'),
-- ($this->arg('autosubscribe')) ? $this->boolean('autosubscribe') : $user->autosubscribe);
-+ common_checkbox('autosubscribe', _('Automatically subscribe to whoever subscribes to me (best for non-humans)'),
-+ ($this->arg('autosubscribe')) ? $this->boolean('autosubscribe') : $user->autosubscribe);
-hunk ./actions/profilesettings.php 106
-- common_submit('save', _('Save'));
-+ common_submit('save', _('Save'));
-hunk ./actions/profilesettings.php 108
-- common_element_end('form');
-+ common_element_end('form');
-hunk ./actions/profilesettings.php 111
-- }
-+ }
-hunk ./actions/profilesettings.php 113
-- function show_avatar_form() {
-+ function show_avatar_form() {
-hunk ./actions/profilesettings.php 115
-- $user = common_current_user();
-- $profile = $user->getProfile();
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-hunk ./actions/profilesettings.php 118
-- if (!$profile) {
-- common_log_db_error($user, 'SELECT', __FILE__);
-- $this->server_error(_('User without matching profile'));
-- return;
-- }
--
-- $original = $profile->getOriginalAvatar();
-+ if (!$profile) {
-+ common_log_db_error($user, 'SELECT', __FILE__);
-+ $this->server_error(_('User without matching profile'));
-+ return;
-+ }
-+
-+ $original = $profile->getOriginalAvatar();
-hunk ./actions/profilesettings.php 127
-- common_element_start('form', array('enctype' => 'multipart/form-data',
-- 'method' => 'POST',
-- 'id' => 'avatar',
-- 'action' =>
-- common_local_url('profilesettings')));
-- common_hidden('token', common_session_token());
-+ common_element_start('form', array('enctype' => 'multipart/form-data',
-+ 'method' => 'POST',
-+ 'id' => 'avatar',
-+ 'action' =>
-+ common_local_url('profilesettings')));
-+ common_hidden('token', common_session_token());
-hunk ./actions/profilesettings.php 134
-- if ($original) {
-- common_element('img', array('src' => $original->url,
-- 'class' => 'avatar original',
-- 'width' => $original->width,
-- 'height' => $original->height,
-- 'alt' => $user->nickname));
-- }
-+ if ($original) {
-+ common_element('img', array('src' => $original->url,
-+ 'class' => 'avatar original',
-+ 'width' => $original->width,
-+ 'height' => $original->height,
-+ 'alt' => $user->nickname));
-+ }
-hunk ./actions/profilesettings.php 142
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-hunk ./actions/profilesettings.php 144
-- if ($avatar) {
-- common_element('img', array('src' => $avatar->url,
-- 'class' => 'avatar profile',
-- 'width' => AVATAR_PROFILE_SIZE,
-- 'height' => AVATAR_PROFILE_SIZE,
-- 'alt' => $user->nickname));
-- }
-+ if ($avatar) {
-+ common_element('img', array('src' => $avatar->url,
-+ 'class' => 'avatar profile',
-+ 'width' => AVATAR_PROFILE_SIZE,
-+ 'height' => AVATAR_PROFILE_SIZE,
-+ 'alt' => $user->nickname));
-+ }
-hunk ./actions/profilesettings.php 153
-- common_element('input', array('name' => 'MAX_FILE_SIZE',
-- 'type' => 'hidden',
-- 'id' => 'MAX_FILE_SIZE',
-- 'value' => MAX_AVATAR_SIZE));
-+ common_element('input', array('name' => 'MAX_FILE_SIZE',
-+ 'type' => 'hidden',
-+ 'id' => 'MAX_FILE_SIZE',
-+ 'value' => MAX_AVATAR_SIZE));
-hunk ./actions/profilesettings.php 158
-- common_element_start('p');
-+ common_element_start('p');
-hunk ./actions/profilesettings.php 161
-- common_element('input', array('name' => 'avatarfile',
-- 'type' => 'file',
-- 'id' => 'avatarfile'));
-- common_element_end('p');
-+ common_element('input', array('name' => 'avatarfile',
-+ 'type' => 'file',
-+ 'id' => 'avatarfile'));
-+ common_element_end('p');
-hunk ./actions/profilesettings.php 166
-- common_submit('upload', _('Upload'));
-- common_element_end('form');
-+ common_submit('upload', _('Upload'));
-+ common_element_end('form');
-hunk ./actions/profilesettings.php 169
-- }
-+ }
-hunk ./actions/profilesettings.php 171
-- function show_password_form() {
-+ function show_password_form() {
-hunk ./actions/profilesettings.php 173
-- $user = common_current_user();
-- common_element_start('form', array('method' => 'POST',
-- 'id' => 'password',
-- 'action' =>
-- common_local_url('profilesettings')));
-+ $user = common_current_user();
-+ common_element_start('form', array('method' => 'POST',
-+ 'id' => 'password',
-+ 'action' =>
-+ common_local_url('profilesettings')));
-hunk ./actions/profilesettings.php 179
-- common_hidden('token', common_session_token());
-+ common_hidden('token', common_session_token());
-hunk ./actions/profilesettings.php 181
-- # Users who logged in with OpenID won't have a pwd
-- if ($user->password) {
-- common_password('oldpassword', _('Old password'));
-- }
-- common_password('newpassword', _('New password'),
-- _('6 or more characters'));
-- common_password('confirm', _('Confirm'),
-- _('same as password above'));
-- common_submit('changepass', _('Change'));
-- common_element_end('form');
-- }
-+ # Users who logged in with OpenID won't have a pwd
-+ if ($user->password) {
-+ common_password('oldpassword', _('Old password'));
-+ }
-+ common_password('newpassword', _('New password'),
-+ _('6 or more characters'));
-+ common_password('confirm', _('Confirm'),
-+ _('same as password above'));
-+ common_submit('changepass', _('Change'));
-+ common_element_end('form');
-+ }
-hunk ./actions/profilesettings.php 193
-- function save_profile() {
-- $nickname = $this->trimmed('nickname');
-- $fullname = $this->trimmed('fullname');
-- $homepage = $this->trimmed('homepage');
-- $bio = $this->trimmed('bio');
-- $location = $this->trimmed('location');
-- $autosubscribe = $this->boolean('autosubscribe');
-- $language = $this->trimmed('language');
-- $timezone = $this->trimmed('timezone');
-- $tagstring = $this->trimmed('tags');
--
-- # Some validation
-+ function save_profile() {
-+ $nickname = $this->trimmed('nickname');
-+ $fullname = $this->trimmed('fullname');
-+ $homepage = $this->trimmed('homepage');
-+ $bio = $this->trimmed('bio');
-+ $location = $this->trimmed('location');
-+ $autosubscribe = $this->boolean('autosubscribe');
-+ $language = $this->trimmed('language');
-+ $timezone = $this->trimmed('timezone');
-+ $tagstring = $this->trimmed('tags');
-+
-+ # Some validation
-hunk ./actions/profilesettings.php 206
-- if (!Validate::string($nickname, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-- return;
-- } else if (!User::allowed_nickname($nickname)) {
-- $this->show_form(_('Not a valid nickname.'));
-- return;
-- } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
-- !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
-- $this->show_form(_('Homepage is not a valid URL.'));
-- return;
-- } else if (!is_null($fullname) && strlen($fullname) > 255) {
-- $this->show_form(_('Full name is too long (max 255 chars).'));
-- return;
-- } else if (!is_null($bio) && strlen($bio) > 140) {
-- $this->show_form(_('Bio is too long (max 140 chars).'));
-- return;
-- } else if (!is_null($location) && strlen($location) > 255) {
-- $this->show_form(_('Location is too long (max 255 chars).'));
-- return;
-- } else if (is_null($timezone) || !in_array($timezone, DateTimeZone::listIdentifiers())) {
-- $this->show_form(_('Timezone not selected.'));
-- return;
-- } else if ($this->nickname_exists($nickname)) {
-- $this->show_form(_('Nickname already in use. Try another one.'));
-- return;
-+ if (!Validate::string($nickname, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-+ return;
-+ } else if (!User::allowed_nickname($nickname)) {
-+ $this->show_form(_('Not a valid nickname.'));
-+ return;
-+ } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
-+ !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
-+ $this->show_form(_('Homepage is not a valid URL.'));
-+ return;
-+ } else if (!is_null($fullname) && strlen($fullname) > 255) {
-+ $this->show_form(_('Full name is too long (max 255 chars).'));
-+ return;
-+ } else if (!is_null($bio) && strlen($bio) > 140) {
-+ $this->show_form(_('Bio is too long (max 140 chars).'));
-+ return;
-+ } else if (!is_null($location) && strlen($location) > 255) {
-+ $this->show_form(_('Location is too long (max 255 chars).'));
-+ return;
-+ } else if (is_null($timezone) || !in_array($timezone, DateTimeZone::listIdentifiers())) {
-+ $this->show_form(_('Timezone not selected.'));
-+ return;
-+ } else if ($this->nickname_exists($nickname)) {
-+ $this->show_form(_('Nickname already in use. Try another one.'));
-+ return;
-hunk ./actions/profilesettings.php 234
-- $this->show_form(_('Language is too long (max 50 chars).'));
-- return;
-- }
-+ $this->show_form(_('Language is too long (max 50 chars).'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 238
-- if ($tagstring) {
-- $tags = array_map('common_canonical_tag', preg_split('/[\s,]+/', $tagstring));
-- } else {
-- $tags = array();
-- }
--
-- foreach ($tags as $tag) {
-- if (!common_valid_profile_tag($tag)) {
-- $this->show_form(sprintf(_('Invalid tag: "%s"'), $tag));
-- return;
-- }
-- }
--
-- $user = common_current_user();
-+ if ($tagstring) {
-+ $tags = array_map('common_canonical_tag', preg_split('/[\s,]+/', $tagstring));
-+ } else {
-+ $tags = array();
-+ }
-+
-+ foreach ($tags as $tag) {
-+ if (!common_valid_profile_tag($tag)) {
-+ $this->show_form(sprintf(_('Invalid tag: "%s"'), $tag));
-+ return;
-+ }
-+ }
-+
-+ $user = common_current_user();
-hunk ./actions/profilesettings.php 253
-- $user->query('BEGIN');
-+ $user->query('BEGIN');
-hunk ./actions/profilesettings.php 255
-- if ($user->nickname != $nickname ||
-- $user->language != $language ||
-- $user->timezone != $timezone) {
-+ if ($user->nickname != $nickname ||
-+ $user->language != $language ||
-+ $user->timezone != $timezone) {
-hunk ./actions/profilesettings.php 259
-- common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
-- __FILE__);
-- common_debug('Updating user language from ' . $user->language . ' to ' . $language,
-- __FILE__);
-- common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone,
-- __FILE__);
-+ common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
-+ __FILE__);
-+ common_debug('Updating user language from ' . $user->language . ' to ' . $language,
-+ __FILE__);
-+ common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone,
-+ __FILE__);
-hunk ./actions/profilesettings.php 266
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/profilesettings.php 268
-- $user->nickname = $nickname;
-- $user->language = $language;
-- $user->timezone = $timezone;
-+ $user->nickname = $nickname;
-+ $user->language = $language;
-+ $user->timezone = $timezone;
-hunk ./actions/profilesettings.php 272
-- $result = $user->updateKeys($original);
-+ $result = $user->updateKeys($original);
-hunk ./actions/profilesettings.php 274
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- } else {
-- # Re-initialize language environment if it changed
-- common_init_language();
-- }
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ } else {
-+ # Re-initialize language environment if it changed
-+ common_init_language();
-+ }
-+ }
-hunk ./actions/profilesettings.php 284
-- # XXX: XOR
-+ # XXX: XOR
-hunk ./actions/profilesettings.php 286
-- if ($user->autosubscribe ^ $autosubscribe) {
-+ if ($user->autosubscribe ^ $autosubscribe) {
-hunk ./actions/profilesettings.php 288
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/profilesettings.php 290
-- $user->autosubscribe = $autosubscribe;
-+ $user->autosubscribe = $autosubscribe;
-hunk ./actions/profilesettings.php 292
-- $result = $user->update($original);
-+ $result = $user->update($original);
-hunk ./actions/profilesettings.php 294
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user for autosubscribe.'));
-- return;
-- }
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user for autosubscribe.'));
-+ return;
-+ }
-+ }
-hunk ./actions/profilesettings.php 301
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/profilesettings.php 303
-- $orig_profile = clone($profile);
-+ $orig_profile = clone($profile);
-hunk ./actions/profilesettings.php 305
-- $profile->nickname = $user->nickname;
-- $profile->fullname = $fullname;
-- $profile->homepage = $homepage;
-- $profile->bio = $bio;
-- $profile->location = $location;
-- $profile->profileurl = common_profile_url($nickname);
-+ $profile->nickname = $user->nickname;
-+ $profile->fullname = $fullname;
-+ $profile->homepage = $homepage;
-+ $profile->bio = $bio;
-+ $profile->location = $location;
-+ $profile->profileurl = common_profile_url($nickname);
-hunk ./actions/profilesettings.php 312
-- common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
-- common_debug('New profile: ' . common_log_objstring($profile), __FILE__);
-+ common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
-+ common_debug('New profile: ' . common_log_objstring($profile), __FILE__);
-hunk ./actions/profilesettings.php 315
-- $result = $profile->update($orig_profile);
-+ $result = $profile->update($orig_profile);
-hunk ./actions/profilesettings.php 317
-- if (!$result) {
-- common_log_db_error($profile, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t save profile.'));
-- return;
-- }
-+ if (!$result) {
-+ common_log_db_error($profile, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t save profile.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 323
-- # Set the user tags
--
-- $result = $user->setSelfTags($tags);
-+ # Set the user tags
-+
-+ $result = $user->setSelfTags($tags);
-hunk ./actions/profilesettings.php 327
-- if (!$result) {
-- common_server_error(_('Couldn\'t save tags.'));
-- return;
-- }
--
-- $user->query('COMMIT');
-+ if (!$result) {
-+ common_server_error(_('Couldn\'t save tags.'));
-+ return;
-+ }
-+
-+ $user->query('COMMIT');
-hunk ./actions/profilesettings.php 334
-- common_broadcast_profile($profile);
-+ common_broadcast_profile($profile);
-hunk ./actions/profilesettings.php 336
-- $this->show_form(_('Settings saved.'), TRUE);
-- }
-+ $this->show_form(_('Settings saved.'), TRUE);
-+ }
-hunk ./actions/profilesettings.php 340
-- function upload_avatar() {
-- switch ($_FILES['avatarfile']['error']) {
-- case UPLOAD_ERR_OK: # success, jump out
-- break;
-- case UPLOAD_ERR_INI_SIZE:
-- case UPLOAD_ERR_FORM_SIZE:
-- $this->show_form(_('That file is too big.'));
-- return;
-- case UPLOAD_ERR_PARTIAL:
-- @unlink($_FILES['avatarfile']['tmp_name']);
-- $this->show_form(_('Partial upload.'));
-- return;
-- default:
-- $this->show_form(_('System error uploading file.'));
-- return;
-- }
-+ function upload_avatar() {
-+ switch ($_FILES['avatarfile']['error']) {
-+ case UPLOAD_ERR_OK: # success, jump out
-+ break;
-+ case UPLOAD_ERR_INI_SIZE:
-+ case UPLOAD_ERR_FORM_SIZE:
-+ $this->show_form(_('That file is too big.'));
-+ return;
-+ case UPLOAD_ERR_PARTIAL:
-+ @unlink($_FILES['avatarfile']['tmp_name']);
-+ $this->show_form(_('Partial upload.'));
-+ return;
-+ default:
-+ $this->show_form(_('System error uploading file.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 357
-- $info = @getimagesize($_FILES['avatarfile']['tmp_name']);
-+ $info = @getimagesize($_FILES['avatarfile']['tmp_name']);
-hunk ./actions/profilesettings.php 359
-- if (!$info) {
-- @unlink($_FILES['avatarfile']['tmp_name']);
-- $this->show_form(_('Not an image or corrupt file.'));
-- return;
-- }
-+ if (!$info) {
-+ @unlink($_FILES['avatarfile']['tmp_name']);
-+ $this->show_form(_('Not an image or corrupt file.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 365
-- switch ($info[2]) {
-- case IMAGETYPE_GIF:
-- case IMAGETYPE_JPEG:
-- case IMAGETYPE_PNG:
-- break;
-- default:
-- $this->show_form(_('Unsupported image file format.'));
-- return;
-- }
-+ switch ($info[2]) {
-+ case IMAGETYPE_GIF:
-+ case IMAGETYPE_JPEG:
-+ case IMAGETYPE_PNG:
-+ break;
-+ default:
-+ $this->show_form(_('Unsupported image file format.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 375
-- $user = common_current_user();
-- $profile = $user->getProfile();
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-hunk ./actions/profilesettings.php 378
-- if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) {
-- $this->show_form(_('Avatar updated.'), true);
-- } else {
-- $this->show_form(_('Failed updating avatar.'));
-- }
-+ if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) {
-+ $this->show_form(_('Avatar updated.'), true);
-+ } else {
-+ $this->show_form(_('Failed updating avatar.'));
-+ }
-hunk ./actions/profilesettings.php 384
-- @unlink($_FILES['avatarfile']['tmp_name']);
-- }
-+ @unlink($_FILES['avatarfile']['tmp_name']);
-+ }
-hunk ./actions/profilesettings.php 387
-- function nickname_exists($nickname) {
-- $user = common_current_user();
-- $other = User::staticGet('nickname', $nickname);
-- if (!$other) {
-- return false;
-- } else {
-- return $other->id != $user->id;
-- }
-- }
-+ function nickname_exists($nickname) {
-+ $user = common_current_user();
-+ $other = User::staticGet('nickname', $nickname);
-+ if (!$other) {
-+ return false;
-+ } else {
-+ return $other->id != $user->id;
-+ }
-+ }
-hunk ./actions/profilesettings.php 397
-- function change_password() {
-+ function change_password() {
-hunk ./actions/profilesettings.php 399
-- $user = common_current_user();
-- assert(!is_null($user)); # should already be checked
-+ $user = common_current_user();
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/profilesettings.php 402
-- # FIXME: scrub input
-+ # FIXME: scrub input
-hunk ./actions/profilesettings.php 404
-- $newpassword = $this->arg('newpassword');
-- $confirm = $this->arg('confirm');
-- $token = $this->arg('token');
-+ $newpassword = $this->arg('newpassword');
-+ $confirm = $this->arg('confirm');
-+ $token = $this->arg('token');
-hunk ./actions/profilesettings.php 408
-- if (0 != strcmp($newpassword, $confirm)) {
-- $this->show_form(_('Passwords don\'t match.'));
-- return;
-- }
-+ if (0 != strcmp($newpassword, $confirm)) {
-+ $this->show_form(_('Passwords don\'t match.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 413
-- if ($user->password) {
-- $oldpassword = $this->arg('oldpassword');
-+ if ($user->password) {
-+ $oldpassword = $this->arg('oldpassword');
-hunk ./actions/profilesettings.php 416
-- if (!common_check_user($user->nickname, $oldpassword)) {
-- $this->show_form(_('Incorrect old password'));
-- return;
-- }
-- }
-+ if (!common_check_user($user->nickname, $oldpassword)) {
-+ $this->show_form(_('Incorrect old password'));
-+ return;
-+ }
-+ }
-hunk ./actions/profilesettings.php 422
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/profilesettings.php 424
-- $user->password = common_munge_password($newpassword, $user->id);
-+ $user->password = common_munge_password($newpassword, $user->id);
-hunk ./actions/profilesettings.php 426
-- $val = $user->validate();
-- if ($val !== TRUE) {
-- $this->show_form(_('Error saving user; invalid.'));
-- return;
-- }
-+ $val = $user->validate();
-+ if ($val !== TRUE) {
-+ $this->show_form(_('Error saving user; invalid.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 432
-- if (!$user->update($original)) {
-- common_server_error(_('Can\'t save new password.'));
-- return;
-- }
-+ if (!$user->update($original)) {
-+ common_server_error(_('Can\'t save new password.'));
-+ return;
-+ }
-hunk ./actions/profilesettings.php 437
-- $this->show_form(_('Password saved.'), true);
-- }
-+ $this->show_form(_('Password saved.'), true);
-+ }
-hunk ./actions/public.php 26
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/public.php 29
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/public.php 31
-- header('X-XRDS-Location: '. common_local_url('publicxrds'));
-+ header('X-XRDS-Location: '. common_local_url('publicxrds'));
-hunk ./actions/public.php 33
-- common_show_header(_('Public timeline'),
-- array($this, 'show_header'), NULL,
-- array($this, 'show_top'));
-+ common_show_header(_('Public timeline'),
-+ array($this, 'show_header'), NULL,
-+ array($this, 'show_top'));
-hunk ./actions/public.php 37
-- # XXX: Public sidebar here?
-+ # XXX: Public sidebar here?
-hunk ./actions/public.php 39
-- $this->show_notices($page);
-+ $this->show_notices($page);
-hunk ./actions/public.php 41
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/public.php 44
-- function show_top() {
-- if (common_logged_in()) {
-- common_notice_form('public');
-- } else {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- }
-+ function show_top() {
-+ if (common_logged_in()) {
-+ common_notice_form('public');
-+ } else {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ }
-hunk ./actions/public.php 55
-- $this->public_views_menu();
-+ $this->public_views_menu();
-hunk ./actions/public.php 57
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('publicrss'),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'publicrss'),
-- 1=>array('href'=>common_local_url('publicatom'),
-- 'type' => 'atom',
-- 'version' => 'Atom 1.0',
-- 'item' => 'publicatom')));
-- }
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('publicrss'),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'publicrss'),
-+ 1=>array('href'=>common_local_url('publicatom'),
-+ 'type' => 'atom',
-+ 'version' => 'Atom 1.0',
-+ 'item' => 'publicatom')));
-+ }
-hunk ./actions/public.php 67
-- function get_instructions() {
-- return _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' .
-- 'based on the Free Software [Laconica](http://laconi.ca/) tool. ' .
-- '[Join now](%%action.register%%) to share notices about yourself with friends, family, and colleagues! ([Read more](%%doc.help%%))');
-- }
-+ function get_instructions() {
-+ return _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' .
-+ 'based on the Free Software [Laconica](http://laconi.ca/) tool. ' .
-+ '[Join now](%%action.register%%) to share notices about yourself with friends, family, and colleagues! ([Read more](%%doc.help%%))');
-+ }
-hunk ./actions/public.php 73
-- function show_header() {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('publicrss'),
-- 'type' => 'application/rss+xml',
-- 'title' => _('Public Stream Feed')));
-- # for client side of OpenID authentication
-- common_element('meta', array('http-equiv' => 'X-XRDS-Location',
-- 'content' => common_local_url('publicxrds')));
-- }
-+ function show_header() {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('publicrss'),
-+ 'type' => 'application/rss+xml',
-+ 'title' => _('Public Stream Feed')));
-+ # for client side of OpenID authentication
-+ common_element('meta', array('http-equiv' => 'X-XRDS-Location',
-+ 'content' => common_local_url('publicxrds')));
-+ }
-hunk ./actions/public.php 83
-- function show_notices($page) {
-+ function show_notices($page) {
-hunk ./actions/public.php 85
-- $cnt = 0;
-- $notice = Notice::publicStream(($page-1)*NOTICES_PER_PAGE,
-- NOTICES_PER_PAGE + 1);
-+ $cnt = 0;
-+ $notice = Notice::publicStream(($page-1)*NOTICES_PER_PAGE,
-+ NOTICES_PER_PAGE + 1);
-hunk ./actions/public.php 89
-- if (!$notice) {
-+ if (!$notice) {
-hunk ./actions/public.php 92
-- }
-+ }
-hunk ./actions/public.php 96
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'public');
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'public');
-+ }
-hunk ./actions/publicrss.php 28
-- function init() {
-- return true;
-- }
-+ function init() {
-+ return true;
-+ }
-hunk ./actions/publicrss.php 32
-- function get_notices($limit=0) {
--
-- $notices = array();
--
-- $notice = Notice::publicStream(0, ($limit == 0) ? 48 : $limit);
--
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
--
-- return $notices;
-- }
-+ function get_notices($limit=0) {
-+
-+ $notices = array();
-+
-+ $notice = Notice::publicStream(0, ($limit == 0) ? 48 : $limit);
-+
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-+
-+ return $notices;
-+ }
-hunk ./actions/publicrss.php 45
-- function get_channel() {
-- global $config;
-- $c = array('url' => common_local_url('publicrss'),
-- 'title' => sprintf(_('%s Public Stream'), $config['site']['name']),
-- 'link' => common_local_url('public'),
-- 'description' => sprintf(_('All updates for %s'), $config['site']['name']));
-- return $c;
-- }
-+ function get_channel() {
-+ global $config;
-+ $c = array('url' => common_local_url('publicrss'),
-+ 'title' => sprintf(_('%s Public Stream'), $config['site']['name']),
-+ 'link' => common_local_url('public'),
-+ 'description' => sprintf(_('All updates for %s'), $config['site']['name']));
-+ return $c;
-+ }
-hunk ./actions/publicrss.php 54
-- function get_image() {
-- return NULL;
-- }
-+ function get_image() {
-+ return NULL;
-+ }
-hunk ./actions/publicxrds.php 28
-- function is_readonly() {
-- return true;
-- }
-+ function is_readonly() {
-+ return true;
-+ }
-hunk ./actions/publicxrds.php 32
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/publicxrds.php 34
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/publicxrds.php 36
-- header('Content-Type: application/xrds+xml');
-+ header('Content-Type: application/xrds+xml');
-hunk ./actions/publicxrds.php 38
-- common_start_xml();
-- common_element_start('XRDS', array('xmlns' => 'xri://$xrds'));
-+ common_start_xml();
-+ common_element_start('XRDS', array('xmlns' => 'xri://$xrds'));
-hunk ./actions/publicxrds.php 41
-- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-- 'version' => '2.0'));
-+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-+ 'version' => '2.0'));
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
+hunk ./actions/profilesettings.php 34
+- common_element('h2', NULL, _('Avatar'));
++ common_element('h2', null, _('Avatar'));
+hunk ./actions/profilesettings.php 36
+- common_element('h2', NULL, _('Change password'));
++ common_element('h2', null, _('Change password'));
+hunk ./actions/profilesettings.php 38
+-// common_element('h2', NULL, _('Delete my account'));
++// common_element('h2', null, _('Delete my account'));
+hunk ./actions/public.php 34
+- array($this, 'show_header'), NULL,
++ array($this, 'show_header'), null,
+hunk ./actions/publicrss.php 55
+- return NULL;
++ return null;
hunk ./actions/publicxrds.php 45
-- common_element('Type', NULL, 'xri://$xrds*simple');
-+ common_element('Type', NULL, 'xri://$xrds*simple');
-hunk ./actions/publicxrds.php 47
-- foreach (array('finishopenidlogin', 'finishaddopenid', 'finishimmediate') as $finish) {
-- $this->show_service(Auth_OpenID_RP_RETURN_TO_URL_TYPE,
-- common_local_url($finish));
-- }
-+ foreach (array('finishopenidlogin', 'finishaddopenid', 'finishimmediate') as $finish) {
-+ $this->show_service(Auth_OpenID_RP_RETURN_TO_URL_TYPE,
-+ common_local_url($finish));
-+ }
-hunk ./actions/publicxrds.php 52
-- common_element_end('XRD');
-+ common_element_end('XRD');
-hunk ./actions/publicxrds.php 54
-- common_element_end('XRDS');
-- common_end_xml();
-- }
-+ common_element_end('XRDS');
-+ common_end_xml();
-+ }
+- common_element('Type', NULL, 'xri://$xrds*simple');
++ common_element('Type', null, 'xri://$xrds*simple');
hunk ./actions/publicxrds.php 58
-- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
-- common_element_start('Service');
-- if ($uri) {
-- common_element('URI', NULL, $uri);
-- }
-- common_element('Type', NULL, $type);
-- if ($params) {
-- foreach ($params as $param) {
-- common_element('Type', NULL, $param);
-- }
-- }
-- if ($sigs) {
-- foreach ($sigs as $sig) {
-- common_element('Type', NULL, $sig);
-- }
-- }
-- if ($localId) {
-- common_element('LocalID', NULL, $localId);
-- }
-- common_element_end('Service');
-- }
-+ function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
-+ common_element_start('Service');
-+ if ($uri) {
-+ common_element('URI', NULL, $uri);
-+ }
-+ common_element('Type', NULL, $type);
-+ if ($params) {
-+ foreach ($params as $param) {
-+ common_element('Type', NULL, $param);
-+ }
-+ }
-+ if ($sigs) {
-+ foreach ($sigs as $sig) {
-+ common_element('Type', NULL, $sig);
-+ }
-+ }
-+ if ($localId) {
-+ common_element('LocalID', NULL, $localId);
-+ }
-+ common_element_end('Service');
-+ }
-hunk ./actions/recoverpassword.php 31
-- $this->client_error(_('You are already logged in!'));
-+ $this->client_error(_('You are already logged in!'));
-hunk ./actions/recoverpassword.php 34
-- if ($this->arg('recover')) {
-- $this->recover_password();
-+ if ($this->arg('recover')) {
-+ $this->recover_password();
-hunk ./actions/recoverpassword.php 37
-- $this->reset_password();
-- } else {
-- $this->client_error(_('Unexpected form submission.'));
-- }
-- } else {
-- if ($this->trimmed('code')) {
-- $this->check_code();
-- } else {
-- $this->show_form();
-- }
-- }
-- }
-+ $this->reset_password();
-+ } else {
-+ $this->client_error(_('Unexpected form submission.'));
-+ }
-+ } else {
-+ if ($this->trimmed('code')) {
-+ $this->check_code();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-+ }
-hunk ./actions/recoverpassword.php 50
-- function check_code() {
-+ function check_code() {
-hunk ./actions/recoverpassword.php 52
-- $code = $this->trimmed('code');
-- $confirm = Confirm_address::staticGet('code', $code);
-+ $code = $this->trimmed('code');
-+ $confirm = Confirm_address::staticGet('code', $code);
-hunk ./actions/recoverpassword.php 55
-- if (!$confirm) {
-- $this->client_error(_('No such recovery code.'));
-- return;
-- }
-- if ($confirm->address_type != 'recover') {
-- $this->client_error(_('Not a recovery code.'));
-- return;
-- }
-+ if (!$confirm) {
-+ $this->client_error(_('No such recovery code.'));
-+ return;
-+ }
-+ if ($confirm->address_type != 'recover') {
-+ $this->client_error(_('Not a recovery code.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 64
-- $user = User::staticGet($confirm->user_id);
-+ $user = User::staticGet($confirm->user_id);
-hunk ./actions/recoverpassword.php 66
-- if (!$user) {
-- $this->server_error(_('Recovery code for unknown user.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->server_error(_('Recovery code for unknown user.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 71
-- $touched = strtotime($confirm->modified);
-- $email = $confirm->address;
-+ $touched = strtotime($confirm->modified);
-+ $email = $confirm->address;
-hunk ./actions/recoverpassword.php 74
-- # Burn this code
-+ # Burn this code
-hunk ./actions/recoverpassword.php 76
-- $result = $confirm->delete();
-+ $result = $confirm->delete();
-hunk ./actions/recoverpassword.php 78
-- if (!$result) {
-- common_log_db_error($confirm, 'DELETE', __FILE__);
-- common_server_error(_('Error with confirmation code.'));
-- return;
-- }
-+ if (!$result) {
-+ common_log_db_error($confirm, 'DELETE', __FILE__);
-+ common_server_error(_('Error with confirmation code.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 84
-- # These should be reaped, but for now we just check mod time
-- # Note: it's still deleted; let's avoid a second attempt!
-+ # These should be reaped, but for now we just check mod time
-+ # Note: it's still deleted; let's avoid a second attempt!
-hunk ./actions/recoverpassword.php 87
-- if ((time() - $touched) > MAX_RECOVERY_TIME) {
-- common_log(LOG_WARNING,
-- 'Attempted redemption on recovery code ' .
-- 'that is ' . $touched . ' seconds old. ');
-- $this->client_error(_('This confirmation code is too old. ' .
-- 'Please start again.'));
-- return;
-- }
-+ if ((time() - $touched) > MAX_RECOVERY_TIME) {
-+ common_log(LOG_WARNING,
-+ 'Attempted redemption on recovery code ' .
-+ 'that is ' . $touched . ' seconds old. ');
-+ $this->client_error(_('This confirmation code is too old. ' .
-+ 'Please start again.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 96
-- # If we used an outstanding confirmation to send the email,
-- # it's been confirmed at this point.
-+ # If we used an outstanding confirmation to send the email,
-+ # it's been confirmed at this point.
-hunk ./actions/recoverpassword.php 99
-- if (!$user->email) {
-- $orig = clone($user);
-- $user->email = $email;
-- $result = $user->updateKeys($orig);
-- if (!$result) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- $this->server_error(_('Could not update user with confirmed email address.'));
-- return;
-- }
-- }
-+ if (!$user->email) {
-+ $orig = clone($user);
-+ $user->email = $email;
-+ $result = $user->updateKeys($orig);
-+ if (!$result) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ $this->server_error(_('Could not update user with confirmed email address.'));
-+ return;
-+ }
-+ }
-hunk ./actions/recoverpassword.php 110
-- # Success!
-+ # Success!
-hunk ./actions/recoverpassword.php 112
-- $this->set_temp_user($user);
-- $this->show_password_form();
-- }
-+ $this->set_temp_user($user);
-+ $this->show_password_form();
-+ }
-hunk ./actions/recoverpassword.php 116
-- function set_temp_user(&$user) {
-- common_ensure_session();
-- $_SESSION['tempuser'] = $user->id;
-- }
-+ function set_temp_user(&$user) {
-+ common_ensure_session();
-+ $_SESSION['tempuser'] = $user->id;
-+ }
-hunk ./actions/recoverpassword.php 121
-- function get_temp_user() {
-- common_ensure_session();
-- $user_id = $_SESSION['tempuser'];
-- if ($user_id) {
-- $user = User::staticGet($user_id);
-- }
-- return $user;
-- }
-+ function get_temp_user() {
-+ common_ensure_session();
-+ $user_id = $_SESSION['tempuser'];
-+ if ($user_id) {
-+ $user = User::staticGet($user_id);
-+ }
-+ return $user;
-+ }
-hunk ./actions/recoverpassword.php 130
-- function clear_temp_user() {
-- common_ensure_session();
-- unset($_SESSION['tempuser']);
-- }
-+ function clear_temp_user() {
-+ common_ensure_session();
-+ unset($_SESSION['tempuser']);
-+ }
+- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
++ function show_service($type, $uri, $params=null, $sigs=null, $localId=null) {
+hunk ./actions/publicxrds.php 61
+- common_element('URI', NULL, $uri);
++ common_element('URI', null, $uri);
+hunk ./actions/publicxrds.php 63
+- common_element('Type', NULL, $type);
++ common_element('Type', null, $type);
+hunk ./actions/publicxrds.php 66
+- common_element('Type', NULL, $param);
++ common_element('Type', null, $param);
+hunk ./actions/publicxrds.php 71
+- common_element('Type', NULL, $sig);
++ common_element('Type', null, $sig);
+hunk ./actions/publicxrds.php 75
+- common_element('LocalID', NULL, $localId);
++ common_element('LocalID', null, $localId);
hunk ./actions/recoverpassword.php 135
-- function show_top($msg=NULL) {
-- if ($msg) {
-+ function show_top($msg=NULL) {
-+ if ($msg) {
-hunk ./actions/recoverpassword.php 138
-- } else {
-- common_element_start('div', 'instructions');
-- common_element('p', NULL,
-- _('If you\'ve forgotten or lost your' .
-- ' password, you can get a new one sent to' .
-- ' the email address you have stored ' .
-- ' in your account.'));
-- common_element_end('div');
-- }
-- }
-+ } else {
-+ common_element_start('div', 'instructions');
-+ common_element('p', NULL,
-+ _('If you\'ve forgotten or lost your' .
-+ ' password, you can get a new one sent to' .
-+ ' the email address you have stored ' .
-+ ' in your account.'));
-+ common_element_end('div');
-+ }
-+ }
+- function show_top($msg=NULL) {
++ function show_top($msg=null) {
+hunk ./actions/recoverpassword.php 140
+- common_element('p', NULL,
++ common_element('p', null,
hunk ./actions/recoverpassword.php 149
-- function show_password_top($msg=NULL) {
-- if ($msg) {
-+ function show_password_top($msg=NULL) {
-+ if ($msg) {
-hunk ./actions/recoverpassword.php 152
-- } else {
-- common_element('div', 'instructions',
-- _('You\'ve been identified. Enter a ' .
-- ' new password below. '));
-- }
-- }
-+ } else {
-+ common_element('div', 'instructions',
-+ _('You\'ve been identified. Enter a ' .
-+ ' new password below. '));
-+ }
-+ }
+- function show_password_top($msg=NULL) {
++ function show_password_top($msg=null) {
hunk ./actions/recoverpassword.php 159
-- function show_form($msg=NULL) {
-+ function show_form($msg=NULL) {
+- function show_form($msg=NULL) {
++ function show_form($msg=null) {
hunk ./actions/recoverpassword.php 161
-- common_show_header(_('Recover password'), NULL,
-- $msg, array($this, 'show_top'));
-+ common_show_header(_('Recover password'), NULL,
-+ $msg, array($this, 'show_top'));
-hunk ./actions/recoverpassword.php 164
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'recoverpassword',
-- 'action' => common_local_url('recoverpassword')));
-- common_input('nicknameoremail', _('Nickname or email'),
-- $this->trimmed('nicknameoremail'),
-- _('Your nickname on this server, ' .
-- 'or your registered email address.'));
-- common_submit('recover', _('Recover'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'recoverpassword',
-+ 'action' => common_local_url('recoverpassword')));
-+ common_input('nicknameoremail', _('Nickname or email'),
-+ $this->trimmed('nicknameoremail'),
-+ _('Your nickname on this server, ' .
-+ 'or your registered email address.'));
-+ common_submit('recover', _('Recover'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
+- common_show_header(_('Recover password'), NULL,
++ common_show_header(_('Recover password'), null,
hunk ./actions/recoverpassword.php 176
-- function show_password_form($msg=NULL) {
-+ function show_password_form($msg=NULL) {
+- function show_password_form($msg=NULL) {
++ function show_password_form($msg=null) {
hunk ./actions/recoverpassword.php 178
-- common_show_header(_('Reset password'), NULL,
-- $msg, array($this, 'show_password_top'));
-+ common_show_header(_('Reset password'), NULL,
-+ $msg, array($this, 'show_password_top'));
-hunk ./actions/recoverpassword.php 181
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'recoverpassword',
-- 'action' => common_local_url('recoverpassword')));
-- common_hidden('token', common_session_token());
-- common_password('newpassword', _('New password'),
-- _('6 or more characters, and don\'t forget it!'));
-- common_password('confirm', _('Confirm'),
-- _('Same as password above'));
-- common_submit('reset', _('Reset'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'recoverpassword',
-+ 'action' => common_local_url('recoverpassword')));
-+ common_hidden('token', common_session_token());
-+ common_password('newpassword', _('New password'),
-+ _('6 or more characters, and don\'t forget it!'));
-+ common_password('confirm', _('Confirm'),
-+ _('Same as password above'));
-+ common_submit('reset', _('Reset'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/recoverpassword.php 194
-- function recover_password() {
-- $nore = $this->trimmed('nicknameoremail');
-- if (!$nore) {
-- $this->show_form(_('Enter a nickname or email address.'));
-- return;
-- }
-+ function recover_password() {
-+ $nore = $this->trimmed('nicknameoremail');
-+ if (!$nore) {
-+ $this->show_form(_('Enter a nickname or email address.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 201
-- $user = User::staticGet('email', common_canonical_email($nore));
-+ $user = User::staticGet('email', common_canonical_email($nore));
-hunk ./actions/recoverpassword.php 203
-- if (!$user) {
-- $user = User::staticGet('nickname', common_canonical_nickname($nore));
-- }
-+ if (!$user) {
-+ $user = User::staticGet('nickname', common_canonical_nickname($nore));
-+ }
-hunk ./actions/recoverpassword.php 207
-- # See if it's an unconfirmed email address
-+ # See if it's an unconfirmed email address
-hunk ./actions/recoverpassword.php 209
-- if (!$user) {
-- $confirm_email = Confirm_address::staticGet('address', common_canonical_email($nore));
-- if ($confirm_email && $confirm_email->address_type == 'email') {
-- $user = User::staticGet($confirm_email->user_id);
-- }
-- }
-+ if (!$user) {
-+ $confirm_email = Confirm_address::staticGet('address', common_canonical_email($nore));
-+ if ($confirm_email && $confirm_email->address_type == 'email') {
-+ $user = User::staticGet($confirm_email->user_id);
-+ }
-+ }
-hunk ./actions/recoverpassword.php 216
-- if (!$user) {
-- $this->show_form(_('No user with that email address or username.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->show_form(_('No user with that email address or username.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 221
-- # Try to get an unconfirmed email address if they used a user name
-+ # Try to get an unconfirmed email address if they used a user name
-hunk ./actions/recoverpassword.php 223
-- if (!$user->email && !$confirm_email) {
-- $confirm_email = Confirm_address::staticGet('user_id', $user->id);
-- if ($confirm_email && $confirm_email->address_type != 'email') {
-- # Skip non-email confirmations
-- $confirm_email = NULL;
-- }
-- }
-+ if (!$user->email && !$confirm_email) {
-+ $confirm_email = Confirm_address::staticGet('user_id', $user->id);
-+ if ($confirm_email && $confirm_email->address_type != 'email') {
-+ # Skip non-email confirmations
-+ $confirm_email = NULL;
-+ }
-+ }
-hunk ./actions/recoverpassword.php 231
-- if (!$user->email && !$confirm_email) {
-- $this->client_error(_('No registered email address for that user.'));
-- return;
-- }
-+ if (!$user->email && !$confirm_email) {
-+ $this->client_error(_('No registered email address for that user.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 236
-- # Success! We have a valid user and a confirmed or unconfirmed email address
-+ # Success! We have a valid user and a confirmed or unconfirmed email address
-hunk ./actions/recoverpassword.php 238
-- $confirm = new Confirm_address();
-- $confirm->code = common_confirmation_code(128);
-- $confirm->address_type = 'recover';
-- $confirm->user_id = $user->id;
-- $confirm->address = (isset($user->email)) ? $user->email : $confirm_email->address;
-+ $confirm = new Confirm_address();
-+ $confirm->code = common_confirmation_code(128);
-+ $confirm->address_type = 'recover';
-+ $confirm->user_id = $user->id;
-+ $confirm->address = (isset($user->email)) ? $user->email : $confirm_email->address;
-hunk ./actions/recoverpassword.php 244
-- if (!$confirm->insert()) {
-- common_log_db_error($confirm, 'INSERT', __FILE__);
-- $this->server_error(_('Error saving address confirmation.'));
-- return;
-- }
-+ if (!$confirm->insert()) {
-+ common_log_db_error($confirm, 'INSERT', __FILE__);
-+ $this->server_error(_('Error saving address confirmation.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 250
-- $body = "Hey, $user->nickname.";
-- $body .= "\n\n";
-- $body .= 'Someone just asked for a new password ' .
-- 'for this account on ' . common_config('site', 'name') . '.';
-- $body .= "\n\n";
-- $body .= 'If it was you, and you want to confirm, use the URL below:';
-- $body .= "\n\n";
-- $body .= "\t".common_local_url('recoverpassword',
-- array('code' => $confirm->code));
-- $body .= "\n\n";
-- $body .= 'If not, just ignore this message.';
-- $body .= "\n\n";
-- $body .= 'Thanks for your time, ';
-- $body .= "\n";
-- $body .= common_config('site', 'name');
-- $body .= "\n";
-+ $body = "Hey, $user->nickname.";
-+ $body .= "\n\n";
-+ $body .= 'Someone just asked for a new password ' .
-+ 'for this account on ' . common_config('site', 'name') . '.';
-+ $body .= "\n\n";
-+ $body .= 'If it was you, and you want to confirm, use the URL below:';
-+ $body .= "\n\n";
-+ $body .= "\t".common_local_url('recoverpassword',
-+ array('code' => $confirm->code));
-+ $body .= "\n\n";
-+ $body .= 'If not, just ignore this message.';
-+ $body .= "\n\n";
-+ $body .= 'Thanks for your time, ';
-+ $body .= "\n";
-+ $body .= common_config('site', 'name');
-+ $body .= "\n";
-hunk ./actions/recoverpassword.php 267
-- mail_to_user($user, _('Password recovery requested'), $body, $confirm->address);
-+ mail_to_user($user, _('Password recovery requested'), $body, $confirm->address);
-hunk ./actions/recoverpassword.php 269
-- common_show_header(_('Password recovery requested'));
-- common_element('p', NULL,
-- _('Instructions for recovering your password ' .
-- 'have been sent to the email address registered to your ' .
-- 'account.'));
-- common_show_footer();
-- }
-+ common_show_header(_('Password recovery requested'));
-+ common_element('p', NULL,
-+ _('Instructions for recovering your password ' .
-+ 'have been sent to the email address registered to your ' .
-+ 'account.'));
-+ common_show_footer();
-+ }
-hunk ./actions/recoverpassword.php 277
-- function reset_password() {
-+ function reset_password() {
-hunk ./actions/recoverpassword.php 279
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 286
-- $user = $this->get_temp_user();
-+ $user = $this->get_temp_user();
-hunk ./actions/recoverpassword.php 288
-- if (!$user) {
-- $this->client_error(_('Unexpected password reset.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error(_('Unexpected password reset.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 293
-- $newpassword = $this->trimmed('newpassword');
-- $confirm = $this->trimmed('confirm');
-+ $newpassword = $this->trimmed('newpassword');
-+ $confirm = $this->trimmed('confirm');
-hunk ./actions/recoverpassword.php 296
-- if (!$newpassword || strlen($newpassword) < 6) {
-- $this->show_password_form(_('Password must be 6 chars or more.'));
-- return;
-- }
-- if ($newpassword != $confirm) {
-- $this->show_password_form(_('Password and confirmation do not match.'));
-- return;
-- }
-+ if (!$newpassword || strlen($newpassword) < 6) {
-+ $this->show_password_form(_('Password must be 6 chars or more.'));
-+ return;
-+ }
-+ if ($newpassword != $confirm) {
-+ $this->show_password_form(_('Password and confirmation do not match.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 305
-- # OK, we're ready to go
-+ # OK, we're ready to go
-hunk ./actions/recoverpassword.php 307
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/recoverpassword.php 309
-- $user->password = common_munge_password($newpassword, $user->id);
-+ $user->password = common_munge_password($newpassword, $user->id);
-hunk ./actions/recoverpassword.php 311
-- if (!$user->update($original)) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Can\'t save new password.'));
-- return;
-- }
-+ if (!$user->update($original)) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Can\'t save new password.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 317
-- $this->clear_temp_user();
-+ $this->clear_temp_user();
-hunk ./actions/recoverpassword.php 319
-- if (!common_set_user($user->nickname)) {
-- common_server_error(_('Error setting user.'));
-- return;
-- }
-+ if (!common_set_user($user->nickname)) {
-+ common_server_error(_('Error setting user.'));
-+ return;
-+ }
-hunk ./actions/recoverpassword.php 324
-- common_real_login(true);
-+ common_real_login(true);
-hunk ./actions/recoverpassword.php 326
-- common_show_header(_('Password saved.'));
-- common_element('p', NULL, _('New password successfully saved. ' .
-- 'You are now logged in.'));
-- common_show_footer();
-- }
-+ common_show_header(_('Password saved.'));
-+ common_element('p', NULL, _('New password successfully saved. ' .
-+ 'You are now logged in.'));
-+ common_show_footer();
-+ }
-hunk ./actions/register.php 24
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/register.php 27
-- if (common_config('site', 'closed')) {
-- common_user_error(_('Registration not allowed.'));
-- } else if (common_logged_in()) {
-- common_user_error(_('Already logged in.'));
-- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->try_register();
-- } else {
-- $this->show_form();
-- }
-- }
-+ if (common_config('site', 'closed')) {
-+ common_user_error(_('Registration not allowed.'));
-+ } else if (common_logged_in()) {
-+ common_user_error(_('Already logged in.'));
-+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->try_register();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/register.php 38
-- function try_register() {
-+ function try_register() {
-hunk ./actions/register.php 40
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/register.php 46
-- $nickname = $this->trimmed('nickname');
-- $email = $this->trimmed('email');
-- $fullname = $this->trimmed('fullname');
-- $homepage = $this->trimmed('homepage');
-- $bio = $this->trimmed('bio');
-- $location = $this->trimmed('location');
-+ $nickname = $this->trimmed('nickname');
-+ $email = $this->trimmed('email');
-+ $fullname = $this->trimmed('fullname');
-+ $homepage = $this->trimmed('homepage');
-+ $bio = $this->trimmed('bio');
-+ $location = $this->trimmed('location');
-hunk ./actions/register.php 53
-- # We don't trim these... whitespace is OK in a password!
-+ # We don't trim these... whitespace is OK in a password!
-hunk ./actions/register.php 55
-- $password = $this->arg('password');
-- $confirm = $this->arg('confirm');
-+ $password = $this->arg('password');
-+ $confirm = $this->arg('confirm');
-hunk ./actions/register.php 58
-- # invitation code, if any
-+ # invitation code, if any
-hunk ./actions/register.php 60
-- $code = $this->trimmed('code');
-+ $code = $this->trimmed('code');
-hunk ./actions/register.php 62
-- if ($code) {
-- $invite = Invitation::staticGet($code);
-- }
-+ if ($code) {
-+ $invite = Invitation::staticGet($code);
-+ }
-hunk ./actions/register.php 66
-- if (common_config('site', 'inviteonly') && !($code && $invite)) {
-- $this->client_error(_('Sorry, only invited people can register.'));
-- return;
-- }
-+ if (common_config('site', 'inviteonly') && !($code && $invite)) {
-+ $this->client_error(_('Sorry, only invited people can register.'));
-+ return;
-+ }
-hunk ./actions/register.php 71
-- # Input scrubbing
-+ # Input scrubbing
-hunk ./actions/register.php 73
-- $nickname = common_canonical_nickname($nickname);
-- $email = common_canonical_email($email);
-+ $nickname = common_canonical_nickname($nickname);
-+ $email = common_canonical_email($email);
-hunk ./actions/register.php 76
-- if (!$this->boolean('license')) {
-- $this->show_form(_('You can\'t register if you don\'t agree to the license.'));
-- } else if ($email && !Validate::email($email, true)) {
-- $this->show_form(_('Not a valid email address.'));
-- } else if (!Validate::string($nickname, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-- } else if ($this->nickname_exists($nickname)) {
-- $this->show_form(_('Nickname already in use. Try another one.'));
-- } else if (!User::allowed_nickname($nickname)) {
-- $this->show_form(_('Not a valid nickname.'));
-- } else if ($this->email_exists($email)) {
-- $this->show_form(_('Email address already exists.'));
-- } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
-- !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
-- $this->show_form(_('Homepage is not a valid URL.'));
-- return;
-- } else if (!is_null($fullname) && strlen($fullname) > 255) {
-- $this->show_form(_('Full name is too long (max 255 chars).'));
-- return;
-- } else if (!is_null($bio) && strlen($bio) > 140) {
-- $this->show_form(_('Bio is too long (max 140 chars).'));
-- return;
-- } else if (!is_null($location) && strlen($location) > 255) {
-- $this->show_form(_('Location is too long (max 255 chars).'));
-- return;
-- } else if (strlen($password) < 6) {
-- $this->show_form(_('Password must be 6 or more characters.'));
-- return;
-- } else if ($password != $confirm) {
-- $this->show_form(_('Passwords don\'t match.'));
-- } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email,
-- 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio,
-- 'location' => $location, 'code' => $code))) {
-- if (!$user) {
-- $this->show_form(_('Invalid username or password.'));
-- return;
-- }
-- # success!
-- if (!common_set_user($user)) {
-- common_server_error(_('Error setting user.'));
-- return;
-- }
-- # this is a real login
-- common_real_login(true);
-- if ($this->boolean('rememberme')) {
-- common_debug('Adding rememberme cookie for ' . $nickname);
-- common_rememberme($user);
-- }
-- # Re-init language env in case it changed (not yet, but soon)
-- common_init_language();
-- $this->show_success();
-- } else {
-- $this->show_form(_('Invalid username or password.'));
-- }
-- }
-+ if (!$this->boolean('license')) {
-+ $this->show_form(_('You can\'t register if you don\'t agree to the license.'));
-+ } else if ($email && !Validate::email($email, true)) {
-+ $this->show_form(_('Not a valid email address.'));
-+ } else if (!Validate::string($nickname, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-+ } else if ($this->nickname_exists($nickname)) {
-+ $this->show_form(_('Nickname already in use. Try another one.'));
-+ } else if (!User::allowed_nickname($nickname)) {
-+ $this->show_form(_('Not a valid nickname.'));
-+ } else if ($this->email_exists($email)) {
-+ $this->show_form(_('Email address already exists.'));
-+ } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
-+ !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
-+ $this->show_form(_('Homepage is not a valid URL.'));
-+ return;
-+ } else if (!is_null($fullname) && strlen($fullname) > 255) {
-+ $this->show_form(_('Full name is too long (max 255 chars).'));
-+ return;
-+ } else if (!is_null($bio) && strlen($bio) > 140) {
-+ $this->show_form(_('Bio is too long (max 140 chars).'));
-+ return;
-+ } else if (!is_null($location) && strlen($location) > 255) {
-+ $this->show_form(_('Location is too long (max 255 chars).'));
-+ return;
-+ } else if (strlen($password) < 6) {
-+ $this->show_form(_('Password must be 6 or more characters.'));
-+ return;
-+ } else if ($password != $confirm) {
-+ $this->show_form(_('Passwords don\'t match.'));
-+ } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email,
-+ 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio,
-+ 'location' => $location, 'code' => $code))) {
-+ if (!$user) {
-+ $this->show_form(_('Invalid username or password.'));
-+ return;
-+ }
-+ # success!
-+ if (!common_set_user($user)) {
-+ common_server_error(_('Error setting user.'));
-+ return;
-+ }
-+ # this is a real login
-+ common_real_login(true);
-+ if ($this->boolean('rememberme')) {
-+ common_debug('Adding rememberme cookie for ' . $nickname);
-+ common_rememberme($user);
-+ }
-+ # Re-init language env in case it changed (not yet, but soon)
-+ common_init_language();
-+ $this->show_success();
-+ } else {
-+ $this->show_form(_('Invalid username or password.'));
-+ }
-+ }
-hunk ./actions/register.php 134
-- # checks if *CANONICAL* nickname exists
-+ # checks if *CANONICAL* nickname exists
-hunk ./actions/register.php 136
-- function nickname_exists($nickname) {
-- $user = User::staticGet('nickname', $nickname);
-- return ($user !== false);
-- }
-+ function nickname_exists($nickname) {
-+ $user = User::staticGet('nickname', $nickname);
-+ return ($user !== false);
-+ }
-hunk ./actions/register.php 141
-- # checks if *CANONICAL* email exists
-+ # checks if *CANONICAL* email exists
-hunk ./actions/register.php 143
-- function email_exists($email) {
-- $email = common_canonical_email($email);
-- if (!$email || strlen($email) == 0) {
-- return false;
-- }
-- $user = User::staticGet('email', $email);
-- return ($user !== false);
-- }
-+ function email_exists($email) {
-+ $email = common_canonical_email($email);
-+ if (!$email || strlen($email) == 0) {
-+ return false;
-+ }
-+ $user = User::staticGet('email', $email);
-+ return ($user !== false);
-+ }
+- common_show_header(_('Reset password'), NULL,
++ common_show_header(_('Reset password'), null,
+hunk ./actions/recoverpassword.php 227
+- $confirm_email = NULL;
++ $confirm_email = null;
+hunk ./actions/recoverpassword.php 270
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/recoverpassword.php 327
+- common_element('p', NULL, _('New password successfully saved. ' .
++ common_element('p', null, _('New password successfully saved. ' .
hunk ./actions/register.php 152
-- function show_top($error=NULL) {
-- if ($error) {
-- common_element('p', 'error', $error);
-- } else {
-- $instr = common_markup_to_html(_('With this form you can create a new account. ' .
-- 'You can then post notices and link up to friends and colleagues. '.
-- '(Have an [OpenID](http://openid.net/)? ' .
-- 'Try our [OpenID registration](%%action.openidlogin%%)!)'));
-+ function show_top($error=NULL) {
-+ if ($error) {
-+ common_element('p', 'error', $error);
-+ } else {
-+ $instr = common_markup_to_html(_('With this form you can create a new account. ' .
-+ 'You can then post notices and link up to friends and colleagues. '.
-+ '(Have an [OpenID](http://openid.net/)? ' .
-+ 'Try our [OpenID registration](%%action.openidlogin%%)!)'));
-hunk ./actions/register.php 161
-- common_element_start('div', 'instructions');
-- common_raw($instr);
-- common_element_end('div');
-- }
-- }
-+ common_element_start('div', 'instructions');
-+ common_raw($instr);
-+ common_element_end('div');
-+ }
-+ }
+- function show_top($error=NULL) {
++ function show_top($error=null) {
hunk ./actions/register.php 167
-- function show_form($error=NULL) {
-- global $config;
-+ function show_form($error=NULL) {
-+ global $config;
-hunk ./actions/register.php 170
-- $code = $this->trimmed('code');
-+ $code = $this->trimmed('code');
-hunk ./actions/register.php 172
-- if ($code) {
-- $invite = Invitation::staticGet($code);
-- }
-+ if ($code) {
-+ $invite = Invitation::staticGet($code);
-+ }
-hunk ./actions/register.php 176
-- if (common_config('site', 'inviteonly') && !($code && $invite)) {
-- $this->client_error(_('Sorry, only invited people can register.'));
-- return;
-- }
-+ if (common_config('site', 'inviteonly') && !($code && $invite)) {
-+ $this->client_error(_('Sorry, only invited people can register.'));
-+ return;
-+ }
+- function show_form($error=NULL) {
++ function show_form($error=null) {
hunk ./actions/register.php 181
-- common_show_header(_('Register'), NULL, $error, array($this, 'show_top'));
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'login',
-- 'action' => common_local_url('register')));
-+ common_show_header(_('Register'), NULL, $error, array($this, 'show_top'));
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'login',
-+ 'action' => common_local_url('register')));
-hunk ./actions/register.php 186
-- common_hidden('token', common_session_token());
-+ common_hidden('token', common_session_token());
-hunk ./actions/register.php 188
-- if ($code) {
-- common_hidden('code', $code);
-- }
-+ if ($code) {
-+ common_hidden('code', $code);
-+ }
-hunk ./actions/register.php 192
-- common_input('nickname', _('Nickname'), $this->trimmed('nickname'),
-- _('1-64 lowercase letters or numbers, no punctuation or spaces. Required.'));
-- common_password('password', _('Password'),
-- _('6 or more characters. Required.'));
-- common_password('confirm', _('Confirm'),
-- _('Same as password above. Required.'));
-- if ($invite && $invite->address_type == 'email') {
-- common_input('email', _('Email'), $invite->address,
-- _('Used only for updates, announcements, and password recovery'));
-- } else {
-- common_input('email', _('Email'), $this->trimmed('email'),
-- _('Used only for updates, announcements, and password recovery'));
-- }
-- common_input('fullname', _('Full name'),
-- $this->trimmed('fullname'),
-- _('Longer name, preferably your "real" name'));
-- common_input('homepage', _('Homepage'),
-- $this->trimmed('homepage'),
-- _('URL of your homepage, blog, or profile on another site'));
-- common_textarea('bio', _('Bio'),
-- $this->trimmed('bio'),
-- _('Describe yourself and your interests in 140 chars'));
-- common_input('location', _('Location'),
-- $this->trimmed('location'),
-- _('Where you are, like "City, State (or Region), Country"'));
-- common_checkbox('rememberme', _('Remember me'),
-- $this->boolean('rememberme'),
-- _('Automatically login in the future; not for shared computers!'));
-- common_element_start('p');
-- $attrs = array('type' => 'checkbox',
-- 'id' => 'license',
-- 'name' => 'license',
-- 'value' => 'true');
-- if ($this->boolean('license')) {
-- $attrs['checked'] = 'checked';
-- }
-- common_element('input', $attrs);
-- common_text(_('My text and files are available under '));
-- common_element('a', array('href' => $config['license']['url']),
-- $config['license']['title']);
-- common_text(_(' except this private data: password, email address, IM address, phone number.'));
-- common_element_end('p');
-- common_submit('submit', _('Register'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_input('nickname', _('Nickname'), $this->trimmed('nickname'),
-+ _('1-64 lowercase letters or numbers, no punctuation or spaces. Required.'));
-+ common_password('password', _('Password'),
-+ _('6 or more characters. Required.'));
-+ common_password('confirm', _('Confirm'),
-+ _('Same as password above. Required.'));
-+ if ($invite && $invite->address_type == 'email') {
-+ common_input('email', _('Email'), $invite->address,
-+ _('Used only for updates, announcements, and password recovery'));
-+ } else {
-+ common_input('email', _('Email'), $this->trimmed('email'),
-+ _('Used only for updates, announcements, and password recovery'));
-+ }
-+ common_input('fullname', _('Full name'),
-+ $this->trimmed('fullname'),
-+ _('Longer name, preferably your "real" name'));
-+ common_input('homepage', _('Homepage'),
-+ $this->trimmed('homepage'),
-+ _('URL of your homepage, blog, or profile on another site'));
-+ common_textarea('bio', _('Bio'),
-+ $this->trimmed('bio'),
-+ _('Describe yourself and your interests in 140 chars'));
-+ common_input('location', _('Location'),
-+ $this->trimmed('location'),
-+ _('Where you are, like "City, State (or Region), Country"'));
-+ common_checkbox('rememberme', _('Remember me'),
-+ $this->boolean('rememberme'),
-+ _('Automatically login in the future; not for shared computers!'));
-+ common_element_start('p');
-+ $attrs = array('type' => 'checkbox',
-+ 'id' => 'license',
-+ 'name' => 'license',
-+ 'value' => 'true');
-+ if ($this->boolean('license')) {
-+ $attrs['checked'] = 'checked';
-+ }
-+ common_element('input', $attrs);
-+ common_text(_('My text and files are available under '));
-+ common_element('a', array('href' => $config['license']['url']),
-+ $config['license']['title']);
-+ common_text(_(' except this private data: password, email address, IM address, phone number.'));
-+ common_element_end('p');
-+ common_submit('submit', _('Register'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/register.php 239
-- function show_success() {
-- $nickname = $this->arg('nickname');
-- common_show_header(_('Registration successful'));
-- common_element_start('div', 'success');
-- $instr = sprintf(_('Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may want to...'. "\n\n" .
-- '* Go to [your profile](%s) and post your first message.' . "\n" .
-- '* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send notices through instant messages.' . "\n" .
-- '* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that share your interests. ' . "\n" .
-- '* Update your [profile settings](%%%%action.profilesettings%%%%) to tell others more about you. ' . "\n" .
-- '* Read over the [online docs](%%%%doc.help%%%%) for features you may have missed. ' . "\n\n" .
-- 'Thanks for signing up and we hope you enjoy using this service.'),
-- $nickname, common_local_url('showstream', array('nickname' => $nickname)));
-- common_raw(common_markup_to_html($instr));
-- $have_email = $this->trimmed('email');
-- if ($have_email) {
-- $emailinstr = _('(You should receive a message by email momentarily, with ' .
-- 'instructions on how to confirm your email address.)');
-- common_raw(common_markup_to_html($emailinstr));
-- }
-- common_element_end('div');
-- common_show_footer();
-- }
-+ function show_success() {
-+ $nickname = $this->arg('nickname');
-+ common_show_header(_('Registration successful'));
-+ common_element_start('div', 'success');
-+ $instr = sprintf(_('Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may want to...'. "\n\n" .
-+ '* Go to [your profile](%s) and post your first message.' . "\n" .
-+ '* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send notices through instant messages.' . "\n" .
-+ '* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that share your interests. ' . "\n" .
-+ '* Update your [profile settings](%%%%action.profilesettings%%%%) to tell others more about you. ' . "\n" .
-+ '* Read over the [online docs](%%%%doc.help%%%%) for features you may have missed. ' . "\n\n" .
-+ 'Thanks for signing up and we hope you enjoy using this service.'),
-+ $nickname, common_local_url('showstream', array('nickname' => $nickname)));
-+ common_raw(common_markup_to_html($instr));
-+ $have_email = $this->trimmed('email');
-+ if ($have_email) {
-+ $emailinstr = _('(You should receive a message by email momentarily, with ' .
-+ 'instructions on how to confirm your email address.)');
-+ common_raw(common_markup_to_html($emailinstr));
-+ }
-+ common_element_end('div');
-+ common_show_footer();
-+ }
-hunk ./actions/remotesubscribe.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/remotesubscribe.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/remotesubscribe.php 30
-- if (common_logged_in()) {
-- common_user_error(_('You can use the local subscription!'));
-- return;
-- }
-+ if (common_logged_in()) {
-+ common_user_error(_('You can use the local subscription!'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 35
-- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-hunk ./actions/remotesubscribe.php 37
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 44
-- $this->remote_subscription();
-- } else {
-- $this->show_form();
-- }
-- }
-+ $this->remote_subscription();
-+ } else {
-+ $this->show_form();
-+ }
-+ }
-hunk ./actions/remotesubscribe.php 50
-- function get_instructions() {
-- return _('To subscribe, you can [login](%%action.login%%),' .
-- ' or [register](%%action.register%%) a new ' .
-- ' account. If you already have an account ' .
-- ' on a [compatible microblogging site](%%doc.openmublog%%), ' .
-- ' enter your profile URL below.');
-- }
-+ function get_instructions() {
-+ return _('To subscribe, you can [login](%%action.login%%),' .
-+ ' or [register](%%action.register%%) a new ' .
-+ ' account. If you already have an account ' .
-+ ' on a [compatible microblogging site](%%doc.openmublog%%), ' .
-+ ' enter your profile URL below.');
-+ }
+- common_show_header(_('Register'), NULL, $error, array($this, 'show_top'));
++ common_show_header(_('Register'), null, $error, array($this, 'show_top'));
hunk ./actions/remotesubscribe.php 58
-- function show_top($err=NULL) {
-- if ($err) {
-- common_element('div', 'error', $err);
-- } else {
-- $instructions = $this->get_instructions();
-- $output = common_markup_to_html($instructions);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('p');
-- }
-- }
-+ function show_top($err=NULL) {
-+ if ($err) {
-+ common_element('div', 'error', $err);
-+ } else {
-+ $instructions = $this->get_instructions();
-+ $output = common_markup_to_html($instructions);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('p');
-+ }
-+ }
+- function show_top($err=NULL) {
++ function show_top($err=null) {
hunk ./actions/remotesubscribe.php 70
-- function show_form($err=NULL) {
-- $nickname = $this->trimmed('nickname');
-- $profile = $this->trimmed('profile_url');
-- common_show_header(_('Remote subscribe'), NULL, $err,
-- array($this, 'show_top'));
-- # id = remotesubscribe conflicts with the
-- # button on profile page
-- common_element_start('form', array('id' => 'remsub', 'method' => 'post',
-- 'action' => common_local_url('remotesubscribe')));
-- common_hidden('token', common_session_token());
-- common_input('nickname', _('User nickname'), $nickname,
-- _('Nickname of the user you want to follow'));
-- common_input('profile_url', _('Profile URL'), $profile,
-- _('URL of your profile on another compatible microblogging service'));
-- common_submit('submit', _('Subscribe'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ function show_form($err=NULL) {
-+ $nickname = $this->trimmed('nickname');
-+ $profile = $this->trimmed('profile_url');
-+ common_show_header(_('Remote subscribe'), NULL, $err,
-+ array($this, 'show_top'));
-+ # id = remotesubscribe conflicts with the
-+ # button on profile page
-+ common_element_start('form', array('id' => 'remsub', 'method' => 'post',
-+ 'action' => common_local_url('remotesubscribe')));
-+ common_hidden('token', common_session_token());
-+ common_input('nickname', _('User nickname'), $nickname,
-+ _('Nickname of the user you want to follow'));
-+ common_input('profile_url', _('Profile URL'), $profile,
-+ _('URL of your profile on another compatible microblogging service'));
-+ common_submit('submit', _('Subscribe'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/remotesubscribe.php 89
-- function remote_subscription() {
-- $user = $this->get_user();
-+ function remote_subscription() {
-+ $user = $this->get_user();
-hunk ./actions/remotesubscribe.php 92
-- if (!$user) {
-- $this->show_form(_('No such user.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->show_form(_('No such user.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 97
-- $profile = $this->trimmed('profile_url');
-+ $profile = $this->trimmed('profile_url');
-hunk ./actions/remotesubscribe.php 99
-- if (!$profile) {
-- $this->show_form(_('No such user.'));
-- return;
-- }
-+ if (!$profile) {
-+ $this->show_form(_('No such user.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 104
-- if (!Validate::uri($profile, array('allowed_schemes' => array('http', 'https')))) {
-- $this->show_form(_('Invalid profile URL (bad format)'));
-- return;
-- }
-+ if (!Validate::uri($profile, array('allowed_schemes' => array('http', 'https')))) {
-+ $this->show_form(_('Invalid profile URL (bad format)'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 109
-- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-- $yadis = Auth_Yadis_Yadis::discover($profile, $fetcher);
-+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-+ $yadis = Auth_Yadis_Yadis::discover($profile, $fetcher);
-hunk ./actions/remotesubscribe.php 112
-- if (!$yadis || $yadis->failed) {
-- $this->show_form(_('Not a valid profile URL (no YADIS document).'));
-- return;
-- }
-+ if (!$yadis || $yadis->failed) {
-+ $this->show_form(_('Not a valid profile URL (no YADIS document).'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 117
-- # XXX: a little liberal for sites that accidentally put whitespace before the xml declaration
-+ # XXX: a little liberal for sites that accidentally put whitespace before the xml declaration
-hunk ./actions/remotesubscribe.php 121
-- if (!$xrds) {
-- $this->show_form(_('Not a valid profile URL (no XRDS defined).'));
-- return;
-- }
-+ if (!$xrds) {
-+ $this->show_form(_('Not a valid profile URL (no XRDS defined).'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 126
-- $omb = $this->getOmb($xrds);
-+ $omb = $this->getOmb($xrds);
-hunk ./actions/remotesubscribe.php 128
-- if (!$omb) {
-- $this->show_form(_('Not a valid profile URL (incorrect services).'));
-- return;
-- }
-+ if (!$omb) {
-+ $this->show_form(_('Not a valid profile URL (incorrect services).'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 133
-- if (omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]) ==
-- common_local_url('requesttoken'))
-- {
-- $this->show_form(_('That\'s a local profile! Login to subscribe.'));
-- return;
-- }
-+ if (omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]) ==
-+ common_local_url('requesttoken'))
-+ {
-+ $this->show_form(_('That\'s a local profile! Login to subscribe.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 140
-- if (User::staticGet('uri', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]))) {
-- $this->show_form(_('That\'s a local profile! Login to subscribe.'));
-- return;
-- }
-+ if (User::staticGet('uri', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]))) {
-+ $this->show_form(_('That\'s a local profile! Login to subscribe.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 145
-- list($token, $secret) = $this->request_token($omb);
-+ list($token, $secret) = $this->request_token($omb);
-hunk ./actions/remotesubscribe.php 147
-- if (!$token || !$secret) {
-- $this->show_form(_('Couldn\'t get a request token.'));
-- return;
-- }
-+ if (!$token || !$secret) {
-+ $this->show_form(_('Couldn\'t get a request token.'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 152
-- $this->request_authorization($user, $omb, $token, $secret);
-- }
-+ $this->request_authorization($user, $omb, $token, $secret);
-+ }
-hunk ./actions/remotesubscribe.php 155
-- function get_user() {
-- $user = NULL;
-- $nickname = $this->trimmed('nickname');
-- if ($nickname) {
-- $user = User::staticGet('nickname', $nickname);
-- }
-- return $user;
-- }
-+ function get_user() {
-+ $user = NULL;
-+ $nickname = $this->trimmed('nickname');
-+ if ($nickname) {
-+ $user = User::staticGet('nickname', $nickname);
-+ }
-+ return $user;
-+ }
-hunk ./actions/remotesubscribe.php 164
-- function getOmb($xrds) {
-+ function getOmb($xrds) {
-hunk ./actions/remotesubscribe.php 166
-- static $omb_endpoints = array(OMB_ENDPOINT_UPDATEPROFILE, OMB_ENDPOINT_POSTNOTICE);
-- static $oauth_endpoints = array(OAUTH_ENDPOINT_REQUEST, OAUTH_ENDPOINT_AUTHORIZE,
-- OAUTH_ENDPOINT_ACCESS);
-- $omb = array();
-+ static $omb_endpoints = array(OMB_ENDPOINT_UPDATEPROFILE, OMB_ENDPOINT_POSTNOTICE);
-+ static $oauth_endpoints = array(OAUTH_ENDPOINT_REQUEST, OAUTH_ENDPOINT_AUTHORIZE,
-+ OAUTH_ENDPOINT_ACCESS);
-+ $omb = array();
-hunk ./actions/remotesubscribe.php 171
-- # XXX: the following code could probably be refactored to eliminate dupes
-+ # XXX: the following code could probably be refactored to eliminate dupes
-hunk ./actions/remotesubscribe.php 173
-- $oauth_services = omb_get_services($xrds, OAUTH_DISCOVERY);
-+ $oauth_services = omb_get_services($xrds, OAUTH_DISCOVERY);
-hunk ./actions/remotesubscribe.php 175
-- if (!$oauth_services) {
-- return NULL;
-- }
-+ if (!$oauth_services) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 179
-- $oauth_service = $oauth_services[0];
-+ $oauth_service = $oauth_services[0];
-hunk ./actions/remotesubscribe.php 181
-- $oauth_xrd = $this->getXRD($oauth_service, $xrds);
-+ $oauth_xrd = $this->getXRD($oauth_service, $xrds);
-hunk ./actions/remotesubscribe.php 183
-- if (!$oauth_xrd) {
-- return NULL;
-- }
-+ if (!$oauth_xrd) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 187
-- if (!$this->addServices($oauth_xrd, $oauth_endpoints, $omb)) {
-- return NULL;
-- }
-+ if (!$this->addServices($oauth_xrd, $oauth_endpoints, $omb)) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 191
-- $omb_services = omb_get_services($xrds, OMB_NAMESPACE);
-+ $omb_services = omb_get_services($xrds, OMB_NAMESPACE);
-hunk ./actions/remotesubscribe.php 193
-- if (!$omb_services) {
-- return NULL;
-- }
-+ if (!$omb_services) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 197
-- $omb_service = $omb_services[0];
-+ $omb_service = $omb_services[0];
-hunk ./actions/remotesubscribe.php 199
-- $omb_xrd = $this->getXRD($omb_service, $xrds);
-+ $omb_xrd = $this->getXRD($omb_service, $xrds);
-hunk ./actions/remotesubscribe.php 201
-- if (!$omb_xrd) {
-- return NULL;
-- }
-+ if (!$omb_xrd) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 205
-- if (!$this->addServices($omb_xrd, $omb_endpoints, $omb)) {
-- return NULL;
-- }
-+ if (!$this->addServices($omb_xrd, $omb_endpoints, $omb)) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 209
-- # XXX: check that we got all the services we needed
-+ # XXX: check that we got all the services we needed
-hunk ./actions/remotesubscribe.php 211
-- foreach (array_merge($omb_endpoints, $oauth_endpoints) as $type) {
-- if (!array_key_exists($type, $omb) || !$omb[$type]) {
-- return NULL;
-- }
-- }
-+ foreach (array_merge($omb_endpoints, $oauth_endpoints) as $type) {
-+ if (!array_key_exists($type, $omb) || !$omb[$type]) {
-+ return NULL;
-+ }
-+ }
-hunk ./actions/remotesubscribe.php 217
-- if (!omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])) {
-- return NULL;
-- }
-+ if (!omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 221
-- return $omb;
-- }
-+ return $omb;
-+ }
-hunk ./actions/remotesubscribe.php 224
-- function getXRD($main_service, $main_xrds) {
-- $uri = omb_service_uri($main_service);
-- if (strpos($uri, "#") !== 0) {
-- # FIXME: more rigorous handling of external service definitions
-- return NULL;
-- }
-- $id = substr($uri, 1);
-- $nodes = $main_xrds->allXrdNodes;
-- $parser = $main_xrds->parser;
-- foreach ($nodes as $node) {
-- $attrs = $parser->attributes($node);
-- if (array_key_exists('xml:id', $attrs) &&
-- $attrs['xml:id'] == $id) {
-- # XXX: trick the constructor into thinking this is the only node
-- $bogus_nodes = array($node);
-- return new Auth_Yadis_XRDS($parser, $bogus_nodes);
-- }
-- }
-- return NULL;
-- }
-+ function getXRD($main_service, $main_xrds) {
-+ $uri = omb_service_uri($main_service);
-+ if (strpos($uri, "#") !== 0) {
-+ # FIXME: more rigorous handling of external service definitions
-+ return NULL;
-+ }
-+ $id = substr($uri, 1);
-+ $nodes = $main_xrds->allXrdNodes;
-+ $parser = $main_xrds->parser;
-+ foreach ($nodes as $node) {
-+ $attrs = $parser->attributes($node);
-+ if (array_key_exists('xml:id', $attrs) &&
-+ $attrs['xml:id'] == $id) {
-+ # XXX: trick the constructor into thinking this is the only node
-+ $bogus_nodes = array($node);
-+ return new Auth_Yadis_XRDS($parser, $bogus_nodes);
-+ }
-+ }
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 245
-- function addServices($xrd, $types, &$omb) {
-- foreach ($types as $type) {
-- $matches = omb_get_services($xrd, $type);
-- if ($matches) {
-- $omb[$type] = $matches[0];
-- } else {
-- # no match for type
-- return false;
-- }
-- }
-- return true;
-- }
-+ function addServices($xrd, $types, &$omb) {
-+ foreach ($types as $type) {
-+ $matches = omb_get_services($xrd, $type);
-+ if ($matches) {
-+ $omb[$type] = $matches[0];
-+ } else {
-+ # no match for type
-+ return false;
-+ }
-+ }
-+ return true;
-+ }
-hunk ./actions/remotesubscribe.php 258
-- function request_token($omb) {
-- $con = omb_oauth_consumer();
-+ function request_token($omb) {
-+ $con = omb_oauth_consumer();
-hunk ./actions/remotesubscribe.php 261
-- $url = omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]);
-+ $url = omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]);
-hunk ./actions/remotesubscribe.php 263
-- # XXX: Is this the right thing to do? Strip off GET params and make them
-- # POST params? Seems wrong to me.
-+ # XXX: Is this the right thing to do? Strip off GET params and make them
-+ # POST params? Seems wrong to me.
-hunk ./actions/remotesubscribe.php 266
-- $parsed = parse_url($url);
-- $params = array();
-- parse_str($parsed['query'], $params);
-+ $parsed = parse_url($url);
-+ $params = array();
-+ parse_str($parsed['query'], $params);
+- function show_form($err=NULL) {
++ function show_form($err=null) {
+hunk ./actions/remotesubscribe.php 73
+- common_show_header(_('Remote subscribe'), NULL, $err,
++ common_show_header(_('Remote subscribe'), null, $err,
+hunk ./actions/remotesubscribe.php 156
+- $user = NULL;
++ $user = null;
+hunk ./actions/remotesubscribe.php 176
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 184
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 188
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 194
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 202
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 206
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 213
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 218
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 228
+- return NULL;
++ return null;
+hunk ./actions/remotesubscribe.php 242
+- return NULL;
++ return null;
hunk ./actions/remotesubscribe.php 270
-- $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params);
-+ $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params);
-hunk ./actions/remotesubscribe.php 272
-- $listener = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]);
-+ $listener = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]);
-hunk ./actions/remotesubscribe.php 274
-- if (!$listener) {
-- return NULL;
-- }
-+ if (!$listener) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 278
-- $req->set_parameter('omb_listener', $listener);
-- $req->set_parameter('omb_version', OMB_VERSION_01);
-+ $req->set_parameter('omb_listener', $listener);
-+ $req->set_parameter('omb_version', OMB_VERSION_01);
-hunk ./actions/remotesubscribe.php 281
-- # XXX: test to see if endpoint accepts this signature method
-+ # XXX: test to see if endpoint accepts this signature method
+- $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params);
++ $req = OAuthRequest::from_consumer_and_token($con, null, "POST", $url, $params);
+hunk ./actions/remotesubscribe.php 275
+- return NULL;
++ return null;
hunk ./actions/remotesubscribe.php 283
-- $req->sign_request(omb_hmac_sha1(), $con, NULL);
-+ $req->sign_request(omb_hmac_sha1(), $con, NULL);
-hunk ./actions/remotesubscribe.php 285
-- # We re-use this tool's fetcher, since it's pretty good
-+ # We re-use this tool's fetcher, since it's pretty good
-hunk ./actions/remotesubscribe.php 287
-- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-hunk ./actions/remotesubscribe.php 289
-- $result = $fetcher->post($req->get_normalized_http_url(),
-- $req->to_postdata(),
-+ $result = $fetcher->post($req->get_normalized_http_url(),
-+ $req->to_postdata(),
-hunk ./actions/remotesubscribe.php 293
-- if ($result->status != 200) {
-- return NULL;
-- }
-+ if ($result->status != 200) {
-+ return NULL;
-+ }
-hunk ./actions/remotesubscribe.php 297
-- parse_str($result->body, $return);
-+ parse_str($result->body, $return);
-hunk ./actions/remotesubscribe.php 299
-- return array($return['oauth_token'], $return['oauth_token_secret']);
-- }
-+ return array($return['oauth_token'], $return['oauth_token_secret']);
-+ }
-hunk ./actions/remotesubscribe.php 302
-- function request_authorization($user, $omb, $token, $secret) {
-- global $config; # for license URL
-+ function request_authorization($user, $omb, $token, $secret) {
-+ global $config; # for license URL
-hunk ./actions/remotesubscribe.php 305
-- $con = omb_oauth_consumer();
-- $tok = new OAuthToken($token, $secret);
-+ $con = omb_oauth_consumer();
-+ $tok = new OAuthToken($token, $secret);
-hunk ./actions/remotesubscribe.php 308
-- $url = omb_service_uri($omb[OAUTH_ENDPOINT_AUTHORIZE]);
-+ $url = omb_service_uri($omb[OAUTH_ENDPOINT_AUTHORIZE]);
-hunk ./actions/remotesubscribe.php 310
-- # XXX: Is this the right thing to do? Strip off GET params and make them
-- # POST params? Seems wrong to me.
-+ # XXX: Is this the right thing to do? Strip off GET params and make them
-+ # POST params? Seems wrong to me.
-hunk ./actions/remotesubscribe.php 313
-- $parsed = parse_url($url);
-- $params = array();
-- parse_str($parsed['query'], $params);
-+ $parsed = parse_url($url);
-+ $params = array();
-+ parse_str($parsed['query'], $params);
-hunk ./actions/remotesubscribe.php 317
-- $req = OAuthRequest::from_consumer_and_token($con, $tok, 'GET', $url, $params);
-+ $req = OAuthRequest::from_consumer_and_token($con, $tok, 'GET', $url, $params);
-hunk ./actions/remotesubscribe.php 319
-- # We send over a ton of information. This lets the other
-- # server store info about our user, and it lets the current
-- # user decide if they really want to authorize the subscription.
-+ # We send over a ton of information. This lets the other
-+ # server store info about our user, and it lets the current
-+ # user decide if they really want to authorize the subscription.
-hunk ./actions/remotesubscribe.php 323
-- $req->set_parameter('omb_version', OMB_VERSION_01);
-- $req->set_parameter('omb_listener', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]));
-- $req->set_parameter('omb_listenee', $user->uri);
-- $req->set_parameter('omb_listenee_profile', common_profile_url($user->nickname));
-- $req->set_parameter('omb_listenee_nickname', $user->nickname);
-- $req->set_parameter('omb_listenee_license', $config['license']['url']);
-+ $req->set_parameter('omb_version', OMB_VERSION_01);
-+ $req->set_parameter('omb_listener', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]));
-+ $req->set_parameter('omb_listenee', $user->uri);
-+ $req->set_parameter('omb_listenee_profile', common_profile_url($user->nickname));
-+ $req->set_parameter('omb_listenee_nickname', $user->nickname);
-+ $req->set_parameter('omb_listenee_license', $config['license']['url']);
-hunk ./actions/remotesubscribe.php 330
-- $profile = $user->getProfile();
-- if (!$profile) {
-- common_log_db_error($user, 'SELECT', __FILE__);
-- $this->server_error(_('User without matching profile'));
-- return;
-- }
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ common_log_db_error($user, 'SELECT', __FILE__);
-+ $this->server_error(_('User without matching profile'));
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 337
-- if ($profile->fullname) {
-- $req->set_parameter('omb_listenee_fullname', $profile->fullname);
-- }
-- if ($profile->homepage) {
-- $req->set_parameter('omb_listenee_homepage', $profile->homepage);
-- }
-- if ($profile->bio) {
-- $req->set_parameter('omb_listenee_bio', $profile->bio);
-- }
-- if ($profile->location) {
-- $req->set_parameter('omb_listenee_location', $profile->location);
-- }
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- if ($avatar) {
-- $req->set_parameter('omb_listenee_avatar', $avatar->url);
-- }
-+ if ($profile->fullname) {
-+ $req->set_parameter('omb_listenee_fullname', $profile->fullname);
-+ }
-+ if ($profile->homepage) {
-+ $req->set_parameter('omb_listenee_homepage', $profile->homepage);
-+ }
-+ if ($profile->bio) {
-+ $req->set_parameter('omb_listenee_bio', $profile->bio);
-+ }
-+ if ($profile->location) {
-+ $req->set_parameter('omb_listenee_location', $profile->location);
-+ }
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ if ($avatar) {
-+ $req->set_parameter('omb_listenee_avatar', $avatar->url);
-+ }
-hunk ./actions/remotesubscribe.php 354
-- # XXX: add a nonce to prevent replay attacks
-+ # XXX: add a nonce to prevent replay attacks
-hunk ./actions/remotesubscribe.php 356
-- $req->set_parameter('oauth_callback', common_local_url('finishremotesubscribe'));
-+ $req->set_parameter('oauth_callback', common_local_url('finishremotesubscribe'));
-hunk ./actions/remotesubscribe.php 358
-- # XXX: test to see if endpoint accepts this signature method
-+ # XXX: test to see if endpoint accepts this signature method
-hunk ./actions/remotesubscribe.php 360
-- $req->sign_request(omb_hmac_sha1(), $con, $tok);
-+ $req->sign_request(omb_hmac_sha1(), $con, $tok);
-hunk ./actions/remotesubscribe.php 362
-- # store all our info here
-+ # store all our info here
-hunk ./actions/remotesubscribe.php 364
-- $omb['listenee'] = $user->nickname;
-- $omb['listener'] = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]);
-- $omb['token'] = $token;
-- $omb['secret'] = $secret;
-- # call doesn't work after bounce back so we cache; maybe serialization issue...?
-- $omb['access_token_url'] = omb_service_uri($omb[OAUTH_ENDPOINT_ACCESS]);
-- $omb['post_notice_url'] = omb_service_uri($omb[OMB_ENDPOINT_POSTNOTICE]);
-- $omb['update_profile_url'] = omb_service_uri($omb[OMB_ENDPOINT_UPDATEPROFILE]);
-+ $omb['listenee'] = $user->nickname;
-+ $omb['listener'] = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]);
-+ $omb['token'] = $token;
-+ $omb['secret'] = $secret;
-+ # call doesn't work after bounce back so we cache; maybe serialization issue...?
-+ $omb['access_token_url'] = omb_service_uri($omb[OAUTH_ENDPOINT_ACCESS]);
-+ $omb['post_notice_url'] = omb_service_uri($omb[OMB_ENDPOINT_POSTNOTICE]);
-+ $omb['update_profile_url'] = omb_service_uri($omb[OMB_ENDPOINT_UPDATEPROFILE]);
-hunk ./actions/remotesubscribe.php 373
-- common_ensure_session();
-+ common_ensure_session();
-hunk ./actions/remotesubscribe.php 375
-- $_SESSION['oauth_authorization_request'] = $omb;
-+ $_SESSION['oauth_authorization_request'] = $omb;
-hunk ./actions/remotesubscribe.php 377
-- # Redirect to authorization service
-+ # Redirect to authorization service
-hunk ./actions/remotesubscribe.php 379
-- common_redirect($req->to_url());
-- return;
-- }
-+ common_redirect($req->to_url());
-+ return;
-+ }
-hunk ./actions/remotesubscribe.php 383
-- function make_nonce() {
-- return common_good_rand(16);
-- }
-+ function make_nonce() {
-+ return common_good_rand(16);
-+ }
-hunk ./actions/replies.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/replies.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/replies.php 30
-- $nickname = common_canonical_nickname($this->arg('nickname'));
-- $user = User::staticGet('nickname', $nickname);
-+ $nickname = common_canonical_nickname($this->arg('nickname'));
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/replies.php 33
-- if (!$user) {
-- $this->no_such_user();
-- return;
-- }
-+ if (!$user) {
-+ $this->no_such_user();
-+ return;
-+ }
-hunk ./actions/replies.php 38
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/replies.php 40
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/replies.php 45
-- # Looks like we're good; show the header
-+ # Looks like we're good; show the header
-hunk ./actions/replies.php 47
-- common_show_header(sprintf(_("Replies to %s"), $profile->nickname),
-- array($this, 'show_header'), $user,
-- array($this, 'show_top'));
-+ common_show_header(sprintf(_("Replies to %s"), $profile->nickname),
-+ array($this, 'show_header'), $user,
-+ array($this, 'show_top'));
-hunk ./actions/replies.php 51
-- $this->show_replies($user);
-+ $this->show_replies($user);
-hunk ./actions/replies.php 53
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/replies.php 56
-- function no_such_user() {
-- common_user_error(_('No such user.'));
-- }
-+ function no_such_user() {
-+ common_user_error(_('No such user.'));
-+ }
-hunk ./actions/replies.php 60
-- function show_header($user) {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('repliesrss', array('nickname' =>
-- $user->nickname)),
-- 'type' => 'application/rss+xml',
-- 'title' => sprintf(_('Feed for replies to %s'), $user->nickname)));
-- }
-+ function show_header($user) {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('repliesrss', array('nickname' =>
-+ $user->nickname)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => sprintf(_('Feed for replies to %s'), $user->nickname)));
-+ }
-hunk ./actions/replies.php 68
-- function show_top($user) {
-- $cur = common_current_user();
-+ function show_top($user) {
-+ $cur = common_current_user();
-hunk ./actions/replies.php 71
-- if ($cur && $cur->id == $user->id) {
-- common_notice_form('replies');
-- }
-+ if ($cur && $cur->id == $user->id) {
-+ common_notice_form('replies');
-+ }
-hunk ./actions/replies.php 75
-- $this->views_menu();
-+ $this->views_menu();
-hunk ./actions/replies.php 77
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('repliesrss', array('nickname' => $user->nickname)),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'repliesrss')));
-- }
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('repliesrss', array('nickname' => $user->nickname)),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'repliesrss')));
-+ }
-hunk ./actions/replies.php 83
-- function show_replies($user) {
-+ function show_replies($user) {
-hunk ./actions/replies.php 85
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/replies.php 87
-- $notice = $user->getReplies(($page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-+ $notice = $user->getReplies(($page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-hunk ./actions/replies.php 89
-- $cnt = $this->show_notice_list($notice);
-+ $cnt = $this->show_notice_list($notice);
-hunk ./actions/replies.php 91
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'replies', array('nickname' => $user->nickname));
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'replies', array('nickname' => $user->nickname));
-+ }
+- $req->sign_request(omb_hmac_sha1(), $con, NULL);
++ $req->sign_request(omb_hmac_sha1(), $con, null);
+hunk ./actions/remotesubscribe.php 294
+- return NULL;
++ return null;
hunk ./actions/repliesrss.php 28
-- var $user = NULL;
-+ var $user = NULL;
-hunk ./actions/repliesrss.php 30
-- function init() {
-- $nickname = $this->trimmed('nickname');
-- $this->user = User::staticGet('nickname', $nickname);
-+ function init() {
-+ $nickname = $this->trimmed('nickname');
-+ $this->user = User::staticGet('nickname', $nickname);
-hunk ./actions/repliesrss.php 34
-- if (!$this->user) {
-- common_user_error(_('No such user.'));
-- return false;
-- } else {
-- return true;
-- }
-- }
-+ if (!$this->user) {
-+ common_user_error(_('No such user.'));
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ }
-hunk ./actions/repliesrss.php 42
-- function get_notices($limit=0) {
-+ function get_notices($limit=0) {
-hunk ./actions/repliesrss.php 44
-- $user = $this->user;
-+ $user = $this->user;
-hunk ./actions/repliesrss.php 46
-- $notice = $user->getReplies(0, ($limit == 0) ? 48 : $limit);
-+ $notice = $user->getReplies(0, ($limit == 0) ? 48 : $limit);
-hunk ./actions/repliesrss.php 48
-- $notices = array();
--
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ $notices = array();
-+
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/repliesrss.php 54
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/repliesrss.php 57
-- function get_channel() {
-- $user = $this->user;
-- $c = array('url' => common_local_url('repliesrss',
-- array('nickname' =>
-- $user->nickname)),
-- 'title' => sprintf(_("Replies to %s"), $user->nickname),
-- 'link' => common_local_url('replies',
-- array('nickname' =>
-- $user->nickname)),
-- 'description' => sprintf(_('Feed for replies to %s'), $user->nickname));
-- return $c;
-- }
-+ function get_channel() {
-+ $user = $this->user;
-+ $c = array('url' => common_local_url('repliesrss',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'title' => sprintf(_("Replies to %s"), $user->nickname),
-+ 'link' => common_local_url('replies',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'description' => sprintf(_('Feed for replies to %s'), $user->nickname));
-+ return $c;
-+ }
-hunk ./actions/repliesrss.php 70
-- function get_image() {
-- $user = $this->user;
-- $profile = $user->getProfile();
-- if (!$profile) {
-- return NULL;
-- }
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- return ($avatar) ? $avatar->url : NULL;
-- }
-+ function get_image() {
-+ $user = $this->user;
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ return NULL;
-+ }
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ return ($avatar) ? $avatar->url : NULL;
-+ }
-hunk ./actions/requesttoken.php 25
--
-- function is_readonly() {
-- return false;
-- }
--
-- function handle($args) {
-- parent::handle($args);
-- try {
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-- $server = omb_oauth_server();
-- $token = $server->fetch_request_token($req);
-- print $token;
-- } catch (OAuthException $e) {
-- common_server_error($e->getMessage());
-- }
-- }
-+
-+ function is_readonly() {
-+ return false;
-+ }
-+
-+ function handle($args) {
-+ parent::handle($args);
-+ try {
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-+ $server = omb_oauth_server();
-+ $token = $server->fetch_request_token($req);
-+ print $token;
-+ } catch (OAuthException $e) {
-+ common_server_error($e->getMessage());
-+ }
-+ }
-hunk ./actions/showfavorites.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/showfavorites.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/showfavorites.php 30
-- $nickname = common_canonical_nickname($this->arg('nickname'));
-- $user = User::staticGet('nickname', $nickname);
-+ $nickname = common_canonical_nickname($this->arg('nickname'));
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/showfavorites.php 33
-- if (!$user) {
-- $this->client_error(_('No such user.'));
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error(_('No such user.'));
-+ return;
-+ }
-hunk ./actions/showfavorites.php 38
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/showfavorites.php 40
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/showfavorites.php 45
-- # Looks like we're good; show the header
-+ # Looks like we're good; show the header
-hunk ./actions/showfavorites.php 47
-- common_show_header(sprintf(_("%s favorite notices"), $profile->nickname),
-- array($this, 'show_header'), $user,
-- array($this, 'show_top'));
-+ common_show_header(sprintf(_("%s favorite notices"), $profile->nickname),
-+ array($this, 'show_header'), $user,
-+ array($this, 'show_top'));
-hunk ./actions/showfavorites.php 51
-- $this->show_notices($user);
-+ $this->show_notices($user);
-hunk ./actions/showfavorites.php 53
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/showfavorites.php 56
-- function show_header($user) {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('favoritesrss', array('nickname' =>
-- $user->nickname)),
-- 'type' => 'application/rss+xml',
-- 'title' => sprintf(_('Feed for favorites of %s'), $user->nickname)));
-- }
-+ function show_header($user) {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('favoritesrss', array('nickname' =>
-+ $user->nickname)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => sprintf(_('Feed for favorites of %s'), $user->nickname)));
-+ }
-hunk ./actions/showfavorites.php 64
-- function show_top($user) {
-- $cur = common_current_user();
-+ function show_top($user) {
-+ $cur = common_current_user();
-hunk ./actions/showfavorites.php 67
-- if ($cur && $cur->id == $user->id) {
-- common_notice_form('all');
-- }
-+ if ($cur && $cur->id == $user->id) {
-+ common_notice_form('all');
-+ }
-hunk ./actions/showfavorites.php 71
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('favoritesrss', array('nickname' => $user->nickname)),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'Favorites')));
-- $this->views_menu();
-- }
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('favoritesrss', array('nickname' => $user->nickname)),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'Favorites')));
-+ $this->views_menu();
-+ }
-hunk ./actions/showfavorites.php 78
-- function show_notices($user) {
-+ function show_notices($user) {
-hunk ./actions/showfavorites.php 80
-- $page = $this->trimmed('page');
-- if (!$page) {
-- $page = 1;
-- }
-+ $page = $this->trimmed('page');
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/showfavorites.php 85
-- $notice = $user->favoriteNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-+ $notice = $user->favoriteNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-hunk ./actions/showfavorites.php 87
-- if (!$notice) {
-- $this->server_error(_('Could not retrieve favorite notices.'));
-- return;
-- }
-+ if (!$notice) {
-+ $this->server_error(_('Could not retrieve favorite notices.'));
-+ return;
-+ }
-hunk ./actions/showfavorites.php 94
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'showfavorites', array('nickname' => $user->nickname));
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'showfavorites', array('nickname' => $user->nickname));
-+ }
-hunk ./actions/showmessage.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/showmessage.php 28
-- Action::handle($args);
-+ Action::handle($args);
-hunk ./actions/showmessage.php 30
-- $message = $this->get_message();
-+ $message = $this->get_message();
-hunk ./actions/showmessage.php 32
-- if (!$message) {
-- $this->client_error(_('No such message.'), 404);
-- return;
-- }
--
-- $cur = common_current_user();
--
-- if ($cur && ($cur->id == $message->from_profile || $cur->id == $message->to_profile)) {
-- $this->show_page($cur, 1);
-- } else {
-- $this->client_error(_('Only the sender and recipient may read this message.'), 403);
-- return;
-- }
-- }
--
-- function get_message() {
-- $id = $this->trimmed('message');
-- $message = Message::staticGet('id', $id);
-- return $message;
-- }
--
-- function get_title($user, $page) {
-- $message = $this->get_message();
-- if (!$message) {
-- return NULL;
-- }
--
-- if ($user->id == $message->from_profile) {
-- $to = $message->getTo();
-- $title = sprintf(_("Message to %1\$s on %2\$s"),
-- $to->nickname,
-- common_exact_date($message->created));
-- } else if ($user->id == $message->to_profile) {
-- $from = $message->getFrom();
-- $title = sprintf(_("Message from %1\$s on %2\$s"),
-- $from->nickname,
-- common_exact_date($message->created));
-- }
-- return $title;
-- }
-+ if (!$message) {
-+ $this->client_error(_('No such message.'), 404);
-+ return;
-+ }
-+
-+ $cur = common_current_user();
-+
-+ if ($cur && ($cur->id == $message->from_profile || $cur->id == $message->to_profile)) {
-+ $this->show_page($cur, 1);
-+ } else {
-+ $this->client_error(_('Only the sender and recipient may read this message.'), 403);
-+ return;
-+ }
-+ }
-+
-+ function get_message() {
-+ $id = $this->trimmed('message');
-+ $message = Message::staticGet('id', $id);
-+ return $message;
-+ }
-+
-+ function get_title($user, $page) {
-+ $message = $this->get_message();
-+ if (!$message) {
-+ return NULL;
-+ }
-+
-+ if ($user->id == $message->from_profile) {
-+ $to = $message->getTo();
-+ $title = sprintf(_("Message to %1\$s on %2\$s"),
-+ $to->nickname,
-+ common_exact_date($message->created));
-+ } else if ($user->id == $message->to_profile) {
-+ $from = $message->getFrom();
-+ $title = sprintf(_("Message from %1\$s on %2\$s"),
-+ $from->nickname,
-+ common_exact_date($message->created));
-+ }
-+ return $title;
-+ }
-hunk ./actions/showmessage.php 73
-- function get_messages($user, $page) {
-- $message = new Message();
-- $message->id = $this->trimmed('message');
-- $message->find();
-- return $message;
-- }
--
-- function get_message_profile($message) {
-- $user = common_current_user();
-- if ($user->id == $message->from_profile) {
-- return $message->getTo();
-- } else if ($user->id == $message->to_profile) {
-- return $message->getFrom();
-- } else {
-- # This shouldn't happen
-- return NULL;
-- }
-- }
--
-- function get_instructions() {
-- return '';
-- }
--
-- function views_menu() {
-- return;
-- }
-+ function get_messages($user, $page) {
-+ $message = new Message();
-+ $message->id = $this->trimmed('message');
-+ $message->find();
-+ return $message;
-+ }
-+
-+ function get_message_profile($message) {
-+ $user = common_current_user();
-+ if ($user->id == $message->from_profile) {
-+ return $message->getTo();
-+ } else if ($user->id == $message->to_profile) {
-+ return $message->getFrom();
-+ } else {
-+ # This shouldn't happen
-+ return NULL;
-+ }
-+ }
-+
-+ function get_instructions() {
-+ return '';
-+ }
-+
-+ function views_menu() {
-+ return;
-+ }
-hunk ./actions/showmessage.php 100
--
-+
+- var $user = NULL;
++ var $user = null;
+hunk ./actions/repliesrss.php 74
+- return NULL;
++ return null;
+hunk ./actions/repliesrss.php 77
+- return ($avatar) ? $avatar->url : NULL;
++ return ($avatar) ? $avatar->url : null;
+hunk ./actions/showmessage.php 56
+- return NULL;
++ return null;
+hunk ./actions/showmessage.php 88
+- return NULL;
++ return null;
hunk ./actions/shownotice.php 26
-- var $notice = NULL;
-- var $profile = NULL;
-- var $avatar = NULL;
-+ var $notice = NULL;
-+ var $profile = NULL;
-+ var $avatar = NULL;
-hunk ./actions/shownotice.php 30
-- function prepare($args) {
-+ function prepare($args) {
-hunk ./actions/shownotice.php 32
-- parent::prepare($args);
-+ parent::prepare($args);
-hunk ./actions/shownotice.php 34
-- $id = $this->arg('notice');
-- $this->notice = Notice::staticGet($id);
-+ $id = $this->arg('notice');
-+ $this->notice = Notice::staticGet($id);
-hunk ./actions/shownotice.php 37
-- if (!$this->notice) {
-- $this->client_error(_('No such notice.'), 404);
-- return false;
-- }
-+ if (!$this->notice) {
-+ $this->client_error(_('No such notice.'), 404);
-+ return false;
-+ }
-hunk ./actions/shownotice.php 42
-- $this->profile = $this->notice->getProfile();
-+ $this->profile = $this->notice->getProfile();
-hunk ./actions/shownotice.php 44
-- if (!$this->profile) {
-- $this->server_error(_('Notice has no profile'), 500);
-- return false;
-- }
-+ if (!$this->profile) {
-+ $this->server_error(_('Notice has no profile'), 500);
-+ return false;
-+ }
-hunk ./actions/shownotice.php 49
-- $this->avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
-+ $this->avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
-hunk ./actions/shownotice.php 51
-- return true;
-- }
-+ return true;
-+ }
-hunk ./actions/shownotice.php 54
-- function last_modified() {
-- return max(strtotime($this->notice->created),
-- strtotime($this->profile->modified),
-- ($this->avatar) ? strtotime($this->avatar->modified) : 0);
-- }
-+ function last_modified() {
-+ return max(strtotime($this->notice->created),
-+ strtotime($this->profile->modified),
-+ ($this->avatar) ? strtotime($this->avatar->modified) : 0);
-+ }
-hunk ./actions/shownotice.php 60
-- function etag() {
-- return 'W/"' . implode(':', array($this->arg('action'),
-- common_language(),
-- $this->notice->id,
-- strtotime($this->notice->created),
-- strtotime($this->profile->modified),
-- ($this->avatar) ? strtotime($this->avatar->modified) : 0)) . '"';
-- }
-+ function etag() {
-+ return 'W/"' . implode(':', array($this->arg('action'),
-+ common_language(),
-+ $this->notice->id,
-+ strtotime($this->notice->created),
-+ strtotime($this->profile->modified),
-+ ($this->avatar) ? strtotime($this->avatar->modified) : 0)) . '"';
-+ }
-hunk ./actions/shownotice.php 69
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/shownotice.php 71
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/shownotice.php 73
-- common_show_header(sprintf(_('%1$s\'s status on %2$s'),
-- $this->profile->nickname,
-- common_exact_date($this->notice->created)),
-- array($this, 'show_header'), NULL,
-- array($this, 'show_top'));
-+ common_show_header(sprintf(_('%1$s\'s status on %2$s'),
-+ $this->profile->nickname,
-+ common_exact_date($this->notice->created)),
-+ array($this, 'show_header'), NULL,
-+ array($this, 'show_top'));
-hunk ./actions/shownotice.php 79
-- common_element_start('ul', array('id' => 'notices'));
-+ common_element_start('ul', array('id' => 'notices'));
-hunk ./actions/shownotice.php 82
-- common_element_end('ul');
-+ common_element_end('ul');
-hunk ./actions/shownotice.php 84
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/shownotice.php 87
-- function show_header() {
-+ function show_header() {
-hunk ./actions/shownotice.php 89
-- $user = User::staticGet($this->profile->id);
-+ $user = User::staticGet($this->profile->id);
-hunk ./actions/shownotice.php 91
-- if (!$user) {
-- return;
-- }
-+ if (!$user) {
-+ return;
-+ }
-hunk ./actions/shownotice.php 95
-- if ($user->emailmicroid && $user->email && $this->notice->uri) {
-- common_element('meta', array('name' => 'microid',
-- 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($this->notice->uri))));
-- }
-+ if ($user->emailmicroid && $user->email && $this->notice->uri) {
-+ common_element('meta', array('name' => 'microid',
-+ 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($this->notice->uri))));
-+ }
-hunk ./actions/shownotice.php 100
-- if ($user->jabbermicroid && $user->jabber && $this->notice->uri) {
-- common_element('meta', array('name' => 'microid',
-- 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($this->notice->uri))));
-- }
-- }
-+ if ($user->jabbermicroid && $user->jabber && $this->notice->uri) {
-+ common_element('meta', array('name' => 'microid',
-+ 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($this->notice->uri))));
-+ }
-+ }
-hunk ./actions/shownotice.php 106
-- function show_top() {
-- $cur = common_current_user();
-- if ($cur && $cur->id == $this->profile->id) {
-- common_notice_form();
-- }
-- }
-+ function show_top() {
-+ $cur = common_current_user();
-+ if ($cur && $cur->id == $this->profile->id) {
-+ common_notice_form();
-+ }
-+ }
-hunk ./actions/shownotice.php 113
-- function no_such_notice() {
-- common_user_error(_('No such notice.'));
-- }
-+ function no_such_notice() {
-+ common_user_error(_('No such notice.'));
-+ }
-hunk ./actions/showstream.php 29
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/showstream.php 31
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/showstream.php 34
-- $nickname = common_canonical_nickname($nickname_arg);
-+ $nickname = common_canonical_nickname($nickname_arg);
-hunk ./actions/showstream.php 47
-- $user = User::staticGet('nickname', $nickname);
-+ $user = User::staticGet('nickname', $nickname);
-hunk ./actions/showstream.php 49
-- if (!$user) {
-- $this->no_such_user();
-- return;
-- }
-+ if (!$user) {
-+ $this->no_such_user();
-+ return;
-+ }
-hunk ./actions/showstream.php 54
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/showstream.php 56
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/showstream.php 61
-- # Looks like we're good; start output
-+ # Looks like we're good; start output
-hunk ./actions/showstream.php 63
-- # For YADIS discovery, we also have a tag
-+ # For YADIS discovery, we also have a tag
-hunk ./actions/showstream.php 65
-- header('X-XRDS-Location: '. common_local_url('xrds', array('nickname' =>
-- $user->nickname)));
-+ header('X-XRDS-Location: '. common_local_url('xrds', array('nickname' =>
-+ $user->nickname)));
-hunk ./actions/showstream.php 68
-- common_show_header($profile->nickname,
-- array($this, 'show_header'), $user,
-- array($this, 'show_top'));
-+ common_show_header($profile->nickname,
-+ array($this, 'show_header'), $user,
-+ array($this, 'show_top'));
-hunk ./actions/showstream.php 72
-- $this->show_profile($profile);
-+ $this->show_profile($profile);
-hunk ./actions/showstream.php 74
-- $this->show_notices($user);
-+ $this->show_notices($user);
-hunk ./actions/showstream.php 76
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/showstream.php 79
-- function show_top($user) {
-- $cur = common_current_user();
-+ function show_top($user) {
-+ $cur = common_current_user();
-hunk ./actions/showstream.php 82
-- if ($cur && $cur->id == $user->id) {
-- common_notice_form('showstream');
-- }
-+ if ($cur && $cur->id == $user->id) {
-+ common_notice_form('showstream');
-+ }
-hunk ./actions/showstream.php 86
-- $this->views_menu();
-+ $this->views_menu();
-hunk ./actions/showstream.php 88
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('nickname' => $user->nickname)),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'notices'),
-- 1=>array('href'=>common_local_url('usertimeline', array('nickname' => $user->nickname)),
-- 'type' => 'atom',
-- 'version' => 'Atom 1.0',
-- 'item' => 'usertimeline'),
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('nickname' => $user->nickname)),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'notices'),
-+ 1=>array('href'=>common_local_url('usertimeline', array('nickname' => $user->nickname)),
-+ 'type' => 'atom',
-+ 'version' => 'Atom 1.0',
-+ 'item' => 'usertimeline'),
-hunk ./actions/showstream.php 97
-- 2=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
-- 'type' => 'rdf',
-- 'version' => 'FOAF',
-- 'item' => 'foaf')));
-- }
-+ 2=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
-+ 'type' => 'rdf',
-+ 'version' => 'FOAF',
-+ 'item' => 'foaf')));
-+ }
-hunk ./actions/showstream.php 103
-- function show_header($user) {
-- # Feeds
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('api',
-- array('apiaction' => 'statuses',
-- 'method' => 'user_timeline.rss',
-- 'argument' => $user->nickname)),
-- 'type' => 'application/rss+xml',
-- 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-- common_element('link', array('rel' => 'alternate feed',
-- 'href' => common_local_url('api',
-- array('apiaction' => 'statuses',
-- 'method' => 'user_timeline.atom',
-- 'argument' => $user->nickname)),
-- 'type' => 'application/atom+xml',
-- 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('userrss', array('nickname' =>
-- $user->nickname)),
-- 'type' => 'application/rdf+xml',
-- 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-- # FOAF
-- common_element('link', array('rel' => 'meta',
-- 'href' => common_local_url('foaf', array('nickname' =>
-- $user->nickname)),
-- 'type' => 'application/rdf+xml',
-- 'title' => 'FOAF'));
-- # for remote subscriptions etc.
-- common_element('meta', array('http-equiv' => 'X-XRDS-Location',
-- 'content' => common_local_url('xrds', array('nickname' =>
-- $user->nickname))));
-- $profile = $user->getProfile();
-- if ($profile->bio) {
-- common_element('meta', array('name' => 'description',
-- 'content' => $profile->bio));
-- }
-+ function show_header($user) {
-+ # Feeds
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('api',
-+ array('apiaction' => 'statuses',
-+ 'method' => 'user_timeline.rss',
-+ 'argument' => $user->nickname)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-+ common_element('link', array('rel' => 'alternate feed',
-+ 'href' => common_local_url('api',
-+ array('apiaction' => 'statuses',
-+ 'method' => 'user_timeline.atom',
-+ 'argument' => $user->nickname)),
-+ 'type' => 'application/atom+xml',
-+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('userrss', array('nickname' =>
-+ $user->nickname)),
-+ 'type' => 'application/rdf+xml',
-+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
-+ # FOAF
-+ common_element('link', array('rel' => 'meta',
-+ 'href' => common_local_url('foaf', array('nickname' =>
-+ $user->nickname)),
-+ 'type' => 'application/rdf+xml',
-+ 'title' => 'FOAF'));
-+ # for remote subscriptions etc.
-+ common_element('meta', array('http-equiv' => 'X-XRDS-Location',
-+ 'content' => common_local_url('xrds', array('nickname' =>
-+ $user->nickname))));
-+ $profile = $user->getProfile();
-+ if ($profile->bio) {
-+ common_element('meta', array('name' => 'description',
-+ 'content' => $profile->bio));
-+ }
-hunk ./actions/showstream.php 140
-- if ($user->emailmicroid && $user->email && $profile->profileurl) {
-- common_element('meta', array('name' => 'microid',
-- 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($profile->profileurl))));
-- }
-- if ($user->jabbermicroid && $user->jabber && $profile->profileurl) {
-- common_element('meta', array('name' => 'microid',
-- 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($profile->profileurl))));
-- }
-+ if ($user->emailmicroid && $user->email && $profile->profileurl) {
-+ common_element('meta', array('name' => 'microid',
-+ 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($profile->profileurl))));
-+ }
-+ if ($user->jabbermicroid && $user->jabber && $profile->profileurl) {
-+ common_element('meta', array('name' => 'microid',
-+ 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($profile->profileurl))));
-+ }
-hunk ./actions/showstream.php 149
-- # See https://wiki.mozilla.org/Microsummaries
-+ # See https://wiki.mozilla.org/Microsummaries
-hunk ./actions/showstream.php 151
-- common_element('link', array('rel' => 'microsummary',
-- 'href' => common_local_url('microsummary',
-- array('nickname' => $profile->nickname))));
-- }
-+ common_element('link', array('rel' => 'microsummary',
-+ 'href' => common_local_url('microsummary',
-+ array('nickname' => $profile->nickname))));
-+ }
-hunk ./actions/showstream.php 156
-- function no_such_user() {
-- $this->client_error(_('No such user.'), 404);
-- }
-+ function no_such_user() {
-+ $this->client_error(_('No such user.'), 404);
-+ }
-hunk ./actions/showstream.php 160
-- function show_profile($profile) {
-+ function show_profile($profile) {
-hunk ./actions/showstream.php 162
-- common_element_start('div', array('id' => 'profile', 'class' => 'vcard'));
-+ common_element_start('div', array('id' => 'profile', 'class' => 'vcard'));
-hunk ./actions/showstream.php 164
-- $this->show_personal($profile);
-+ $this->show_personal($profile);
-hunk ./actions/showstream.php 166
-- $this->show_last_notice($profile);
-+ $this->show_last_notice($profile);
-hunk ./actions/showstream.php 168
-- $cur = common_current_user();
-+ $cur = common_current_user();
-hunk ./actions/showstream.php 170
-- $this->show_subscriptions($profile);
-+ $this->show_subscriptions($profile);
-hunk ./actions/showstream.php 172
-- common_element_end('div');
-- }
-+ common_element_end('div');
-+ }
-hunk ./actions/showstream.php 175
-- function show_personal($profile) {
-+ function show_personal($profile) {
-hunk ./actions/showstream.php 177
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- common_element_start('div', array('id' => 'profile_avatar'));
-- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE),
-- 'class' => 'avatar profile photo',
-- 'width' => AVATAR_PROFILE_SIZE,
-- 'height' => AVATAR_PROFILE_SIZE,
-- 'alt' => $profile->nickname));
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ common_element_start('div', array('id' => 'profile_avatar'));
-+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE),
-+ 'class' => 'avatar profile photo',
-+ 'width' => AVATAR_PROFILE_SIZE,
-+ 'height' => AVATAR_PROFILE_SIZE,
-+ 'alt' => $profile->nickname));
-hunk ./actions/showstream.php 188
-- $cur = common_current_user();
-- if ($cur) {
-- if ($cur->id != $profile->id) {
-- if ($cur->isSubscribed($profile)) {
-- common_unsubscribe_form($profile);
-- } else {
-- common_subscribe_form($profile);
-- }
-- }
-- } else {
-- $this->show_remote_subscribe_link($profile);
-- }
-+ $cur = common_current_user();
-+ if ($cur) {
-+ if ($cur->id != $profile->id) {
-+ if ($cur->isSubscribed($profile)) {
-+ common_unsubscribe_form($profile);
-+ } else {
-+ common_subscribe_form($profile);
-+ }
-+ }
-+ } else {
-+ $this->show_remote_subscribe_link($profile);
-+ }
-hunk ./actions/showstream.php 202
-- $user = User::staticGet('id', $profile->id);
-- common_profile_new_message_nudge($cur, $user, $profile);
-+ $user = User::staticGet('id', $profile->id);
-+ common_profile_new_message_nudge($cur, $user, $profile);
-hunk ./actions/showstream.php 218
-- common_element_end('ul');
-+ common_element_end('ul');
-hunk ./actions/showstream.php 220
-- common_element_end('div');
-+ common_element_end('div');
-hunk ./actions/showstream.php 222
-- common_element_start('div', array('id' => 'profile_information'));
-+ common_element_start('div', array('id' => 'profile_information'));
-hunk ./actions/showstream.php 224
-- if ($profile->fullname) {
-- common_element('h1', array('class' => 'fn'), $profile->fullname . ' (' . $profile->nickname . ')');
-- } else {
-- common_element('h1', array('class' => 'fn nickname'), $profile->nickname);
-- }
-+ if ($profile->fullname) {
-+ common_element('h1', array('class' => 'fn'), $profile->fullname . ' (' . $profile->nickname . ')');
-+ } else {
-+ common_element('h1', array('class' => 'fn nickname'), $profile->nickname);
-+ }
-hunk ./actions/showstream.php 230
-- if ($profile->location) {
-- common_element('p', 'location', $profile->location);
-- }
-- if ($profile->bio) {
-- common_element('p', 'description note', $profile->bio);
-- }
-- if ($profile->homepage) {
-- common_element_start('p', 'website');
-- common_element('a', array('href' => $profile->homepage,
-- 'rel' => 'me', 'class' => 'url'),
-- $profile->homepage);
-- common_element_end('p');
-- }
-+ if ($profile->location) {
-+ common_element('p', 'location', $profile->location);
-+ }
-+ if ($profile->bio) {
-+ common_element('p', 'description note', $profile->bio);
-+ }
-+ if ($profile->homepage) {
-+ common_element_start('p', 'website');
-+ common_element('a', array('href' => $profile->homepage,
-+ 'rel' => 'me', 'class' => 'url'),
-+ $profile->homepage);
-+ common_element_end('p');
-+ }
-hunk ./actions/showstream.php 244
-- $this->show_statistics($profile);
-+ $this->show_statistics($profile);
-hunk ./actions/showstream.php 246
-- common_element_end('div');
-- }
-+ common_element_end('div');
-+ }
-hunk ./actions/showstream.php 249
-- function show_remote_subscribe_link($profile) {
-- $url = common_local_url('remotesubscribe',
-- array('nickname' => $profile->nickname));
-- common_element('a', array('href' => $url,
-- 'id' => 'remotesubscribe'),
-- _('Subscribe'));
-- }
-+ function show_remote_subscribe_link($profile) {
-+ $url = common_local_url('remotesubscribe',
-+ array('nickname' => $profile->nickname));
-+ common_element('a', array('href' => $url,
-+ 'id' => 'remotesubscribe'),
-+ _('Subscribe'));
-+ }
-hunk ./actions/showstream.php 257
-- function show_unsubscribe_form($profile) {
-- common_element_start('form', array('id' => 'unsubscribe', 'method' => 'post',
-- 'action' => common_local_url('unsubscribe')));
-- common_hidden('token', common_session_token());
-- common_element('input', array('id' => 'unsubscribeto',
-- 'name' => 'unsubscribeto',
-- 'type' => 'hidden',
-- 'value' => $profile->nickname));
-- common_element('input', array('type' => 'submit',
-- 'class' => 'submit',
-- 'value' => _('Unsubscribe')));
-- common_element_end('form');
-- }
-+ function show_unsubscribe_form($profile) {
-+ common_element_start('form', array('id' => 'unsubscribe', 'method' => 'post',
-+ 'action' => common_local_url('unsubscribe')));
-+ common_hidden('token', common_session_token());
-+ common_element('input', array('id' => 'unsubscribeto',
-+ 'name' => 'unsubscribeto',
-+ 'type' => 'hidden',
-+ 'value' => $profile->nickname));
-+ common_element('input', array('type' => 'submit',
-+ 'class' => 'submit',
-+ 'value' => _('Unsubscribe')));
-+ common_element_end('form');
-+ }
-hunk ./actions/showstream.php 271
-- function show_subscriptions($profile) {
-- global $config;
-+ function show_subscriptions($profile) {
-+ global $config;
-hunk ./actions/showstream.php 274
-- $subs = DB_DataObject::factory('subscription');
-- $subs->subscriber = $profile->id;
-- $subs->whereAdd('subscribed != ' . $profile->id);
-+ $subs = DB_DataObject::factory('subscription');
-+ $subs->subscriber = $profile->id;
-+ $subs->whereAdd('subscribed != ' . $profile->id);
-hunk ./actions/showstream.php 278
-- $subs->orderBy('created DESC');
-+ $subs->orderBy('created DESC');
-hunk ./actions/showstream.php 280
-- # We ask for an extra one to know if we need to do another page
-+ # We ask for an extra one to know if we need to do another page
-hunk ./actions/showstream.php 282
-- $subs->limit(0, SUBSCRIPTIONS + 1);
-+ $subs->limit(0, SUBSCRIPTIONS + 1);
-hunk ./actions/showstream.php 284
-- $subs_count = $subs->find();
-+ $subs_count = $subs->find();
-hunk ./actions/showstream.php 286
-- common_element_start('div', array('id' => 'subscriptions'));
-+ common_element_start('div', array('id' => 'subscriptions'));
+- var $notice = NULL;
+- var $profile = NULL;
+- var $avatar = NULL;
++ var $notice = null;
++ var $profile = null;
++ var $avatar = null;
+hunk ./actions/shownotice.php 76
+- array($this, 'show_header'), NULL,
++ array($this, 'show_header'), null,
hunk ./actions/showstream.php 288
-- common_element('h2', NULL, _('Subscriptions'));
-+ common_element('h2', NULL, _('Subscriptions'));
-hunk ./actions/showstream.php 290
-- if ($subs_count > 0) {
-+ if ($subs_count > 0) {
-hunk ./actions/showstream.php 292
-- common_element_start('ul', array('id' => 'subscriptions_avatars'));
-+ common_element_start('ul', array('id' => 'subscriptions_avatars'));
-hunk ./actions/showstream.php 294
-- for ($i = 0; $i < min($subs_count, SUBSCRIPTIONS); $i++) {
-+ for ($i = 0; $i < min($subs_count, SUBSCRIPTIONS); $i++) {
-hunk ./actions/showstream.php 296
-- if (!$subs->fetch()) {
-- common_debug('Weirdly, broke out of subscriptions loop early', __FILE__);
-- break;
-- }
-+ if (!$subs->fetch()) {
-+ common_debug('Weirdly, broke out of subscriptions loop early', __FILE__);
-+ break;
-+ }
-hunk ./actions/showstream.php 301
-- $other = Profile::staticGet($subs->subscribed);
-+ $other = Profile::staticGet($subs->subscribed);
-hunk ./actions/showstream.php 303
-- if (!$other) {
-- common_log_db_error($subs, 'SELECT', __FILE__);
-- continue;
-- }
-+ if (!$other) {
-+ common_log_db_error($subs, 'SELECT', __FILE__);
-+ continue;
-+ }
-hunk ./actions/showstream.php 308
-- common_element_start('li', 'vcard');
-- common_element_start('a', array('title' => ($other->fullname) ?
-- $other->fullname :
-- $other->nickname,
-- 'href' => $other->profileurl,
-- 'rel' => 'contact',
-- 'class' => 'subscription fn url'));
-- $avatar = $other->getAvatar(AVATAR_MINI_SIZE);
-- common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)),
-- 'width' => AVATAR_MINI_SIZE,
-- 'height' => AVATAR_MINI_SIZE,
-- 'class' => 'avatar mini photo',
-- 'alt' => ($other->fullname) ?
-- $other->fullname :
-- $other->nickname));
-- common_element_end('a');
-- common_element_end('li');
-- }
-+ common_element_start('li', 'vcard');
-+ common_element_start('a', array('title' => ($other->fullname) ?
-+ $other->fullname :
-+ $other->nickname,
-+ 'href' => $other->profileurl,
-+ 'rel' => 'contact',
-+ 'class' => 'subscription fn url'));
-+ $avatar = $other->getAvatar(AVATAR_MINI_SIZE);
-+ common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)),
-+ 'width' => AVATAR_MINI_SIZE,
-+ 'height' => AVATAR_MINI_SIZE,
-+ 'class' => 'avatar mini photo',
-+ 'alt' => ($other->fullname) ?
-+ $other->fullname :
-+ $other->nickname));
-+ common_element_end('a');
-+ common_element_end('li');
-+ }
-hunk ./actions/showstream.php 327
-- common_element_end('ul');
-- }
-+ common_element_end('ul');
-+ }
-hunk ./actions/showstream.php 330
-- if ($subs_count > SUBSCRIPTIONS) {
-- common_element_start('p', array('id' => 'subscriptions_viewall'));
-+ if ($subs_count > SUBSCRIPTIONS) {
-+ common_element_start('p', array('id' => 'subscriptions_viewall'));
-hunk ./actions/showstream.php 333
-- common_element('a', array('href' => common_local_url('subscriptions',
-- array('nickname' => $profile->nickname)),
-- 'class' => 'moresubscriptions'),
-- _('All subscriptions'));
-- common_element_end('p');
-- }
-+ common_element('a', array('href' => common_local_url('subscriptions',
-+ array('nickname' => $profile->nickname)),
-+ 'class' => 'moresubscriptions'),
-+ _('All subscriptions'));
-+ common_element_end('p');
-+ }
-hunk ./actions/showstream.php 340
-- common_element_end('div');
-- }
-+ common_element_end('div');
-+ }
-hunk ./actions/showstream.php 343
-- function show_statistics($profile) {
-+ function show_statistics($profile) {
-hunk ./actions/showstream.php 345
-- // XXX: WORM cache this
-- $subs = DB_DataObject::factory('subscription');
-- $subs->subscriber = $profile->id;
-- $subs_count = (int) $subs->count() - 1;
-+ // XXX: WORM cache this
-+ $subs = DB_DataObject::factory('subscription');
-+ $subs->subscriber = $profile->id;
-+ $subs_count = (int) $subs->count() - 1;
-hunk ./actions/showstream.php 350
-- $subbed = DB_DataObject::factory('subscription');
-- $subbed->subscribed = $profile->id;
-- $subbed_count = (int) $subbed->count() - 1;
-+ $subbed = DB_DataObject::factory('subscription');
-+ $subbed->subscribed = $profile->id;
-+ $subbed_count = (int) $subbed->count() - 1;
-hunk ./actions/showstream.php 354
-- $notices = DB_DataObject::factory('notice');
-- $notices->profile_id = $profile->id;
-- $notice_count = (int) $notices->count();
-+ $notices = DB_DataObject::factory('notice');
-+ $notices->profile_id = $profile->id;
-+ $notice_count = (int) $notices->count();
-hunk ./actions/showstream.php 358
-- common_element_start('div', 'statistics');
-- common_element('h2', 'statistics', _('Statistics'));
-+ common_element_start('div', 'statistics');
-+ common_element('h2', 'statistics', _('Statistics'));
-hunk ./actions/showstream.php 361
-- # Other stats...?
-- common_element_start('dl', 'statistics');
-- common_element('dt', 'membersince', _('Member since'));
-- common_element('dd', 'membersince', date('j M Y',
-- strtotime($profile->created)));
-+ # Other stats...?
-+ common_element_start('dl', 'statistics');
-+ common_element('dt', 'membersince', _('Member since'));
-+ common_element('dd', 'membersince', date('j M Y',
-+ strtotime($profile->created)));
-hunk ./actions/showstream.php 367
-- common_element_start('dt', 'subscriptions');
-- common_element('a', array('href' => common_local_url('subscriptions',
-- array('nickname' => $profile->nickname))),
-- _('Subscriptions'));
-- common_element_end('dt');
-- common_element('dd', 'subscriptions', (is_int($subs_count)) ? $subs_count : '0');
-- common_element_start('dt', 'subscribers');
-- common_element('a', array('href' => common_local_url('subscribers',
-- array('nickname' => $profile->nickname))),
-- _('Subscribers'));
-- common_element_end('dt');
-- common_element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0');
-- common_element('dt', 'notices', _('Notices'));
-- common_element('dd', 'notices', (is_int($notice_count)) ? $notice_count : '0');
-- # XXX: link these to something
-- common_element('dt', 'tags', _('Tags'));
-- common_element_start('dd', 'tags');
-- $tags = Profile_tag::getTags($profile->id, $profile->id);
-+ common_element_start('dt', 'subscriptions');
-+ common_element('a', array('href' => common_local_url('subscriptions',
-+ array('nickname' => $profile->nickname))),
-+ _('Subscriptions'));
-+ common_element_end('dt');
-+ common_element('dd', 'subscriptions', (is_int($subs_count)) ? $subs_count : '0');
-+ common_element_start('dt', 'subscribers');
-+ common_element('a', array('href' => common_local_url('subscribers',
-+ array('nickname' => $profile->nickname))),
-+ _('Subscribers'));
-+ common_element_end('dt');
-+ common_element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0');
-+ common_element('dt', 'notices', _('Notices'));
-+ common_element('dd', 'notices', (is_int($notice_count)) ? $notice_count : '0');
-+ # XXX: link these to something
-+ common_element('dt', 'tags', _('Tags'));
-+ common_element_start('dd', 'tags');
-+ $tags = Profile_tag::getTags($profile->id, $profile->id);
-hunk ./actions/showstream.php 386
-- common_element_start('ul', 'tags xoxo');
-- foreach ($tags as $tag) {
-- common_element_start('li');
-- common_element('a', array('rel' => 'bookmark tag',
-- 'href' => common_local_url('peopletag',
-- array('tag' => $tag))),
-- $tag);
-- common_element_end('li');
-- }
-- common_element_end('ul');
-- common_element_end('dd');
-+ common_element_start('ul', 'tags xoxo');
-+ foreach ($tags as $tag) {
-+ common_element_start('li');
-+ common_element('a', array('rel' => 'bookmark tag',
-+ 'href' => common_local_url('peopletag',
-+ array('tag' => $tag))),
-+ $tag);
-+ common_element_end('li');
-+ }
-+ common_element_end('ul');
-+ common_element_end('dd');
-hunk ./actions/showstream.php 398
-- common_element_end('dl');
-+ common_element_end('dl');
-hunk ./actions/showstream.php 400
-- common_element_end('div');
-- }
-+ common_element_end('div');
-+ }
-hunk ./actions/showstream.php 403
-- function show_notices($user) {
-+ function show_notices($user) {
-hunk ./actions/showstream.php 405
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/showstream.php 407
-- $notice = $user->getNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-+ $notice = $user->getNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
-hunk ./actions/showstream.php 412
-- common_pagination($page>1, $cnt>NOTICES_PER_PAGE, $page,
-- 'showstream', array('nickname' => $user->nickname));
-- }
-+ common_pagination($page>1, $cnt>NOTICES_PER_PAGE, $page,
-+ 'showstream', array('nickname' => $user->nickname));
-+ }
-hunk ./actions/showstream.php 416
-- function show_last_notice($profile) {
-+ function show_last_notice($profile) {
+- common_element('h2', NULL, _('Subscriptions'));
++ common_element('h2', null, _('Subscriptions'));
hunk ./actions/showstream.php 418
-- common_element('h2', NULL, _('Currently'));
-+ common_element('h2', NULL, _('Currently'));
-hunk ./actions/showstream.php 420
-- $notice = $profile->getCurrentNotice();
-+ $notice = $profile->getCurrentNotice();
-hunk ./actions/showstream.php 422
-- if ($notice) {
-- # FIXME: URL, image, video, audio
-- common_element_start('p', array('class' => 'notice_current'));
-- if ($notice->rendered) {
-- common_raw($notice->rendered);
-- } else {
-- # XXX: may be some uncooked notices in the DB,
-- # we cook them right now. This can probably disappear in future
-- # versions (>> 0.4.x)
-- common_raw(common_render_content($notice->content, $notice));
-- }
-- common_element_end('p');
-- }
-- }
-+ if ($notice) {
-+ # FIXME: URL, image, video, audio
-+ common_element_start('p', array('class' => 'notice_current'));
-+ if ($notice->rendered) {
-+ common_raw($notice->rendered);
-+ } else {
-+ # XXX: may be some uncooked notices in the DB,
-+ # we cook them right now. This can probably disappear in future
-+ # versions (>> 0.4.x)
-+ common_raw(common_render_content($notice->content, $notice));
-+ }
-+ common_element_end('p');
-+ }
-+ }
-hunk ./actions/smssettings.php 27
-- function get_instructions() {
-- return _('You can receive SMS messages through email from %%site.name%%.');
-- }
-+ function get_instructions() {
-+ return _('You can receive SMS messages through email from %%site.name%%.');
-+ }
+- common_element('h2', NULL, _('Currently'));
++ common_element('h2', null, _('Currently'));
hunk ./actions/smssettings.php 31
-- function show_form($msg=NULL, $success=false) {
-- $user = common_current_user();
-- $this->form_header(_('SMS Settings'), $msg, $success);
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'smssettings',
-- 'action' =>
-- common_local_url('smssettings')));
-- common_hidden('token', common_session_token());
-- common_element('h2', NULL, _('Address'));
-+ function show_form($msg=NULL, $success=false) {
-+ $user = common_current_user();
-+ $this->form_header(_('SMS Settings'), $msg, $success);
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'smssettings',
-+ 'action' =>
-+ common_local_url('smssettings')));
-+ common_hidden('token', common_session_token());
-+ common_element('h2', NULL, _('Address'));
-hunk ./actions/smssettings.php 41
-- if ($user->sms) {
-- common_element_start('p');
-- $carrier = $user->getCarrier();
-- common_element('span', 'address confirmed', $user->sms . ' (' . $carrier->name . ')');
-- common_element('span', 'input_instructions',
-- _('Current confirmed SMS-enabled phone number.'));
-- common_hidden('sms', $user->sms);
-- common_hidden('carrier', $user->carrier);
-- common_element_end('p');
-- common_submit('remove', _('Remove'));
-- } else {
-- $confirm = $this->get_confirmation();
-- if ($confirm) {
-- $carrier = Sms_carrier::staticGet($confirm->address_extra);
-- common_element_start('p');
-- common_element('span', 'address unconfirmed', $confirm->address . ' (' . $carrier->name . ')');
-- common_element('span', 'input_instructions',
-- _('Awaiting confirmation on this phone number.'));
-- common_hidden('sms', $confirm->address);
-- common_hidden('carrier', $confirm->address_extra);
-- common_element_end('p');
-- common_submit('cancel', _('Cancel'));
-- common_input('code', _('Confirmation code'), NULL,
-- _('Enter the code you received on your phone.'));
-- common_submit('confirm', _('Confirm'));
-- } else {
-- common_input('sms', _('SMS Phone number'),
-- ($this->arg('sms')) ? $this->arg('sms') : NULL,
-- _('Phone number, no punctuation or spaces, with area code'));
-- $this->carrier_select();
-- common_submit('add', _('Add'));
-- }
-- }
-+ if ($user->sms) {
-+ common_element_start('p');
-+ $carrier = $user->getCarrier();
-+ common_element('span', 'address confirmed', $user->sms . ' (' . $carrier->name . ')');
-+ common_element('span', 'input_instructions',
-+ _('Current confirmed SMS-enabled phone number.'));
-+ common_hidden('sms', $user->sms);
-+ common_hidden('carrier', $user->carrier);
-+ common_element_end('p');
-+ common_submit('remove', _('Remove'));
-+ } else {
-+ $confirm = $this->get_confirmation();
-+ if ($confirm) {
-+ $carrier = Sms_carrier::staticGet($confirm->address_extra);
-+ common_element_start('p');
-+ common_element('span', 'address unconfirmed', $confirm->address . ' (' . $carrier->name . ')');
-+ common_element('span', 'input_instructions',
-+ _('Awaiting confirmation on this phone number.'));
-+ common_hidden('sms', $confirm->address);
-+ common_hidden('carrier', $confirm->address_extra);
-+ common_element_end('p');
-+ common_submit('cancel', _('Cancel'));
-+ common_input('code', _('Confirmation code'), NULL,
-+ _('Enter the code you received on your phone.'));
-+ common_submit('confirm', _('Confirm'));
-+ } else {
-+ common_input('sms', _('SMS Phone number'),
-+ ($this->arg('sms')) ? $this->arg('sms') : NULL,
-+ _('Phone number, no punctuation or spaces, with area code'));
-+ $this->carrier_select();
-+ common_submit('add', _('Add'));
-+ }
-+ }
-hunk ./actions/smssettings.php 75
-- if ($user->sms) {
-- common_element('h2', NULL, _('Incoming email'));
--
-- if ($user->incomingemail) {
-- common_element_start('p');
-- common_element('span', 'address', $user->incomingemail);
-- common_element('span', 'input_instructions',
-- _('Send email to this address to post new notices.'));
-- common_element_end('p');
-- common_submit('removeincoming', _('Remove'));
-- }
--
-- common_element_start('p');
-- common_element('span', 'input_instructions',
-- _('Make a new email address for posting to; cancels the old one.'));
-- common_element_end('p');
-- common_submit('newincoming', _('New'));
-- }
--
-- common_element('h2', NULL, _('Preferences'));
--
-- common_checkbox('smsnotify',
-- _('Send me notices through SMS; I understand I may incur exorbitant charges from my carrier.'),
-- $user->smsnotify);
--
-- common_submit('save', _('Save'));
--
-- common_element_end('form');
-- common_show_footer();
-- }
-+ if ($user->sms) {
-+ common_element('h2', NULL, _('Incoming email'));
-+
-+ if ($user->incomingemail) {
-+ common_element_start('p');
-+ common_element('span', 'address', $user->incomingemail);
-+ common_element('span', 'input_instructions',
-+ _('Send email to this address to post new notices.'));
-+ common_element_end('p');
-+ common_submit('removeincoming', _('Remove'));
-+ }
-+
-+ common_element_start('p');
-+ common_element('span', 'input_instructions',
-+ _('Make a new email address for posting to; cancels the old one.'));
-+ common_element_end('p');
-+ common_submit('newincoming', _('New'));
-+ }
-+
-+ common_element('h2', NULL, _('Preferences'));
-+
-+ common_checkbox('smsnotify',
-+ _('Send me notices through SMS; I understand I may incur exorbitant charges from my carrier.'),
-+ $user->smsnotify);
-+
-+ common_submit('save', _('Save'));
-+
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/smssettings.php 106
-- function get_confirmation() {
-- $user = common_current_user();
-- $confirm = new Confirm_address();
-- $confirm->user_id = $user->id;
-- $confirm->address_type = 'sms';
-- if ($confirm->find(TRUE)) {
-- return $confirm;
-- } else {
-- return NULL;
-- }
-- }
-+ function get_confirmation() {
-+ $user = common_current_user();
-+ $confirm = new Confirm_address();
-+ $confirm->user_id = $user->id;
-+ $confirm->address_type = 'sms';
-+ if ($confirm->find(TRUE)) {
-+ return $confirm;
-+ } else {
-+ return NULL;
-+ }
-+ }
-hunk ./actions/smssettings.php 118
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/smssettings.php 120
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/smssettings.php 122
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 128
-- if ($this->arg('save')) {
-- $this->save_preferences();
-- } else if ($this->arg('add')) {
-- $this->add_address();
-- } else if ($this->arg('cancel')) {
-- $this->cancel_confirmation();
-- } else if ($this->arg('remove')) {
-- $this->remove_address();
-- } else if ($this->arg('removeincoming')) {
-- $this->remove_incoming();
-- } else if ($this->arg('newincoming')) {
-- $this->new_incoming();
-- } else if ($this->arg('confirm')) {
-- $this->confirm_code();
-- } else {
-- $this->show_form(_('Unexpected form submission.'));
-- }
-- }
-+ if ($this->arg('save')) {
-+ $this->save_preferences();
-+ } else if ($this->arg('add')) {
-+ $this->add_address();
-+ } else if ($this->arg('cancel')) {
-+ $this->cancel_confirmation();
-+ } else if ($this->arg('remove')) {
-+ $this->remove_address();
-+ } else if ($this->arg('removeincoming')) {
-+ $this->remove_incoming();
-+ } else if ($this->arg('newincoming')) {
-+ $this->new_incoming();
-+ } else if ($this->arg('confirm')) {
-+ $this->confirm_code();
-+ } else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-+ }
-hunk ./actions/smssettings.php 147
-- function save_preferences() {
-+ function save_preferences() {
-hunk ./actions/smssettings.php 149
-- $smsnotify = $this->boolean('smsnotify');
--
-- $user = common_current_user();
-+ $smsnotify = $this->boolean('smsnotify');
-+
-+ $user = common_current_user();
-hunk ./actions/smssettings.php 153
-- assert(!is_null($user)); # should already be checked
-+ assert(!is_null($user)); # should already be checked
-hunk ./actions/smssettings.php 155
-- $user->query('BEGIN');
-+ $user->query('BEGIN');
-hunk ./actions/smssettings.php 157
-- $original = clone($user);
-+ $original = clone($user);
-hunk ./actions/smssettings.php 159
-- $user->smsnotify = $smsnotify;
-+ $user->smsnotify = $smsnotify;
-hunk ./actions/smssettings.php 161
-- $result = $user->update($original);
-+ $result = $user->update($original);
-hunk ./actions/smssettings.php 163
-- if ($result === FALSE) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 169
-- $user->query('COMMIT');
-+ $user->query('COMMIT');
-hunk ./actions/smssettings.php 171
-- $this->show_form(_('Preferences saved.'), true);
-- }
-+ $this->show_form(_('Preferences saved.'), true);
-+ }
-hunk ./actions/smssettings.php 174
-- function add_address() {
-+ function add_address() {
-hunk ./actions/smssettings.php 176
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/smssettings.php 178
-- $sms = $this->trimmed('sms');
-- $carrier_id = $this->trimmed('carrier');
--
-- # Some validation
-+ $sms = $this->trimmed('sms');
-+ $carrier_id = $this->trimmed('carrier');
-+
-+ # Some validation
-hunk ./actions/smssettings.php 183
-- if (!$sms) {
-- $this->show_form(_('No phone number.'));
-- return;
-- }
-+ if (!$sms) {
-+ $this->show_form(_('No phone number.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 188
-- if (!$carrier_id) {
-- $this->show_form(_('No carrier selected.'));
-- return;
-- }
--
-- $sms = common_canonical_sms($sms);
--
-- if ($user->sms == $sms) {
-- $this->show_form(_('That is already your phone number.'));
-- return;
-- } else if ($this->sms_exists($sms)) {
-- $this->show_form(_('That phone number already belongs to another user.'));
-- return;
-- }
-+ if (!$carrier_id) {
-+ $this->show_form(_('No carrier selected.'));
-+ return;
-+ }
-+
-+ $sms = common_canonical_sms($sms);
-+
-+ if ($user->sms == $sms) {
-+ $this->show_form(_('That is already your phone number.'));
-+ return;
-+ } else if ($this->sms_exists($sms)) {
-+ $this->show_form(_('That phone number already belongs to another user.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 203
-- $confirm = new Confirm_address();
-- $confirm->address = $sms;
-- $confirm->address_extra = $carrier_id;
-- $confirm->address_type = 'sms';
-- $confirm->user_id = $user->id;
-- $confirm->code = common_confirmation_code(40);
-+ $confirm = new Confirm_address();
-+ $confirm->address = $sms;
-+ $confirm->address_extra = $carrier_id;
-+ $confirm->address_type = 'sms';
-+ $confirm->user_id = $user->id;
-+ $confirm->code = common_confirmation_code(40);
-hunk ./actions/smssettings.php 210
-- $result = $confirm->insert();
-+ $result = $confirm->insert();
-hunk ./actions/smssettings.php 212
-- if ($result === FALSE) {
-- common_log_db_error($confirm, 'INSERT', __FILE__);
-- common_server_error(_('Couldn\'t insert confirmation code.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($confirm, 'INSERT', __FILE__);
-+ common_server_error(_('Couldn\'t insert confirmation code.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 218
-- $carrier = Sms_carrier::staticGet($carrier_id);
--
-- mail_confirm_sms($confirm->code,
-- $user->nickname,
-- $carrier->toEmailAddress($sms));
-+ $carrier = Sms_carrier::staticGet($carrier_id);
-+
-+ mail_confirm_sms($confirm->code,
-+ $user->nickname,
-+ $carrier->toEmailAddress($sms));
-hunk ./actions/smssettings.php 224
-- $msg = _('A confirmation code was sent to the phone number you added. Check your inbox (and spam box!) for the code and instructions on how to use it.');
-+ $msg = _('A confirmation code was sent to the phone number you added. Check your inbox (and spam box!) for the code and instructions on how to use it.');
-hunk ./actions/smssettings.php 226
-- $this->show_form($msg, TRUE);
-- }
-+ $this->show_form($msg, TRUE);
-+ }
-hunk ./actions/smssettings.php 229
-- function cancel_confirmation() {
--
-- $sms = $this->trimmed('sms');
-- $carrier = $this->trimmed('carrier');
--
-- $confirm = $this->get_confirmation();
--
-- if (!$confirm) {
-- $this->show_form(_('No pending confirmation to cancel.'));
-- return;
-- }
-- if ($confirm->address != $sms) {
-- $this->show_form(_('That is the wrong confirmation number.'));
-- return;
-- }
-+ function cancel_confirmation() {
-+
-+ $sms = $this->trimmed('sms');
-+ $carrier = $this->trimmed('carrier');
-+
-+ $confirm = $this->get_confirmation();
-+
-+ if (!$confirm) {
-+ $this->show_form(_('No pending confirmation to cancel.'));
-+ return;
-+ }
-+ if ($confirm->address != $sms) {
-+ $this->show_form(_('That is the wrong confirmation number.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 248
-- common_log_db_error($confirm, 'DELETE', __FILE__);
-+ common_log_db_error($confirm, 'DELETE', __FILE__);
-hunk ./actions/smssettings.php 254
-- }
-+ }
-hunk ./actions/smssettings.php 256
-- function remove_address() {
-+ function remove_address() {
-hunk ./actions/smssettings.php 258
-- $user = common_current_user();
-- $sms = $this->arg('sms');
-- $carrier = $this->arg('carrier');
--
-- # Maybe an old tab open...?
-+ $user = common_current_user();
-+ $sms = $this->arg('sms');
-+ $carrier = $this->arg('carrier');
-+
-+ # Maybe an old tab open...?
-hunk ./actions/smssettings.php 264
-- if ($user->sms != $sms) {
-- $this->show_form(_('That is not your phone number.'));
-- return;
-- }
-+ if ($user->sms != $sms) {
-+ $this->show_form(_('That is not your phone number.'));
-+ return;
-+ }
-hunk ./actions/smssettings.php 269
-- $user->query('BEGIN');
-- $original = clone($user);
-- $user->sms = NULL;
-- $user->carrier = NULL;
-- $user->smsemail = NULL;
-- $result = $user->updateKeys($original);
-- if (!$result) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t update user.'));
-- return;
-- }
-- $user->query('COMMIT');
-+ $user->query('BEGIN');
-+ $original = clone($user);
-+ $user->sms = NULL;
-+ $user->carrier = NULL;
-+ $user->smsemail = NULL;
-+ $result = $user->updateKeys($original);
-+ if (!$result) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t update user.'));
-+ return;
-+ }
-+ $user->query('COMMIT');
-hunk ./actions/smssettings.php 282
-- $this->show_form(_('The address was removed.'), TRUE);
-- }
--
-- function sms_exists($sms) {
-- $user = common_current_user();
-- $other = User::staticGet('sms', $sms);
-- if (!$other) {
-- return false;
-- } else {
-- return $other->id != $user->id;
-- }
-- }
-+ $this->show_form(_('The address was removed.'), TRUE);
-+ }
-+
-+ function sms_exists($sms) {
-+ $user = common_current_user();
-+ $other = User::staticGet('sms', $sms);
-+ if (!$other) {
-+ return false;
-+ } else {
-+ return $other->id != $user->id;
-+ }
-+ }
-hunk ./actions/smssettings.php 295
-- function carrier_select() {
-- $carrier = new Sms_carrier();
-- $cnt = $carrier->find();
-+ function carrier_select() {
-+ $carrier = new Sms_carrier();
-+ $cnt = $carrier->find();
-hunk ./actions/smssettings.php 299
-- common_element_start('p');
-- common_element('label', array('for' => 'carrier'));
-- common_element_start('select', array('name' => 'carrier',
-- 'id' => 'carrier'));
-- common_element('option', array('value' => 0),
-- _('Select a carrier'));
-- while ($carrier->fetch()) {
-- common_element('option', array('value' => $carrier->id),
-- $carrier->name);
-- }
-- common_element_end('select');
-- common_element_end('p');
-- common_element('span', 'input_instructions',
-- sprintf(_('Mobile carrier for your phone. '.
-- 'If you know a carrier that accepts ' .
-- 'SMS over email but isn\'t listed here, ' .
-- 'send email to let us know at %s.'),
-- common_config('site', 'email')));
-- }
-+ common_element_start('p');
-+ common_element('label', array('for' => 'carrier'));
-+ common_element_start('select', array('name' => 'carrier',
-+ 'id' => 'carrier'));
-+ common_element('option', array('value' => 0),
-+ _('Select a carrier'));
-+ while ($carrier->fetch()) {
-+ common_element('option', array('value' => $carrier->id),
-+ $carrier->name);
-+ }
-+ common_element_end('select');
-+ common_element_end('p');
-+ common_element('span', 'input_instructions',
-+ sprintf(_('Mobile carrier for your phone. '.
-+ 'If you know a carrier that accepts ' .
-+ 'SMS over email but isn\'t listed here, ' .
-+ 'send email to let us know at %s.'),
-+ common_config('site', 'email')));
-+ }
-hunk ./actions/smssettings.php 319
-- function confirm_code() {
--
-- $code = $this->trimmed('code');
--
-- if (!$code) {
-- $this->show_form(_('No code entered'));
-- return;
-- }
--
-- common_redirect(common_local_url('confirmaddress',
-- array('code' => $code)));
-- }
-+ function confirm_code() {
-+
-+ $code = $this->trimmed('code');
-+
-+ if (!$code) {
-+ $this->show_form(_('No code entered'));
-+ return;
-+ }
-+
-+ common_redirect(common_local_url('confirmaddress',
-+ array('code' => $code)));
-+ }
-hunk ./actions/subedit.php 35
-- $token = $this->trimmed('token');
-+ $token = $this->trimmed('token');
-hunk ./actions/subedit.php 37
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/subscribe.php 24
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/subscribe.php 27
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- return;
-- }
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ return;
-+ }
-hunk ./actions/subscribe.php 32
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/subscribe.php 34
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname)));
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname)));
-+ return;
-+ }
-hunk ./actions/subscribe.php 39
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/subscribe.php 41
-- $token = $this->trimmed('token');
-+ $token = $this->trimmed('token');
-hunk ./actions/subscribe.php 43
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/subscribe.php 48
-- $other_id = $this->arg('subscribeto');
-+ $other_id = $this->arg('subscribeto');
-hunk ./actions/subscribe.php 53
-- $this->client_error(_('Not a local user.'));
-- return;
-+ $this->client_error(_('Not a local user.'));
-+ return;
-hunk ./actions/subscribe.php 57
-- $result = subs_subscribe_to($user, $other);
-+ $result = subs_subscribe_to($user, $other);
-hunk ./actions/subscribe.php 59
-- if($result != true) {
-- common_user_error($result);
-- return;
-- }
-+ if($result != true) {
-+ common_user_error($result);
-+ return;
-+ }
-hunk ./actions/subscribe.php 64
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Subscribed'));
-- common_element_end('head');
-- common_element_start('body');
-- common_unsubscribe_form($other->getProfile());
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- common_redirect(common_local_url('subscriptions', array('nickname' =>
-- $user->nickname)));
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Subscribed'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_unsubscribe_form($other->getProfile());
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ common_redirect(common_local_url('subscriptions', array('nickname' =>
-+ $user->nickname)));
-hunk ./actions/subscribe.php 77
-- }
-+ }
-hunk ./actions/subscribers.php 26
-- function gallery_type() {
-- return _('Subscribers');
-- }
-+ function gallery_type() {
-+ return _('Subscribers');
-+ }
-hunk ./actions/subscribers.php 30
-- function get_instructions(&$profile) {
-- $user =& common_current_user();
-- if ($user && ($user->id == $profile->id)) {
-- return _('These are the people who listen to your notices.');
-- } else {
-- return sprintf(_('These are the people who listen to %s\'s notices.'), $profile->nickname);
-- }
-- }
-+ function get_instructions(&$profile) {
-+ $user =& common_current_user();
-+ if ($user && ($user->id == $profile->id)) {
-+ return _('These are the people who listen to your notices.');
-+ } else {
-+ return sprintf(_('These are the people who listen to %s\'s notices.'), $profile->nickname);
-+ }
-+ }
-hunk ./actions/subscribers.php 39
-- function fields() {
-- return array('subscriber', 'subscribed');
-- }
-+ function fields() {
-+ return array('subscriber', 'subscribed');
-+ }
-hunk ./actions/subscribers.php 43
-- function div_class() {
-- return 'subscribers';
-- }
-+ function div_class() {
-+ return 'subscribers';
-+ }
-hunk ./actions/subscribers.php 47
-- function get_other(&$subs) {
-- return $subs->subscriber;
-- }
-+ function get_other(&$subs) {
-+ return $subs->subscriber;
-+ }
-hunk ./actions/subscriptions.php 26
-- function gallery_type() {
-- return _('Subscriptions');
-- }
-+ function gallery_type() {
-+ return _('Subscriptions');
-+ }
-hunk ./actions/subscriptions.php 30
-- function get_instructions(&$profile) {
-- $user =& common_current_user();
-- if ($user && ($user->id == $profile->id)) {
-- return _('These are the people whose notices you listen to.');
-- } else {
-- return sprintf(_('These are the people whose notices %s listens to.'), $profile->nickname);
-- }
-- }
-+ function get_instructions(&$profile) {
-+ $user =& common_current_user();
-+ if ($user && ($user->id == $profile->id)) {
-+ return _('These are the people whose notices you listen to.');
-+ } else {
-+ return sprintf(_('These are the people whose notices %s listens to.'), $profile->nickname);
-+ }
-+ }
-hunk ./actions/subscriptions.php 39
-- function fields() {
-- return array('subscribed', 'subscriber');
-- }
-+ function fields() {
-+ return array('subscribed', 'subscriber');
-+ }
-hunk ./actions/subscriptions.php 43
-- function div_class() {
-- return 'subscriptions';
-- }
-+ function div_class() {
-+ return 'subscriptions';
-+ }
-hunk ./actions/subscriptions.php 47
-- function get_other(&$subs) {
-- return $subs->subscribed;
-- }
-+ function get_other(&$subs) {
-+ return $subs->subscribed;
-+ }
-hunk ./actions/subscriptions.php 60
-- $sub = Subscription::pkeyGet(array('subscriber' => $this->owner->id,
-- 'subscribed' => $profile->id));
-+ $sub = Subscription::pkeyGet(array('subscriber' => $this->owner->id,
-+ 'subscribed' => $profile->id));
-hunk ./actions/sup.php 23
--
-- function handle($args) {
--
-- parent::handle($args);
--
-- $seconds = $this->trimmed('seconds');
--
-- if (!$seconds) {
-- $seconds = 15;
-- }
-+
-+ function handle($args) {
-+
-+ parent::handle($args);
-+
-+ $seconds = $this->trimmed('seconds');
-+
-+ if (!$seconds) {
-+ $seconds = 15;
-+ }
-hunk ./actions/sup.php 34
-- $updates = $this->get_updates($seconds);
--
-- header('Content-Type: application/json; charset=utf-8');
--
-- print json_encode(array('updated_time' => date('c'),
-- 'since_time' => date('c', time() - $seconds),
-- 'available_periods' => $this->available_periods(),
-- 'period' => $seconds,
-- 'updates' => $updates));
-- }
--
-- function available_periods() {
-- static $periods = array(86400, 43200, 21600, 7200,
-- 3600, 1800, 600, 300, 120,
-- 60, 30, 15);
-- $available = array();
-- foreach ($periods as $period) {
-- $available[$period] = common_local_url('sup',
-- array('seconds' => $period));
-- }
--
-- return $available;
-- }
--
-- function get_updates($seconds) {
-- $notice = new Notice();
-+ $updates = $this->get_updates($seconds);
-+
-+ header('Content-Type: application/json; charset=utf-8');
-+
-+ print json_encode(array('updated_time' => date('c'),
-+ 'since_time' => date('c', time() - $seconds),
-+ 'available_periods' => $this->available_periods(),
-+ 'period' => $seconds,
-+ 'updates' => $updates));
-+ }
-+
-+ function available_periods() {
-+ static $periods = array(86400, 43200, 21600, 7200,
-+ 3600, 1800, 600, 300, 120,
-+ 60, 30, 15);
-+ $available = array();
-+ foreach ($periods as $period) {
-+ $available[$period] = common_local_url('sup',
-+ array('seconds' => $period));
-+ }
-+
-+ return $available;
-+ }
-+
-+ function get_updates($seconds) {
-+ $notice = new Notice();
-hunk ./actions/sup.php 61
-- # XXX: cache this. Depends on how big this protocol becomes;
-- # Re-doing this query every 15 seconds isn't the end of the world.
-+ # XXX: cache this. Depends on how big this protocol becomes;
-+ # Re-doing this query every 15 seconds isn't the end of the world.
-hunk ./actions/sup.php 64
-- $notice->query('SELECT profile_id, max(id) AS max_id ' .
-- 'FROM notice ' .
-- 'WHERE created > (now() - ' . $seconds . ') ' .
-- 'GROUP BY profile_id');
--
-- $updates = array();
--
-- while ($notice->fetch()) {
-- $updates[] = array($notice->profile_id, $notice->max_id);
-- }
--
-- return $updates;
-- }
--
-- function is_readonly() {
-- return true;
-- }
-+ $notice->query('SELECT profile_id, max(id) AS max_id ' .
-+ 'FROM notice ' .
-+ 'WHERE created > (now() - ' . $seconds . ') ' .
-+ 'GROUP BY profile_id');
-+
-+ $updates = array();
-+
-+ while ($notice->fetch()) {
-+ $updates[] = array($notice->profile_id, $notice->max_id);
-+ }
-+
-+ return $updates;
-+ }
-+
-+ function is_readonly() {
-+ return true;
-+ }
-hunk ./actions/tag.php 27
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/tag.php 29
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/tag.php 31
-- # Looks like we're good; show the header
-+ # Looks like we're good; show the header
-hunk ./actions/tag.php 33
-- if (isset($args['tag']) && $args['tag']) {
-- $tag = $args['tag'];
-- common_show_header(sprintf(_("Notices tagged with %s"), $tag),
-- array($this, 'show_header'), $tag,
-- array($this, 'show_top'));
-- $this->show_notices($tag);
-- } else {
-- common_show_header(_("Tags"),
-- array($this, 'show_header'), '',
-- array($this, 'show_top'));
-- $this->show_tags();
-- }
-+ if (isset($args['tag']) && $args['tag']) {
-+ $tag = $args['tag'];
-+ common_show_header(sprintf(_("Notices tagged with %s"), $tag),
-+ array($this, 'show_header'), $tag,
-+ array($this, 'show_top'));
-+ $this->show_notices($tag);
-+ } else {
-+ common_show_header(_("Tags"),
-+ array($this, 'show_header'), '',
-+ array($this, 'show_top'));
-+ $this->show_tags();
-+ }
-hunk ./actions/tag.php 46
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/tag.php 49
-- function show_header($tag = false) {
-- if ($tag) {
-- common_element('link', array('rel' => 'alternate',
-- 'href' => common_local_url('tagrss', array('tag' => $tag)),
-- 'type' => 'application/rss+xml',
-- 'title' => sprintf(_('Feed for tag %s'), $tag)));
-- }
-- }
-+ function show_header($tag = false) {
-+ if ($tag) {
-+ common_element('link', array('rel' => 'alternate',
-+ 'href' => common_local_url('tagrss', array('tag' => $tag)),
-+ 'type' => 'application/rss+xml',
-+ 'title' => sprintf(_('Feed for tag %s'), $tag)));
-+ }
-+ }
-hunk ./actions/tag.php 58
-- function get_instructions() {
-- return _('Showing most popular tags from the last week');
-- }
-+ function get_instructions() {
-+ return _('Showing most popular tags from the last week');
-+ }
-hunk ./actions/tag.php 62
-- function show_top($tag = false) {
-- if (!$tag) {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- $this->public_views_menu();
-- }
-- else {
-- $this->show_feeds_list(array(0=>array('href'=>common_local_url('tagrss'),
-- 'type' => 'rss',
-- 'version' => 'RSS 1.0',
-- 'item' => 'tagrss')));
-- }
-- }
-+ function show_top($tag = false) {
-+ if (!$tag) {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ $this->public_views_menu();
-+ }
-+ else {
-+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('tagrss'),
-+ 'type' => 'rss',
-+ 'version' => 'RSS 1.0',
-+ 'item' => 'tagrss')));
-+ }
-+ }
-hunk ./actions/tag.php 79
-- function show_tags()
-- {
-- # This should probably be cached rather than recalculated
-- $tags = DB_DataObject::factory('Notice_tag');
-+ function show_tags()
-+ {
-+ # This should probably be cached rather than recalculated
-+ $tags = DB_DataObject::factory('Notice_tag');
-hunk ./actions/tag.php 84
-- #Need to clear the selection and then only re-add the field
-- #we are grouping by, otherwise it's not a valid 'group by'
-- #even though MySQL seems to let it slide...
-- $tags->selectAdd();
-- $tags->selectAdd('tag');
-+ #Need to clear the selection and then only re-add the field
-+ #we are grouping by, otherwise it's not a valid 'group by'
-+ #even though MySQL seems to let it slide...
-+ $tags->selectAdd();
-+ $tags->selectAdd('tag');
-hunk ./actions/tag.php 90
-- #Add the aggregated columns...
-- $tags->selectAdd('max(notice_id) as last_notice_id');
-- if(common_config('db','type')=='pgsql') {
-- $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight';
-- } else {
-- $calc='sum(exp(-(now() - created)/%s)) as weight';
-- }
-- $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff')));
-- $tags->groupBy('tag');
-- $tags->orderBy('weight DESC');
-+ #Add the aggregated columns...
-+ $tags->selectAdd('max(notice_id) as last_notice_id');
-+ if(common_config('db','type')=='pgsql') {
-+ $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight';
-+ } else {
-+ $calc='sum(exp(-(now() - created)/%s)) as weight';
-+ }
-+ $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff')));
-+ $tags->groupBy('tag');
-+ $tags->orderBy('weight DESC');
-hunk ./actions/tag.php 101
-- # $tags->whereAdd('created > "' . strftime('%Y-%m-%d %H:%M:%S', strtotime('-1 MONTH')) . '"');
-+ # $tags->whereAdd('created > "' . strftime('%Y-%m-%d %H:%M:%S', strtotime('-1 MONTH')) . '"');
-hunk ./actions/tag.php 103
-- $tags->limit(TAGS_PER_PAGE);
-+ $tags->limit(TAGS_PER_PAGE);
-hunk ./actions/tag.php 105
-- $cnt = $tags->find();
-+ $cnt = $tags->find();
-hunk ./actions/tag.php 107
-- if ($cnt > 0) {
-- common_element_start('p', 'tagcloud');
-+ if ($cnt > 0) {
-+ common_element_start('p', 'tagcloud');
-hunk ./actions/tag.php 110
-- $tw = array();
-- $sum = 0;
-- while ($tags->fetch()) {
-- $tw[$tags->tag] = $tags->weight;
-- $sum += $tags->weight;
-- }
-+ $tw = array();
-+ $sum = 0;
-+ while ($tags->fetch()) {
-+ $tw[$tags->tag] = $tags->weight;
-+ $sum += $tags->weight;
-+ }
-hunk ./actions/tag.php 117
-- ksort($tw);
-+ ksort($tw);
-hunk ./actions/tag.php 119
-- foreach ($tw as $tag => $weight) {
-- $this->show_tag($tag, $weight, $weight/$sum);
-- }
-+ foreach ($tw as $tag => $weight) {
-+ $this->show_tag($tag, $weight, $weight/$sum);
-+ }
-hunk ./actions/tag.php 123
-- common_element_end('p');
-- }
-- }
-+ common_element_end('p');
-+ }
-+ }
-hunk ./actions/tag.php 127
-- function show_tag($tag, $weight, $relative) {
-+ function show_tag($tag, $weight, $relative) {
-hunk ./actions/tag.php 129
-- # XXX: these should probably tune to the size of the site
-- if ($relative > 0.1) {
-- $cls = 'largest';
-- } else if ($relative > 0.05) {
-- $cls = 'verylarge';
-- } else if ($relative > 0.02) {
-- $cls = 'large';
-- } else if ($relative > 0.01) {
-- $cls = 'medium';
-- } else if ($relative > 0.005) {
-- $cls = 'small';
-- } else if ($relative > 0.002) {
-- $cls = 'verysmall';
-- } else {
-- $cls = 'smallest';
-- }
-+ # XXX: these should probably tune to the size of the site
-+ if ($relative > 0.1) {
-+ $cls = 'largest';
-+ } else if ($relative > 0.05) {
-+ $cls = 'verylarge';
-+ } else if ($relative > 0.02) {
-+ $cls = 'large';
-+ } else if ($relative > 0.01) {
-+ $cls = 'medium';
-+ } else if ($relative > 0.005) {
-+ $cls = 'small';
-+ } else if ($relative > 0.002) {
-+ $cls = 'verysmall';
-+ } else {
-+ $cls = 'smallest';
-+ }
-hunk ./actions/tag.php 146
-- common_element('a', array('class' => "$cls weight-$weight relative-$relative",
-- 'href' => common_local_url('tag', array('tag' => $tag))),
-- $tag);
-- common_text(' ');
-- }
-+ common_element('a', array('class' => "$cls weight-$weight relative-$relative",
-+ 'href' => common_local_url('tag', array('tag' => $tag))),
-+ $tag);
-+ common_text(' ');
-+ }
-hunk ./actions/tag.php 152
-- function show_notices($tag) {
-+ function show_notices($tag) {
-hunk ./actions/tag.php 154
-- $cnt = 0;
-+ $cnt = 0;
-hunk ./actions/tag.php 156
-- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-hunk ./actions/tag.php 158
-- $notice = Notice_tag::getStream($tag, (($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-+ $notice = Notice_tag::getStream($tag, (($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-hunk ./actions/tag.php 162
-- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-- $page, 'tag', array('tag' => $tag));
-- }
-+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-+ $page, 'tag', array('tag' => $tag));
-+ }
-hunk ./actions/tagother.php 26
-- function handle($args) {
-+ function handle($args) {
-hunk ./actions/tagother.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/tagother.php 30
-- if (!common_logged_in()) {
-- $this->client_error(_('Not logged in'), 403);
-- return;
-- }
-+ if (!common_logged_in()) {
-+ $this->client_error(_('Not logged in'), 403);
-+ return;
-+ }
-hunk ./actions/tagother.php 35
-- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- $this->save_tags();
-- } else {
-- $id = $this->trimmed('id');
-- if (!$id) {
-- $this->client_error(_('No id argument.'));
-- return;
-- }
-- $profile = Profile::staticGet('id', $id);
-- if (!$profile) {
-- $this->client_error(_('No profile with that ID.'));
-- return;
-- }
-- $this->show_form($profile);
-- }
-- }
-+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ $this->save_tags();
-+ } else {
-+ $id = $this->trimmed('id');
-+ if (!$id) {
-+ $this->client_error(_('No id argument.'));
-+ return;
-+ }
-+ $profile = Profile::staticGet('id', $id);
-+ if (!$profile) {
-+ $this->client_error(_('No profile with that ID.'));
-+ return;
-+ }
-+ $this->show_form($profile);
-+ }
-+ }
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
+hunk ./actions/smssettings.php 39
+- common_element('h2', NULL, _('Address'));
++ common_element('h2', null, _('Address'));
+hunk ./actions/smssettings.php 63
+- common_input('code', _('Confirmation code'), NULL,
++ common_input('code', _('Confirmation code'), null,
+hunk ./actions/smssettings.php 68
+- ($this->arg('sms')) ? $this->arg('sms') : NULL,
++ ($this->arg('sms')) ? $this->arg('sms') : null,
+hunk ./actions/smssettings.php 76
+- common_element('h2', NULL, _('Incoming email'));
++ common_element('h2', null, _('Incoming email'));
+hunk ./actions/smssettings.php 94
+- common_element('h2', NULL, _('Preferences'));
++ common_element('h2', null, _('Preferences'));
+hunk ./actions/smssettings.php 114
+- return NULL;
++ return null;
+hunk ./actions/smssettings.php 271
+- $user->sms = NULL;
+- $user->carrier = NULL;
+- $user->smsemail = NULL;
++ $user->sms = null;
++ $user->carrier = null;
++ $user->smsemail = null;
+hunk ./actions/subedit.php 24
+- var $profile = NULL;
++ var $profile = null;
hunk ./actions/tagother.php 52
-- function show_form($profile, $error=NULL) {
-+ function show_form($profile, $error=NULL) {
-hunk ./actions/tagother.php 54
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/tagother.php 56
-- common_show_header(_('Tag a person'),
-- NULL, array($profile, $error), array($this, 'show_top'));
-+ common_show_header(_('Tag a person'),
-+ NULL, array($profile, $error), array($this, 'show_top'));
-hunk ./actions/tagother.php 59
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-hunk ./actions/tagother.php 61
-- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE),
-- 'class' => 'avatar stream',
-- 'width' => AVATAR_PROFILE_SIZE,
-- 'height' => AVATAR_PROFILE_SIZE,
-- 'alt' =>
-- ($profile->fullname) ? $profile->fullname :
-- $profile->nickname));
-+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE),
-+ 'class' => 'avatar stream',
-+ 'width' => AVATAR_PROFILE_SIZE,
-+ 'height' => AVATAR_PROFILE_SIZE,
-+ 'alt' =>
-+ ($profile->fullname) ? $profile->fullname :
-+ $profile->nickname));
-hunk ./actions/tagother.php 69
-- common_element('a', array('href' => $profile->profileurl,
-- 'class' => 'external profile nickname'),
-- $profile->nickname);
-+ common_element('a', array('href' => $profile->profileurl,
-+ 'class' => 'external profile nickname'),
-+ $profile->nickname);
-hunk ./actions/tagother.php 73
-- if ($profile->fullname) {
-- common_element_start('div', 'fullname');
-- if ($profile->homepage) {
-- common_element('a', array('href' => $profile->homepage),
-- $profile->fullname);
-- } else {
-- common_text($profile->fullname);
-- }
-- common_element_end('div');
-- }
-- if ($profile->location) {
-- common_element('div', 'location', $profile->location);
-- }
-- if ($profile->bio) {
-- common_element('div', 'bio', $profile->bio);
-- }
-+ if ($profile->fullname) {
-+ common_element_start('div', 'fullname');
-+ if ($profile->homepage) {
-+ common_element('a', array('href' => $profile->homepage),
-+ $profile->fullname);
-+ } else {
-+ common_text($profile->fullname);
-+ }
-+ common_element_end('div');
-+ }
-+ if ($profile->location) {
-+ common_element('div', 'location', $profile->location);
-+ }
-+ if ($profile->bio) {
-+ common_element('div', 'bio', $profile->bio);
-+ }
-hunk ./actions/tagother.php 90
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'tag_user',
-- 'name' => 'tagother',
-- 'action' => $this->self_url()));
-- common_hidden('token', common_session_token());
-- common_hidden('id', $profile->id);
-- common_input('tags', _('Tags'),
-- ($this->arg('tags')) ? $this->arg('tags') : implode(' ', Profile_tag::getTags($user->id, $profile->id)),
-- _('Tags for this user (letters, numbers, -, ., and _), comma- or space- separated'));
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'tag_user',
-+ 'name' => 'tagother',
-+ 'action' => $this->self_url()));
-+ common_hidden('token', common_session_token());
-+ common_hidden('id', $profile->id);
-+ common_input('tags', _('Tags'),
-+ ($this->arg('tags')) ? $this->arg('tags') : implode(' ', Profile_tag::getTags($user->id, $profile->id)),
-+ _('Tags for this user (letters, numbers, -, ., and _), comma- or space- separated'));
-hunk ./actions/tagother.php 100
-- common_submit('save', _('Save'));
-- common_element_end('form');
-- common_show_footer();
-+ common_submit('save', _('Save'));
-+ common_element_end('form');
-+ common_show_footer();
-hunk ./actions/tagother.php 104
-- }
-+ }
-hunk ./actions/tagother.php 106
-- function save_tags() {
-+ function save_tags() {
-hunk ./actions/tagother.php 108
-- $id = $this->trimmed('id');
-- $tagstring = $this->trimmed('tags');
-- $token = $this->trimmed('token');
-+ $id = $this->trimmed('id');
-+ $tagstring = $this->trimmed('tags');
-+ $token = $this->trimmed('token');
-hunk ./actions/tagother.php 112
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/tagother.php 117
-- $profile = Profile::staticGet('id', $id);
-+ $profile = Profile::staticGet('id', $id);
-hunk ./actions/tagother.php 119
-- if (!$profile) {
-- $this->client_error(_('No such profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ $this->client_error(_('No such profile.'));
-+ return;
-+ }
-hunk ./actions/tagother.php 124
-- if (is_string($tagstring) && strlen($tagstring) > 0) {
-+ if (is_string($tagstring) && strlen($tagstring) > 0) {
-hunk ./actions/tagother.php 126
-- $tags = array_map('common_canonical_tag',
-- preg_split('/[\s,]+/', $tagstring));
-+ $tags = array_map('common_canonical_tag',
-+ preg_split('/[\s,]+/', $tagstring));
-hunk ./actions/tagother.php 129
-- foreach ($tags as $tag) {
-- if (!common_valid_profile_tag($tag)) {
-- $this->show_form($profile, sprintf(_('Invalid tag: "%s"'), $tag));
-- return;
-- }
-- }
-- } else {
-- $tags = array();
-- }
-+ foreach ($tags as $tag) {
-+ if (!common_valid_profile_tag($tag)) {
-+ $this->show_form($profile, sprintf(_('Invalid tag: "%s"'), $tag));
-+ return;
-+ }
-+ }
-+ } else {
-+ $tags = array();
-+ }
-hunk ./actions/tagother.php 139
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/tagother.php 141
-- if (!Subscription::pkeyGet(array('subscriber' => $user->id,
-- 'subscribed' => $profile->id)) &&
-- !Subscription::pkeyGet(array('subscriber' => $profile->id,
-- 'subscribed' => $user->id)))
-- {
-- $this->client_error(_('You can only tag people you are subscribed to or who are subscribed to you.'));
-- return;
-- }
-+ if (!Subscription::pkeyGet(array('subscriber' => $user->id,
-+ 'subscribed' => $profile->id)) &&
-+ !Subscription::pkeyGet(array('subscriber' => $profile->id,
-+ 'subscribed' => $user->id)))
-+ {
-+ $this->client_error(_('You can only tag people you are subscribed to or who are subscribed to you.'));
-+ return;
-+ }
-hunk ./actions/tagother.php 150
-- $result = Profile_tag::setTags($user->id, $profile->id, $tags);
-+ $result = Profile_tag::setTags($user->id, $profile->id, $tags);
-hunk ./actions/tagother.php 152
-- if (!$result) {
-- $this->client_error(_('Could not save tags.'));
-- return;
-- }
-+ if (!$result) {
-+ $this->client_error(_('Could not save tags.'));
-+ return;
-+ }
-hunk ./actions/tagother.php 157
-- $action = $user->isSubscribed($profile) ? 'subscriptions' : 'subscribers';
-+ $action = $user->isSubscribed($profile) ? 'subscriptions' : 'subscribers';
-hunk ./actions/tagother.php 159
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml');
-- common_element_start('head');
-- common_element('title', null, _('Tags'));
-- common_element_end('head');
-- common_element_start('body');
-- common_element_start('p', 'subtags');
-- foreach ($tags as $tag) {
-- common_element('a', array('href' => common_local_url($action,
-- array('nickname' => $user->nickname,
-- 'tag' => $tag))),
-- $tag);
-- }
-- common_element_end('p');
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- common_redirect(common_local_url($action, array('nickname' =>
-- $user->nickname)));
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml');
-+ common_element_start('head');
-+ common_element('title', null, _('Tags'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_element_start('p', 'subtags');
-+ foreach ($tags as $tag) {
-+ common_element('a', array('href' => common_local_url($action,
-+ array('nickname' => $user->nickname,
-+ 'tag' => $tag))),
-+ $tag);
-+ }
-+ common_element_end('p');
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ common_redirect(common_local_url($action, array('nickname' =>
-+ $user->nickname)));
-hunk ./actions/tagother.php 179
-- }
-+ }
+- function show_form($profile, $error=NULL) {
++ function show_form($profile, $error=null) {
+hunk ./actions/tagother.php 57
+- NULL, array($profile, $error), array($this, 'show_top'));
++ null, array($profile, $error), array($this, 'show_top'));
hunk ./actions/tagother.php 181
-- function show_top($arr = NULL) {
-- list($profile, $error) = $arr;
-- if ($error) {
-- common_element('p', 'error', $error);
-- } else {
-- common_element_start('div', 'instructions');
-- common_element('p', NULL,
-- _('Use this form to add tags to your subscribers or subscriptions.'));
-- common_element_end('div');
-- }
-- }
-+ function show_top($arr = NULL) {
-+ list($profile, $error) = $arr;
-+ if ($error) {
-+ common_element('p', 'error', $error);
-+ } else {
-+ common_element_start('div', 'instructions');
-+ common_element('p', NULL,
-+ _('Use this form to add tags to your subscribers or subscriptions.'));
-+ common_element_end('div');
-+ }
-+ }
-hunk ./actions/tagrss.php 28
-- function init() {
-- $tag = $this->trimmed('tag');
-- $this->tag = Notice_tag::staticGet('tag', $tag);
-+ function init() {
-+ $tag = $this->trimmed('tag');
-+ $this->tag = Notice_tag::staticGet('tag', $tag);
-hunk ./actions/tagrss.php 32
-- if (!$this->tag) {
-- common_user_error(_('No such tag.'));
-- return false;
-- } else {
-- return true;
-- }
-- }
-+ if (!$this->tag) {
-+ common_user_error(_('No such tag.'));
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ }
-hunk ./actions/tagrss.php 40
-- function get_notices($limit=0) {
-- $tag = $this->tag;
-+ function get_notices($limit=0) {
-+ $tag = $this->tag;
-hunk ./actions/tagrss.php 43
-- if (is_null($tag)) {
-- return NULL;
-- }
-+ if (is_null($tag)) {
-+ return NULL;
-+ }
-hunk ./actions/tagrss.php 47
-- $notice = Notice_tag::getStream($tag->tag, 0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
-+ $notice = Notice_tag::getStream($tag->tag, 0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
-hunk ./actions/tagrss.php 49
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/tagrss.php 53
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/tagrss.php 56
-- function get_channel() {
-- $tag = $this->tag->tag;
-+ function get_channel() {
-+ $tag = $this->tag->tag;
-hunk ./actions/tagrss.php 59
-- $c = array('url' => common_local_url('tagrss', array('tag' => $tagname)),
-- 'title' => $tagname,
-- 'link' => common_local_url('tagrss', array('tag' => $tagname)),
-- 'description' => sprintf(_('Microblog tagged with %s'), $tagname));
-- return $c;
-- }
-+ $c = array('url' => common_local_url('tagrss', array('tag' => $tagname)),
-+ 'title' => $tagname,
-+ 'link' => common_local_url('tagrss', array('tag' => $tagname)),
-+ 'description' => sprintf(_('Microblog tagged with %s'), $tagname));
-+ return $c;
-+ }
-hunk ./actions/twitapiaccount.php 26
-- function verify_credentials($args, $apidata) {
-- parent::handle($args);
-+ function verify_credentials($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapiaccount.php 29
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapiaccount.php 34
-- $this->show_extended_profile($apidata['user'], $apidata);
-- }
-+ $this->show_extended_profile($apidata['user'], $apidata);
-+ }
-hunk ./actions/twitapiaccount.php 37
-- function end_session($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function end_session($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapiaccount.php 42
-- function update_location($args, $apidata) {
-- parent::handle($args);
-+ function update_location($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapiaccount.php 45
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapiaccount.php 50
-- $location = trim($this->arg('location'));
-+ $location = trim($this->arg('location'));
-hunk ./actions/twitapiaccount.php 52
-- if (!is_null($location) && strlen($location) > 255) {
-+ if (!is_null($location) && strlen($location) > 255) {
-hunk ./actions/twitapiaccount.php 54
-- // XXX: But Twitter just truncates and runs with it. -- Zach
-- $this->client_error(_('That\'s too long. Max notice size is 255 chars.'), 406, $apidate['content-type']);
-- return;
-- }
-+ // XXX: But Twitter just truncates and runs with it. -- Zach
-+ $this->client_error(_('That\'s too long. Max notice size is 255 chars.'), 406, $apidate['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapiaccount.php 59
-- $user = $apidata['user'];
-- $profile = $user->getProfile();
-+ $user = $apidata['user'];
-+ $profile = $user->getProfile();
-hunk ./actions/twitapiaccount.php 62
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/twitapiaccount.php 67
-- $orig_profile = clone($profile);
-- $profile->location = $location;
-+ $orig_profile = clone($profile);
-+ $profile->location = $location;
-hunk ./actions/twitapiaccount.php 70
-- $result = $profile->update($orig_profile);
-+ $result = $profile->update($orig_profile);
-hunk ./actions/twitapiaccount.php 72
-- if (!$result) {
-- common_log_db_error($profile, 'UPDATE', __FILE__);
-- common_server_error(_('Couldn\'t save profile.'));
-- return;
-- }
-+ if (!$result) {
-+ common_log_db_error($profile, 'UPDATE', __FILE__);
-+ common_server_error(_('Couldn\'t save profile.'));
-+ return;
-+ }
-hunk ./actions/twitapiaccount.php 78
-- common_broadcast_profile($profile);
-- $type = $apidata['content-type'];
-+ common_broadcast_profile($profile);
-+ $type = $apidata['content-type'];
-hunk ./actions/twitapiaccount.php 81
-- $this->init_document($type);
-- $this->show_profile($profile, $type);
-- $this->end_document($type);
-- }
-+ $this->init_document($type);
-+ $this->show_profile($profile, $type);
-+ $this->end_document($type);
-+ }
-hunk ./actions/twitapiaccount.php 87
-- function update_delivery_device($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function update_delivery_device($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapiaccount.php 92
-- function rate_limit_status($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function rate_limit_status($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapiblocks.php 26
-- function create($args, $apidata) {
-+ function create($args, $apidata) {
-hunk ./actions/twitapiblocks.php 28
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/twitapiblocks.php 30
-- $blockee = $this->get_user($apidata['api_arg'], $apidata);
-+ $blockee = $this->get_user($apidata['api_arg'], $apidata);
-hunk ./actions/twitapiblocks.php 33
-- $this->client_error('Not Found', 404, $apidata['content-type']);
-- return;
-+ $this->client_error('Not Found', 404, $apidata['content-type']);
-+ return;
-hunk ./actions/twitapiblocks.php 45
-- common_server_error(_('Block user failed.'));
-+ common_server_error(_('Block user failed.'));
-hunk ./actions/twitapiblocks.php 47
-- }
-+ }
-hunk ./actions/twitapiblocks.php 49
-- function destroy($args, $apidata) {
-- parent::handle($args);
-- $blockee = $this->get_user($apidata['api_arg'], $apidata);
-+ function destroy($args, $apidata) {
-+ parent::handle($args);
-+ $blockee = $this->get_user($apidata['api_arg'], $apidata);
-hunk ./actions/twitapiblocks.php 54
-- $this->client_error('Not Found', 404, $apidata['content-type']);
-- return;
-+ $this->client_error('Not Found', 404, $apidata['content-type']);
-+ return;
-hunk ./actions/twitapiblocks.php 66
-- common_server_error(_('Unblock user failed.'));
-+ common_server_error(_('Unblock user failed.'));
-hunk ./actions/twitapiblocks.php 68
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 26
-- function direct_messages($args, $apidata) {
-- parent::handle($args);
-- return $this->show_messages($args, $apidata, 'received');
-- }
-+ function direct_messages($args, $apidata) {
-+ parent::handle($args);
-+ return $this->show_messages($args, $apidata, 'received');
-+ }
-hunk ./actions/twitapidirect_messages.php 31
-- function sent($args, $apidata) {
-- parent::handle($args);
-- return $this->show_messages($args, $apidata, 'sent');
-- }
-+ function sent($args, $apidata) {
-+ parent::handle($args);
-+ return $this->show_messages($args, $apidata, 'sent');
-+ }
-hunk ./actions/twitapidirect_messages.php 36
-- function show_messages($args, $apidata, $type) {
-+ function show_messages($args, $apidata, $type) {
-hunk ./actions/twitapidirect_messages.php 38
-- $user = $apidata['user'];
-+ $user = $apidata['user'];
-hunk ./actions/twitapidirect_messages.php 40
-- $count = $this->arg('count');
-- $since = $this->arg('since');
-- $since_id = $this->arg('since_id');
-- $before_id = $this->arg('before_id');
-+ $count = $this->arg('count');
-+ $since = $this->arg('since');
-+ $since_id = $this->arg('since_id');
-+ $before_id = $this->arg('before_id');
-hunk ./actions/twitapidirect_messages.php 45
-- $page = $this->arg('page');
-+ $page = $this->arg('page');
-hunk ./actions/twitapidirect_messages.php 47
-- if (!$page) {
-- $page = 1;
-- }
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapidirect_messages.php 51
-- if (!$count) {
-- $count = 20;
-- }
-+ if (!$count) {
-+ $count = 20;
-+ }
-hunk ./actions/twitapidirect_messages.php 55
-- $message = new Message();
-+ $message = new Message();
-hunk ./actions/twitapidirect_messages.php 57
-- $title = null;
-- $subtitle = null;
-- $link = null;
-- $server = common_root_url();
-+ $title = null;
-+ $subtitle = null;
-+ $link = null;
-+ $server = common_root_url();
-hunk ./actions/twitapidirect_messages.php 62
-- if ($type == 'received') {
-- $message->to_profile = $user->id;
-- $title = sprintf(_("Direct messages to %s"), $user->nickname);
-- $subtitle = sprintf(_("All the direct messages sent to %s"), $user->nickname);
-- $link = $server . $user->nickname . '/inbox';
-- } else {
-- $message->from_profile = $user->id;
-- $title = _('Direct Messages You\'ve Sent');
-- $subtitle = sprintf(_("All the direct messages sent from %s"), $user->nickname);
-- $link = $server . $user->nickname . '/outbox';
-- }
-+ if ($type == 'received') {
-+ $message->to_profile = $user->id;
-+ $title = sprintf(_("Direct messages to %s"), $user->nickname);
-+ $subtitle = sprintf(_("All the direct messages sent to %s"), $user->nickname);
-+ $link = $server . $user->nickname . '/inbox';
-+ } else {
-+ $message->from_profile = $user->id;
-+ $title = _('Direct Messages You\'ve Sent');
-+ $subtitle = sprintf(_("All the direct messages sent from %s"), $user->nickname);
-+ $link = $server . $user->nickname . '/outbox';
-+ }
-hunk ./actions/twitapidirect_messages.php 74
-- if ($before_id) {
-- $message->whereAdd("id < $before_id");
-- }
-+ if ($before_id) {
-+ $message->whereAdd("id < $before_id");
-+ }
-hunk ./actions/twitapidirect_messages.php 78
-- if ($since_id) {
-- $message->whereAdd("id > $since_id");
-- }
-+ if ($since_id) {
-+ $message->whereAdd("id > $since_id");
-+ }
-hunk ./actions/twitapidirect_messages.php 82
-- $since = strtotime($this->arg('since'));
-+ $since = strtotime($this->arg('since'));
-hunk ./actions/twitapidirect_messages.php 84
-- if ($since) {
-- $d = date('Y-m-d H:i:s', $since);
-- $message->whereAdd("created > '$d'");
-- }
-+ if ($since) {
-+ $d = date('Y-m-d H:i:s', $since);
-+ $message->whereAdd("created > '$d'");
-+ }
-hunk ./actions/twitapidirect_messages.php 89
-- $message->orderBy('created DESC, id DESC');
-- $message->limit((($page-1)*20), $count);
-- $message->find();
-+ $message->orderBy('created DESC, id DESC');
-+ $message->limit((($page-1)*20), $count);
-+ $message->find();
-hunk ./actions/twitapidirect_messages.php 93
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_dmsgs($message);
-- break;
-- case 'rss':
-- $this->show_rss_dmsgs($message, $title, $link, $subtitle);
-- break;
-- case 'atom':
-- $this->show_atom_dmsgs($message, $title, $link, $subtitle);
-- break;
-- case 'json':
-- $this->show_json_dmsgs($message);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_dmsgs($message);
-+ break;
-+ case 'rss':
-+ $this->show_rss_dmsgs($message, $title, $link, $subtitle);
-+ break;
-+ case 'atom':
-+ $this->show_atom_dmsgs($message, $title, $link, $subtitle);
-+ break;
-+ case 'json':
-+ $this->show_json_dmsgs($message);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ }
-hunk ./actions/twitapidirect_messages.php 110
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 112
-- // had to change this from "new" to "create" to avoid PHP reserved word
-- function create($args, $apidata) {
-- parent::handle($args);
-+ // had to change this from "new" to "create" to avoid PHP reserved word
-+ function create($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapidirect_messages.php 116
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapidirect_messages.php 121
-- $user = $apidata['user'];
-- $source = $this->trimmed('source'); // Not supported by Twitter.
-+ $user = $apidata['user'];
-+ $source = $this->trimmed('source'); // Not supported by Twitter.
-hunk ./actions/twitapidirect_messages.php 125
-- if (!$source || in_array($source, $reserved_sources)) {
-- $source = 'api';
-- }
-+ if (!$source || in_array($source, $reserved_sources)) {
-+ $source = 'api';
-+ }
-hunk ./actions/twitapidirect_messages.php 129
-- $content = $this->trimmed('text');
-+ $content = $this->trimmed('text');
-hunk ./actions/twitapidirect_messages.php 131
-- if (!$content) {
-- $this->client_error(_('No message text!'), $code = 406, $apidata['content-type']);
-- } else {
-- $content_shortened = common_shorten_links($content);
-- if (mb_strlen($content_shortened) > 140) {
-- $this->client_error(_('That\'s too long. Max message size is 140 chars.'),
-- $code = 406, $apidata['content-type']);
-- return;
-- }
-- }
-+ if (!$content) {
-+ $this->client_error(_('No message text!'), $code = 406, $apidata['content-type']);
-+ } else {
-+ $content_shortened = common_shorten_links($content);
-+ if (mb_strlen($content_shortened) > 140) {
-+ $this->client_error(_('That\'s too long. Max message size is 140 chars.'),
-+ $code = 406, $apidata['content-type']);
-+ return;
-+ }
-+ }
-hunk ./actions/twitapidirect_messages.php 142
-- $other = $this->get_user($this->trimmed('user'));
-+ $other = $this->get_user($this->trimmed('user'));
-hunk ./actions/twitapidirect_messages.php 144
-- if (!$other) {
-- $this->client_error(_('Recipient user not found.'), $code = 403, $apidata['content-type']);
-- return;
-- } else if (!$user->mutuallySubscribed($other)) {
-- $this->client_error(_('Can\'t send direct messages to users who aren\'t your friend.'),
-- $code = 403, $apidata['content-type']);
-- return;
-- } else if ($user->id == $other->id) {
-- // Sending msgs to yourself is allowed by Twitter
-- $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'),
-- $code = 403, $apidata['content-type']);
-- return;
-- }
-+ if (!$other) {
-+ $this->client_error(_('Recipient user not found.'), $code = 403, $apidata['content-type']);
-+ return;
-+ } else if (!$user->mutuallySubscribed($other)) {
-+ $this->client_error(_('Can\'t send direct messages to users who aren\'t your friend.'),
-+ $code = 403, $apidata['content-type']);
-+ return;
-+ } else if ($user->id == $other->id) {
-+ // Sending msgs to yourself is allowed by Twitter
-+ $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'),
-+ $code = 403, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapidirect_messages.php 158
-- $message = Message::saveNew($user->id, $other->id,
-- html_entity_decode($content, ENT_NOQUOTES, 'UTF-8'), $source);
-+ $message = Message::saveNew($user->id, $other->id,
-+ html_entity_decode($content, ENT_NOQUOTES, 'UTF-8'), $source);
-hunk ./actions/twitapidirect_messages.php 161
-- if (is_string($message)) {
-- $this->server_error($message);
-- return;
-- }
-+ if (is_string($message)) {
-+ $this->server_error($message);
-+ return;
-+ }
-hunk ./actions/twitapidirect_messages.php 166
-- $this->notify($user, $other, $message);
-+ $this->notify($user, $other, $message);
-hunk ./actions/twitapidirect_messages.php 168
-- if ($apidata['content-type'] == 'xml') {
-- $this->show_single_xml_dmsg($message);
-- } elseif ($apidata['content-type'] == 'json') {
-- $this->show_single_json_dmsg($message);
-- }
-+ if ($apidata['content-type'] == 'xml') {
-+ $this->show_single_xml_dmsg($message);
-+ } elseif ($apidata['content-type'] == 'json') {
-+ $this->show_single_json_dmsg($message);
-+ }
-hunk ./actions/twitapidirect_messages.php 174
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 176
-- function destroy($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function destroy($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapidirect_messages.php 181
-- function show_xml_dmsgs($message) {
-+ function show_xml_dmsgs($message) {
-hunk ./actions/twitapidirect_messages.php 183
-- $this->init_document('xml');
-- common_element_start('direct-messages', array('type' => 'array'));
-+ $this->init_document('xml');
-+ common_element_start('direct-messages', array('type' => 'array'));
-hunk ./actions/twitapidirect_messages.php 186
-- if (is_array($messages)) {
-- foreach ($message as $m) {
-- $twitter_dm = $this->twitter_dmsg_array($m);
-- $this->show_twitter_xml_dmsg($twitter_dm);
-- }
-- } else {
-- while ($message->fetch()) {
-- $twitter_dm = $this->twitter_dmsg_array($message);
-- $this->show_twitter_xml_dmsg($twitter_dm);
-- }
-- }
-+ if (is_array($messages)) {
-+ foreach ($message as $m) {
-+ $twitter_dm = $this->twitter_dmsg_array($m);
-+ $this->show_twitter_xml_dmsg($twitter_dm);
-+ }
-+ } else {
-+ while ($message->fetch()) {
-+ $twitter_dm = $this->twitter_dmsg_array($message);
-+ $this->show_twitter_xml_dmsg($twitter_dm);
-+ }
-+ }
-hunk ./actions/twitapidirect_messages.php 198
-- common_element_end('direct-messages');
-- $this->end_document('xml');
-+ common_element_end('direct-messages');
-+ $this->end_document('xml');
-hunk ./actions/twitapidirect_messages.php 201
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 203
-- function show_json_dmsgs($message) {
-+ function show_json_dmsgs($message) {
-hunk ./actions/twitapidirect_messages.php 205
-- $this->init_document('json');
-+ $this->init_document('json');
-hunk ./actions/twitapidirect_messages.php 207
-- $dmsgs = array();
-+ $dmsgs = array();
-hunk ./actions/twitapidirect_messages.php 209
-- if (is_array($message)) {
-- foreach ($message as $m) {
-- $twitter_dm = $this->twitter_dmsg_array($m);
-- array_push($dmsgs, $twitter_dm);
-- }
-- } else {
-- while ($message->fetch()) {
-- $twitter_dm = $this->twitter_dmsg_array($message);
-- array_push($dmsgs, $twitter_dm);
-- }
-- }
-+ if (is_array($message)) {
-+ foreach ($message as $m) {
-+ $twitter_dm = $this->twitter_dmsg_array($m);
-+ array_push($dmsgs, $twitter_dm);
-+ }
-+ } else {
-+ while ($message->fetch()) {
-+ $twitter_dm = $this->twitter_dmsg_array($message);
-+ array_push($dmsgs, $twitter_dm);
-+ }
-+ }
-hunk ./actions/twitapidirect_messages.php 221
-- $this->show_json_objects($dmsgs);
-- $this->end_document('json');
-+ $this->show_json_objects($dmsgs);
-+ $this->end_document('json');
-hunk ./actions/twitapidirect_messages.php 224
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 226
-- function show_rss_dmsgs($message, $title, $link, $subtitle) {
-+ function show_rss_dmsgs($message, $title, $link, $subtitle) {
-hunk ./actions/twitapidirect_messages.php 228
-- $this->init_document('rss');
-+ $this->init_document('rss');
-hunk ./actions/twitapidirect_messages.php 230
-- common_element_start('channel');
-- common_element('title', NULL, $title);
-+ common_element_start('channel');
-+ common_element('title', NULL, $title);
+- function show_top($arr = NULL) {
++ function show_top($arr = null) {
+hunk ./actions/tagother.php 187
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/tagrss.php 44
+- return NULL;
++ return null;
+hunk ./actions/twitapidirect_messages.php 231
+- common_element('title', NULL, $title);
++ common_element('title', null, $title);
hunk ./actions/twitapidirect_messages.php 233
-- common_element('link', NULL, $link);
-- common_element('description', NULL, $subtitle);
-- common_element('language', NULL, 'en-us');
-- common_element('ttl', NULL, '40');
-+ common_element('link', NULL, $link);
-+ common_element('description', NULL, $subtitle);
-+ common_element('language', NULL, 'en-us');
-+ common_element('ttl', NULL, '40');
-hunk ./actions/twitapidirect_messages.php 238
-- if (is_array($message)) {
-- foreach ($message as $m) {
-- $entry = $this->twitter_rss_dmsg_array($m);
-- $this->show_twitter_rss_item($entry);
-- }
-- } else {
-- while ($message->fetch()) {
-- $entry = $this->twitter_rss_dmsg_array($message);
-- $this->show_twitter_rss_item($entry);
-- }
-- }
-+ if (is_array($message)) {
-+ foreach ($message as $m) {
-+ $entry = $this->twitter_rss_dmsg_array($m);
-+ $this->show_twitter_rss_item($entry);
-+ }
-+ } else {
-+ while ($message->fetch()) {
-+ $entry = $this->twitter_rss_dmsg_array($message);
-+ $this->show_twitter_rss_item($entry);
-+ }
-+ }
-hunk ./actions/twitapidirect_messages.php 250
-- common_element_end('channel');
-- $this->end_twitter_rss();
-+ common_element_end('channel');
-+ $this->end_twitter_rss();
-hunk ./actions/twitapidirect_messages.php 253
-- }
-+ }
-hunk ./actions/twitapidirect_messages.php 255
-- function show_atom_dmsgs($message, $title, $link, $subtitle) {
-+ function show_atom_dmsgs($message, $title, $link, $subtitle) {
-hunk ./actions/twitapidirect_messages.php 257
-- $this->init_document('atom');
-+ $this->init_document('atom');
+- common_element('link', NULL, $link);
+- common_element('description', NULL, $subtitle);
+- common_element('language', NULL, 'en-us');
+- common_element('ttl', NULL, '40');
++ common_element('link', null, $link);
++ common_element('description', null, $subtitle);
++ common_element('language', null, 'en-us');
++ common_element('ttl', null, '40');
hunk ./actions/twitapidirect_messages.php 259
-- common_element('title', NULL, $title);
-- $siteserver = common_config('site', 'server');
-- common_element('id', NULL, "tag:$siteserver,2008:DirectMessage");
-- common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL);
-- common_element('updated', NULL, common_date_iso8601(strftime('%c')));
-- common_element('subtitle', NULL, $subtitle);
-+ common_element('title', NULL, $title);
-+ $siteserver = common_config('site', 'server');
-+ common_element('id', NULL, "tag:$siteserver,2008:DirectMessage");
-+ common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL);
-+ common_element('updated', NULL, common_date_iso8601(strftime('%c')));
-+ common_element('subtitle', NULL, $subtitle);
-hunk ./actions/twitapidirect_messages.php 266
-- if (is_array($message)) {
-- foreach ($message as $m) {
-- $entry = $this->twitter_rss_dmsg_array($m);
-- $this->show_twitter_atom_entry($entry);
-- }
-- } else {
-- while ($message->fetch()) {
-- $entry = $this->twitter_rss_dmsg_array($message);
-- $this->show_twitter_atom_entry($entry);
-- }
-- }
-+ if (is_array($message)) {
-+ foreach ($message as $m) {
-+ $entry = $this->twitter_rss_dmsg_array($m);
-+ $this->show_twitter_atom_entry($entry);
-+ }
-+ } else {
-+ while ($message->fetch()) {
-+ $entry = $this->twitter_rss_dmsg_array($message);
-+ $this->show_twitter_atom_entry($entry);
-+ }
-+ }
-hunk ./actions/twitapidirect_messages.php 278
-- $this->end_document('atom');
-- }
-+ $this->end_document('atom');
-+ }
-hunk ./actions/twitapidirect_messages.php 281
-- // swiped from MessageAction. Should it be place in util.php?
-- function notify($from, $to, $message) {
-- mail_notify_message($message, $from, $to);
-- # XXX: Jabber, SMS notifications... probably queued
-- }
-+ // swiped from MessageAction. Should it be place in util.php?
-+ function notify($from, $to, $message) {
-+ mail_notify_message($message, $from, $to);
-+ # XXX: Jabber, SMS notifications... probably queued
-+ }
-hunk ./actions/twitapifavorites.php 26
-- function favorites($args, $apidata) {
-- parent::handle($args);
-+ function favorites($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapifavorites.php 29
-- $this->auth_user = $apidata['user'];
-- $user = $this->get_user($apidata['api_arg'], $apidata);
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->get_user($apidata['api_arg'], $apidata);
-hunk ./actions/twitapifavorites.php 32
-- if (!$user) {
-- $this->client_error('Not Found', 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error('Not Found', 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 37
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/twitapifavorites.php 39
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 44
-- $page = $this->arg('page');
-+ $page = $this->arg('page');
-hunk ./actions/twitapifavorites.php 46
-- if (!$page) {
-- $page = 1;
-- }
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapifavorites.php 50
-- if (!$count) {
-- $count = 20;
-- }
-+ if (!$count) {
-+ $count = 20;
-+ }
-hunk ./actions/twitapifavorites.php 54
-- $notice = $user->favoriteNotices((($page-1)*20), $count);
-+ $notice = $user->favoriteNotices((($page-1)*20), $count);
-hunk ./actions/twitapifavorites.php 56
-- if (!$notice) {
-- common_server_error(_('Could not retrieve favorite notices.'));
-- return;
-- }
-+ if (!$notice) {
-+ common_server_error(_('Could not retrieve favorite notices.'));
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 61
-- $sitename = common_config('site', 'name');
-- $siteserver = common_config('site', 'server');
-+ $sitename = common_config('site', 'name');
-+ $siteserver = common_config('site', 'server');
-hunk ./actions/twitapifavorites.php 64
-- $title = sprintf(_('%s / Favorites from %s'), $sitename, $user->nickname);
-- $id = "tag:$siteserver:favorites:".$user->id;
-- $link = common_local_url('favorites', array('nickname' => $user->nickname));
-- $subtitle = sprintf(_('%s updates favorited by %s / %s.'), $sitename, $profile->getBestName(), $user->nickname);
-+ $title = sprintf(_('%s / Favorites from %s'), $sitename, $user->nickname);
-+ $id = "tag:$siteserver:favorites:".$user->id;
-+ $link = common_local_url('favorites', array('nickname' => $user->nickname));
-+ $subtitle = sprintf(_('%s updates favorited by %s / %s.'), $sitename, $profile->getBestName(), $user->nickname);
-hunk ./actions/twitapifavorites.php 69
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_timeline($notice);
-- break;
-- case 'rss':
-- $this->show_rss_timeline($notice, $title, $link, $subtitle);
-- break;
-- case 'atom':
-- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-- break;
-- case 'json':
-- $this->show_json_timeline($notice);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_timeline($notice);
-+ break;
-+ case 'rss':
-+ $this->show_rss_timeline($notice, $title, $link, $subtitle);
-+ break;
-+ case 'atom':
-+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-+ break;
-+ case 'json':
-+ $this->show_json_timeline($notice);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ }
-hunk ./actions/twitapifavorites.php 86
-- }
-+ }
-hunk ./actions/twitapifavorites.php 88
-- function create($args, $apidata) {
-- parent::handle($args);
-+ function create($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapifavorites.php 91
-- // Check for RESTfulness
-- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-- // XXX: Twitter just prints the err msg, no XML / JSON.
-- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-- return;
-- }
-+ // Check for RESTfulness
-+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-+ // XXX: Twitter just prints the err msg, no XML / JSON.
-+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 98
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 103
-- $this->auth_user = $apidata['user'];
-- $user = $this->auth_user;
-- $notice_id = $apidata['api_arg'];
-- $notice = Notice::staticGet($notice_id);
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->auth_user;
-+ $notice_id = $apidata['api_arg'];
-+ $notice = Notice::staticGet($notice_id);
-hunk ./actions/twitapifavorites.php 108
-- if (!$notice) {
-- $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$notice) {
-+ $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 113
-- // XXX: Twitter lets you fave things repeatedly via api.
-- if ($user->hasFave($notice)) {
-- $this->client_error(_('This notice is already a favorite!'), 403, $apidata['content-type']);
-- return;
-- }
-+ // XXX: Twitter lets you fave things repeatedly via api.
-+ if ($user->hasFave($notice)) {
-+ $this->client_error(_('This notice is already a favorite!'), 403, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 119
-- $fave = Fave::addNew($user, $notice);
-+ $fave = Fave::addNew($user, $notice);
-hunk ./actions/twitapifavorites.php 121
-- if (!$fave) {
-- common_server_error(_('Could not create favorite.'));
-- return;
-- }
-+ if (!$fave) {
-+ common_server_error(_('Could not create favorite.'));
-+ return;
-+ }
-hunk ./actions/twitapifavorites.php 126
-- $this->notify($fave, $notice, $user);
-- $user->blowFavesCache();
-+ $this->notify($fave, $notice, $user);
-+ $user->blowFavesCache();
-hunk ./actions/twitapifavorites.php 129
-- if ($apidata['content-type'] == 'xml') {
-- $this->show_single_xml_status($notice);
-- } elseif ($apidata['content-type'] == 'json') {
-- $this->show_single_json_status($notice);
-- }
-+ if ($apidata['content-type'] == 'xml') {
-+ $this->show_single_xml_status($notice);
-+ } elseif ($apidata['content-type'] == 'json') {
-+ $this->show_single_json_status($notice);
-+ }
-hunk ./actions/twitapifavorites.php 135
-- }
-+ }
-hunk ./actions/twitapifavorites.php 137
-- function destroy($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function destroy($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapifavorites.php 142
-- // XXX: these two funcs swiped from faves. Maybe put in util.php, or some common base class?
-+ // XXX: these two funcs swiped from faves. Maybe put in util.php, or some common base class?
-hunk ./actions/twitapifavorites.php 144
-- function notify($fave, $notice, $user) {
-- $other = User::staticGet('id', $notice->profile_id);
-- if ($other && $other->id != $user->id) {
-- if ($other->email && $other->emailnotifyfav) {
-- $this->notify_mail($other, $user, $notice);
-- }
-- # XXX: notify by IM
-- # XXX: notify by SMS
-- }
-- }
-+ function notify($fave, $notice, $user) {
-+ $other = User::staticGet('id', $notice->profile_id);
-+ if ($other && $other->id != $user->id) {
-+ if ($other->email && $other->emailnotifyfav) {
-+ $this->notify_mail($other, $user, $notice);
-+ }
-+ # XXX: notify by IM
-+ # XXX: notify by SMS
-+ }
-+ }
-hunk ./actions/twitapifavorites.php 155
-- function notify_mail($other, $user, $notice) {
-- $profile = $user->getProfile();
-- $bestname = $profile->getBestName();
-- $subject = sprintf(_('%s added your notice as a favorite'), $bestname);
-- $body = sprintf(_("%1\$s just added your notice from %2\$s as one of their favorites.\n\n" .
-- "In case you forgot, you can see the text of your notice here:\n\n" .
-- "%3\$s\n\n" .
-- "You can see the list of %1\$s's favorites here:\n\n" .
-- "%4\$s\n\n" .
-- "Faithfully yours,\n" .
-- "%5\$s\n"),
-- $bestname,
-- common_exact_date($notice->created),
-- common_local_url('shownotice', array('notice' => $notice->id)),
-- common_local_url('showfavorites', array('nickname' => $user->nickname)),
-- common_config('site', 'name'));
-+ function notify_mail($other, $user, $notice) {
-+ $profile = $user->getProfile();
-+ $bestname = $profile->getBestName();
-+ $subject = sprintf(_('%s added your notice as a favorite'), $bestname);
-+ $body = sprintf(_("%1\$s just added your notice from %2\$s as one of their favorites.\n\n" .
-+ "In case you forgot, you can see the text of your notice here:\n\n" .
-+ "%3\$s\n\n" .
-+ "You can see the list of %1\$s's favorites here:\n\n" .
-+ "%4\$s\n\n" .
-+ "Faithfully yours,\n" .
-+ "%5\$s\n"),
-+ $bestname,
-+ common_exact_date($notice->created),
-+ common_local_url('shownotice', array('notice' => $notice->id)),
-+ common_local_url('showfavorites', array('nickname' => $user->nickname)),
-+ common_config('site', 'name'));
-hunk ./actions/twitapifavorites.php 172
-- mail_to_user($other, $subject, $body);
-- }
-+ mail_to_user($other, $subject, $body);
-+ }
-hunk ./actions/twitapifriendships.php 26
-- function create($args, $apidata) {
-- parent::handle($args);
-+ function create($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapifriendships.php 29
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 34
-- $id = $apidata['api_arg'];
-+ $id = $apidata['api_arg'];
-hunk ./actions/twitapifriendships.php 36
-- $other = $this->get_user($id);
-+ $other = $this->get_user($id);
-hunk ./actions/twitapifriendships.php 38
-- if (!$other) {
-- $this->client_error(_('Could not follow user: User not found.'), 403, $apidata['content-type']);
-- return;
-- }
-+ if (!$other) {
-+ $this->client_error(_('Could not follow user: User not found.'), 403, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 43
-- $user = $apidata['user'];
-+ $user = $apidata['user'];
-hunk ./actions/twitapifriendships.php 45
-- if ($user->isSubscribed($other)) {
-- $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
-- $this->client_error($errmsg, 403, $apidata['content-type']);
-- return;
-- }
-+ if ($user->isSubscribed($other)) {
-+ $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
-+ $this->client_error($errmsg, 403, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 51
-- $sub = new Subscription();
-+ $sub = new Subscription();
-hunk ./actions/twitapifriendships.php 53
-- $sub->query('BEGIN');
-+ $sub->query('BEGIN');
-hunk ./actions/twitapifriendships.php 55
-- $sub->subscriber = $user->id;
-- $sub->subscribed = $other->id;
-- $sub->created = DB_DataObject_Cast::dateTime(); # current time
-+ $sub->subscriber = $user->id;
-+ $sub->subscribed = $other->id;
-+ $sub->created = DB_DataObject_Cast::dateTime(); # current time
-hunk ./actions/twitapifriendships.php 59
-- $result = $sub->insert();
-+ $result = $sub->insert();
-hunk ./actions/twitapifriendships.php 61
-- if (!$result) {
-- $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
-- $this->client_error($errmsg, 400, $apidata['content-type']);
-- return;
-- }
-+ if (!$result) {
-+ $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
-+ $this->client_error($errmsg, 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 67
-- $sub->query('COMMIT');
-+ $sub->query('COMMIT');
-hunk ./actions/twitapifriendships.php 69
-- mail_subscribe_notify($other, $user);
-+ mail_subscribe_notify($other, $user);
-hunk ./actions/twitapifriendships.php 71
-- $type = $apidata['content-type'];
-- $this->init_document($type);
-- $this->show_profile($other, $type);
-- $this->end_document($type);
-+ $type = $apidata['content-type'];
-+ $this->init_document($type);
-+ $this->show_profile($other, $type);
-+ $this->end_document($type);
-hunk ./actions/twitapifriendships.php 76
-- }
-+ }
-hunk ./actions/twitapifriendships.php 78
-- function destroy($args, $apidata) {
-- parent::handle($args);
-+ function destroy($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapifriendships.php 81
-- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 86
-- $id = $apidata['api_arg'];
-+ $id = $apidata['api_arg'];
-hunk ./actions/twitapifriendships.php 88
-- # We can't subscribe to a remote person, but we can unsub
-+ # We can't subscribe to a remote person, but we can unsub
-hunk ./actions/twitapifriendships.php 90
-- $other = $this->get_profile($id);
-- $user = $apidata['user'];
-+ $other = $this->get_profile($id);
-+ $user = $apidata['user'];
-hunk ./actions/twitapifriendships.php 93
-- $sub = new Subscription();
-- $sub->subscriber = $user->id;
-- $sub->subscribed = $other->id;
-+ $sub = new Subscription();
-+ $sub->subscriber = $user->id;
-+ $sub->subscribed = $other->id;
-hunk ./actions/twitapifriendships.php 97
-- if ($sub->find(TRUE)) {
-- $sub->query('BEGIN');
-- $sub->delete();
-- $sub->query('COMMIT');
-- } else {
-- $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']);
-- return;
-- }
-+ if ($sub->find(TRUE)) {
-+ $sub->query('BEGIN');
-+ $sub->delete();
-+ $sub->query('COMMIT');
-+ } else {
-+ $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 106
-- $type = $apidata['content-type'];
-- $this->init_document($type);
-- $this->show_profile($other, $type);
-- $this->end_document($type);
-+ $type = $apidata['content-type'];
-+ $this->init_document($type);
-+ $this->show_profile($other, $type);
-+ $this->end_document($type);
-hunk ./actions/twitapifriendships.php 111
-- }
-+ }
-hunk ./actions/twitapifriendships.php 113
-- function exists($args, $apidata) {
-- parent::handle($args);
-+ function exists($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapifriendships.php 116
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 121
-- $user_a_id = $this->trimmed('user_a');
-- $user_b_id = $this->trimmed('user_b');
-+ $user_a_id = $this->trimmed('user_a');
-+ $user_b_id = $this->trimmed('user_b');
-hunk ./actions/twitapifriendships.php 124
-- $user_a = $this->get_user($user_a_id);
-- $user_b = $this->get_user($user_b_id);
-+ $user_a = $this->get_user($user_a_id);
-+ $user_b = $this->get_user($user_b_id);
-hunk ./actions/twitapifriendships.php 127
-- if (!$user_a || !$user_b) {
-- $this->client_error(_('Two user ids or screen_names must be supplied.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if (!$user_a || !$user_b) {
-+ $this->client_error(_('Two user ids or screen_names must be supplied.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapifriendships.php 132
-- if ($user_a->isSubscribed($user_b)) {
-- $result = 'true';
-- } else {
-- $result = 'false';
-- }
-+ if ($user_a->isSubscribed($user_b)) {
-+ $result = 'true';
-+ } else {
-+ $result = 'false';
-+ }
-hunk ./actions/twitapifriendships.php 138
-- switch ($apidata['content-type']) {
-- case 'xml':
-- $this->init_document('xml');
-- common_element('friends', NULL, $result);
-- $this->end_document('xml');
-- break;
-- case 'json':
-- $this->init_document('json');
-- print json_encode($result);
-- $this->end_document('json');
-- break;
-- default:
-- break;
-- }
-+ switch ($apidata['content-type']) {
-+ case 'xml':
-+ $this->init_document('xml');
-+ common_element('friends', NULL, $result);
-+ $this->end_document('xml');
-+ break;
-+ case 'json':
-+ $this->init_document('json');
-+ print json_encode($result);
-+ $this->end_document('json');
-+ break;
-+ default:
-+ break;
-+ }
-hunk ./actions/twitapifriendships.php 153
-- }
-+ }
-hunk ./actions/twitapihelp.php 26
-- /* Returns the string "ok" in the requested format with a 200 OK HTTP status code.
-- * URL:http://identi.ca/api/help/test.format
-- * Formats: xml, json
-- */
-- function test($args, $apidata) {
-- parent::handle($args);
-+ /* Returns the string "ok" in the requested format with a 200 OK HTTP status code.
-+ * URL:http://identi.ca/api/help/test.format
-+ * Formats: xml, json
-+ */
-+ function test($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapihelp.php 33
-- if ($apidata['content-type'] == 'xml') {
-- $this->init_document('xml');
-- common_element('ok', NULL, 'true');
-- $this->end_document('xml');
-- } elseif ($apidata['content-type'] == 'json') {
-- $this->init_document('json');
-- print '"ok"';
-- $this->end_document('json');
-- } else {
-- common_user_error(_('API method not found!'), $code=404);
-- }
-+ if ($apidata['content-type'] == 'xml') {
-+ $this->init_document('xml');
-+ common_element('ok', NULL, 'true');
-+ $this->end_document('xml');
-+ } elseif ($apidata['content-type'] == 'json') {
-+ $this->init_document('json');
-+ print '"ok"';
-+ $this->end_document('json');
-+ } else {
-+ common_user_error(_('API method not found!'), $code=404);
-+ }
-hunk ./actions/twitapihelp.php 45
-- }
-+ }
-hunk ./actions/twitapihelp.php 47
-- function downtime_schedule($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function downtime_schedule($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapinotifications.php 27
-- function follow($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function follow($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapinotifications.php 32
-- function leave($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function leave($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapistatuses.php 26
-- function public_timeline($args, $apidata) {
-- parent::handle($args);
-+ function public_timeline($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 29
-- $sitename = common_config('site', 'name');
-- $siteserver = common_config('site', 'server');
-- $title = sprintf(_("%s public timeline"), $sitename);
-- $id = "tag:$siteserver:Statuses";
-- $link = common_root_url();
-- $subtitle = sprintf(_("%s updates from everyone!"), $sitename);
-+ $sitename = common_config('site', 'name');
-+ $siteserver = common_config('site', 'server');
-+ $title = sprintf(_("%s public timeline"), $sitename);
-+ $id = "tag:$siteserver:Statuses";
-+ $link = common_root_url();
-+ $subtitle = sprintf(_("%s updates from everyone!"), $sitename);
-hunk ./actions/twitapistatuses.php 36
-- // Number of public statuses to return by default -- Twitter sends 20
-- $MAX_PUBSTATUSES = 20;
-+ // Number of public statuses to return by default -- Twitter sends 20
-+ $MAX_PUBSTATUSES = 20;
-hunk ./actions/twitapistatuses.php 39
-- // FIXME: To really live up to the spec we need to build a list
-- // of notices by users who have custom avatars, so fix this SQL -- Zach
-+ // FIXME: To really live up to the spec we need to build a list
-+ // of notices by users who have custom avatars, so fix this SQL -- Zach
-hunk ./actions/twitapistatuses.php 42
-- $page = $this->arg('page');
-- $since_id = $this->arg('since_id');
-- $before_id = $this->arg('before_id');
-+ $page = $this->arg('page');
-+ $since_id = $this->arg('since_id');
-+ $before_id = $this->arg('before_id');
-hunk ./actions/twitapistatuses.php 46
-- // NOTE: page, since_id, and before_id are extensions to Twitter API -- TB
-- if (!$page) {
-- $page = 1;
-- }
-- if (!$since_id) {
-- $since_id = 0;
-- }
-- if (!$before_id) {
-- $before_id = 0;
-- }
-+ // NOTE: page, since_id, and before_id are extensions to Twitter API -- TB
-+ if (!$page) {
-+ $page = 1;
-+ }
-+ if (!$since_id) {
-+ $since_id = 0;
-+ }
-+ if (!$before_id) {
-+ $before_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 57
-- $since = strtotime($this->arg('since'));
-+ $since = strtotime($this->arg('since'));
-hunk ./actions/twitapistatuses.php 59
-- $notice = Notice::publicStream((($page-1)*$MAX_PUBSTATUSES), $MAX_PUBSTATUSES, $since_id, $before_id, $since);
-+ $notice = Notice::publicStream((($page-1)*$MAX_PUBSTATUSES), $MAX_PUBSTATUSES, $since_id, $before_id, $since);
-hunk ./actions/twitapistatuses.php 61
-- if ($notice) {
-+ if ($notice) {
-hunk ./actions/twitapistatuses.php 63
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_timeline($notice);
-- break;
-- case 'rss':
-- $this->show_rss_timeline($notice, $title, $link, $subtitle);
-- break;
-- case 'atom':
-- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-- break;
-- case 'json':
-- $this->show_json_timeline($notice);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- break;
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_timeline($notice);
-+ break;
-+ case 'rss':
-+ $this->show_rss_timeline($notice, $title, $link, $subtitle);
-+ break;
-+ case 'atom':
-+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-+ break;
-+ case 'json':
-+ $this->show_json_timeline($notice);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ break;
-+ }
-hunk ./actions/twitapistatuses.php 81
-- } else {
-- common_server_error(_('Couldn\'t find any statuses.'), $code = 503);
-- }
-+ } else {
-+ common_server_error(_('Couldn\'t find any statuses.'), $code = 503);
-+ }
-hunk ./actions/twitapistatuses.php 85
-- }
-+ }
-hunk ./actions/twitapistatuses.php 87
-- function friends_timeline($args, $apidata) {
-- parent::handle($args);
-+ function friends_timeline($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 90
-- $since = $this->arg('since');
-- $since_id = $this->arg('since_id');
-- $count = $this->arg('count');
-- $page = $this->arg('page');
-- $before_id = $this->arg('before_id');
-+ $since = $this->arg('since');
-+ $since_id = $this->arg('since_id');
-+ $count = $this->arg('count');
-+ $page = $this->arg('page');
-+ $before_id = $this->arg('before_id');
-hunk ./actions/twitapistatuses.php 96
-- if (!$page) {
-- $page = 1;
-- }
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapistatuses.php 100
-- if (!$count) {
-- $count = 20;
-- }
-+ if (!$count) {
-+ $count = 20;
-+ }
-hunk ./actions/twitapistatuses.php 104
-- if (!$since_id) {
-- $since_id = 0;
-- }
-+ if (!$since_id) {
-+ $since_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 108
-- // NOTE: before_id is an extension to Twitter API -- TB
-- if (!$before_id) {
-- $before_id = 0;
-- }
-+ // NOTE: before_id is an extension to Twitter API -- TB
-+ if (!$before_id) {
-+ $before_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 113
-- $since = strtotime($this->arg('since'));
-+ $since = strtotime($this->arg('since'));
+- common_element('title', NULL, $title);
++ common_element('title', null, $title);
+hunk ./actions/twitapidirect_messages.php 261
+- common_element('id', NULL, "tag:$siteserver,2008:DirectMessage");
+- common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL);
+- common_element('updated', NULL, common_date_iso8601(strftime('%c')));
+- common_element('subtitle', NULL, $subtitle);
++ common_element('id', null, "tag:$siteserver,2008:DirectMessage");
++ common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null);
++ common_element('updated', null, common_date_iso8601(strftime('%c')));
++ common_element('subtitle', null, $subtitle);
+hunk ./actions/twitapifriendships.php 141
+- common_element('friends', NULL, $result);
++ common_element('friends', null, $result);
+hunk ./actions/twitapihelp.php 35
+- common_element('ok', NULL, 'true');
++ common_element('ok', null, 'true');
hunk ./actions/twitapistatuses.php 115
-- $user = $this->get_user(NULL, $apidata);
-- $this->auth_user = $user;
-+ $user = $this->get_user(NULL, $apidata);
-+ $this->auth_user = $user;
-hunk ./actions/twitapistatuses.php 118
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/twitapistatuses.php 120
-- $sitename = common_config('site', 'name');
-- $siteserver = common_config('site', 'server');
-+ $sitename = common_config('site', 'name');
-+ $siteserver = common_config('site', 'server');
-hunk ./actions/twitapistatuses.php 123
-- $title = sprintf(_("%s and friends"), $user->nickname);
-- $id = "tag:$siteserver:friends:" . $user->id;
-- $link = common_local_url('all', array('nickname' => $user->nickname));
-- $subtitle = sprintf(_('Updates from %1$s and friends on %2$s!'), $user->nickname, $sitename);
-+ $title = sprintf(_("%s and friends"), $user->nickname);
-+ $id = "tag:$siteserver:friends:" . $user->id;
-+ $link = common_local_url('all', array('nickname' => $user->nickname));
-+ $subtitle = sprintf(_('Updates from %1$s and friends on %2$s!'), $user->nickname, $sitename);
-hunk ./actions/twitapistatuses.php 128
-- $notice = $user->noticesWithFriends(($page-1)*20, $count, $since_id, $before_id, $since);
-+ $notice = $user->noticesWithFriends(($page-1)*20, $count, $since_id, $before_id, $since);
-hunk ./actions/twitapistatuses.php 130
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_timeline($notice);
-- break;
-- case 'rss':
-- $this->show_rss_timeline($notice, $title, $link, $subtitle);
-- break;
-- case 'atom':
-- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-- break;
-- case 'json':
-- $this->show_json_timeline($notice);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_timeline($notice);
-+ break;
-+ case 'rss':
-+ $this->show_rss_timeline($notice, $title, $link, $subtitle);
-+ break;
-+ case 'atom':
-+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle);
-+ break;
-+ case 'json':
-+ $this->show_json_timeline($notice);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ }
-hunk ./actions/twitapistatuses.php 147
-- }
-+ }
-hunk ./actions/twitapistatuses.php 149
-- function user_timeline($args, $apidata) {
-- parent::handle($args);
-+ function user_timeline($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 152
-- $this->auth_user = $apidata['user'];
-- $user = $this->get_user($apidata['api_arg'], $apidata);
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->get_user($apidata['api_arg'], $apidata);
-hunk ./actions/twitapistatuses.php 155
-- if (!$user) {
-- $this->client_error('Not Found', 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error('Not Found', 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 160
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/twitapistatuses.php 162
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 167
-- $count = $this->arg('count');
-- $since = $this->arg('since');
-- $since_id = $this->arg('since_id');
-- $page = $this->arg('page');
-- $before_id = $this->arg('before_id');
-+ $count = $this->arg('count');
-+ $since = $this->arg('since');
-+ $since_id = $this->arg('since_id');
-+ $page = $this->arg('page');
-+ $before_id = $this->arg('before_id');
-hunk ./actions/twitapistatuses.php 173
-- if (!$page) {
-- $page = 1;
-- }
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapistatuses.php 177
-- if (!$count) {
-- $count = 20;
-- }
-+ if (!$count) {
-+ $count = 20;
-+ }
-hunk ./actions/twitapistatuses.php 181
-- if (!$since_id) {
-- $since_id = 0;
-- }
-+ if (!$since_id) {
-+ $since_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 185
-- // NOTE: before_id is an extensions to Twitter API -- TB
-- if (!$before_id) {
-- $before_id = 0;
-- }
-+ // NOTE: before_id is an extensions to Twitter API -- TB
-+ if (!$before_id) {
-+ $before_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 190
-- $since = strtotime($this->arg('since'));
-+ $since = strtotime($this->arg('since'));
-hunk ./actions/twitapistatuses.php 192
-- $sitename = common_config('site', 'name');
-- $siteserver = common_config('site', 'server');
-+ $sitename = common_config('site', 'name');
-+ $siteserver = common_config('site', 'server');
-hunk ./actions/twitapistatuses.php 195
-- $title = sprintf(_("%s timeline"), $user->nickname);
-- $id = "tag:$siteserver:user:".$user->id;
-- $link = common_local_url('showstream', array('nickname' => $user->nickname));
-- $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename);
-+ $title = sprintf(_("%s timeline"), $user->nickname);
-+ $id = "tag:$siteserver:user:".$user->id;
-+ $link = common_local_url('showstream', array('nickname' => $user->nickname));
-+ $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename);
-hunk ./actions/twitapistatuses.php 200
-- # FriendFeed's SUP protocol
-- # Also added RSS and Atom feeds
-+ # FriendFeed's SUP protocol
-+ # Also added RSS and Atom feeds
+- $user = $this->get_user(NULL, $apidata);
++ $user = $this->get_user(null, $apidata);
hunk ./actions/twitapistatuses.php 203
-- $suplink = common_local_url('sup', NULL, $user->id);
-- header('X-SUP-ID: '.$suplink);
-+ $suplink = common_local_url('sup', NULL, $user->id);
-+ header('X-SUP-ID: '.$suplink);
-hunk ./actions/twitapistatuses.php 206
-- # XXX: since
-+ # XXX: since
-hunk ./actions/twitapistatuses.php 208
-- $notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id, $since);
-+ $notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id, $since);
-hunk ./actions/twitapistatuses.php 210
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_timeline($notice);
-- break;
-- case 'rss':
-- $this->show_rss_timeline($notice, $title, $link, $subtitle, $suplink);
-- break;
-- case 'atom':
-- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink);
-- break;
-- case 'json':
-- $this->show_json_timeline($notice);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_timeline($notice);
-+ break;
-+ case 'rss':
-+ $this->show_rss_timeline($notice, $title, $link, $subtitle, $suplink);
-+ break;
-+ case 'atom':
-+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink);
-+ break;
-+ case 'json':
-+ $this->show_json_timeline($notice);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ }
-hunk ./actions/twitapistatuses.php 227
-- }
-+ }
-hunk ./actions/twitapistatuses.php 229
-- function update($args, $apidata) {
-+ function update($args, $apidata) {
-hunk ./actions/twitapistatuses.php 231
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 233
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 238
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 243
-- $this->auth_user = $apidata['user'];
-- $user = $this->auth_user;
-- $status = $this->trimmed('status');
-- $source = $this->trimmed('source');
-- $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id'));
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->auth_user;
-+ $status = $this->trimmed('status');
-+ $source = $this->trimmed('source');
-+ $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id'));
-hunk ./actions/twitapistatuses.php 249
-- if (!$source || in_array($source, $reserved_sources)) {
-- $source = 'api';
-- }
-+ if (!$source || in_array($source, $reserved_sources)) {
-+ $source = 'api';
-+ }
-hunk ./actions/twitapistatuses.php 253
-- if (!$status) {
-+ if (!$status) {
-hunk ./actions/twitapistatuses.php 255
-- // XXX: Note: In this case, Twitter simply returns '200 OK'
-- // No error is given, but the status is not posted to the
-- // user's timeline. Seems bad. Shouldn't we throw an
-- // errror? -- Zach
-- return;
-+ // XXX: Note: In this case, Twitter simply returns '200 OK'
-+ // No error is given, but the status is not posted to the
-+ // user's timeline. Seems bad. Shouldn't we throw an
-+ // errror? -- Zach
-+ return;
-hunk ./actions/twitapistatuses.php 261
-- } else {
-+ } else {
-hunk ./actions/twitapistatuses.php 263
-- $status_shortened = common_shorten_links($status);
-+ $status_shortened = common_shorten_links($status);
-hunk ./actions/twitapistatuses.php 265
-- if (mb_strlen($status_shortened) > 140) {
-+ if (mb_strlen($status_shortened) > 140) {
-hunk ./actions/twitapistatuses.php 267
-- // XXX: Twitter truncates anything over 140, flags the status
-- // as "truncated." Sending this error may screw up some clients
-- // that assume Twitter will truncate for them. Should we just
-- // truncate too? -- Zach
-- $this->client_error(_('That\'s too long. Max notice size is 140 chars.'), $code = 406, $apidata['content-type']);
-- return;
-+ // XXX: Twitter truncates anything over 140, flags the status
-+ // as "truncated." Sending this error may screw up some clients
-+ // that assume Twitter will truncate for them. Should we just
-+ // truncate too? -- Zach
-+ $this->client_error(_('That\'s too long. Max notice size is 140 chars.'), $code = 406, $apidata['content-type']);
-+ return;
-hunk ./actions/twitapistatuses.php 274
-- }
-- }
-+ }
-+ }
-hunk ./actions/twitapistatuses.php 277
-- // Check for commands
-- $inter = new CommandInterpreter();
-- $cmd = $inter->handle_command($user, $status_shortened);
-+ // Check for commands
-+ $inter = new CommandInterpreter();
-+ $cmd = $inter->handle_command($user, $status_shortened);
-hunk ./actions/twitapistatuses.php 281
-- if ($cmd) {
-+ if ($cmd) {
-hunk ./actions/twitapistatuses.php 283
-- if ($this->supported($cmd)) {
-- $cmd->execute(new Channel());
-- }
-+ if ($this->supported($cmd)) {
-+ $cmd->execute(new Channel());
-+ }
-hunk ./actions/twitapistatuses.php 287
-- // cmd not supported? Twitter just returns your latest status.
-- // And, it returns your last status whether the cmd was successful
-- // or not!
-- $n = $user->getCurrentNotice();
-- $apidata['api_arg'] = $n->id;
-- } else {
-+ // cmd not supported? Twitter just returns your latest status.
-+ // And, it returns your last status whether the cmd was successful
-+ // or not!
-+ $n = $user->getCurrentNotice();
-+ $apidata['api_arg'] = $n->id;
-+ } else {
+- $suplink = common_local_url('sup', NULL, $user->id);
++ $suplink = common_local_url('sup', null, $user->id);
hunk ./actions/twitapistatuses.php 294
-- $reply_to = NULL;
-+ $reply_to = NULL;
-hunk ./actions/twitapistatuses.php 296
-- if ($in_reply_to_status_id) {
-+ if ($in_reply_to_status_id) {
-hunk ./actions/twitapistatuses.php 298
-- // check whether notice actually exists
-- $reply = Notice::staticGet($in_reply_to_status_id);
-+ // check whether notice actually exists
-+ $reply = Notice::staticGet($in_reply_to_status_id);
-hunk ./actions/twitapistatuses.php 301
-- if ($reply) {
-- $reply_to = $in_reply_to_status_id;
-- } else {
-- $this->client_error(_('Not found'), $code = 404, $apidata['content-type']);
-- return;
-- }
-- }
-+ if ($reply) {
-+ $reply_to = $in_reply_to_status_id;
-+ } else {
-+ $this->client_error(_('Not found'), $code = 404, $apidata['content-type']);
-+ return;
-+ }
-+ }
-hunk ./actions/twitapistatuses.php 309
-- $notice = Notice::saveNew($user->id, html_entity_decode($status, ENT_NOQUOTES, 'UTF-8'),
-- $source, 1, $reply_to);
-+ $notice = Notice::saveNew($user->id, html_entity_decode($status, ENT_NOQUOTES, 'UTF-8'),
-+ $source, 1, $reply_to);
-hunk ./actions/twitapistatuses.php 312
-- if (is_string($notice)) {
-- $this->server_error($notice);
-- return;
-- }
-+ if (is_string($notice)) {
-+ $this->server_error($notice);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 317
-- common_broadcast_notice($notice);
-- $apidata['api_arg'] = $notice->id;
-- }
-+ common_broadcast_notice($notice);
-+ $apidata['api_arg'] = $notice->id;
-+ }
-hunk ./actions/twitapistatuses.php 321
-- $this->show($args, $apidata);
-- }
-+ $this->show($args, $apidata);
-+ }
-hunk ./actions/twitapistatuses.php 324
-- function replies($args, $apidata) {
-+ function replies($args, $apidata) {
-hunk ./actions/twitapistatuses.php 326
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 328
-- $since = $this->arg('since');
-- $count = $this->arg('count');
-- $page = $this->arg('page');
-- $since_id = $this->arg('since_id');
-- $before_id = $this->arg('before_id');
-+ $since = $this->arg('since');
-+ $count = $this->arg('count');
-+ $page = $this->arg('page');
-+ $since_id = $this->arg('since_id');
-+ $before_id = $this->arg('before_id');
-hunk ./actions/twitapistatuses.php 334
-- $this->auth_user = $apidata['user'];
-- $user = $this->auth_user;
-- $profile = $user->getProfile();
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->auth_user;
-+ $profile = $user->getProfile();
-hunk ./actions/twitapistatuses.php 338
-- $sitename = common_config('site', 'name');
-- $siteserver = common_config('site', 'server');
-+ $sitename = common_config('site', 'name');
-+ $siteserver = common_config('site', 'server');
-hunk ./actions/twitapistatuses.php 341
-- $title = sprintf(_('%1$s / Updates replying to %2$s'), $sitename, $user->nickname);
-- $id = "tag:$siteserver:replies:".$user->id;
-- $link = common_local_url('replies', array('nickname' => $user->nickname));
-- $subtitle = sprintf(_('%1$s updates that reply to updates from %2$s / %3$s.'), $sitename, $user->nickname, $profile->getBestName());
-+ $title = sprintf(_('%1$s / Updates replying to %2$s'), $sitename, $user->nickname);
-+ $id = "tag:$siteserver:replies:".$user->id;
-+ $link = common_local_url('replies', array('nickname' => $user->nickname));
-+ $subtitle = sprintf(_('%1$s updates that reply to updates from %2$s / %3$s.'), $sitename, $user->nickname, $profile->getBestName());
-hunk ./actions/twitapistatuses.php 346
-- if (!$page) {
-- $page = 1;
-- }
-+ if (!$page) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapistatuses.php 350
-- if (!$count) {
-- $count = 20;
-- }
-+ if (!$count) {
-+ $count = 20;
-+ }
-hunk ./actions/twitapistatuses.php 354
-- if (!$since_id) {
-- $since_id = 0;
-- }
-+ if (!$since_id) {
-+ $since_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 358
-- // NOTE: before_id is an extension to Twitter API -- TB
-- if (!$before_id) {
-- $before_id = 0;
-- }
-+ // NOTE: before_id is an extension to Twitter API -- TB
-+ if (!$before_id) {
-+ $before_id = 0;
-+ }
-hunk ./actions/twitapistatuses.php 363
-- $since = strtotime($this->arg('since'));
-+ $since = strtotime($this->arg('since'));
-hunk ./actions/twitapistatuses.php 365
-- $notice = $user->getReplies((($page-1)*20), $count, $since_id, $before_id, $since);
-- $notices = array();
-+ $notice = $user->getReplies((($page-1)*20), $count, $since_id, $before_id, $since);
-+ $notices = array();
-hunk ./actions/twitapistatuses.php 368
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/twitapistatuses.php 372
-- switch($apidata['content-type']) {
-- case 'xml':
-- $this->show_xml_timeline($notices);
-- break;
-- case 'rss':
-- $this->show_rss_timeline($notices, $title, $link, $subtitle);
-- break;
-- case 'atom':
-- $this->show_atom_timeline($notices, $title, $id, $link, $subtitle);
-- break;
-- case 'json':
-- $this->show_json_timeline($notices);
-- break;
-- default:
-- common_user_error(_('API method not found!'), $code = 404);
-- }
-+ switch($apidata['content-type']) {
-+ case 'xml':
-+ $this->show_xml_timeline($notices);
-+ break;
-+ case 'rss':
-+ $this->show_rss_timeline($notices, $title, $link, $subtitle);
-+ break;
-+ case 'atom':
-+ $this->show_atom_timeline($notices, $title, $id, $link, $subtitle);
-+ break;
-+ case 'json':
-+ $this->show_json_timeline($notices);
-+ break;
-+ default:
-+ common_user_error(_('API method not found!'), $code = 404);
-+ }
-hunk ./actions/twitapistatuses.php 389
-- }
-+ }
-hunk ./actions/twitapistatuses.php 391
-- function show($args, $apidata) {
-- parent::handle($args);
-+ function show($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 394
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 399
-- $this->auth_user = $apidata['user'];
-- $notice_id = $apidata['api_arg'];
-- $notice = Notice::staticGet($notice_id);
-+ $this->auth_user = $apidata['user'];
-+ $notice_id = $apidata['api_arg'];
-+ $notice = Notice::staticGet($notice_id);
-hunk ./actions/twitapistatuses.php 403
-- if ($notice) {
-- if ($apidata['content-type'] == 'xml') {
-- $this->show_single_xml_status($notice);
-- } elseif ($apidata['content-type'] == 'json') {
-- $this->show_single_json_status($notice);
-- }
-- } else {
-- // XXX: Twitter just sets a 404 header and doens't bother to return an err msg
-- $this->client_error(_('No status with that ID found.'), 404, $apidata['content-type']);
-- }
-+ if ($notice) {
-+ if ($apidata['content-type'] == 'xml') {
-+ $this->show_single_xml_status($notice);
-+ } elseif ($apidata['content-type'] == 'json') {
-+ $this->show_single_json_status($notice);
-+ }
-+ } else {
-+ // XXX: Twitter just sets a 404 header and doens't bother to return an err msg
-+ $this->client_error(_('No status with that ID found.'), 404, $apidata['content-type']);
-+ }
-hunk ./actions/twitapistatuses.php 414
-- }
-+ }
-hunk ./actions/twitapistatuses.php 416
-- function destroy($args, $apidata) {
-+ function destroy($args, $apidata) {
-hunk ./actions/twitapistatuses.php 418
-- parent::handle($args);
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 420
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 425
-- // Check for RESTfulness
-- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-- // XXX: Twitter just prints the err msg, no XML / JSON.
-- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-- return;
-- }
-+ // Check for RESTfulness
-+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
-+ // XXX: Twitter just prints the err msg, no XML / JSON.
-+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 432
-- $this->auth_user = $apidata['user'];
-- $user = $this->auth_user;
-- $notice_id = $apidata['api_arg'];
-- $notice = Notice::staticGet($notice_id);
-+ $this->auth_user = $apidata['user'];
-+ $user = $this->auth_user;
-+ $notice_id = $apidata['api_arg'];
-+ $notice = Notice::staticGet($notice_id);
-hunk ./actions/twitapistatuses.php 437
-- if (!$notice) {
-- $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$notice) {
-+ $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 442
-- if ($user->id == $notice->profile_id) {
-- $replies = new Reply;
-- $replies->get('notice_id', $notice_id);
-- common_dequeue_notice($notice);
-- $replies->delete();
-- $notice->delete();
-+ if ($user->id == $notice->profile_id) {
-+ $replies = new Reply;
-+ $replies->get('notice_id', $notice_id);
-+ common_dequeue_notice($notice);
-+ $replies->delete();
-+ $notice->delete();
-hunk ./actions/twitapistatuses.php 449
-- if ($apidata['content-type'] == 'xml') {
-- $this->show_single_xml_status($notice);
-- } elseif ($apidata['content-type'] == 'json') {
-- $this->show_single_json_status($notice);
-- }
-- } else {
-- $this->client_error(_('You may not delete another user\'s status.'), 403, $apidata['content-type']);
-- }
-+ if ($apidata['content-type'] == 'xml') {
-+ $this->show_single_xml_status($notice);
-+ } elseif ($apidata['content-type'] == 'json') {
-+ $this->show_single_json_status($notice);
-+ }
-+ } else {
-+ $this->client_error(_('You may not delete another user\'s status.'), 403, $apidata['content-type']);
-+ }
-hunk ./actions/twitapistatuses.php 458
-- }
-+ }
-hunk ./actions/twitapistatuses.php 460
-- function friends($args, $apidata) {
-- parent::handle($args);
-- return $this->subscriptions($apidata, 'subscribed', 'subscriber');
-- }
-+ function friends($args, $apidata) {
-+ parent::handle($args);
-+ return $this->subscriptions($apidata, 'subscribed', 'subscriber');
-+ }
-hunk ./actions/twitapistatuses.php 465
-- function followers($args, $apidata) {
-- parent::handle($args);
-+ function followers($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapistatuses.php 468
-- return $this->subscriptions($apidata, 'subscriber', 'subscribed');
-- }
-+ return $this->subscriptions($apidata, 'subscriber', 'subscribed');
-+ }
-hunk ./actions/twitapistatuses.php 471
-- function subscriptions($apidata, $other_attr, $user_attr) {
-+ function subscriptions($apidata, $other_attr, $user_attr) {
-hunk ./actions/twitapistatuses.php 473
-- # XXX: lite
-+ # XXX: lite
-hunk ./actions/twitapistatuses.php 475
-- $this->auth_user = $apidate['user'];
-- $user = $this->get_user($apidata['api_arg'], $apidata);
-+ $this->auth_user = $apidate['user'];
-+ $user = $this->get_user($apidata['api_arg'], $apidata);
-hunk ./actions/twitapistatuses.php 478
-- if (!$user) {
-- $this->client_error('Not Found', 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$user) {
-+ $this->client_error('Not Found', 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 483
-- $page = $this->trimmed('page');
-+ $page = $this->trimmed('page');
-hunk ./actions/twitapistatuses.php 485
-- if (!$page || !is_numeric($page)) {
-- $page = 1;
-- }
-+ if (!$page || !is_numeric($page)) {
-+ $page = 1;
-+ }
-hunk ./actions/twitapistatuses.php 489
-- $profile = $user->getProfile();
-+ $profile = $user->getProfile();
-hunk ./actions/twitapistatuses.php 491
-- if (!$profile) {
-- common_server_error(_('User has no profile.'));
-- return;
-- }
-+ if (!$profile) {
-+ common_server_error(_('User has no profile.'));
-+ return;
-+ }
-hunk ./actions/twitapistatuses.php 496
-- $sub = new Subscription();
-- $sub->$user_attr = $profile->id;
-+ $sub = new Subscription();
-+ $sub->$user_attr = $profile->id;
-hunk ./actions/twitapistatuses.php 499
-- $since = strtotime($this->trimmed('since'));
-+ $since = strtotime($this->trimmed('since'));
-hunk ./actions/twitapistatuses.php 501
-- if ($since) {
-- $d = date('Y-m-d H:i:s', $since);
-- $sub->whereAdd("created > '$d'");
-- }
-+ if ($since) {
-+ $d = date('Y-m-d H:i:s', $since);
-+ $sub->whereAdd("created > '$d'");
-+ }
-hunk ./actions/twitapistatuses.php 506
-- $sub->orderBy('created DESC');
-- $sub->limit(($page-1)*100, 100);
-+ $sub->orderBy('created DESC');
-+ $sub->limit(($page-1)*100, 100);
-hunk ./actions/twitapistatuses.php 509
-- $others = array();
-+ $others = array();
-hunk ./actions/twitapistatuses.php 511
-- if ($sub->find()) {
-- while ($sub->fetch()) {
-- $others[] = Profile::staticGet($sub->$other_attr);
-- }
-- } else {
-- // user has no followers
-- }
-+ if ($sub->find()) {
-+ while ($sub->fetch()) {
-+ $others[] = Profile::staticGet($sub->$other_attr);
-+ }
-+ } else {
-+ // user has no followers
-+ }
-hunk ./actions/twitapistatuses.php 519
-- $type = $apidata['content-type'];
-+ $type = $apidata['content-type'];
-hunk ./actions/twitapistatuses.php 521
-- $this->init_document($type);
-- $this->show_profiles($others, $type);
-- $this->end_document($type);
-- }
-+ $this->init_document($type);
-+ $this->show_profiles($others, $type);
-+ $this->end_document($type);
-+ }
-hunk ./actions/twitapistatuses.php 526
-- function show_profiles($profiles, $type) {
-- switch ($type) {
-- case 'xml':
-- common_element_start('users', array('type' => 'array'));
-- foreach ($profiles as $profile) {
-- $this->show_profile($profile);
-- }
-- common_element_end('users');
-- break;
-- case 'json':
-- $arrays = array();
-- foreach ($profiles as $profile) {
-- $arrays[] = $this->twitter_user_array($profile, true);
-- }
-- print json_encode($arrays);
-- break;
-- default:
-- $this->client_error(_('unsupported file type'));
-- }
-- }
-+ function show_profiles($profiles, $type) {
-+ switch ($type) {
-+ case 'xml':
-+ common_element_start('users', array('type' => 'array'));
-+ foreach ($profiles as $profile) {
-+ $this->show_profile($profile);
-+ }
-+ common_element_end('users');
-+ break;
-+ case 'json':
-+ $arrays = array();
-+ foreach ($profiles as $profile) {
-+ $arrays[] = $this->twitter_user_array($profile, true);
-+ }
-+ print json_encode($arrays);
-+ break;
-+ default:
-+ $this->client_error(_('unsupported file type'));
-+ }
-+ }
-hunk ./actions/twitapistatuses.php 547
-- function featured($args, $apidata) {
-- parent::handle($args);
-- common_server_error(_('API method under construction.'), $code=501);
-- }
-+ function featured($args, $apidata) {
-+ parent::handle($args);
-+ common_server_error(_('API method under construction.'), $code=501);
-+ }
-hunk ./actions/twitapistatuses.php 552
-- function supported($cmd) {
-+ function supported($cmd) {
-hunk ./actions/twitapistatuses.php 554
-- $cmdlist = array('MessageCommand', 'SubCommand', 'UnsubCommand', 'FavCommand', 'OnCommand', 'OffCommand');
-+ $cmdlist = array('MessageCommand', 'SubCommand', 'UnsubCommand', 'FavCommand', 'OnCommand', 'OffCommand');
-hunk ./actions/twitapistatuses.php 556
-- if (in_array(get_class($cmd), $cmdlist)) {
-- return true;
-- }
-+ if (in_array(get_class($cmd), $cmdlist)) {
-+ return true;
-+ }
-hunk ./actions/twitapistatuses.php 560
-- return false;
-- }
-+ return false;
-+ }
-hunk ./actions/twitapiusers.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./actions/twitapiusers.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./actions/twitapiusers.php 26
-- function show($args, $apidata) {
-- parent::handle($args);
-+ function show($args, $apidata) {
-+ parent::handle($args);
-hunk ./actions/twitapiusers.php 29
-- if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-- common_user_error(_('API method not found!'), $code = 404);
-- return;
-- }
-+ if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-+ common_user_error(_('API method not found!'), $code = 404);
-+ return;
-+ }
-hunk ./actions/twitapiusers.php 34
-- $user = null;
-- $email = $this->arg('email');
-+ $user = null;
-+ $email = $this->arg('email');
-hunk ./actions/twitapiusers.php 37
-- if ($email) {
-- $user = User::staticGet('email', $email);
-- } elseif (isset($apidata['api_arg'])) {
-- $user = $this->get_user($apidata['api_arg']);
-- }
-+ if ($email) {
-+ $user = User::staticGet('email', $email);
-+ } elseif (isset($apidata['api_arg'])) {
-+ $user = $this->get_user($apidata['api_arg']);
-+ }
-hunk ./actions/twitapiusers.php 43
-- if (!$user) {
-- // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
-- $this->client_error(_('Not found.'), 404, $apidata['content-type']);
-- return;
-- }
-+ if (!$user) {
-+ // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
-+ $this->client_error(_('Not found.'), 404, $apidata['content-type']);
-+ return;
-+ }
-hunk ./actions/twitapiusers.php 49
-- $this->show_extended_profile($user, $apidata);
-- }
-+ $this->show_extended_profile($user, $apidata);
-+ }
-hunk ./actions/twittersettings.php 28
-- function get_instructions() {
-- return _('Add your Twitter account to automatically send your notices to Twitter, ' .
-- 'and subscribe to Twitter friends already here.');
-- }
-+ function get_instructions() {
-+ return _('Add your Twitter account to automatically send your notices to Twitter, ' .
-+ 'and subscribe to Twitter friends already here.');
-+ }
+- $reply_to = NULL;
++ $reply_to = null;
hunk ./actions/twittersettings.php 33
-- function show_form($msg=NULL, $success=false) {
-- $user = common_current_user();
-- $profile = $user->getProfile();
-- $fuser = NULL;
-- $flink = Foreign_link::getByUserID($user->id, 1); // 1 == Twitter
-+ function show_form($msg=NULL, $success=false) {
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-+ $fuser = NULL;
-+ $flink = Foreign_link::getByUserID($user->id, 1); // 1 == Twitter
-hunk ./actions/twittersettings.php 39
-- if ($flink) {
-- $fuser = $flink->getForeignUser();
-- }
-+ if ($flink) {
-+ $fuser = $flink->getForeignUser();
-+ }
-hunk ./actions/twittersettings.php 43
-- $this->form_header(_('Twitter settings'), $msg, $success);
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'twittersettings',
-- 'action' =>
-- common_local_url('twittersettings')));
-- common_hidden('token', common_session_token());
-+ $this->form_header(_('Twitter settings'), $msg, $success);
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'twittersettings',
-+ 'action' =>
-+ common_local_url('twittersettings')));
-+ common_hidden('token', common_session_token());
+- function show_form($msg=NULL, $success=false) {
++ function show_form($msg=null, $success=false) {
+hunk ./actions/twittersettings.php 36
+- $fuser = NULL;
++ $fuser = null;
hunk ./actions/twittersettings.php 50
-- common_element('h2', NULL, _('Twitter Account'));
-+ common_element('h2', NULL, _('Twitter Account'));
-hunk ./actions/twittersettings.php 52
-- if ($fuser) {
-- common_element_start('p');
-+ if ($fuser) {
-+ common_element_start('p');
-hunk ./actions/twittersettings.php 55
-- common_element('span', 'twitter_user', $fuser->nickname);
-- common_element('a', array('href' => $fuser->uri), $fuser->uri);
-- common_element('span', 'input_instructions',
-- _('Current verified Twitter account.'));
-- common_hidden('flink_foreign_id', $flink->foreign_id);
-- common_element_end('p');
-- common_submit('remove', _('Remove'));
-- } else {
-- common_input('twitter_username', _('Twitter user name'),
-- ($this->arg('twitter_username')) ? $this->arg('twitter_username') : $profile->nickname,
-- _('No spaces, please.')); // hey, it's what Twitter says
-+ common_element('span', 'twitter_user', $fuser->nickname);
-+ common_element('a', array('href' => $fuser->uri), $fuser->uri);
-+ common_element('span', 'input_instructions',
-+ _('Current verified Twitter account.'));
-+ common_hidden('flink_foreign_id', $flink->foreign_id);
-+ common_element_end('p');
-+ common_submit('remove', _('Remove'));
-+ } else {
-+ common_input('twitter_username', _('Twitter user name'),
-+ ($this->arg('twitter_username')) ? $this->arg('twitter_username') : $profile->nickname,
-+ _('No spaces, please.')); // hey, it's what Twitter says
-hunk ./actions/twittersettings.php 67
-- common_password('twitter_password', _('Twitter password'));
-- }
-+ common_password('twitter_password', _('Twitter password'));
-+ }
+- common_element('h2', NULL, _('Twitter Account'));
++ common_element('h2', null, _('Twitter Account'));
hunk ./actions/twittersettings.php 70
-- common_element('h2', NULL, _('Preferences'));
-+ common_element('h2', NULL, _('Preferences'));
-hunk ./actions/twittersettings.php 72
-- common_checkbox('noticesync', _('Automatically send my notices to Twitter.'),
-- ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true);
-+ common_checkbox('noticesync', _('Automatically send my notices to Twitter.'),
-+ ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true);
-hunk ./actions/twittersettings.php 75
-- common_checkbox('replysync', _('Send local "@" replies to Twitter.'),
-- ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true);
-+ common_checkbox('replysync', _('Send local "@" replies to Twitter.'),
-+ ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true);
-hunk ./actions/twittersettings.php 78
-- common_checkbox('friendsync', _('Subscribe to my Twitter friends here.'),
-- ($flink) ? ($flink->friendsync & FOREIGN_FRIEND_RECV) : false);
-+ common_checkbox('friendsync', _('Subscribe to my Twitter friends here.'),
-+ ($flink) ? ($flink->friendsync & FOREIGN_FRIEND_RECV) : false);
-hunk ./actions/twittersettings.php 81
-- if ($flink) {
-- common_submit('save', _('Save'));
-- } else {
-- common_submit('add', _('Add'));
-- }
-+ if ($flink) {
-+ common_submit('save', _('Save'));
-+ } else {
-+ common_submit('add', _('Add'));
-+ }
-hunk ./actions/twittersettings.php 87
-- $this->show_twitter_subscriptions();
-+ $this->show_twitter_subscriptions();
-hunk ./actions/twittersettings.php 89
-- common_element_end('form');
-+ common_element_end('form');
-hunk ./actions/twittersettings.php 91
-- common_show_footer();
-- }
-+ common_show_footer();
-+ }
-hunk ./actions/twittersettings.php 94
-- function subscribed_twitter_users() {
-+ function subscribed_twitter_users() {
-hunk ./actions/twittersettings.php 96
-- $current_user = common_current_user();
-+ $current_user = common_current_user();
-hunk ./actions/twittersettings.php 98
-- $qry = 'SELECT user.* ' .
-- 'FROM subscription ' .
-- 'JOIN user ON subscription.subscribed = user.id ' .
-- 'JOIN foreign_link ON foreign_link.user_id = user.id ' .
-- 'WHERE subscriber = %d ' .
-- 'ORDER BY user.nickname';
-+ $qry = 'SELECT user.* ' .
-+ 'FROM subscription ' .
-+ 'JOIN user ON subscription.subscribed = user.id ' .
-+ 'JOIN foreign_link ON foreign_link.user_id = user.id ' .
-+ 'WHERE subscriber = %d ' .
-+ 'ORDER BY user.nickname';
-hunk ./actions/twittersettings.php 105
-- $user = new User();
-+ $user = new User();
-hunk ./actions/twittersettings.php 107
-- $user->query(sprintf($qry, $current_user->id));
-+ $user->query(sprintf($qry, $current_user->id));
-hunk ./actions/twittersettings.php 109
-- $users = array();
-+ $users = array();
-hunk ./actions/twittersettings.php 111
-- while ($user->fetch()) {
-+ while ($user->fetch()) {
-hunk ./actions/twittersettings.php 113
-- // Don't include the user's own self-subscription
-- if ($user->id != $current_user->id) {
-- $users[] = clone($user);
-- }
-- }
-+ // Don't include the user's own self-subscription
-+ if ($user->id != $current_user->id) {
-+ $users[] = clone($user);
-+ }
-+ }
-hunk ./actions/twittersettings.php 119
-- return $users;
-- }
-+ return $users;
-+ }
-hunk ./actions/twittersettings.php 122
-- function show_twitter_subscriptions() {
-+ function show_twitter_subscriptions() {
-hunk ./actions/twittersettings.php 124
-- $friends = $this->subscribed_twitter_users();
-- $friends_count = count($friends);
-+ $friends = $this->subscribed_twitter_users();
-+ $friends_count = count($friends);
-hunk ./actions/twittersettings.php 127
-- if ($friends_count > 0) {
-+ if ($friends_count > 0) {
+- common_element('h2', NULL, _('Preferences'));
++ common_element('h2', null, _('Preferences'));
hunk ./actions/twittersettings.php 129
-- common_element('h3', NULL, _('Twitter Friends'));
-- common_element_start('div', array('id' => 'subscriptions'));
-- common_element_start('ul', array('id' => 'subscriptions_avatars'));
-+ common_element('h3', NULL, _('Twitter Friends'));
-+ common_element_start('div', array('id' => 'subscriptions'));
-+ common_element_start('ul', array('id' => 'subscriptions_avatars'));
-hunk ./actions/twittersettings.php 133
-- for ($i = 0; $i < min($friends_count, SUBSCRIPTIONS); $i++) {
-+ for ($i = 0; $i < min($friends_count, SUBSCRIPTIONS); $i++) {
-hunk ./actions/twittersettings.php 135
-- $other = Profile::staticGet($friends[$i]->id);
-+ $other = Profile::staticGet($friends[$i]->id);
-hunk ./actions/twittersettings.php 137
-- if (!$other) {
-- common_log_db_error($subs, 'SELECT', __FILE__);
-- continue;
-- }
-+ if (!$other) {
-+ common_log_db_error($subs, 'SELECT', __FILE__);
-+ continue;
-+ }
-hunk ./actions/twittersettings.php 142
-- common_element_start('li');
-- common_element_start('a', array('title' => ($other->fullname) ?
-- $other->fullname :
-- $other->nickname,
-- 'href' => $other->profileurl,
-- 'rel' => 'contact',
-- 'class' => 'subscription'));
-- $avatar = $other->getAvatar(AVATAR_MINI_SIZE);
-- common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)),
-- 'width' => AVATAR_MINI_SIZE,
-- 'height' => AVATAR_MINI_SIZE,
-- 'class' => 'avatar mini',
-- 'alt' => ($other->fullname) ?
-- $other->fullname :
-- $other->nickname));
-- common_element_end('a');
-- common_element_end('li');
-+ common_element_start('li');
-+ common_element_start('a', array('title' => ($other->fullname) ?
-+ $other->fullname :
-+ $other->nickname,
-+ 'href' => $other->profileurl,
-+ 'rel' => 'contact',
-+ 'class' => 'subscription'));
-+ $avatar = $other->getAvatar(AVATAR_MINI_SIZE);
-+ common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)),
-+ 'width' => AVATAR_MINI_SIZE,
-+ 'height' => AVATAR_MINI_SIZE,
-+ 'class' => 'avatar mini',
-+ 'alt' => ($other->fullname) ?
-+ $other->fullname :
-+ $other->nickname));
-+ common_element_end('a');
-+ common_element_end('li');
-hunk ./actions/twittersettings.php 160
-- }
-+ }
-hunk ./actions/twittersettings.php 162
-- common_element_end('ul');
-- common_element_end('div');
-+ common_element_end('ul');
-+ common_element_end('div');
-hunk ./actions/twittersettings.php 165
-- }
-+ }
-hunk ./actions/twittersettings.php 167
-- // XXX Figure out a way to show all Twitter friends... ?
-+ // XXX Figure out a way to show all Twitter friends... ?
-hunk ./actions/twittersettings.php 169
-- /*
-- if ($subs_count > SUBSCRIPTIONS) {
-- common_element_start('p', array('id' => 'subscriptions_viewall'));
-+ /*
-+ if ($subs_count > SUBSCRIPTIONS) {
-+ common_element_start('p', array('id' => 'subscriptions_viewall'));
-hunk ./actions/twittersettings.php 173
-- common_element('a', array('href' => common_local_url('subscriptions',
-- array('nickname' => $profile->nickname)),
-- 'class' => 'moresubscriptions'),
-- _('All subscriptions'));
-- common_element_end('p');
-- }
-- */
-+ common_element('a', array('href' => common_local_url('subscriptions',
-+ array('nickname' => $profile->nickname)),
-+ 'class' => 'moresubscriptions'),
-+ _('All subscriptions'));
-+ common_element_end('p');
-+ }
-+ */
-hunk ./actions/twittersettings.php 181
-- }
-+ }
-hunk ./actions/twittersettings.php 183
-- function handle_post() {
-+ function handle_post() {
-hunk ./actions/twittersettings.php 185
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $this->show_form(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 192
-- if ($this->arg('save')) {
-- $this->save_preferences();
-- } else if ($this->arg('add')) {
-- $this->add_twitter_acct();
-- } else if ($this->arg('remove')) {
-- $this->remove_twitter_acct();
-- } else {
-- $this->show_form(_('Unexpected form submission.'));
-- }
-- }
-+ if ($this->arg('save')) {
-+ $this->save_preferences();
-+ } else if ($this->arg('add')) {
-+ $this->add_twitter_acct();
-+ } else if ($this->arg('remove')) {
-+ $this->remove_twitter_acct();
-+ } else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-+ }
-hunk ./actions/twittersettings.php 203
-- function add_twitter_acct() {
-+ function add_twitter_acct() {
-hunk ./actions/twittersettings.php 205
-- $screen_name = $this->trimmed('twitter_username');
-- $password = $this->trimmed('twitter_password');
-- $noticesync = $this->boolean('noticesync');
-- $replysync = $this->boolean('replysync');
-- $friendsync = $this->boolean('friendsync');
-+ $screen_name = $this->trimmed('twitter_username');
-+ $password = $this->trimmed('twitter_password');
-+ $noticesync = $this->boolean('noticesync');
-+ $replysync = $this->boolean('replysync');
-+ $friendsync = $this->boolean('friendsync');
-hunk ./actions/twittersettings.php 211
-- if (!Validate::string($screen_name,
-- array( 'min_length' => 1,
-- 'max_length' => 15,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA . '_'))) {
-- $this->show_form(
-- _('Username must have only numbers, upper- and lowercase letters, and underscore (_). 15 chars max.'));
-- return;
-- }
-+ if (!Validate::string($screen_name,
-+ array( 'min_length' => 1,
-+ 'max_length' => 15,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA . '_'))) {
-+ $this->show_form(
-+ _('Username must have only numbers, upper- and lowercase letters, and underscore (_). 15 chars max.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 220
-- if (!$this->verify_credentials($screen_name, $password)) {
-- $this->show_form(_('Could not verify your Twitter credentials!'));
-- return;
-- }
-+ if (!$this->verify_credentials($screen_name, $password)) {
-+ $this->show_form(_('Could not verify your Twitter credentials!'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 225
-- $twit_user = twitter_user_info($screen_name, $password);
-+ $twit_user = twitter_user_info($screen_name, $password);
-hunk ./actions/twittersettings.php 227
-- if (!$twit_user) {
-- $this->show_form(sprintf(_('Unable to retrieve account information for "%s" from Twitter.'),
-- $screen_name));
-- return;
-- }
-+ if (!$twit_user) {
-+ $this->show_form(sprintf(_('Unable to retrieve account information for "%s" from Twitter.'),
-+ $screen_name));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 233
-- if (!save_twitter_user($twit_user->id, $screen_name)) {
-- $this->show_form(_('Unable to save your Twitter settings!'));
-- return;
-- }
-+ if (!save_twitter_user($twit_user->id, $screen_name)) {
-+ $this->show_form(_('Unable to save your Twitter settings!'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 238
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/twittersettings.php 240
-- $flink = DB_DataObject::factory('foreign_link');
-- $flink->user_id = $user->id;
-- $flink->foreign_id = $twit_user->id;
-- $flink->service = 1; // Twitter
-- $flink->credentials = $password;
-- $flink->created = common_sql_now();
-+ $flink = DB_DataObject::factory('foreign_link');
-+ $flink->user_id = $user->id;
-+ $flink->foreign_id = $twit_user->id;
-+ $flink->service = 1; // Twitter
-+ $flink->credentials = $password;
-+ $flink->created = common_sql_now();
-hunk ./actions/twittersettings.php 247
-- $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-+ $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-hunk ./actions/twittersettings.php 249
-- $flink_id = $flink->insert();
-+ $flink_id = $flink->insert();
-hunk ./actions/twittersettings.php 251
-- if (!$flink_id) {
-- common_log_db_error($flink, 'INSERT', __FILE__);
-- $this->show_form(_('Unable to save your Twitter settings!'));
-- return;
-- }
-+ if (!$flink_id) {
-+ common_log_db_error($flink, 'INSERT', __FILE__);
-+ $this->show_form(_('Unable to save your Twitter settings!'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 257
-- if ($friendsync) {
-- save_twitter_friends($user, $twit_user->id, $screen_name, $password);
-- }
-+ if ($friendsync) {
-+ save_twitter_friends($user, $twit_user->id, $screen_name, $password);
-+ }
-hunk ./actions/twittersettings.php 261
-- $this->show_form(_('Twitter settings saved.'), true);
-- }
-+ $this->show_form(_('Twitter settings saved.'), true);
-+ }
-hunk ./actions/twittersettings.php 264
-- function remove_twitter_acct() {
-+ function remove_twitter_acct() {
-hunk ./actions/twittersettings.php 266
-- $user = common_current_user();
-- $flink = Foreign_link::getByUserID($user->id, 1);
-- $flink_foreign_id = $this->arg('flink_foreign_id');
-+ $user = common_current_user();
-+ $flink = Foreign_link::getByUserID($user->id, 1);
-+ $flink_foreign_id = $this->arg('flink_foreign_id');
-hunk ./actions/twittersettings.php 270
-- # Maybe an old tab open...?
-- if ($flink->foreign_id != $flink_foreign_id) {
-- $this->show_form(_('That is not your Twitter account.'));
-- return;
-- }
-+ # Maybe an old tab open...?
-+ if ($flink->foreign_id != $flink_foreign_id) {
-+ $this->show_form(_('That is not your Twitter account.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 276
-- $result = $flink->delete();
-+ $result = $flink->delete();
-hunk ./actions/twittersettings.php 278
-- if (!$result) {
-- common_log_db_error($flink, 'DELETE', __FILE__);
-- common_server_error(_('Couldn\'t remove Twitter user.'));
-- return;
-- }
-+ if (!$result) {
-+ common_log_db_error($flink, 'DELETE', __FILE__);
-+ common_server_error(_('Couldn\'t remove Twitter user.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 284
-- $this->show_form(_('Twitter account removed.'), TRUE);
-- }
-+ $this->show_form(_('Twitter account removed.'), TRUE);
-+ }
-hunk ./actions/twittersettings.php 287
-- function save_preferences() {
-+ function save_preferences() {
-hunk ./actions/twittersettings.php 289
-- $noticesync = $this->boolean('noticesync');
-- $friendsync = $this->boolean('friendsync');
-- $replysync = $this->boolean('replysync');
-+ $noticesync = $this->boolean('noticesync');
-+ $friendsync = $this->boolean('friendsync');
-+ $replysync = $this->boolean('replysync');
-hunk ./actions/twittersettings.php 293
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/twittersettings.php 295
-- $flink = Foreign_link::getByUserID($user->id, 1);
-+ $flink = Foreign_link::getByUserID($user->id, 1);
-hunk ./actions/twittersettings.php 297
-- if (!$flink) {
-- common_log_db_error($flink, 'SELECT', __FILE__);
-- $this->show_form(_('Couldn\'t save Twitter preferences.'));
-- return;
-- }
-+ if (!$flink) {
-+ common_log_db_error($flink, 'SELECT', __FILE__);
-+ $this->show_form(_('Couldn\'t save Twitter preferences.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 303
-- $twitter_id = $flink->foreign_id;
-- $password = $flink->credentials;
-+ $twitter_id = $flink->foreign_id;
-+ $password = $flink->credentials;
-hunk ./actions/twittersettings.php 306
-- $fuser = $flink->getForeignUser();
-+ $fuser = $flink->getForeignUser();
-hunk ./actions/twittersettings.php 308
-- if (!$fuser) {
-- common_log_db_error($fuser, 'SELECT', __FILE__);
-- $this->show_form(_('Couldn\'t save Twitter preferences.'));
-- return;
-- }
-+ if (!$fuser) {
-+ common_log_db_error($fuser, 'SELECT', __FILE__);
-+ $this->show_form(_('Couldn\'t save Twitter preferences.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 314
-- $screen_name = $fuser->nickname;
-+ $screen_name = $fuser->nickname;
-hunk ./actions/twittersettings.php 316
-- $original = clone($flink);
-- $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-- $result = $flink->update($original);
-+ $original = clone($flink);
-+ $this->set_flags($flink, $noticesync, $replysync, $friendsync);
-+ $result = $flink->update($original);
-hunk ./actions/twittersettings.php 320
-- if ($result === FALSE) {
-- common_log_db_error($flink, 'UPDATE', __FILE__);
-- $this->show_form(_('Couldn\'t save Twitter preferences.'));
-- return;
-- }
-+ if ($result === FALSE) {
-+ common_log_db_error($flink, 'UPDATE', __FILE__);
-+ $this->show_form(_('Couldn\'t save Twitter preferences.'));
-+ return;
-+ }
-hunk ./actions/twittersettings.php 326
-- if ($friendsync) {
-- save_twitter_friends($user, $flink->foreign_id, $screen_name, $password);
-- }
-+ if ($friendsync) {
-+ save_twitter_friends($user, $flink->foreign_id, $screen_name, $password);
-+ }
-hunk ./actions/twittersettings.php 330
-- $this->show_form(_('Twitter preferences saved.'));
-- }
-+ $this->show_form(_('Twitter preferences saved.'));
-+ }
-hunk ./actions/twittersettings.php 333
-- function verify_credentials($screen_name, $password) {
-- $uri = 'http://twitter.com/account/verify_credentials.json';
-- $data = get_twitter_data($uri, $screen_name, $password);
-+ function verify_credentials($screen_name, $password) {
-+ $uri = 'http://twitter.com/account/verify_credentials.json';
-+ $data = get_twitter_data($uri, $screen_name, $password);
-hunk ./actions/twittersettings.php 337
-- if (!$data) {
-- return false;
-- }
-+ if (!$data) {
-+ return false;
-+ }
-hunk ./actions/twittersettings.php 341
-- $user = json_decode($data);
-+ $user = json_decode($data);
-hunk ./actions/twittersettings.php 343
-- if (!$user) {
-- return false;
-- }
-+ if (!$user) {
-+ return false;
-+ }
-hunk ./actions/twittersettings.php 347
-- $twitter_id = $user->status->id;
-+ $twitter_id = $user->status->id;
-hunk ./actions/twittersettings.php 349
-- if ($twitter_id) {
-- return $twitter_id;
-- }
-+ if ($twitter_id) {
-+ return $twitter_id;
-+ }
-hunk ./actions/twittersettings.php 353
-- return false;
-- }
-+ return false;
-+ }
-hunk ./actions/twittersettings.php 356
-- function set_flags(&$flink, $noticesync, $replysync, $friendsync) {
-- if ($noticesync) {
-- $flink->noticesync |= FOREIGN_NOTICE_SEND;
-- } else {
-- $flink->noticesync &= ~FOREIGN_NOTICE_SEND;
-- }
-+ function set_flags(&$flink, $noticesync, $replysync, $friendsync) {
-+ if ($noticesync) {
-+ $flink->noticesync |= FOREIGN_NOTICE_SEND;
-+ } else {
-+ $flink->noticesync &= ~FOREIGN_NOTICE_SEND;
-+ }
-hunk ./actions/twittersettings.php 363
-- if ($replysync) {
-- $flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY;
-- } else {
-- $flink->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY;
-- }
-+ if ($replysync) {
-+ $flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY;
-+ } else {
-+ $flink->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY;
-+ }
-hunk ./actions/twittersettings.php 369
-- if ($friendsync) {
-- $flink->friendsync |= FOREIGN_FRIEND_RECV;
-- } else {
-- $flink->friendsync &= ~FOREIGN_FRIEND_RECV;
-- }
-+ if ($friendsync) {
-+ $flink->friendsync |= FOREIGN_FRIEND_RECV;
-+ } else {
-+ $flink->friendsync &= ~FOREIGN_FRIEND_RECV;
-+ }
-hunk ./actions/twittersettings.php 375
-- $flink->profilesync = 0;
-- }
-+ $flink->profilesync = 0;
-+ }
-hunk ./actions/unblock.php 35
-- $token = $this->trimmed('token');
-+ $token = $this->trimmed('token');
-hunk ./actions/unblock.php 37
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/unsubscribe.php 22
-- function handle($args) {
-- parent::handle($args);
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- return;
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ return;
-+ }
-hunk ./actions/unsubscribe.php 29
-- $user = common_current_user();
-+ $user = common_current_user();
-hunk ./actions/unsubscribe.php 31
-- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-- common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname)));
-- return;
-- }
-+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
-+ common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname)));
-+ return;
-+ }
-hunk ./actions/unsubscribe.php 36
-- # CSRF protection
-+ # CSRF protection
-hunk ./actions/unsubscribe.php 38
-- $token = $this->trimmed('token');
-+ $token = $this->trimmed('token');
-hunk ./actions/unsubscribe.php 40
-- if (!$token || $token != common_session_token()) {
-- $this->client_error(_('There was a problem with your session token. Try again, please.'));
-- return;
-- }
-+ if (!$token || $token != common_session_token()) {
-+ $this->client_error(_('There was a problem with your session token. Try again, please.'));
-+ return;
-+ }
-hunk ./actions/unsubscribe.php 45
-- $other_id = $this->arg('unsubscribeto');
-+ $other_id = $this->arg('unsubscribeto');
-hunk ./actions/unsubscribe.php 59
-- $result = subs_unsubscribe_to($user, $other);
-+ $result = subs_unsubscribe_to($user, $other);
-hunk ./actions/unsubscribe.php 61
-- if ($result != true) {
-- common_user_error($result);
-- return;
-- }
-+ if ($result != true) {
-+ common_user_error($result);
-+ return;
-+ }
-hunk ./actions/unsubscribe.php 66
-- if ($this->boolean('ajax')) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Unsubscribed'));
-- common_element_end('head');
-- common_element_start('body');
-- common_subscribe_form($other);
-- common_element_end('body');
-- common_element_end('html');
-- } else {
-- common_redirect(common_local_url('subscriptions', array('nickname' =>
-- $user->nickname)));
-+ if ($this->boolean('ajax')) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Unsubscribed'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_subscribe_form($other);
-+ common_element_end('body');
-+ common_element_end('html');
-+ } else {
-+ common_redirect(common_local_url('subscriptions', array('nickname' =>
-+ $user->nickname)));
-hunk ./actions/unsubscribe.php 79
-- }
-+ }
-hunk ./actions/updateprofile.php 25
--
-- function handle($args) {
-- parent::handle($args);
-- try {
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-- # Note: server-to-server function!
-- $server = omb_oauth_server();
-- list($consumer, $token) = $server->verify_request($req);
-- if ($this->update_profile($req, $consumer, $token)) {
-- print "omb_version=".OMB_VERSION_01;
-- }
-- } catch (OAuthException $e) {
-- $this->server_error($e->getMessage());
-- return;
-- }
-- }
-+
-+ function handle($args) {
-+ parent::handle($args);
-+ try {
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-+ # Note: server-to-server function!
-+ $server = omb_oauth_server();
-+ list($consumer, $token) = $server->verify_request($req);
-+ if ($this->update_profile($req, $consumer, $token)) {
-+ print "omb_version=".OMB_VERSION_01;
-+ }
-+ } catch (OAuthException $e) {
-+ $this->server_error($e->getMessage());
-+ return;
-+ }
-+ }
-hunk ./actions/updateprofile.php 43
-- function update_profile($req, $consumer, $token) {
-- $version = $req->get_parameter('omb_version');
-- if ($version != OMB_VERSION_01) {
-- $this->client_error(_('Unsupported OMB version'), 400);
-- return false;
-- }
-- # First, check to see if listenee exists
-- $listenee = $req->get_parameter('omb_listenee');
-- $remote = Remote_profile::staticGet('uri', $listenee);
-- if (!$remote) {
-- $this->client_error(_('Profile unknown'), 404);
-- return false;
-- }
-- # Second, check to see if they should be able to post updates!
-- # We see if there are any subscriptions to that remote user with
-- # the given token.
-+ function update_profile($req, $consumer, $token) {
-+ $version = $req->get_parameter('omb_version');
-+ if ($version != OMB_VERSION_01) {
-+ $this->client_error(_('Unsupported OMB version'), 400);
-+ return false;
-+ }
-+ # First, check to see if listenee exists
-+ $listenee = $req->get_parameter('omb_listenee');
-+ $remote = Remote_profile::staticGet('uri', $listenee);
-+ if (!$remote) {
-+ $this->client_error(_('Profile unknown'), 404);
-+ return false;
-+ }
-+ # Second, check to see if they should be able to post updates!
-+ # We see if there are any subscriptions to that remote user with
-+ # the given token.
-hunk ./actions/updateprofile.php 60
-- $sub = new Subscription();
-- $sub->subscribed = $remote->id;
-- $sub->token = $token->key;
-- if (!$sub->find(true)) {
-- $this->client_error(_('You did not send us that profile'), 403);
-- return false;
-- }
-+ $sub = new Subscription();
-+ $sub->subscribed = $remote->id;
-+ $sub->token = $token->key;
-+ if (!$sub->find(true)) {
-+ $this->client_error(_('You did not send us that profile'), 403);
-+ return false;
-+ }
-hunk ./actions/updateprofile.php 68
-- $profile = Profile::staticGet('id', $remote->id);
-- if (!$profile) {
-- # This one is our fault
-- $this->server_error(_('Remote profile with no matching profile'), 500);
-- return false;
-- }
-- $nickname = $req->get_parameter('omb_listenee_nickname');
-- if ($nickname && !Validate::string($nickname, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- $this->client_error(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-- return false;
-- }
-- $license = $req->get_parameter('omb_listenee_license');
-- if ($license && !common_valid_http_url($license)) {
-- $this->client_error(sprintf(_("Invalid license URL '%s'"), $license));
-- return false;
-- }
-- $profile_url = $req->get_parameter('omb_listenee_profile');
-- if ($profile_url && !common_valid_http_url($profile_url)) {
-- $this->client_error(sprintf(_("Invalid profile URL '%s'."), $profile_url));
-- return false;
-- }
-- # optional stuff
-- $fullname = $req->get_parameter('omb_listenee_fullname');
-- if ($fullname && strlen($fullname) > 255) {
-- $this->client_error(_("Full name is too long (max 255 chars)."));
-- return false;
-- }
-- $homepage = $req->get_parameter('omb_listenee_homepage');
-- if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) {
-- $this->client_error(sprintf(_("Invalid homepage '%s'"), $homepage));
-- return false;
-- }
-- $bio = $req->get_parameter('omb_listenee_bio');
-- if ($bio && strlen($bio) > 140) {
-- $this->client_error(_("Bio is too long (max 140 chars)."));
-- return false;
-- }
-- $location = $req->get_parameter('omb_listenee_location');
-- if ($location && strlen($location) > 255) {
-- $this->client_error(_("Location is too long (max 255 chars)."));
-- return false;
-- }
-- $avatar = $req->get_parameter('omb_listenee_avatar');
-- if ($avatar) {
-- if (!common_valid_http_url($avatar) || strlen($avatar) > 255) {
-- $this->client_error(sprintf(_("Invalid avatar URL '%s'"), $avatar));
-- return false;
-- }
-- $size = @getimagesize($avatar);
-- if (!$size) {
-- $this->client_error(sprintf(_("Can't read avatar URL '%s'"), $avatar));
-- return false;
-- }
-- if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) {
-- $this->client_error(sprintf(_("Wrong size image at '%s'"), $avatar));
-- return false;
-- }
-- if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG,
-- IMAGETYPE_PNG))) {
-- $this->client_error(sprintf(_("Wrong image type for '%s'"), $avatar));
-- return false;
-- }
-- }
-+ $profile = Profile::staticGet('id', $remote->id);
-+ if (!$profile) {
-+ # This one is our fault
-+ $this->server_error(_('Remote profile with no matching profile'), 500);
-+ return false;
-+ }
-+ $nickname = $req->get_parameter('omb_listenee_nickname');
-+ if ($nickname && !Validate::string($nickname, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ $this->client_error(_('Nickname must have only lowercase letters and numbers and no spaces.'));
-+ return false;
-+ }
-+ $license = $req->get_parameter('omb_listenee_license');
-+ if ($license && !common_valid_http_url($license)) {
-+ $this->client_error(sprintf(_("Invalid license URL '%s'"), $license));
-+ return false;
-+ }
-+ $profile_url = $req->get_parameter('omb_listenee_profile');
-+ if ($profile_url && !common_valid_http_url($profile_url)) {
-+ $this->client_error(sprintf(_("Invalid profile URL '%s'."), $profile_url));
-+ return false;
-+ }
-+ # optional stuff
-+ $fullname = $req->get_parameter('omb_listenee_fullname');
-+ if ($fullname && strlen($fullname) > 255) {
-+ $this->client_error(_("Full name is too long (max 255 chars)."));
-+ return false;
-+ }
-+ $homepage = $req->get_parameter('omb_listenee_homepage');
-+ if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) {
-+ $this->client_error(sprintf(_("Invalid homepage '%s'"), $homepage));
-+ return false;
-+ }
-+ $bio = $req->get_parameter('omb_listenee_bio');
-+ if ($bio && strlen($bio) > 140) {
-+ $this->client_error(_("Bio is too long (max 140 chars)."));
-+ return false;
-+ }
-+ $location = $req->get_parameter('omb_listenee_location');
-+ if ($location && strlen($location) > 255) {
-+ $this->client_error(_("Location is too long (max 255 chars)."));
-+ return false;
-+ }
-+ $avatar = $req->get_parameter('omb_listenee_avatar');
-+ if ($avatar) {
-+ if (!common_valid_http_url($avatar) || strlen($avatar) > 255) {
-+ $this->client_error(sprintf(_("Invalid avatar URL '%s'"), $avatar));
-+ return false;
-+ }
-+ $size = @getimagesize($avatar);
-+ if (!$size) {
-+ $this->client_error(sprintf(_("Can't read avatar URL '%s'"), $avatar));
-+ return false;
-+ }
-+ if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) {
-+ $this->client_error(sprintf(_("Wrong size image at '%s'"), $avatar));
-+ return false;
-+ }
-+ if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG,
-+ IMAGETYPE_PNG))) {
-+ $this->client_error(sprintf(_("Wrong image type for '%s'"), $avatar));
-+ return false;
-+ }
-+ }
-hunk ./actions/updateprofile.php 134
-- $orig_profile = clone($profile);
-+ $orig_profile = clone($profile);
-hunk ./actions/updateprofile.php 136
-- if ($nickname) {
-- $profile->nickname = $nickname;
-- }
-- if ($profile_url) {
-- $profile->profileurl = $profile_url;
-- }
-- if ($fullname) {
-- $profile->fullname = $fullname;
-- }
-- if ($homepage) {
-- $profile->homepage = $homepage;
-- }
-- if ($bio) {
-- $profile->bio = $bio;
-- }
-- if ($location) {
-- $profile->location = $location;
-- }
-+ if ($nickname) {
-+ $profile->nickname = $nickname;
-+ }
-+ if ($profile_url) {
-+ $profile->profileurl = $profile_url;
-+ }
-+ if ($fullname) {
-+ $profile->fullname = $fullname;
-+ }
-+ if ($homepage) {
-+ $profile->homepage = $homepage;
-+ }
-+ if ($bio) {
-+ $profile->bio = $bio;
-+ }
-+ if ($location) {
-+ $profile->location = $location;
-+ }
-hunk ./actions/updateprofile.php 155
-- if (!$profile->update($orig_profile)) {
-- $this->server_error(_('Could not save new profile info'), 500);
-- return false;
-- } else {
-- if ($avatar) {
-- $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar');
-- copy($avatar, $temp_filename);
-- if (!$profile->setOriginal($temp_filename)) {
-- $this->server_error(_('Could not save avatar info'), 500);
-- return false;
-- }
-- }
-- header('HTTP/1.1 200 OK');
-- header('Content-type: text/plain');
-- print 'Updated profile';
-- print "\n";
-- return true;
-- }
-- }
-+ if (!$profile->update($orig_profile)) {
-+ $this->server_error(_('Could not save new profile info'), 500);
-+ return false;
-+ } else {
-+ if ($avatar) {
-+ $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar');
-+ copy($avatar, $temp_filename);
-+ if (!$profile->setOriginal($temp_filename)) {
-+ $this->server_error(_('Could not save avatar info'), 500);
-+ return false;
-+ }
-+ }
-+ header('HTTP/1.1 200 OK');
-+ header('Content-type: text/plain');
-+ print 'Updated profile';
-+ print "\n";
-+ return true;
-+ }
-+ }
-hunk ./actions/userauthorization.php 27
-- function handle($args) {
-- parent::handle($args);
-+ function handle($args) {
-+ parent::handle($args);
-hunk ./actions/userauthorization.php 30
-- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-- # CSRF protection
-- $token = $this->trimmed('token');
-- if (!$token || $token != common_session_token()) {
-- $req = $this->get_stored_request();
-- $this->show_form(_('There was a problem with your session token. Try again, please.'), $req);
-- return;
-- }
-- # We've shown the form, now post user's choice
-- $this->send_authorization();
-- } else {
-- if (!common_logged_in()) {
-- # Go log in, and then come back
-- common_debug('saving URL for returnto', __FILE__);
-- common_set_returnto($_SERVER['REQUEST_URI']);
-+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-+ # CSRF protection
-+ $token = $this->trimmed('token');
-+ if (!$token || $token != common_session_token()) {
-+ $req = $this->get_stored_request();
-+ $this->show_form(_('There was a problem with your session token. Try again, please.'), $req);
-+ return;
-+ }
-+ # We've shown the form, now post user's choice
-+ $this->send_authorization();
-+ } else {
-+ if (!common_logged_in()) {
-+ # Go log in, and then come back
-+ common_debug('saving URL for returnto', __FILE__);
-+ common_set_returnto($_SERVER['REQUEST_URI']);
-hunk ./actions/userauthorization.php 46
-- common_debug('redirecting to login', __FILE__);
-- common_redirect(common_local_url('login'));
-- return;
-- }
-- try {
-- # this must be a new request
-- common_debug('getting new request', __FILE__);
-- $req = $this->get_new_request();
-- if (!$req) {
-- $this->client_error(_('No request found!'));
-- }
-- common_debug('validating request', __FILE__);
-- # XXX: only validate new requests, since nonce is one-time use
-- $this->validate_request($req);
-- common_debug('showing form', __FILE__);
-- $this->store_request($req);
-- $this->show_form($req);
-- } catch (OAuthException $e) {
-- $this->clear_request();
-- $this->client_error($e->getMessage());
-- return;
-- }
-+ common_debug('redirecting to login', __FILE__);
-+ common_redirect(common_local_url('login'));
-+ return;
-+ }
-+ try {
-+ # this must be a new request
-+ common_debug('getting new request', __FILE__);
-+ $req = $this->get_new_request();
-+ if (!$req) {
-+ $this->client_error(_('No request found!'));
-+ }
-+ common_debug('validating request', __FILE__);
-+ # XXX: only validate new requests, since nonce is one-time use
-+ $this->validate_request($req);
-+ common_debug('showing form', __FILE__);
-+ $this->store_request($req);
-+ $this->show_form($req);
-+ } catch (OAuthException $e) {
-+ $this->clear_request();
-+ $this->client_error($e->getMessage());
-+ return;
-+ }
-hunk ./actions/userauthorization.php 69
-- }
-- }
-+ }
-+ }
-hunk ./actions/userauthorization.php 72
-- function show_form($req) {
-+ function show_form($req) {
-hunk ./actions/userauthorization.php 74
-- $nickname = $req->get_parameter('omb_listenee_nickname');
-- $profile = $req->get_parameter('omb_listenee_profile');
-- $license = $req->get_parameter('omb_listenee_license');
-- $fullname = $req->get_parameter('omb_listenee_fullname');
-- $homepage = $req->get_parameter('omb_listenee_homepage');
-- $bio = $req->get_parameter('omb_listenee_bio');
-- $location = $req->get_parameter('omb_listenee_location');
-- $avatar = $req->get_parameter('omb_listenee_avatar');
-+ $nickname = $req->get_parameter('omb_listenee_nickname');
-+ $profile = $req->get_parameter('omb_listenee_profile');
-+ $license = $req->get_parameter('omb_listenee_license');
-+ $fullname = $req->get_parameter('omb_listenee_fullname');
-+ $homepage = $req->get_parameter('omb_listenee_homepage');
-+ $bio = $req->get_parameter('omb_listenee_bio');
-+ $location = $req->get_parameter('omb_listenee_location');
-+ $avatar = $req->get_parameter('omb_listenee_avatar');
-hunk ./actions/userauthorization.php 83
-- common_show_header(_('Authorize subscription'));
-- common_element('p', NULL, _('Please check these details to make sure '.
-- 'that you want to subscribe to this user\'s notices. '.
-- 'If you didn\'t just ask to subscribe to someone\'s notices, '.
-- 'click "Cancel".'));
-- common_element_start('div', 'profile');
-- if ($avatar) {
-- common_element('img', array('src' => $avatar,
-- 'class' => 'avatar profile',
-- 'width' => AVATAR_PROFILE_SIZE,
-- 'height' => AVATAR_PROFILE_SIZE,
-- 'alt' => $nickname));
-- }
-- common_element('a', array('href' => $profile,
-- 'class' => 'external profile nickname'),
-- $nickname);
-- if ($fullname) {
-- common_element_start('div', 'fullname');
-- if ($homepage) {
-- common_element('a', array('href' => $homepage),
-- $fullname);
-- } else {
-- common_text($fullname);
-- }
-- common_element_end('div');
-- }
-- if ($location) {
-- common_element('div', 'location', $location);
-- }
-- if ($bio) {
-- common_element('div', 'bio', $bio);
-- }
-- common_element_start('div', 'license');
-- common_element('a', array('href' => $license,
-- 'class' => 'license'),
-- $license);
-- common_element_end('div');
-- common_element_end('div');
-- common_element_start('form', array('method' => 'post',
-- 'id' => 'userauthorization',
-- 'name' => 'userauthorization',
-- 'action' => common_local_url('userauthorization')));
-- common_hidden('token', common_session_token());
-- common_submit('accept', _('Accept'));
-- common_submit('reject', _('Reject'));
-- common_element_end('form');
-- common_show_footer();
-- }
-+ common_show_header(_('Authorize subscription'));
-+ common_element('p', NULL, _('Please check these details to make sure '.
-+ 'that you want to subscribe to this user\'s notices. '.
-+ 'If you didn\'t just ask to subscribe to someone\'s notices, '.
-+ 'click "Cancel".'));
-+ common_element_start('div', 'profile');
-+ if ($avatar) {
-+ common_element('img', array('src' => $avatar,
-+ 'class' => 'avatar profile',
-+ 'width' => AVATAR_PROFILE_SIZE,
-+ 'height' => AVATAR_PROFILE_SIZE,
-+ 'alt' => $nickname));
-+ }
-+ common_element('a', array('href' => $profile,
-+ 'class' => 'external profile nickname'),
-+ $nickname);
-+ if ($fullname) {
-+ common_element_start('div', 'fullname');
-+ if ($homepage) {
-+ common_element('a', array('href' => $homepage),
-+ $fullname);
-+ } else {
-+ common_text($fullname);
-+ }
-+ common_element_end('div');
-+ }
-+ if ($location) {
-+ common_element('div', 'location', $location);
-+ }
-+ if ($bio) {
-+ common_element('div', 'bio', $bio);
-+ }
-+ common_element_start('div', 'license');
-+ common_element('a', array('href' => $license,
-+ 'class' => 'license'),
-+ $license);
-+ common_element_end('div');
-+ common_element_end('div');
-+ common_element_start('form', array('method' => 'post',
-+ 'id' => 'userauthorization',
-+ 'name' => 'userauthorization',
-+ 'action' => common_local_url('userauthorization')));
-+ common_hidden('token', common_session_token());
-+ common_submit('accept', _('Accept'));
-+ common_submit('reject', _('Reject'));
-+ common_element_end('form');
-+ common_show_footer();
-+ }
-hunk ./actions/userauthorization.php 132
-- function send_authorization() {
-- $req = $this->get_stored_request();
-+ function send_authorization() {
-+ $req = $this->get_stored_request();
-hunk ./actions/userauthorization.php 135
-- if (!$req) {
-- common_user_error(_('No authorization request!'));
-- return;
-- }
-+ if (!$req) {
-+ common_user_error(_('No authorization request!'));
-+ return;
-+ }
-hunk ./actions/userauthorization.php 140
-- $callback = $req->get_parameter('oauth_callback');
-+ $callback = $req->get_parameter('oauth_callback');
-hunk ./actions/userauthorization.php 142
-- if ($this->arg('accept')) {
-- if (!$this->authorize_token($req)) {
-- $this->client_error(_('Error authorizing token'));
-- }
-- if (!$this->save_remote_profile($req)) {
-- $this->client_error(_('Error saving remote profile'));
-- }
-- if (!$callback) {
-- $this->show_accept_message($req->get_parameter('oauth_token'));
-- } else {
-- $params = array();
-- $params['oauth_token'] = $req->get_parameter('oauth_token');
-- $params['omb_version'] = OMB_VERSION_01;
-- $user = User::staticGet('uri', $req->get_parameter('omb_listener'));
-- $profile = $user->getProfile();
-- if (!$profile) {
-- common_log_db_error($user, 'SELECT', __FILE__);
-- $this->server_error(_('User without matching profile'));
-- return;
-- }
-- $params['omb_listener_nickname'] = $user->nickname;
-- $params['omb_listener_profile'] = common_local_url('showstream',
-- array('nickname' => $user->nickname));
-- if ($profile->fullname) {
-- $params['omb_listener_fullname'] = $profile->fullname;
-- }
-- if ($profile->homepage) {
-- $params['omb_listener_homepage'] = $profile->homepage;
-- }
-- if ($profile->bio) {
-- $params['omb_listener_bio'] = $profile->bio;
-- }
-- if ($profile->location) {
-- $params['omb_listener_location'] = $profile->location;
-- }
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- if ($avatar) {
-- $params['omb_listener_avatar'] = $avatar->url;
-- }
-- $parts = array();
-- foreach ($params as $k => $v) {
-- $parts[] = $k . '=' . OAuthUtil::urlencodeRFC3986($v);
-- }
-- $query_string = implode('&', $parts);
-- $parsed = parse_url($callback);
-- $url = $callback . (($parsed['query']) ? '&' : '?') . $query_string;
-- common_redirect($url, 303);
-- }
-- } else {
-- if (!$callback) {
-- $this->show_reject_message();
-- } else {
-- # XXX: not 100% sure how to signal failure... just redirect without token?
-- common_redirect($callback, 303);
-- }
-- }
-- }
-+ if ($this->arg('accept')) {
-+ if (!$this->authorize_token($req)) {
-+ $this->client_error(_('Error authorizing token'));
-+ }
-+ if (!$this->save_remote_profile($req)) {
-+ $this->client_error(_('Error saving remote profile'));
-+ }
-+ if (!$callback) {
-+ $this->show_accept_message($req->get_parameter('oauth_token'));
-+ } else {
-+ $params = array();
-+ $params['oauth_token'] = $req->get_parameter('oauth_token');
-+ $params['omb_version'] = OMB_VERSION_01;
-+ $user = User::staticGet('uri', $req->get_parameter('omb_listener'));
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ common_log_db_error($user, 'SELECT', __FILE__);
-+ $this->server_error(_('User without matching profile'));
-+ return;
-+ }
-+ $params['omb_listener_nickname'] = $user->nickname;
-+ $params['omb_listener_profile'] = common_local_url('showstream',
-+ array('nickname' => $user->nickname));
-+ if ($profile->fullname) {
-+ $params['omb_listener_fullname'] = $profile->fullname;
-+ }
-+ if ($profile->homepage) {
-+ $params['omb_listener_homepage'] = $profile->homepage;
-+ }
-+ if ($profile->bio) {
-+ $params['omb_listener_bio'] = $profile->bio;
-+ }
-+ if ($profile->location) {
-+ $params['omb_listener_location'] = $profile->location;
-+ }
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ if ($avatar) {
-+ $params['omb_listener_avatar'] = $avatar->url;
-+ }
-+ $parts = array();
-+ foreach ($params as $k => $v) {
-+ $parts[] = $k . '=' . OAuthUtil::urlencodeRFC3986($v);
-+ }
-+ $query_string = implode('&', $parts);
-+ $parsed = parse_url($callback);
-+ $url = $callback . (($parsed['query']) ? '&' : '?') . $query_string;
-+ common_redirect($url, 303);
-+ }
-+ } else {
-+ if (!$callback) {
-+ $this->show_reject_message();
-+ } else {
-+ # XXX: not 100% sure how to signal failure... just redirect without token?
-+ common_redirect($callback, 303);
-+ }
-+ }
-+ }
-hunk ./actions/userauthorization.php 200
-- function authorize_token(&$req) {
-- $consumer_key = $req->get_parameter('oauth_consumer_key');
-- $token_field = $req->get_parameter('oauth_token');
-- common_debug('consumer key = "'.$consumer_key.'"', __FILE__);
-- common_debug('token field = "'.$token_field.'"', __FILE__);
-- $rt = new Token();
-- $rt->consumer_key = $consumer_key;
-- $rt->tok = $token_field;
-- $rt->type = 0;
-- $rt->state = 0;
-- common_debug('request token to look up: "'.print_r($rt,TRUE).'"');
-- if ($rt->find(true)) {
-- common_debug('found request token to authorize', __FILE__);
-- $orig_rt = clone($rt);
-- $rt->state = 1; # Authorized but not used
-- if ($rt->update($orig_rt)) {
-- common_debug('updated request token so it is authorized', __FILE__);
-- return true;
-- }
-- }
-- return FALSE;
-- }
-+ function authorize_token(&$req) {
-+ $consumer_key = $req->get_parameter('oauth_consumer_key');
-+ $token_field = $req->get_parameter('oauth_token');
-+ common_debug('consumer key = "'.$consumer_key.'"', __FILE__);
-+ common_debug('token field = "'.$token_field.'"', __FILE__);
-+ $rt = new Token();
-+ $rt->consumer_key = $consumer_key;
-+ $rt->tok = $token_field;
-+ $rt->type = 0;
-+ $rt->state = 0;
-+ common_debug('request token to look up: "'.print_r($rt,TRUE).'"');
-+ if ($rt->find(true)) {
-+ common_debug('found request token to authorize', __FILE__);
-+ $orig_rt = clone($rt);
-+ $rt->state = 1; # Authorized but not used
-+ if ($rt->update($orig_rt)) {
-+ common_debug('updated request token so it is authorized', __FILE__);
-+ return true;
-+ }
-+ }
-+ return FALSE;
-+ }
-hunk ./actions/userauthorization.php 223
-- # XXX: refactor with similar code in finishremotesubscribe.php
-+ # XXX: refactor with similar code in finishremotesubscribe.php
-hunk ./actions/userauthorization.php 225
-- function save_remote_profile(&$req) {
-- # FIXME: we should really do this when the consumer comes
-- # back for an access token. If they never do, we've got stuff in a
-- # weird state.
-+ function save_remote_profile(&$req) {
-+ # FIXME: we should really do this when the consumer comes
-+ # back for an access token. If they never do, we've got stuff in a
-+ # weird state.
-hunk ./actions/userauthorization.php 230
-- $nickname = $req->get_parameter('omb_listenee_nickname');
-- $fullname = $req->get_parameter('omb_listenee_fullname');
-- $profile_url = $req->get_parameter('omb_listenee_profile');
-- $homepage = $req->get_parameter('omb_listenee_homepage');
-- $bio = $req->get_parameter('omb_listenee_bio');
-- $location = $req->get_parameter('omb_listenee_location');
-- $avatar_url = $req->get_parameter('omb_listenee_avatar');
-+ $nickname = $req->get_parameter('omb_listenee_nickname');
-+ $fullname = $req->get_parameter('omb_listenee_fullname');
-+ $profile_url = $req->get_parameter('omb_listenee_profile');
-+ $homepage = $req->get_parameter('omb_listenee_homepage');
-+ $bio = $req->get_parameter('omb_listenee_bio');
-+ $location = $req->get_parameter('omb_listenee_location');
-+ $avatar_url = $req->get_parameter('omb_listenee_avatar');
-hunk ./actions/userauthorization.php 238
-- $listenee = $req->get_parameter('omb_listenee');
-- $remote = Remote_profile::staticGet('uri', $listenee);
-+ $listenee = $req->get_parameter('omb_listenee');
-+ $remote = Remote_profile::staticGet('uri', $listenee);
-hunk ./actions/userauthorization.php 241
-- if ($remote) {
-- $exists = true;
-- $profile = Profile::staticGet($remote->id);
-- $orig_remote = clone($remote);
-- $orig_profile = clone($profile);
-- } else {
-- $exists = false;
-- $remote = new Remote_profile();
-- $remote->uri = $listenee;
-- $profile = new Profile();
-- }
-+ if ($remote) {
-+ $exists = true;
-+ $profile = Profile::staticGet($remote->id);
-+ $orig_remote = clone($remote);
-+ $orig_profile = clone($profile);
-+ } else {
-+ $exists = false;
-+ $remote = new Remote_profile();
-+ $remote->uri = $listenee;
-+ $profile = new Profile();
-+ }
-hunk ./actions/userauthorization.php 253
-- $profile->nickname = $nickname;
-- $profile->profileurl = $profile_url;
-+ $profile->nickname = $nickname;
-+ $profile->profileurl = $profile_url;
-hunk ./actions/userauthorization.php 256
-- if ($fullname) {
-- $profile->fullname = $fullname;
-- }
-- if ($homepage) {
-- $profile->homepage = $homepage;
-- }
-- if ($bio) {
-- $profile->bio = $bio;
-- }
-- if ($location) {
-- $profile->location = $location;
-- }
-+ if ($fullname) {
-+ $profile->fullname = $fullname;
-+ }
-+ if ($homepage) {
-+ $profile->homepage = $homepage;
-+ }
-+ if ($bio) {
-+ $profile->bio = $bio;
-+ }
-+ if ($location) {
-+ $profile->location = $location;
-+ }
-hunk ./actions/userauthorization.php 269
-- if ($exists) {
-- $profile->update($orig_profile);
-- } else {
-- $profile->created = DB_DataObject_Cast::dateTime(); # current time
-- $id = $profile->insert();
-- if (!$id) {
-- return FALSE;
-- }
-- $remote->id = $id;
-- }
-+ if ($exists) {
-+ $profile->update($orig_profile);
-+ } else {
-+ $profile->created = DB_DataObject_Cast::dateTime(); # current time
-+ $id = $profile->insert();
-+ if (!$id) {
-+ return FALSE;
-+ }
-+ $remote->id = $id;
-+ }
-hunk ./actions/userauthorization.php 280
-- if ($exists) {
-- if (!$remote->update($orig_remote)) {
-- return FALSE;
-- }
-- } else {
-- $remote->created = DB_DataObject_Cast::dateTime(); # current time
-- if (!$remote->insert()) {
-- return FALSE;
-- }
-- }
-+ if ($exists) {
-+ if (!$remote->update($orig_remote)) {
-+ return FALSE;
-+ }
-+ } else {
-+ $remote->created = DB_DataObject_Cast::dateTime(); # current time
-+ if (!$remote->insert()) {
-+ return FALSE;
-+ }
-+ }
-hunk ./actions/userauthorization.php 291
-- if ($avatar_url) {
-- if (!$this->add_avatar($profile, $avatar_url)) {
-- return FALSE;
-- }
-- }
-+ if ($avatar_url) {
-+ if (!$this->add_avatar($profile, $avatar_url)) {
-+ return FALSE;
-+ }
-+ }
-hunk ./actions/userauthorization.php 297
-- $user = common_current_user();
-- $datastore = omb_oauth_datastore();
-- $consumer = $this->get_consumer($datastore, $req);
-- $token = $this->get_token($datastore, $req, $consumer);
-+ $user = common_current_user();
-+ $datastore = omb_oauth_datastore();
-+ $consumer = $this->get_consumer($datastore, $req);
-+ $token = $this->get_token($datastore, $req, $consumer);
-hunk ./actions/userauthorization.php 302
-- $sub = new Subscription();
-- $sub->subscriber = $user->id;
-- $sub->subscribed = $remote->id;
-- $sub->token = $token->key; # NOTE: request token, not valid for use!
-- $sub->created = DB_DataObject_Cast::dateTime(); # current time
-+ $sub = new Subscription();
-+ $sub->subscriber = $user->id;
-+ $sub->subscribed = $remote->id;
-+ $sub->token = $token->key; # NOTE: request token, not valid for use!
-+ $sub->created = DB_DataObject_Cast::dateTime(); # current time
-hunk ./actions/userauthorization.php 308
-- if (!$sub->insert()) {
-- return FALSE;
-- }
-+ if (!$sub->insert()) {
-+ return FALSE;
-+ }
-hunk ./actions/userauthorization.php 312
-- return TRUE;
-- }
-+ return TRUE;
-+ }
-hunk ./actions/userauthorization.php 315
-- function add_avatar($profile, $url) {
-- $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar');
-- copy($url, $temp_filename);
-- return $profile->setOriginal($temp_filename);
-- }
-+ function add_avatar($profile, $url) {
-+ $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar');
-+ copy($url, $temp_filename);
-+ return $profile->setOriginal($temp_filename);
-+ }
-hunk ./actions/userauthorization.php 321
-- function show_accept_message($tok) {
-- common_show_header(_('Subscription authorized'));
-- common_element('p', NULL,
-- _('The subscription has been authorized, but no '.
-- 'callback URL was passed. Check with the site\'s instructions for '.
-- 'details on how to authorize the subscription. Your subscription token is:'));
-- common_element('blockquote', 'token', $tok);
-- common_show_footer();
-- }
-+ function show_accept_message($tok) {
-+ common_show_header(_('Subscription authorized'));
-+ common_element('p', NULL,
-+ _('The subscription has been authorized, but no '.
-+ 'callback URL was passed. Check with the site\'s instructions for '.
-+ 'details on how to authorize the subscription. Your subscription token is:'));
-+ common_element('blockquote', 'token', $tok);
-+ common_show_footer();
-+ }
-hunk ./actions/userauthorization.php 331
-- function show_reject_message($tok) {
-- common_show_header(_('Subscription rejected'));
-- common_element('p', NULL,
-- _('The subscription has been rejected, but no '.
-- 'callback URL was passed. Check with the site\'s instructions for '.
-- 'details on how to fully reject the subscription.'));
-- common_show_footer();
-- }
-+ function show_reject_message($tok) {
-+ common_show_header(_('Subscription rejected'));
-+ common_element('p', NULL,
-+ _('The subscription has been rejected, but no '.
-+ 'callback URL was passed. Check with the site\'s instructions for '.
-+ 'details on how to fully reject the subscription.'));
-+ common_show_footer();
-+ }
-hunk ./actions/userauthorization.php 340
-- function store_request($req) {
-- common_ensure_session();
-- $_SESSION['userauthorizationrequest'] = $req;
-- }
-+ function store_request($req) {
-+ common_ensure_session();
-+ $_SESSION['userauthorizationrequest'] = $req;
-+ }
-hunk ./actions/userauthorization.php 345
-- function clear_request() {
-- common_ensure_session();
-- unset($_SESSION['userauthorizationrequest']);
-- }
-+ function clear_request() {
-+ common_ensure_session();
-+ unset($_SESSION['userauthorizationrequest']);
-+ }
-hunk ./actions/userauthorization.php 350
-- function get_stored_request() {
-- common_ensure_session();
-- $req = $_SESSION['userauthorizationrequest'];
-- return $req;
-- }
-+ function get_stored_request() {
-+ common_ensure_session();
-+ $req = $_SESSION['userauthorizationrequest'];
-+ return $req;
-+ }
-hunk ./actions/userauthorization.php 356
-- function get_new_request() {
-- common_remove_magic_from_request();
-- $req = OAuthRequest::from_request();
-- return $req;
-- }
-+ function get_new_request() {
-+ common_remove_magic_from_request();
-+ $req = OAuthRequest::from_request();
-+ return $req;
-+ }
-hunk ./actions/userauthorization.php 362
-- # Throws an OAuthException if anything goes wrong
-+ # Throws an OAuthException if anything goes wrong
-hunk ./actions/userauthorization.php 364
-- function validate_request(&$req) {
-- # OAuth stuff -- have to copy from OAuth.php since they're
-- # all private methods, and there's no user-authentication method
-- common_debug('checking version', __FILE__);
-- $this->check_version($req);
-- common_debug('getting datastore', __FILE__);
-- $datastore = omb_oauth_datastore();
-- common_debug('getting consumer', __FILE__);
-- $consumer = $this->get_consumer($datastore, $req);
-- common_debug('getting token', __FILE__);
-- $token = $this->get_token($datastore, $req, $consumer);
-- common_debug('checking timestamp', __FILE__);
-- $this->check_timestamp($req);
-- common_debug('checking nonce', __FILE__);
-- $this->check_nonce($datastore, $req, $consumer, $token);
-- common_debug('checking signature', __FILE__);
-- $this->check_signature($req, $consumer, $token);
-- common_debug('validating omb stuff', __FILE__);
-- $this->validate_omb($req);
-- common_debug('done validating', __FILE__);
-- return true;
-- }
-+ function validate_request(&$req) {
-+ # OAuth stuff -- have to copy from OAuth.php since they're
-+ # all private methods, and there's no user-authentication method
-+ common_debug('checking version', __FILE__);
-+ $this->check_version($req);
-+ common_debug('getting datastore', __FILE__);
-+ $datastore = omb_oauth_datastore();
-+ common_debug('getting consumer', __FILE__);
-+ $consumer = $this->get_consumer($datastore, $req);
-+ common_debug('getting token', __FILE__);
-+ $token = $this->get_token($datastore, $req, $consumer);
-+ common_debug('checking timestamp', __FILE__);
-+ $this->check_timestamp($req);
-+ common_debug('checking nonce', __FILE__);
-+ $this->check_nonce($datastore, $req, $consumer, $token);
-+ common_debug('checking signature', __FILE__);
-+ $this->check_signature($req, $consumer, $token);
-+ common_debug('validating omb stuff', __FILE__);
-+ $this->validate_omb($req);
-+ common_debug('done validating', __FILE__);
-+ return true;
-+ }
-hunk ./actions/userauthorization.php 387
-- function validate_omb(&$req) {
-- foreach (array('omb_version', 'omb_listener', 'omb_listenee',
-- 'omb_listenee_profile', 'omb_listenee_nickname',
-- 'omb_listenee_license') as $param)
-- {
-- if (!$req->get_parameter($param)) {
-- throw new OAuthException("Required parameter '$param' not found");
-- }
-- }
-- # Now, OMB stuff
-- $version = $req->get_parameter('omb_version');
-- if ($version != OMB_VERSION_01) {
-- throw new OAuthException("OpenMicroBlogging version '$version' not supported");
-- }
-- $listener = $req->get_parameter('omb_listener');
-- $user = User::staticGet('uri', $listener);
-- if (!$user) {
-- throw new OAuthException("Listener URI '$listener' not found here");
-- }
-- $cur = common_current_user();
-- if ($cur->id != $user->id) {
-- throw new OAuthException("Can't add for another user!");
-- }
-- $listenee = $req->get_parameter('omb_listenee');
-- if (!Validate::uri($listenee) &&
-- !common_valid_tag($listenee)) {
-- throw new OAuthException("Listenee URI '$listenee' not a recognizable URI");
-- }
-- if (strlen($listenee) > 255) {
-- throw new OAuthException("Listenee URI '$listenee' too long");
-- }
-+ function validate_omb(&$req) {
-+ foreach (array('omb_version', 'omb_listener', 'omb_listenee',
-+ 'omb_listenee_profile', 'omb_listenee_nickname',
-+ 'omb_listenee_license') as $param)
-+ {
-+ if (!$req->get_parameter($param)) {
-+ throw new OAuthException("Required parameter '$param' not found");
-+ }
-+ }
-+ # Now, OMB stuff
-+ $version = $req->get_parameter('omb_version');
-+ if ($version != OMB_VERSION_01) {
-+ throw new OAuthException("OpenMicroBlogging version '$version' not supported");
-+ }
-+ $listener = $req->get_parameter('omb_listener');
-+ $user = User::staticGet('uri', $listener);
-+ if (!$user) {
-+ throw new OAuthException("Listener URI '$listener' not found here");
-+ }
-+ $cur = common_current_user();
-+ if ($cur->id != $user->id) {
-+ throw new OAuthException("Can't add for another user!");
-+ }
-+ $listenee = $req->get_parameter('omb_listenee');
-+ if (!Validate::uri($listenee) &&
-+ !common_valid_tag($listenee)) {
-+ throw new OAuthException("Listenee URI '$listenee' not a recognizable URI");
-+ }
-+ if (strlen($listenee) > 255) {
-+ throw new OAuthException("Listenee URI '$listenee' too long");
-+ }
-hunk ./actions/userauthorization.php 419
-- $other = User::staticGet('uri', $listenee);
-- if ($other) {
-- throw new OAuthException("Listenee URI '$listenee' is local user");
-- }
-+ $other = User::staticGet('uri', $listenee);
-+ if ($other) {
-+ throw new OAuthException("Listenee URI '$listenee' is local user");
-+ }
-hunk ./actions/userauthorization.php 424
-- $remote = Remote_profile::staticGet('uri', $listenee);
-- if ($remote) {
-- $sub = new Subscription();
-- $sub->subscriber = $user->id;
-- $sub->subscribed = $remote->id;
-- if ($sub->find(TRUE)) {
-- throw new OAuthException("Already subscribed to user!");
-- }
-- }
-- $nickname = $req->get_parameter('omb_listenee_nickname');
-- if (!Validate::string($nickname, array('min_length' => 1,
-- 'max_length' => 64,
-- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-- throw new OAuthException('Nickname must have only letters and numbers and no spaces.');
-- }
-- $profile = $req->get_parameter('omb_listenee_profile');
-- if (!common_valid_http_url($profile)) {
-- throw new OAuthException("Invalid profile URL '$profile'.");
-- }
-+ $remote = Remote_profile::staticGet('uri', $listenee);
-+ if ($remote) {
-+ $sub = new Subscription();
-+ $sub->subscriber = $user->id;
-+ $sub->subscribed = $remote->id;
-+ if ($sub->find(TRUE)) {
-+ throw new OAuthException("Already subscribed to user!");
-+ }
-+ }
-+ $nickname = $req->get_parameter('omb_listenee_nickname');
-+ if (!Validate::string($nickname, array('min_length' => 1,
-+ 'max_length' => 64,
-+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
-+ throw new OAuthException('Nickname must have only letters and numbers and no spaces.');
-+ }
-+ $profile = $req->get_parameter('omb_listenee_profile');
-+ if (!common_valid_http_url($profile)) {
-+ throw new OAuthException("Invalid profile URL '$profile'.");
-+ }
-hunk ./actions/userauthorization.php 444
-- if ($profile == common_local_url('showstream', array('nickname' => $nickname))) {
-- throw new OAuthException("Profile URL '$profile' is for a local user.");
-- }
-+ if ($profile == common_local_url('showstream', array('nickname' => $nickname))) {
-+ throw new OAuthException("Profile URL '$profile' is for a local user.");
-+ }
-hunk ./actions/userauthorization.php 448
-- $license = $req->get_parameter('omb_listenee_license');
-- if (!common_valid_http_url($license)) {
-- throw new OAuthException("Invalid license URL '$license'.");
-- }
-- $site_license = common_config('license', 'url');
-- if (!common_compatible_license($license, $site_license)) {
-- throw new OAuthException("Listenee stream license '$license' not compatible with site license '$site_license'.");
-- }
-- # optional stuff
-- $fullname = $req->get_parameter('omb_listenee_fullname');
-- if ($fullname && strlen($fullname) > 255) {
-- throw new OAuthException("Full name '$fullname' too long.");
-- }
-- $homepage = $req->get_parameter('omb_listenee_homepage');
-- if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) {
-- throw new OAuthException("Invalid homepage '$homepage'");
-- }
-- $bio = $req->get_parameter('omb_listenee_bio');
-- if ($bio && strlen($bio) > 140) {
-- throw new OAuthException("Bio too long '$bio'");
-- }
-- $location = $req->get_parameter('omb_listenee_location');
-- if ($location && strlen($location) > 255) {
-- throw new OAuthException("Location too long '$location'");
-- }
-- $avatar = $req->get_parameter('omb_listenee_avatar');
-- if ($avatar) {
-- if (!common_valid_http_url($avatar) || strlen($avatar) > 255) {
-- throw new OAuthException("Invalid avatar URL '$avatar'");
-- }
-- $size = @getimagesize($avatar);
-- if (!$size) {
-- throw new OAuthException("Can't read avatar URL '$avatar'");
-- }
-- if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) {
-- throw new OAuthException("Wrong size image at '$avatar'");
-- }
-- if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG,
-- IMAGETYPE_PNG))) {
-- throw new OAuthException("Wrong image type for '$avatar'");
-- }
-- }
-- $callback = $req->get_parameter('oauth_callback');
-- if ($callback && !common_valid_http_url($callback)) {
-- throw new OAuthException("Invalid callback URL '$callback'");
-- }
-- if ($callback && $callback == common_local_url('finishremotesubscribe')) {
-- throw new OAuthException("Callback URL '$callback' is for local site.");
-- }
-- }
-+ $license = $req->get_parameter('omb_listenee_license');
-+ if (!common_valid_http_url($license)) {
-+ throw new OAuthException("Invalid license URL '$license'.");
-+ }
-+ $site_license = common_config('license', 'url');
-+ if (!common_compatible_license($license, $site_license)) {
-+ throw new OAuthException("Listenee stream license '$license' not compatible with site license '$site_license'.");
-+ }
-+ # optional stuff
-+ $fullname = $req->get_parameter('omb_listenee_fullname');
-+ if ($fullname && strlen($fullname) > 255) {
-+ throw new OAuthException("Full name '$fullname' too long.");
-+ }
-+ $homepage = $req->get_parameter('omb_listenee_homepage');
-+ if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) {
-+ throw new OAuthException("Invalid homepage '$homepage'");
-+ }
-+ $bio = $req->get_parameter('omb_listenee_bio');
-+ if ($bio && strlen($bio) > 140) {
-+ throw new OAuthException("Bio too long '$bio'");
-+ }
-+ $location = $req->get_parameter('omb_listenee_location');
-+ if ($location && strlen($location) > 255) {
-+ throw new OAuthException("Location too long '$location'");
-+ }
-+ $avatar = $req->get_parameter('omb_listenee_avatar');
-+ if ($avatar) {
-+ if (!common_valid_http_url($avatar) || strlen($avatar) > 255) {
-+ throw new OAuthException("Invalid avatar URL '$avatar'");
-+ }
-+ $size = @getimagesize($avatar);
-+ if (!$size) {
-+ throw new OAuthException("Can't read avatar URL '$avatar'");
-+ }
-+ if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) {
-+ throw new OAuthException("Wrong size image at '$avatar'");
-+ }
-+ if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG,
-+ IMAGETYPE_PNG))) {
-+ throw new OAuthException("Wrong image type for '$avatar'");
-+ }
-+ }
-+ $callback = $req->get_parameter('oauth_callback');
-+ if ($callback && !common_valid_http_url($callback)) {
-+ throw new OAuthException("Invalid callback URL '$callback'");
-+ }
-+ if ($callback && $callback == common_local_url('finishremotesubscribe')) {
-+ throw new OAuthException("Callback URL '$callback' is for local site.");
-+ }
-+ }
-hunk ./actions/userauthorization.php 499
-- # Snagged from OAuthServer
-+ # Snagged from OAuthServer
-hunk ./actions/userauthorization.php 501
-- function check_version(&$req) {
-- $version = $req->get_parameter("oauth_version");
-- if (!$version) {
-- $version = 1.0;
-- }
-- if ($version != 1.0) {
-- throw new OAuthException("OAuth version '$version' not supported");
-- }
-- return $version;
-- }
-+ function check_version(&$req) {
-+ $version = $req->get_parameter("oauth_version");
-+ if (!$version) {
-+ $version = 1.0;
-+ }
-+ if ($version != 1.0) {
-+ throw new OAuthException("OAuth version '$version' not supported");
-+ }
-+ return $version;
-+ }
-hunk ./actions/userauthorization.php 512
-- # Snagged from OAuthServer
-+ # Snagged from OAuthServer
-hunk ./actions/userauthorization.php 514
-- function get_consumer($datastore, $req) {
-- $consumer_key = @$req->get_parameter("oauth_consumer_key");
-- if (!$consumer_key) {
-- throw new OAuthException("Invalid consumer key");
-- }
-+ function get_consumer($datastore, $req) {
-+ $consumer_key = @$req->get_parameter("oauth_consumer_key");
-+ if (!$consumer_key) {
-+ throw new OAuthException("Invalid consumer key");
-+ }
-hunk ./actions/userauthorization.php 520
-- $consumer = $datastore->lookup_consumer($consumer_key);
-- if (!$consumer) {
-- throw new OAuthException("Invalid consumer");
-- }
-- return $consumer;
-- }
-+ $consumer = $datastore->lookup_consumer($consumer_key);
-+ if (!$consumer) {
-+ throw new OAuthException("Invalid consumer");
-+ }
-+ return $consumer;
-+ }
-hunk ./actions/userauthorization.php 527
-- # Mostly cadged from OAuthServer
-+ # Mostly cadged from OAuthServer
-hunk ./actions/userauthorization.php 529
-- function get_token($datastore, &$req, $consumer) {/*{{{*/
-- $token_field = @$req->get_parameter('oauth_token');
-- $token = $datastore->lookup_token($consumer, 'request', $token_field);
-- if (!$token) {
-- throw new OAuthException("Invalid $token_type token: $token_field");
-- }
-- return $token;
-- }
-+ function get_token($datastore, &$req, $consumer) {/*{{{*/
-+ $token_field = @$req->get_parameter('oauth_token');
-+ $token = $datastore->lookup_token($consumer, 'request', $token_field);
-+ if (!$token) {
-+ throw new OAuthException("Invalid $token_type token: $token_field");
-+ }
-+ return $token;
-+ }
-hunk ./actions/userauthorization.php 538
-- function check_timestamp(&$req) {
-- $timestamp = @$req->get_parameter('oauth_timestamp');
-- $now = time();
-- if ($now - $timestamp > TIMESTAMP_THRESHOLD) {
-- throw new OAuthException("Expired timestamp, yours $timestamp, ours $now");
-- }
-- }
-+ function check_timestamp(&$req) {
-+ $timestamp = @$req->get_parameter('oauth_timestamp');
-+ $now = time();
-+ if ($now - $timestamp > TIMESTAMP_THRESHOLD) {
-+ throw new OAuthException("Expired timestamp, yours $timestamp, ours $now");
-+ }
-+ }
-hunk ./actions/userauthorization.php 546
-- # NOTE: don't call twice on the same request; will fail!
-- function check_nonce(&$datastore, &$req, $consumer, $token) {
-- $timestamp = @$req->get_parameter('oauth_timestamp');
-- $nonce = @$req->get_parameter('oauth_nonce');
-- $found = $datastore->lookup_nonce($consumer, $token, $nonce, $timestamp);
-- if ($found) {
-- throw new OAuthException("Nonce already used");
-- }
-- return true;
-- }
-+ # NOTE: don't call twice on the same request; will fail!
-+ function check_nonce(&$datastore, &$req, $consumer, $token) {
-+ $timestamp = @$req->get_parameter('oauth_timestamp');
-+ $nonce = @$req->get_parameter('oauth_nonce');
-+ $found = $datastore->lookup_nonce($consumer, $token, $nonce, $timestamp);
-+ if ($found) {
-+ throw new OAuthException("Nonce already used");
-+ }
-+ return true;
-+ }
-hunk ./actions/userauthorization.php 557
-- function check_signature(&$req, $consumer, $token) {
-- $signature_method = $this->get_signature_method($req);
-- $signature = $req->get_parameter('oauth_signature');
-- $valid_sig = $signature_method->check_signature($req,
-- $consumer,
-- $token,
-- $signature);
-- if (!$valid_sig) {
-- throw new OAuthException("Invalid signature");
-- }
-- }
-+ function check_signature(&$req, $consumer, $token) {
-+ $signature_method = $this->get_signature_method($req);
-+ $signature = $req->get_parameter('oauth_signature');
-+ $valid_sig = $signature_method->check_signature($req,
-+ $consumer,
-+ $token,
-+ $signature);
-+ if (!$valid_sig) {
-+ throw new OAuthException("Invalid signature");
-+ }
-+ }
-hunk ./actions/userauthorization.php 569
-- function get_signature_method(&$req) {
-- $signature_method = @$req->get_parameter("oauth_signature_method");
-- if (!$signature_method) {
-- $signature_method = "PLAINTEXT";
-- }
-- if ($signature_method != 'HMAC-SHA1') {
-- throw new OAuthException("Signature method '$signature_method' not supported.");
-- }
-- return omb_hmac_sha1();
-- }
-+ function get_signature_method(&$req) {
-+ $signature_method = @$req->get_parameter("oauth_signature_method");
-+ if (!$signature_method) {
-+ $signature_method = "PLAINTEXT";
-+ }
-+ if ($signature_method != 'HMAC-SHA1') {
-+ throw new OAuthException("Signature method '$signature_method' not supported.");
-+ }
-+ return omb_hmac_sha1();
-+ }
-hunk ./actions/userbyid.php 23
--
-- function is_readonly() {
-- return true;
-- }
--
-+
-+ function is_readonly() {
-+ return true;
-+ }
-+
-hunk ./actions/userbyid.php 32
-- $this->client_error(_('No id.'));
-- }
-- $user =& User::staticGet($id);
-- if (!$user) {
-- $this->client_error(_('No such user.'));
-+ $this->client_error(_('No id.'));
-+ }
-+ $user =& User::staticGet($id);
-+ if (!$user) {
-+ $this->client_error(_('No such user.'));
-hunk ./actions/userbyid.php 42
-- $type = common_negotiate_type(common_accept_to_prefs($httpaccept),
-+ $type = common_negotiate_type(common_accept_to_prefs($httpaccept),
-hunk ./actions/userbyid.php 44
-- $page = $type == 'application/rdf+xml' ? 'foaf' : 'showstream';
-+ $page = $type == 'application/rdf+xml' ? 'foaf' : 'showstream';
-hunk ./actions/userbyid.php 46
-- $url = common_local_url($page, array('nickname' => $user->nickname));
-- common_redirect($url, 303);
-- }
-+ $url = common_local_url($page, array('nickname' => $user->nickname));
-+ common_redirect($url, 303);
-+ }
+- common_element('h3', NULL, _('Twitter Friends'));
++ common_element('h3', null, _('Twitter Friends'));
+hunk ./actions/unblock.php 24
+- var $profile = NULL;
++ var $profile = null;
+hunk ./actions/userauthorization.php 84
+- common_element('p', NULL, _('Please check these details to make sure '.
++ common_element('p', null, _('Please check these details to make sure '.
+hunk ./actions/userauthorization.php 323
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/userauthorization.php 333
+- common_element('p', NULL,
++ common_element('p', null,
+hunk ./actions/userbyid.php 41
+- $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL;
++ $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null;
hunk ./actions/userrss.php 28
-- var $user = NULL;
-+ var $user = NULL;
-hunk ./actions/userrss.php 30
-- function init() {
-- $nickname = $this->trimmed('nickname');
-- $this->user = User::staticGet('nickname', $nickname);
-+ function init() {
-+ $nickname = $this->trimmed('nickname');
-+ $this->user = User::staticGet('nickname', $nickname);
-hunk ./actions/userrss.php 34
-- if (!$this->user) {
-- common_user_error(_('No such user.'));
-- return false;
-- } else {
-- return true;
-- }
-- }
-+ if (!$this->user) {
-+ common_user_error(_('No such user.'));
-+ return false;
-+ } else {
-+ return true;
-+ }
-+ }
-hunk ./actions/userrss.php 42
-- function get_notices($limit=0) {
-+ function get_notices($limit=0) {
-hunk ./actions/userrss.php 44
-- $user = $this->user;
--
-- if (is_null($user)) {
-- return NULL;
-- }
--
-- $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
--
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ $user = $this->user;
-+
-+ if (is_null($user)) {
-+ return NULL;
-+ }
-+
-+ $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit);
-+
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./actions/userrss.php 56
-- return $notices;
-- }
-+ return $notices;
-+ }
-hunk ./actions/userrss.php 59
-- function get_channel() {
-- $user = $this->user;
-- $profile = $user->getProfile();
-- $c = array('url' => common_local_url('userrss',
-- array('nickname' =>
-- $user->nickname)),
-- 'title' => $user->nickname,
-- 'link' => $profile->profileurl,
-- 'description' => sprintf(_('Microblog by %s'), $user->nickname));
-- return $c;
-- }
-+ function get_channel() {
-+ $user = $this->user;
-+ $profile = $user->getProfile();
-+ $c = array('url' => common_local_url('userrss',
-+ array('nickname' =>
-+ $user->nickname)),
-+ 'title' => $user->nickname,
-+ 'link' => $profile->profileurl,
-+ 'description' => sprintf(_('Microblog by %s'), $user->nickname));
-+ return $c;
-+ }
-hunk ./actions/userrss.php 71
-- function get_image() {
-- $user = $this->user;
-- $profile = $user->getProfile();
-- if (!$profile) {
-- common_log_db_error($user, 'SELECT', __FILE__);
-- $this->server_error(_('User without matching profile'));
-- return NULL;
-- }
-- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-- return ($avatar) ? $avatar->url : NULL;
-- }
-+ function get_image() {
-+ $user = $this->user;
-+ $profile = $user->getProfile();
-+ if (!$profile) {
-+ common_log_db_error($user, 'SELECT', __FILE__);
-+ $this->server_error(_('User without matching profile'));
-+ return NULL;
-+ }
-+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-+ return ($avatar) ? $avatar->url : NULL;
-+ }
-hunk ./actions/userrss.php 83
-- # override parent to add X-SUP-ID URL
--
-- function init_rss($limit=0) {
-- $url = common_local_url('sup', NULL, $this->user->id);
-- header('X-SUP-ID: '.$url);
-- parent::init_rss($limit);
-- }
-+ # override parent to add X-SUP-ID URL
-+
-+ function init_rss($limit=0) {
-+ $url = common_local_url('sup', NULL, $this->user->id);
-+ header('X-SUP-ID: '.$url);
-+ parent::init_rss($limit);
-+ }
-hunk ./actions/xrds.php 26
-- function is_readonly() {
-- return true;
-- }
-+ function is_readonly() {
-+ return true;
-+ }
-hunk ./actions/xrds.php 30
-- function handle($args) {
-- parent::handle($args);
-- $nickname = $this->trimmed('nickname');
-- $user = User::staticGet('nickname', $nickname);
-- if (!$user) {
-- common_user_error(_('No such user.'));
-- return;
-- }
-- $this->show_xrds($user);
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ $nickname = $this->trimmed('nickname');
-+ $user = User::staticGet('nickname', $nickname);
-+ if (!$user) {
-+ common_user_error(_('No such user.'));
-+ return;
-+ }
-+ $this->show_xrds($user);
-+ }
-hunk ./actions/xrds.php 41
-- function show_xrds($user) {
-+ function show_xrds($user) {
-hunk ./actions/xrds.php 43
-- header('Content-Type: application/xrds+xml');
-+ header('Content-Type: application/xrds+xml');
-hunk ./actions/xrds.php 45
-- common_start_xml();
-- common_element_start('XRDS', array('xmlns' => 'xri://$xrds'));
-+ common_start_xml();
-+ common_element_start('XRDS', array('xmlns' => 'xri://$xrds'));
-hunk ./actions/xrds.php 48
-- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-- 'xml:id' => 'oauth',
-- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-- 'version' => '2.0'));
-+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-+ 'xml:id' => 'oauth',
-+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-+ 'version' => '2.0'));
+- var $user = NULL;
++ var $user = null;
+hunk ./actions/userrss.php 47
+- return NULL;
++ return null;
+hunk ./actions/userrss.php 77
+- return NULL;
++ return null;
+hunk ./actions/userrss.php 80
+- return ($avatar) ? $avatar->url : NULL;
++ return ($avatar) ? $avatar->url : null;
+hunk ./actions/userrss.php 86
+- $url = common_local_url('sup', NULL, $this->user->id);
++ $url = common_local_url('sup', null, $this->user->id);
hunk ./actions/xrds.php 53
-- common_element('Type', NULL, 'xri://$xrds*simple');
-+ common_element('Type', NULL, 'xri://$xrds*simple');
-hunk ./actions/xrds.php 55
-- $this->show_service(OAUTH_ENDPOINT_REQUEST,
-- common_local_url('requesttoken'),
-- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-- array(OAUTH_HMAC_SHA1),
-- $user->uri);
-+ $this->show_service(OAUTH_ENDPOINT_REQUEST,
-+ common_local_url('requesttoken'),
-+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-+ array(OAUTH_HMAC_SHA1),
-+ $user->uri);
-hunk ./actions/xrds.php 61
-- $this->show_service(OAUTH_ENDPOINT_AUTHORIZE,
-- common_local_url('userauthorization'),
-- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-- array(OAUTH_HMAC_SHA1));
-+ $this->show_service(OAUTH_ENDPOINT_AUTHORIZE,
-+ common_local_url('userauthorization'),
-+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-+ array(OAUTH_HMAC_SHA1));
-hunk ./actions/xrds.php 66
-- $this->show_service(OAUTH_ENDPOINT_ACCESS,
-- common_local_url('accesstoken'),
-- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-- array(OAUTH_HMAC_SHA1));
-+ $this->show_service(OAUTH_ENDPOINT_ACCESS,
-+ common_local_url('accesstoken'),
-+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-+ array(OAUTH_HMAC_SHA1));
-hunk ./actions/xrds.php 71
-- $this->show_service(OAUTH_ENDPOINT_RESOURCE,
-- NULL,
-- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-- array(OAUTH_HMAC_SHA1));
-+ $this->show_service(OAUTH_ENDPOINT_RESOURCE,
-+ NULL,
-+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY),
-+ array(OAUTH_HMAC_SHA1));
-hunk ./actions/xrds.php 76
-- common_element_end('XRD');
-+ common_element_end('XRD');
-hunk ./actions/xrds.php 78
-- # XXX: decide whether to include user's ID/nickname in postNotice URL
-+ # XXX: decide whether to include user's ID/nickname in postNotice URL
-hunk ./actions/xrds.php 80
-- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-- 'xml:id' => 'omb',
-- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-- 'version' => '2.0'));
-+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-+ 'xml:id' => 'omb',
-+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
-+ 'version' => '2.0'));
+- common_element('Type', NULL, 'xri://$xrds*simple');
++ common_element('Type', null, 'xri://$xrds*simple');
+hunk ./actions/xrds.php 72
+- NULL,
++ null,
hunk ./actions/xrds.php 85
-- common_element('Type', NULL, 'xri://$xrds*simple');
-+ common_element('Type', NULL, 'xri://$xrds*simple');
-hunk ./actions/xrds.php 87
-- $this->show_service(OMB_ENDPOINT_POSTNOTICE,
-- common_local_url('postnotice'));
-+ $this->show_service(OMB_ENDPOINT_POSTNOTICE,
-+ common_local_url('postnotice'));
-hunk ./actions/xrds.php 90
-- $this->show_service(OMB_ENDPOINT_UPDATEPROFILE,
-- common_local_url('updateprofile'));
-+ $this->show_service(OMB_ENDPOINT_UPDATEPROFILE,
-+ common_local_url('updateprofile'));
-hunk ./actions/xrds.php 93
-- common_element_end('XRD');
-+ common_element_end('XRD');
-hunk ./actions/xrds.php 95
-- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-- 'version' => '2.0'));
-+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
-+ 'version' => '2.0'));
+- common_element('Type', NULL, 'xri://$xrds*simple');
++ common_element('Type', null, 'xri://$xrds*simple');
hunk ./actions/xrds.php 98
-- common_element('Type', NULL, 'xri://$xrds*simple');
-+ common_element('Type', NULL, 'xri://$xrds*simple');
-hunk ./actions/xrds.php 100
-- $this->show_service(OAUTH_DISCOVERY,
-- '#oauth');
-- $this->show_service(OMB_NAMESPACE,
-- '#omb');
-+ $this->show_service(OAUTH_DISCOVERY,
-+ '#oauth');
-+ $this->show_service(OMB_NAMESPACE,
-+ '#omb');
-hunk ./actions/xrds.php 105
-- common_element_end('XRD');
-+ common_element_end('XRD');
-hunk ./actions/xrds.php 107
-- common_element_end('XRDS');
-- common_end_xml();
-- }
-+ common_element_end('XRDS');
-+ common_end_xml();
-+ }
+- common_element('Type', NULL, 'xri://$xrds*simple');
++ common_element('Type', null, 'xri://$xrds*simple');
hunk ./actions/xrds.php 111
-- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
-- common_element_start('Service');
-- if ($uri) {
-- common_element('URI', NULL, $uri);
-- }
-- common_element('Type', NULL, $type);
-- if ($params) {
-- foreach ($params as $param) {
-- common_element('Type', NULL, $param);
-- }
-- }
-- if ($sigs) {
-- foreach ($sigs as $sig) {
-- common_element('Type', NULL, $sig);
-- }
-- }
-- if ($localId) {
-- common_element('LocalID', NULL, $localId);
-- }
-- common_element_end('Service');
-- }
-+ function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
-+ common_element_start('Service');
-+ if ($uri) {
-+ common_element('URI', NULL, $uri);
-+ }
-+ common_element('Type', NULL, $type);
-+ if ($params) {
-+ foreach ($params as $param) {
-+ common_element('Type', NULL, $param);
-+ }
-+ }
-+ if ($sigs) {
-+ foreach ($sigs as $sig) {
-+ common_element('Type', NULL, $sig);
-+ }
-+ }
-+ if ($localId) {
-+ common_element('LocalID', NULL, $localId);
-+ }
-+ common_element_end('Service');
-+ }
-hunk ./classes/Avatar.php 29
-- # We clean up the file, too
-+ # We clean up the file, too
-hunk ./classes/Avatar.php 31
-- function delete() {
-- $filename = $this->filename;
-- if (parent::delete()) {
-- @unlink(common_avatar_path($filename));
-- }
-- }
-+ function delete() {
-+ $filename = $this->filename;
-+ if (parent::delete()) {
-+ @unlink(common_avatar_path($filename));
-+ }
-+ }
-hunk ./classes/Avatar.php 38
-- # Create and save scaled version of this avatar
-- # XXX: maybe break into different methods
-+ # Create and save scaled version of this avatar
-+ # XXX: maybe break into different methods
-hunk ./classes/Avatar.php 41
-- function scale($size) {
-+ function scale($size) {
-hunk ./classes/Avatar.php 43
-- $image_s = imagecreatetruecolor($size, $size);
-- $image_a = $this->to_image();
-- $square = min($this->width, $this->height);
-+ $image_s = imagecreatetruecolor($size, $size);
-+ $image_a = $this->to_image();
-+ $square = min($this->width, $this->height);
-hunk ./classes/Avatar.php 49
-- imagecopyresampled($image_s, $image_a, 0, 0, 0, 0,
-- $size, $size, $square, $square);
-+ imagecopyresampled($image_s, $image_a, 0, 0, 0, 0,
-+ $size, $size, $square, $square);
-hunk ./classes/Avatar.php 52
-- $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png";
-+ $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png";
-hunk ./classes/Avatar.php 54
-- $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp());
-+ $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp());
-hunk ./classes/Avatar.php 56
-- if ($this->mediatype == 'image/jpeg') {
-- imagejpeg($image_s, common_avatar_path($filename));
-- } else {
-- imagepng($image_s, common_avatar_path($filename));
-- }
-+ if ($this->mediatype == 'image/jpeg') {
-+ imagejpeg($image_s, common_avatar_path($filename));
-+ } else {
-+ imagepng($image_s, common_avatar_path($filename));
-+ }
-hunk ./classes/Avatar.php 62
-- $scaled = DB_DataObject::factory('avatar');
-- $scaled->profile_id = $this->profile_id;
-- $scaled->width = $size;
-- $scaled->height = $size;
-- $scaled->original = false;
-- $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
-- $scaled->filename = $filename;
-- $scaled->url = common_avatar_url($filename);
-- $scaled->created = DB_DataObject_Cast::dateTime(); # current time
-+ $scaled = DB_DataObject::factory('avatar');
-+ $scaled->profile_id = $this->profile_id;
-+ $scaled->width = $size;
-+ $scaled->height = $size;
-+ $scaled->original = false;
-+ $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
-+ $scaled->filename = $filename;
-+ $scaled->url = common_avatar_url($filename);
-+ $scaled->created = DB_DataObject_Cast::dateTime(); # current time
-hunk ./classes/Avatar.php 72
-- if ($scaled->insert()) {
-- return $scaled;
-- } else {
-- return NULL;
-- }
-- }
-+ if ($scaled->insert()) {
-+ return $scaled;
-+ } else {
-+ return NULL;
-+ }
-+ }
-hunk ./classes/Avatar.php 79
-- function to_image() {
-- $filepath = common_avatar_path($this->filename);
-- if ($this->mediatype == 'image/gif') {
-- return imagecreatefromgif($filepath);
-- } else if ($this->mediatype == 'image/jpeg') {
-- return imagecreatefromjpeg($filepath);
-- } else if ($this->mediatype == 'image/png') {
-- return imagecreatefrompng($filepath);
-- } else {
-- return NULL;
-- }
-- }
--
-- function &pkeyGet($kv) {
-- return Memcached_DataObject::pkeyGet('Avatar', $kv);
-- }
-+ function to_image() {
-+ $filepath = common_avatar_path($this->filename);
-+ if ($this->mediatype == 'image/gif') {
-+ return imagecreatefromgif($filepath);
-+ } else if ($this->mediatype == 'image/jpeg') {
-+ return imagecreatefromjpeg($filepath);
-+ } else if ($this->mediatype == 'image/png') {
-+ return imagecreatefrompng($filepath);
-+ } else {
-+ return NULL;
-+ }
-+ }
-+
-+ function &pkeyGet($kv) {
-+ return Memcached_DataObject::pkeyGet('Avatar', $kv);
-+ }
-hunk ./classes/Channel.php 23
--
-- function on($user) {
-- return false;
-- }
-+
-+ function on($user) {
-+ return false;
-+ }
-hunk ./classes/Channel.php 28
-- function off($user) {
-- return false;
-- }
-+ function off($user) {
-+ return false;
-+ }
-hunk ./classes/Channel.php 32
-- function output($user, $text) {
-- return false;
-- }
--
-- function error($user, $text) {
-- return false;
-- }
--
-- function source() {
-- return NULL;
-- }
-+ function output($user, $text) {
-+ return false;
-+ }
-+
-+ function error($user, $text) {
-+ return false;
-+ }
-+
-+ function source() {
-+ return NULL;
-+ }
+- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) {
++ function show_service($type, $uri, $params=null, $sigs=null, $localId=null) {
+hunk ./actions/xrds.php 114
+- common_element('URI', NULL, $uri);
++ common_element('URI', null, $uri);
+hunk ./actions/xrds.php 116
+- common_element('Type', NULL, $type);
++ common_element('Type', null, $type);
+hunk ./actions/xrds.php 119
+- common_element('Type', NULL, $param);
++ common_element('Type', null, $param);
+hunk ./actions/xrds.php 124
+- common_element('Type', NULL, $sig);
++ common_element('Type', null, $sig);
+hunk ./actions/xrds.php 128
+- common_element('LocalID', NULL, $localId);
++ common_element('LocalID', null, $localId);
+hunk ./classes/Avatar.php 24
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Avatar',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Avatar',$k,$v); }
+hunk ./classes/Avatar.php 75
+- return NULL;
++ return null;
+hunk ./classes/Avatar.php 88
+- return NULL;
++ return null;
+hunk ./classes/Channel.php 41
+- return NULL;
++ return null;
hunk ./classes/Channel.php 47
-- var $conn = NULL;
--
-- function source() {
-- return 'xmpp';
-- }
--
-- function __construct($conn) {
-- $this->conn = $conn;
-- }
--
-- function on($user) {
-- return $this->set_notify($user, 1);
-- }
--
-- function off($user) {
-- return $this->set_notify($user, 0);
-- }
-+ var $conn = NULL;
-+
-+ function source() {
-+ return 'xmpp';
-+ }
-+
-+ function __construct($conn) {
-+ $this->conn = $conn;
-+ }
-+
-+ function on($user) {
-+ return $this->set_notify($user, 1);
-+ }
-+
-+ function off($user) {
-+ return $this->set_notify($user, 0);
-+ }
-hunk ./classes/Channel.php 65
-- function output($user, $text) {
-- $text = '['.common_config('site', 'name') . '] ' . $text;
-- jabber_send_message($user->jabber, $text);
-- }
--
-- function error($user, $text) {
-- $text = '['.common_config('site', 'name') . '] ' . $text;
-- jabber_send_message($user->jabber, $text);
-- }
--
-- function set_notify(&$user, $notify) {
-- $orig = clone($user);
-- $user->jabbernotify = $notify;
-- $result = $user->update($orig);
-- if (!$result) {
-- $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
-- common_log(LOG_ERR,
-- 'Could not set notify flag to ' . $notify .
-- ' for user ' . common_log_objstring($user) .
-- ': ' . $last_error->message);
-- return false;
-- } else {
-- common_log(LOG_INFO,
-- 'User ' . $user->nickname . ' set notify flag to ' . $notify);
-- return true;
-- }
-- }
-+ function output($user, $text) {
-+ $text = '['.common_config('site', 'name') . '] ' . $text;
-+ jabber_send_message($user->jabber, $text);
-+ }
-+
-+ function error($user, $text) {
-+ $text = '['.common_config('site', 'name') . '] ' . $text;
-+ jabber_send_message($user->jabber, $text);
-+ }
-+
-+ function set_notify(&$user, $notify) {
-+ $orig = clone($user);
-+ $user->jabbernotify = $notify;
-+ $result = $user->update($orig);
-+ if (!$result) {
-+ $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
-+ common_log(LOG_ERR,
-+ 'Could not set notify flag to ' . $notify .
-+ ' for user ' . common_log_objstring($user) .
-+ ': ' . $last_error->message);
-+ return false;
-+ } else {
-+ common_log(LOG_INFO,
-+ 'User ' . $user->nickname . ' set notify flag to ' . $notify);
-+ return true;
-+ }
-+ }
-hunk ./classes/Channel.php 97
-- function source() {
-- return 'web';
-- }
--
-- function on($user) {
-- return false;
-- }
--
-- function off($user) {
-- return false;
-- }
-+ function source() {
-+ return 'web';
-+ }
-+
-+ function on($user) {
-+ return false;
-+ }
-+
-+ function off($user) {
-+ return false;
-+ }
-hunk ./classes/Channel.php 109
-- function output($user, $text) {
-- # XXX: buffer all output and send it at the end
-- # XXX: even better, redirect to appropriate page
-- # depending on what command was run
-- common_show_header(_('Command results'));
-- common_element('p', NULL, $text);
-- common_show_footer();
-- }
--
-- function error($user, $text) {
-- common_user_error($text);
-- }
-+ function output($user, $text) {
-+ # XXX: buffer all output and send it at the end
-+ # XXX: even better, redirect to appropriate page
-+ # depending on what command was run
-+ common_show_header(_('Command results'));
-+ common_element('p', NULL, $text);
-+ common_show_footer();
-+ }
-+
-+ function error($user, $text) {
-+ common_user_error($text);
-+ }
-hunk ./classes/Channel.php 126
-- function output($user, $text) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Command results'));
-- common_element_end('head');
-- common_element_start('body');
-- common_element('p', array('id' => 'command_result'), $text);
-- common_element_end('body');
-- common_element_end('html');
-- }
-+ function output($user, $text) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Command results'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_element('p', array('id' => 'command_result'), $text);
-+ common_element_end('body');
-+ common_element_end('html');
-+ }
-hunk ./classes/Channel.php 137
-- function error($user, $text) {
-- common_start_html('text/xml;charset=utf-8', true);
-- common_element_start('head');
-- common_element('title', null, _('Ajax Error'));
-- common_element_end('head');
-- common_element_start('body');
-- common_element('p', array('id' => 'error'), $text);
-- common_element_end('body');
-- common_element_end('html');
-- }
-+ function error($user, $text) {
-+ common_start_html('text/xml;charset=utf-8', true);
-+ common_element_start('head');
-+ common_element('title', null, _('Ajax Error'));
-+ common_element_end('head');
-+ common_element_start('body');
-+ common_element('p', array('id' => 'error'), $text);
-+ common_element_end('body');
-+ common_element_end('html');
-+ }
+- var $conn = NULL;
++ var $conn = null;
+hunk ./classes/Channel.php 114
+- common_element('p', NULL, $text);
++ common_element('p', null, $text);
hunk ./classes/Channel.php 152
-- var $addr = NULL;
-+ var $addr = NULL;
-hunk ./classes/Channel.php 154
-- function source() {
-- return 'mail';
-- }
--
-- function __construct($addr=NULL) {
-- $this->addr = $addr;
-- }
--
-- function on($user) {
-- return $this->set_notify($user, 1);
-- }
--
-- function off($user) {
-- return $this->set_notify($user, 0);
-- }
-+ function source() {
-+ return 'mail';
-+ }
-+
-+ function __construct($addr=NULL) {
-+ $this->addr = $addr;
-+ }
-+
-+ function on($user) {
-+ return $this->set_notify($user, 1);
-+ }
-+
-+ function off($user) {
-+ return $this->set_notify($user, 0);
-+ }
-hunk ./classes/Channel.php 170
-- function output($user, $text) {
-+ function output($user, $text) {
-hunk ./classes/Channel.php 172
-- $headers['From'] = $user->incomingemail;
-- $headers['To'] = $this->addr;
--
-- $headers['Subject'] = _('Command complete');
-+ $headers['From'] = $user->incomingemail;
-+ $headers['To'] = $this->addr;
-+
-+ $headers['Subject'] = _('Command complete');
-hunk ./classes/Channel.php 177
-- return mail_send(array($this->addr), $headers, $text);
-- }
--
-- function error($user, $text) {
--
-- $headers['From'] = $user->incomingemail;
-- $headers['To'] = $this->addr;
--
-- $headers['Subject'] = _('Command failed');
-+ return mail_send(array($this->addr), $headers, $text);
-+ }
-+
-+ function error($user, $text) {
-+
-+ $headers['From'] = $user->incomingemail;
-+ $headers['To'] = $this->addr;
-+
-+ $headers['Subject'] = _('Command failed');
-hunk ./classes/Channel.php 187
-- return mail_send(array($this->addr), $headers, $text);
-- }
--
-- function set_notify($user, $value) {
-- $orig = clone($user);
-- $user->smsnotify = $value;
-- $result = $user->update($orig);
-- if (!$result) {
-- common_log_db_error($user, 'UPDATE', __FILE__);
-- return false;
-- }
-- return true;
-- }
-+ return mail_send(array($this->addr), $headers, $text);
-+ }
-+
-+ function set_notify($user, $value) {
-+ $orig = clone($user);
-+ $user->smsnotify = $value;
-+ $result = $user->update($orig);
-+ if (!$result) {
-+ common_log_db_error($user, 'UPDATE', __FILE__);
-+ return false;
-+ }
-+ return true;
-+ }
-hunk ./classes/Command.php 25
--
-- var $user = NULL;
--
-- function __construct($user=NULL) {
-- $this->user = $user;
-- }
--
-- function execute($channel) {
-- return false;
-- }
-+
-+ var $user = NULL;
-+
-+ function __construct($user=NULL) {
-+ $this->user = $user;
-+ }
-+
-+ function execute($channel) {
-+ return false;
-+ }
-hunk ./classes/Command.php 38
-- function execute($channel) {
-- $channel->error($this->user, _("Sorry, this command is not yet implemented."));
-- }
-+ function execute($channel) {
-+ $channel->error($this->user, _("Sorry, this command is not yet implemented."));
-+ }
+- var $addr = NULL;
++ var $addr = null;
+hunk ./classes/Channel.php 158
+- function __construct($addr=NULL) {
++ function __construct($addr=null) {
+hunk ./classes/Command.php 26
+- var $user = NULL;
++ var $user = null;
+hunk ./classes/Command.php 28
+- function __construct($user=NULL) {
++ function __construct($user=null) {
hunk ./classes/Command.php 50
-- var $word = NULL;
-- function __construct($user, $word) {
-- parent::__construct($user);
-- $this->word = $word;
-- }
-+ var $word = NULL;
-+ function __construct($user, $word) {
-+ parent::__construct($user);
-+ $this->word = $word;
-+ }
+- var $word = NULL;
++ var $word = null;
hunk ./classes/Command.php 58
-- var $word = NULL;
-- function __construct($user, $word) {
-- parent::__construct($user);
-- $this->word = $word;
-- }
-+ var $word = NULL;
-+ function __construct($user, $word) {
-+ parent::__construct($user);
-+ $this->word = $word;
-+ }
+- var $word = NULL;
++ var $word = null;
hunk ./classes/Command.php 66
-- var $other = NULL;
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
-+ var $other = NULL;
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
+- var $other = NULL;
++ var $other = null;
hunk ./classes/Command.php 74
-- var $other = NULL;
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
-+ var $other = NULL;
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-hunk ./classes/Command.php 82
-- function execute($channel) {
-+ function execute($channel) {
-hunk ./classes/Command.php 84
-- $subs = new Subscription();
-- $subs->subscriber = $this->user->id;
-- $subs_count = (int) $subs->count() - 1;
-+ $subs = new Subscription();
-+ $subs->subscriber = $this->user->id;
-+ $subs_count = (int) $subs->count() - 1;
-hunk ./classes/Command.php 88
-- $subbed = new Subscription();
-- $subbed->subscribed = $this->user->id;
-- $subbed_count = (int) $subbed->count() - 1;
-+ $subbed = new Subscription();
-+ $subbed->subscribed = $this->user->id;
-+ $subbed_count = (int) $subbed->count() - 1;
-hunk ./classes/Command.php 92
-- $notices = new Notice();
-- $notices->profile_id = $this->user->id;
-- $notice_count = (int) $notices->count();
--
-- $channel->output($this->user, sprintf(_("Subscriptions: %1\$s\n".
-- "Subscribers: %2\$s\n".
-- "Notices: %3\$s"),
-- $subs_count,
-- $subbed_count,
-- $notice_count));
-- }
-+ $notices = new Notice();
-+ $notices->profile_id = $this->user->id;
-+ $notice_count = (int) $notices->count();
-+
-+ $channel->output($this->user, sprintf(_("Subscriptions: %1\$s\n".
-+ "Subscribers: %2\$s\n".
-+ "Notices: %3\$s"),
-+ $subs_count,
-+ $subbed_count,
-+ $notice_count));
-+ }
-hunk ./classes/Command.php 106
--
-- var $other = NULL;
--
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
--
-- function execute($channel) {
--
-- $recipient =
-- common_relative_profile($this->user, common_canonical_nickname($this->other));
--
-- if (!$recipient) {
-- $channel->error($this->user, _('No such user.'));
-- return;
-- }
-- $notice = $recipient->getCurrentNotice();
-- if (!$notice) {
-- $channel->error($this->user, _('User has no last notice'));
-- return;
-- }
--
-- $fave = Fave::addNew($this->user, $notice);
-+
-+ var $other = NULL;
-+
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+
-+ function execute($channel) {
-+
-+ $recipient =
-+ common_relative_profile($this->user, common_canonical_nickname($this->other));
-+
-+ if (!$recipient) {
-+ $channel->error($this->user, _('No such user.'));
-+ return;
-+ }
-+ $notice = $recipient->getCurrentNotice();
-+ if (!$notice) {
-+ $channel->error($this->user, _('User has no last notice'));
-+ return;
-+ }
-+
-+ $fave = Fave::addNew($this->user, $notice);
-hunk ./classes/Command.php 131
-- if (!$fave) {
-- $channel->error($this->user, _('Could not create favorite.'));
-- return;
-- }
-+ if (!$fave) {
-+ $channel->error($this->user, _('Could not create favorite.'));
-+ return;
-+ }
-hunk ./classes/Command.php 136
-- $other = User::staticGet('id', $recipient->id);
--
-- if ($other && $other->id != $user->id) {
-- if ($other->email && $other->emailnotifyfav) {
-- mail_notify_fave($other, $this->user, $notice);
-- }
-- }
--
-- $this->user->blowFavesCache();
--
-- $channel->output($this->user, _('Notice marked as fave.'));
-- }
-+ $other = User::staticGet('id', $recipient->id);
-+
-+ if ($other && $other->id != $user->id) {
-+ if ($other->email && $other->emailnotifyfav) {
-+ mail_notify_fave($other, $this->user, $notice);
-+ }
-+ }
-+
-+ $this->user->blowFavesCache();
-+
-+ $channel->output($this->user, _('Notice marked as fave.'));
-+ }
+- var $other = NULL;
++ var $other = null;
+hunk ./classes/Command.php 107
+- var $other = NULL;
++ var $other = null;
hunk ./classes/Command.php 151
-- var $other = NULL;
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
--
-- function execute($channel) {
-- $recipient =
-- common_relative_profile($this->user, common_canonical_nickname($this->other));
--
-- if (!$recipient) {
-- $channel->error($this->user, _('No such user.'));
-- return;
-- }
--
-- $whois = sprintf(_("%1\$s (%2\$s)"), $recipient->nickname,
-- $recipient->profileurl);
-- if ($recipient->fullname) {
-- $whois .= "\n" . sprintf(_('Fullname: %s'), $recipient->fullname);
-- }
-- if ($recipient->location) {
-- $whois .= "\n" . sprintf(_('Location: %s'), $recipient->location);
-- }
-- if ($recipient->homepage) {
-- $whois .= "\n" . sprintf(_('Homepage: %s'), $recipient->homepage);
-- }
-- if ($recipient->bio) {
-- $whois .= "\n" . sprintf(_('About: %s'), $recipient->bio);
-- }
-- $channel->output($this->user, $whois);
-- }
-+ var $other = NULL;
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+
-+ function execute($channel) {
-+ $recipient =
-+ common_relative_profile($this->user, common_canonical_nickname($this->other));
-+
-+ if (!$recipient) {
-+ $channel->error($this->user, _('No such user.'));
-+ return;
-+ }
-+
-+ $whois = sprintf(_("%1\$s (%2\$s)"), $recipient->nickname,
-+ $recipient->profileurl);
-+ if ($recipient->fullname) {
-+ $whois .= "\n" . sprintf(_('Fullname: %s'), $recipient->fullname);
-+ }
-+ if ($recipient->location) {
-+ $whois .= "\n" . sprintf(_('Location: %s'), $recipient->location);
-+ }
-+ if ($recipient->homepage) {
-+ $whois .= "\n" . sprintf(_('Homepage: %s'), $recipient->homepage);
-+ }
-+ if ($recipient->bio) {
-+ $whois .= "\n" . sprintf(_('About: %s'), $recipient->bio);
-+ }
-+ $channel->output($this->user, $whois);
-+ }
+- var $other = NULL;
++ var $other = null;
hunk ./classes/Command.php 185
-- var $other = NULL;
-- var $text = NULL;
-- function __construct($user, $other, $text) {
-- parent::__construct($user);
-- $this->other = $other;
-- $this->text = $text;
-- }
--
-- function execute($channel) {
-- $other = User::staticGet('nickname', common_canonical_nickname($this->other));
-- $len = mb_strlen($this->text);
-- if ($len == 0) {
-- $channel->error($this->user, _('No content!'));
-- return;
-- } else if ($len > 140) {
-- $content = common_shorten_links($content);
-- if (mb_strlen($content) > 140) {
-- $channel->error($this->user, sprintf(_('Message too long - maximum is 140 characters, you sent %d'), $len));
-- return;
-- }
-- }
--
-- if (!$other) {
-- $channel->error($this->user, _('No such user.'));
-- return;
-- } else if (!$this->user->mutuallySubscribed($other)) {
-- $channel->error($this->user, _('You can\'t send a message to this user.'));
-- return;
-- } else if ($this->user->id == $other->id) {
-- $channel->error($this->user, _('Don\'t send a message to yourself; just say it to yourself quietly instead.'));
-- return;
-- }
-- $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source());
-- if ($message) {
-- $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other));
-- } else {
-- $channel->error($this->user, _('Error sending direct message.'));
-- }
-- }
-+ var $other = NULL;
-+ var $text = NULL;
-+ function __construct($user, $other, $text) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ $this->text = $text;
-+ }
-+
-+ function execute($channel) {
-+ $other = User::staticGet('nickname', common_canonical_nickname($this->other));
-+ $len = mb_strlen($this->text);
-+ if ($len == 0) {
-+ $channel->error($this->user, _('No content!'));
-+ return;
-+ } else if ($len > 140) {
-+ $content = common_shorten_links($content);
-+ if (mb_strlen($content) > 140) {
-+ $channel->error($this->user, sprintf(_('Message too long - maximum is 140 characters, you sent %d'), $len));
-+ return;
-+ }
-+ }
-+
-+ if (!$other) {
-+ $channel->error($this->user, _('No such user.'));
-+ return;
-+ } else if (!$this->user->mutuallySubscribed($other)) {
-+ $channel->error($this->user, _('You can\'t send a message to this user.'));
-+ return;
-+ } else if ($this->user->id == $other->id) {
-+ $channel->error($this->user, _('Don\'t send a message to yourself; just say it to yourself quietly instead.'));
-+ return;
-+ }
-+ $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source());
-+ if ($message) {
-+ $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other));
-+ } else {
-+ $channel->error($this->user, _('Error sending direct message.'));
-+ }
-+ }
-hunk ./classes/Command.php 227
--
-- var $other = NULL;
--
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
--
-- function execute($channel) {
-- $target_nickname = common_canonical_nickname($this->other);
--
-- $target =
-- common_relative_profile($this->user, $target_nickname);
-+
-+ var $other = NULL;
-+
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+
-+ function execute($channel) {
-+ $target_nickname = common_canonical_nickname($this->other);
-+
-+ $target =
-+ common_relative_profile($this->user, $target_nickname);
-hunk ./classes/Command.php 241
-- if (!$target) {
-- $channel->error($this->user, _('No such user.'));
-- return;
-- }
-- $notice = $target->getCurrentNotice();
-- if (!$notice) {
-- $channel->error($this->user, _('User has no last notice'));
-- return;
-- }
-- $notice_content = $notice->content;
--
-- $channel->output($this->user, $target_nickname . ": " . $notice_content);
-- }
-+ if (!$target) {
-+ $channel->error($this->user, _('No such user.'));
-+ return;
-+ }
-+ $notice = $target->getCurrentNotice();
-+ if (!$notice) {
-+ $channel->error($this->user, _('User has no last notice'));
-+ return;
-+ }
-+ $notice_content = $notice->content;
-+
-+ $channel->output($this->user, $target_nickname . ": " . $notice_content);
-+ }
-hunk ./classes/Command.php 257
--
-- var $other = NULL;
--
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
--
-- function execute($channel) {
--
-- if (!$this->other) {
-- $channel->error($this->user, _('Specify the name of the user to subscribe to'));
-- return;
-- }
--
-- $result = subs_subscribe_user($this->user, $this->other);
--
-- if ($result == 'true') {
-- $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other));
-- } else {
-- $channel->error($this->user, $result);
-- }
-- }
-+
-+ var $other = NULL;
-+
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+
-+ function execute($channel) {
-+
-+ if (!$this->other) {
-+ $channel->error($this->user, _('Specify the name of the user to subscribe to'));
-+ return;
-+ }
-+
-+ $result = subs_subscribe_user($this->user, $this->other);
-+
-+ if ($result == 'true') {
-+ $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other));
-+ } else {
-+ $channel->error($this->user, $result);
-+ }
-+ }
+- var $other = NULL;
+- var $text = NULL;
++ var $other = null;
++ var $text = null;
+hunk ./classes/Command.php 228
+- var $other = NULL;
++ var $other = null;
+hunk ./classes/Command.php 258
+- var $other = NULL;
++ var $other = null;
hunk ./classes/Command.php 284
-- var $other = NULL;
--
-- function __construct($user, $other) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
-+ var $other = NULL;
-+
-+ function __construct($user, $other) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-hunk ./classes/Command.php 291
-- function execute($channel) {
-- if(!$this->other) {
-- $channel->error($this->user, _('Specify the name of the user to unsubscribe from'));
-- return;
-- }
--
-- $result=subs_unsubscribe_user($this->user, $this->other);
--
-- if ($result) {
-- $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other));
-- } else {
-- $channel->error($this->user, $result);
-- }
-- }
-+ function execute($channel) {
-+ if(!$this->other) {
-+ $channel->error($this->user, _('Specify the name of the user to unsubscribe from'));
-+ return;
-+ }
-+
-+ $result=subs_unsubscribe_user($this->user, $this->other);
-+
-+ if ($result) {
-+ $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other));
-+ } else {
-+ $channel->error($this->user, $result);
-+ }
-+ }
+- var $other = NULL;
++ var $other = null;
hunk ./classes/Command.php 308
-- var $other = NULL;
-- function __construct($user, $other=NULL) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
-- function execute($channel) {
-- if ($other) {
-- $channel->error($this->user, _("Command not yet implemented."));
-- } else {
-- if ($channel->off($this->user)) {
-- $channel->output($this->user, _('Notification off.'));
-- } else {
-- $channel->error($this->user, _('Can\'t turn off notification.'));
-- }
-- }
-- }
-+ var $other = NULL;
-+ function __construct($user, $other=NULL) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+ function execute($channel) {
-+ if ($other) {
-+ $channel->error($this->user, _("Command not yet implemented."));
-+ } else {
-+ if ($channel->off($this->user)) {
-+ $channel->output($this->user, _('Notification off.'));
-+ } else {
-+ $channel->error($this->user, _('Can\'t turn off notification.'));
-+ }
-+ }
-+ }
+- var $other = NULL;
+- function __construct($user, $other=NULL) {
++ var $other = null;
++ function __construct($user, $other=null) {
hunk ./classes/Command.php 327
-- var $other = NULL;
-- function __construct($user, $other=NULL) {
-- parent::__construct($user);
-- $this->other = $other;
-- }
--
-- function execute($channel) {
-- if ($other) {
-- $channel->error($this->user, _("Command not yet implemented."));
-- } else {
-- if ($channel->on($this->user)) {
-- $channel->output($this->user, _('Notification on.'));
-- } else {
-- $channel->error($this->user, _('Can\'t turn on notification.'));
-- }
-- }
-- }
-+ var $other = NULL;
-+ function __construct($user, $other=NULL) {
-+ parent::__construct($user);
-+ $this->other = $other;
-+ }
-+
-+ function execute($channel) {
-+ if ($other) {
-+ $channel->error($this->user, _("Command not yet implemented."));
-+ } else {
-+ if ($channel->on($this->user)) {
-+ $channel->output($this->user, _('Notification on.'));
-+ } else {
-+ $channel->error($this->user, _('Can\'t turn on notification.'));
-+ }
-+ }
-+ }
-hunk ./classes/Command.php 347
-- function execute($channel) {
-- $channel->output($this->user,
-- _("Commands:\n".
-- "on - turn on notifications\n".
-- "off - turn off notifications\n".
-- "help - show this help\n".
-- "follow - subscribe to user\n".
-- "leave - unsubscribe from user\n".
-- "d - direct message to user\n".
-- "get - get last notice from user\n".
-- "whois - get profile info on user\n".
-- "fav - add user's last notice as a 'fave'\n".
-- "stats - get your stats\n".
-- "stop - same as 'off'\n".
-- "quit - same as 'off'\n".
-- "sub - same as 'follow'\n".
-- "unsub - same as 'leave'\n".
-- "last - same as 'get'\n".
-- "on - not yet implemented.\n".
-- "off - not yet implemented.\n".
-- "nudge - not yet implemented.\n".
-- "invite - not yet implemented.\n".
-- "track - not yet implemented.\n".
-- "untrack - not yet implemented.\n".
-- "track off - not yet implemented.\n".
-- "untrack all - not yet implemented.\n".
-- "tracks - not yet implemented.\n".
-- "tracking - not yet implemented.\n"));
-- }
-+ function execute($channel) {
-+ $channel->output($this->user,
-+ _("Commands:\n".
-+ "on - turn on notifications\n".
-+ "off - turn off notifications\n".
-+ "help - show this help\n".
-+ "follow - subscribe to user\n".
-+ "leave - unsubscribe from user\n".
-+ "d - direct message to user\n".
-+ "get - get last notice from user\n".
-+ "whois - get profile info on user\n".
-+ "fav - add user's last notice as a 'fave'\n".
-+ "stats - get your stats\n".
-+ "stop - same as 'off'\n".
-+ "quit - same as 'off'\n".
-+ "sub - same as 'follow'\n".
-+ "unsub - same as 'leave'\n".
-+ "last - same as 'get'\n".
-+ "on - not yet implemented.\n".
-+ "off - not yet implemented.\n".
-+ "nudge - not yet implemented.\n".
-+ "invite - not yet implemented.\n".
-+ "track - not yet implemented.\n".
-+ "untrack - not yet implemented.\n".
-+ "track off - not yet implemented.\n".
-+ "untrack all - not yet implemented.\n".
-+ "tracks - not yet implemented.\n".
-+ "tracking - not yet implemented.\n"));
-+ }
-hunk ./classes/CommandInterpreter.php 25
--
-- function handle_command($user, $text) {
-- # XXX: localise
-+
-+ function handle_command($user, $text) {
-+ # XXX: localise
-hunk ./classes/CommandInterpreter.php 29
-- $text = preg_replace('/\s+/', ' ', trim($text));
-- list($cmd, $arg) = explode(' ', $text, 2);
-+ $text = preg_replace('/\s+/', ' ', trim($text));
-+ list($cmd, $arg) = explode(' ', $text, 2);
-hunk ./classes/CommandInterpreter.php 32
-- # We try to support all the same commands as Twitter, see
-- # http://getsatisfaction.com/twitter/topics/what_are_the_twitter_commands
-- # There are a few compatibility commands from earlier versions of
-- # Laconica
--
-- switch(strtolower($cmd)) {
-- case 'help':
-- if ($arg) {
-- return NULL;
-- }
-- return new HelpCommand($user);
-- case 'on':
-- if ($arg) {
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new OnCommand($user, $other);
-- }
-- } else {
-- return new OnCommand($user);
-- }
-- case 'off':
-- if ($arg) {
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new OffCommand($user, $other);
-- }
-- } else {
-- return new OffCommand($user);
-- }
-- case 'stop':
-- case 'quit':
-- if ($arg) {
-- return NULL;
-- } else {
-- return new OffCommand($user);
-- }
-- case 'follow':
-- case 'sub':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new SubCommand($user, $other);
-- }
-- case 'leave':
-- case 'unsub':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new UnsubCommand($user, $other);
-- }
-- case 'get':
-- case 'last':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new GetCommand($user, $other);
-- }
-- case 'd':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if (!$extra) {
-- return NULL;
-- } else {
-- return new MessageCommand($user, $other, $extra);
-- }
-- case 'whois':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new WhoisCommand($user, $other);
-- }
-- case 'fav':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new FavCommand($user, $other);
-- }
-- case 'nudge':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new NudgeCommand($user, $other);
-- }
-- case 'stats':
-- if ($arg) {
-- return NULL;
-- }
-- return new StatsCommand($user);
-- case 'invite':
-- if (!$arg) {
-- return NULL;
-- }
-- list($other, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else {
-- return new InviteCommand($user, $other);
-- }
-- case 'track':
-- if (!$arg) {
-- return NULL;
-- }
-- list($word, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else if ($word == 'off') {
-- return new TrackOffCommand($user);
-- } else {
-- return new TrackCommand($user, $word);
-- }
-- case 'untrack':
-- if (!$arg) {
-- return NULL;
-- }
-- list($word, $extra) = explode(' ', $arg, 2);
-- if ($extra) {
-- return NULL;
-- } else if ($word == 'all') {
-- return new TrackOffCommand($user);
-- } else {
-- return new UntrackCommand($user, $word);
-- }
-- case 'tracks':
-- case 'tracking':
-- if ($arg) {
-- return NULL;
-- }
-- return new TrackingCommand($user);
-- default:
-- return false;
-- }
-- }
-+ # We try to support all the same commands as Twitter, see
-+ # http://getsatisfaction.com/twitter/topics/what_are_the_twitter_commands
-+ # There are a few compatibility commands from earlier versions of
-+ # Laconica
-+
-+ switch(strtolower($cmd)) {
-+ case 'help':
-+ if ($arg) {
-+ return NULL;
-+ }
-+ return new HelpCommand($user);
-+ case 'on':
-+ if ($arg) {
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new OnCommand($user, $other);
-+ }
-+ } else {
-+ return new OnCommand($user);
-+ }
-+ case 'off':
-+ if ($arg) {
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new OffCommand($user, $other);
-+ }
-+ } else {
-+ return new OffCommand($user);
-+ }
-+ case 'stop':
-+ case 'quit':
-+ if ($arg) {
-+ return NULL;
-+ } else {
-+ return new OffCommand($user);
-+ }
-+ case 'follow':
-+ case 'sub':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new SubCommand($user, $other);
-+ }
-+ case 'leave':
-+ case 'unsub':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new UnsubCommand($user, $other);
-+ }
-+ case 'get':
-+ case 'last':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new GetCommand($user, $other);
-+ }
-+ case 'd':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if (!$extra) {
-+ return NULL;
-+ } else {
-+ return new MessageCommand($user, $other, $extra);
-+ }
-+ case 'whois':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new WhoisCommand($user, $other);
-+ }
-+ case 'fav':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new FavCommand($user, $other);
-+ }
-+ case 'nudge':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new NudgeCommand($user, $other);
-+ }
-+ case 'stats':
-+ if ($arg) {
-+ return NULL;
-+ }
-+ return new StatsCommand($user);
-+ case 'invite':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($other, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else {
-+ return new InviteCommand($user, $other);
-+ }
-+ case 'track':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($word, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else if ($word == 'off') {
-+ return new TrackOffCommand($user);
-+ } else {
-+ return new TrackCommand($user, $word);
-+ }
-+ case 'untrack':
-+ if (!$arg) {
-+ return NULL;
-+ }
-+ list($word, $extra) = explode(' ', $arg, 2);
-+ if ($extra) {
-+ return NULL;
-+ } else if ($word == 'all') {
-+ return new TrackOffCommand($user);
-+ } else {
-+ return new UntrackCommand($user, $word);
-+ }
-+ case 'tracks':
-+ case 'tracking':
-+ if ($arg) {
-+ return NULL;
-+ }
-+ return new TrackingCommand($user);
-+ default:
-+ return false;
-+ }
-+ }
-hunk ./classes/Fave.php 23
-- static function addNew($user, $notice) {
-- $fave = new Fave();
-- $fave->user_id = $user->id;
-- $fave->notice_id = $notice->id;
-- if (!$fave->insert()) {
-- common_log_db_error($fave, 'INSERT', __FILE__);
-- return false;
-- }
-- return $fave;
-- }
--
-- function &pkeyGet($kv) {
-- return Memcached_DataObject::pkeyGet('Fave', $kv);
-- }
-+ static function addNew($user, $notice) {
-+ $fave = new Fave();
-+ $fave->user_id = $user->id;
-+ $fave->notice_id = $notice->id;
-+ if (!$fave->insert()) {
-+ common_log_db_error($fave, 'INSERT', __FILE__);
-+ return false;
-+ }
-+ return $fave;
-+ }
-+
-+ function &pkeyGet($kv) {
-+ return Memcached_DataObject::pkeyGet('Fave', $kv);
-+ }
-hunk ./classes/Foreign_link.php 29
-- // XXX: This only returns a 1->1 single obj mapping. Change? Or make
-- // a getForeignUsers() that returns more than one? --Zach
-- static function getByUserID($user_id, $service) {
-- $flink = new Foreign_link();
-- $flink->service = $service;
-- $flink->user_id = $user_id;
-- $flink->limit(1);
-+ // XXX: This only returns a 1->1 single obj mapping. Change? Or make
-+ // a getForeignUsers() that returns more than one? --Zach
-+ static function getByUserID($user_id, $service) {
-+ $flink = new Foreign_link();
-+ $flink->service = $service;
-+ $flink->user_id = $user_id;
-+ $flink->limit(1);
-hunk ./classes/Foreign_link.php 37
-- if ($flink->find(TRUE)) {
-- return $flink;
-- }
-+ if ($flink->find(TRUE)) {
-+ return $flink;
-+ }
+- var $other = NULL;
+- function __construct($user, $other=NULL) {
++ var $other = null;
++ function __construct($user, $other=null) {
+hunk ./classes/CommandInterpreter.php 40
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 47
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 58
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 68
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 75
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 79
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 86
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 90
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 97
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 101
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 107
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 111
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 117
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 121
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 127
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 131
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 137
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 141
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 147
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 152
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 156
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 162
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 166
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 174
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 178
+- return NULL;
++ return null;
+hunk ./classes/CommandInterpreter.php 187
+- return NULL;
++ return null;
+hunk ./classes/Confirm_address.php 23
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); }
+hunk ./classes/Consumer.php 19
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Consumer',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Consumer',$k,$v); }
+hunk ./classes/Fave.php 18
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Fave',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Fave',$k,$v); }
+hunk ./classes/Foreign_link.php 24
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); }
hunk ./classes/Foreign_link.php 41
-- return NULL;
-- }
--
-- static function getByForeignID($foreign_id, $service) {
-- $flink = new Foreign_link();
-- $flink->service = $service;
-- $flink->foreign_id = $foreign_id;
-- $flink->limit(1);
-+ return NULL;
-+ }
-+
-+ static function getByForeignID($foreign_id, $service) {
-+ $flink = new Foreign_link();
-+ $flink->service = $service;
-+ $flink->foreign_id = $foreign_id;
-+ $flink->limit(1);
-hunk ./classes/Foreign_link.php 50
-- if ($flink->find(TRUE)) {
-- return $flink;
-- }
-+ if ($flink->find(TRUE)) {
-+ return $flink;
-+ }
+- return NULL;
++ return null;
hunk ./classes/Foreign_link.php 54
-- return NULL;
-- }
--
-- # Convenience methods
-- function getForeignUser() {
-- $fuser = new Foreign_user();
-- $fuser->service = $this->service;
-- $fuser->id = $this->foreign_id;
--
-- $fuser->limit(1);
--
-- if ($fuser->find(TRUE)) {
-- return $fuser;
-- }
--
-- return NULL;
-- }
--
-- function getUser() {
-- return User::staticGet($this->user_id);
-- }
--
-+ return NULL;
-+ }
-+
-+ # Convenience methods
-+ function getForeignUser() {
-+ $fuser = new Foreign_user();
-+ $fuser->service = $this->service;
-+ $fuser->id = $this->foreign_id;
-+
-+ $fuser->limit(1);
-+
-+ if ($fuser->find(TRUE)) {
-+ return $fuser;
-+ }
-+
-+ return NULL;
-+ }
-+
-+ function getUser() {
-+ return User::staticGet($this->user_id);
-+ }
-+
-hunk ./classes/Foreign_user.php 25
--
-- // XXX: This only returns a 1->1 single obj mapping. Change? Or make
-- // a getForeignUsers() that returns more than one? --Zach
-- static function getForeignUser($id, $service) {
-- $fuser = new Foreign_user();
-- $fuser->whereAdd("service = $service");
-- $fuser->whereAdd("id = $id");
-- $fuser->limit(1);
--
-- if ($fuser->find()) {
-- $fuser->fetch();
-- return $fuser;
-- }
--
-- return NULL;
-- }
--
-- function updateKeys(&$orig) {
-- $parts = array();
-- foreach (array('id', 'service', 'uri', 'nickname') as $k) {
-- if (strcmp($this->$k, $orig->$k) != 0) {
-- $parts[] = $k . ' = ' . $this->_quote($this->$k);
-- }
-- }
-- if (count($parts) == 0) {
-- # No changes
-- return true;
-- }
-- $toupdate = implode(', ', $parts);
-+
-+ // XXX: This only returns a 1->1 single obj mapping. Change? Or make
-+ // a getForeignUsers() that returns more than one? --Zach
-+ static function getForeignUser($id, $service) {
-+ $fuser = new Foreign_user();
-+ $fuser->whereAdd("service = $service");
-+ $fuser->whereAdd("id = $id");
-+ $fuser->limit(1);
-+
-+ if ($fuser->find()) {
-+ $fuser->fetch();
-+ return $fuser;
-+ }
-+
-+ return NULL;
-+ }
-+
-+ function updateKeys(&$orig) {
-+ $parts = array();
-+ foreach (array('id', 'service', 'uri', 'nickname') as $k) {
-+ if (strcmp($this->$k, $orig->$k) != 0) {
-+ $parts[] = $k . ' = ' . $this->_quote($this->$k);
-+ }
-+ }
-+ if (count($parts) == 0) {
-+ # No changes
-+ return true;
-+ }
-+ $toupdate = implode(', ', $parts);
-hunk ./classes/Foreign_user.php 55
-- $table = $this->tableName();
-- if(common_config('db','quote_identifiers')) {
-- $table = '"' . $table . '"';
-- }
-- $qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
-- ' WHERE id = ' . $this->id;
-- $orig->decache();
-- $result = $this->query($qry);
-- if ($result) {
-- $this->encache();
-- }
-- return $result;
-- }
-+ $table = $this->tableName();
-+ if(common_config('db','quote_identifiers')) {
-+ $table = '"' . $table . '"';
-+ }
-+ $qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
-+ ' WHERE id = ' . $this->id;
-+ $orig->decache();
-+ $result = $this->query($qry);
-+ if ($result) {
-+ $this->encache();
-+ }
-+ return $result;
-+ }
-hunk ./classes/Foreign_user.php 69
--
-+
-hunk ./classes/Memcached_DataObject.php 27
-- if (is_null($v)) {
-- $v = $k;
-- # XXX: HACK!
-- $i = new $cls;
-- $keys = $i->keys();
-- $k = $keys[0];
-- unset($i);
-- }
-- $i = Memcached_DataObject::getcached($cls, $k, $v);
-- if ($i) {
-- return $i;
-- } else {
-- $i = DB_DataObject::staticGet($cls, $k, $v);
-- if ($i) {
-- $i->encache();
-- }
-- return $i;
-- }
-- }
-+ if (is_null($v)) {
-+ $v = $k;
-+ # XXX: HACK!
-+ $i = new $cls;
-+ $keys = $i->keys();
-+ $k = $keys[0];
-+ unset($i);
-+ }
-+ $i = Memcached_DataObject::getcached($cls, $k, $v);
-+ if ($i) {
-+ return $i;
-+ } else {
-+ $i = DB_DataObject::staticGet($cls, $k, $v);
-+ if ($i) {
-+ $i->encache();
-+ }
-+ return $i;
-+ }
-+ }
-hunk ./classes/Memcached_DataObject.php 47
-- function &pkeyGet($cls, $kv) {
-- $i = Memcached_DataObject::multicache($cls, $kv);
-- if ($i) {
-- return $i;
-- } else {
-- $i = new $cls();
-- foreach ($kv as $k => $v) {
-- $i->$k = $v;
-- }
-- if ($i->find(true)) {
-- $i->encache();
-- } else {
-- $i = NULL;
-- }
-+ function &pkeyGet($cls, $kv) {
-+ $i = Memcached_DataObject::multicache($cls, $kv);
-+ if ($i) {
-+ return $i;
-+ } else {
-+ $i = new $cls();
-+ foreach ($kv as $k => $v) {
-+ $i->$k = $v;
-+ }
-+ if ($i->find(true)) {
-+ $i->encache();
-+ } else {
-+ $i = NULL;
-+ }
-hunk ./classes/Memcached_DataObject.php 62
-- }
-- }
-+ }
-+ }
-hunk ./classes/Memcached_DataObject.php 65
-- function insert() {
-- $result = parent::insert();
-- return $result;
-- }
--
-- function update($orig=NULL) {
-- if (is_object($orig) && $orig instanceof Memcached_DataObject) {
-- $orig->decache(); # might be different keys
-- }
-- $result = parent::update($orig);
-- if ($result) {
-- $this->encache();
-- }
-- return $result;
-- }
--
-- function delete() {
-- $this->decache(); # while we still have the values!
-- return parent::delete();
-- }
--
-- static function memcache() {
-- return common_memcache();
-- }
--
-- static function cacheKey($cls, $k, $v) {
-- return common_cache_key(strtolower($cls).':'.$k.':'.$v);
-- }
--
-- static function getcached($cls, $k, $v) {
-- $c = Memcached_DataObject::memcache();
-- if (!$c) {
-- return false;
-- } else {
-- return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v));
-- }
-- }
-+ function insert() {
-+ $result = parent::insert();
-+ return $result;
-+ }
-+
-+ function update($orig=NULL) {
-+ if (is_object($orig) && $orig instanceof Memcached_DataObject) {
-+ $orig->decache(); # might be different keys
-+ }
-+ $result = parent::update($orig);
-+ if ($result) {
-+ $this->encache();
-+ }
-+ return $result;
-+ }
-+
-+ function delete() {
-+ $this->decache(); # while we still have the values!
-+ return parent::delete();
-+ }
-+
-+ static function memcache() {
-+ return common_memcache();
-+ }
-+
-+ static function cacheKey($cls, $k, $v) {
-+ return common_cache_key(strtolower($cls).':'.$k.':'.$v);
-+ }
-+
-+ static function getcached($cls, $k, $v) {
-+ $c = Memcached_DataObject::memcache();
-+ if (!$c) {
-+ return false;
-+ } else {
-+ return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v));
-+ }
-+ }
-hunk ./classes/Memcached_DataObject.php 103
-- function keyTypes() {
-- global $_DB_DATAOBJECT;
-+ function keyTypes() {
-+ global $_DB_DATAOBJECT;
-hunk ./classes/Memcached_DataObject.php 106
-- $this->databaseStructure();
-+ $this->databaseStructure();
-hunk ./classes/Memcached_DataObject.php 109
-- return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"];
-- }
--
-- function encache() {
-- $c = $this->memcache();
-- if (!$c) {
-- return false;
-- } else {
-- $pkey = array();
-- $pval = array();
-- $types = $this->keyTypes();
-- ksort($types);
-- foreach ($types as $key => $type) {
-- if ($type == 'K') {
-- $pkey[] = $key;
-- $pval[] = $this->$key;
-- } else {
-- $c->set($this->cacheKey($this->tableName(), $key, $this->$key), $this);
-- }
-- }
-- # XXX: should work for both compound and scalar pkeys
-- $pvals = implode(',', $pval);
-- $pkeys = implode(',', $pkey);
-- $c->set($this->cacheKey($this->tableName(), $pkeys, $pvals), $this);
-- }
-- }
--
-- function decache() {
-- $c = $this->memcache();
-- if (!$c) {
-- return false;
-- } else {
-- $pkey = array();
-- $pval = array();
-- $types = $this->keyTypes();
-- ksort($types);
-- foreach ($types as $key => $type) {
-- if ($type == 'K') {
-- $pkey[] = $key;
-- $pval[] = $this->$key;
-- } else {
-- $c->delete($this->cacheKey($this->tableName(), $key, $this->$key));
-- }
-- }
-- # should work for both compound and scalar pkeys
-- # XXX: comma works for now but may not be safe separator for future keys
-- $pvals = implode(',', $pval);
-- $pkeys = implode(',', $pkey);
-- $c->delete($this->cacheKey($this->tableName(), $pkeys, $pvals));
-- }
-- }
-+ return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"];
-+ }
-+
-+ function encache() {
-+ $c = $this->memcache();
-+ if (!$c) {
-+ return false;
-+ } else {
-+ $pkey = array();
-+ $pval = array();
-+ $types = $this->keyTypes();
-+ ksort($types);
-+ foreach ($types as $key => $type) {
-+ if ($type == 'K') {
-+ $pkey[] = $key;
-+ $pval[] = $this->$key;
-+ } else {
-+ $c->set($this->cacheKey($this->tableName(), $key, $this->$key), $this);
-+ }
-+ }
-+ # XXX: should work for both compound and scalar pkeys
-+ $pvals = implode(',', $pval);
-+ $pkeys = implode(',', $pkey);
-+ $c->set($this->cacheKey($this->tableName(), $pkeys, $pvals), $this);
-+ }
-+ }
-+
-+ function decache() {
-+ $c = $this->memcache();
-+ if (!$c) {
-+ return false;
-+ } else {
-+ $pkey = array();
-+ $pval = array();
-+ $types = $this->keyTypes();
-+ ksort($types);
-+ foreach ($types as $key => $type) {
-+ if ($type == 'K') {
-+ $pkey[] = $key;
-+ $pval[] = $this->$key;
-+ } else {
-+ $c->delete($this->cacheKey($this->tableName(), $key, $this->$key));
-+ }
-+ }
-+ # should work for both compound and scalar pkeys
-+ # XXX: comma works for now but may not be safe separator for future keys
-+ $pvals = implode(',', $pval);
-+ $pkeys = implode(',', $pkey);
-+ $c->delete($this->cacheKey($this->tableName(), $pkeys, $pvals));
-+ }
-+ }
-hunk ./classes/Memcached_DataObject.php 161
-- function multicache($cls, $kv) {
-- ksort($kv);
-- $c = Memcached_DataObject::memcache();
-- if (!$c) {
-- return false;
-- } else {
-- $pkeys = implode(',', array_keys($kv));
-- $pvals = implode(',', array_values($kv));
-- return $c->get(Memcached_DataObject::cacheKey($cls, $pkeys, $pvals));
-- }
-- }
-+ function multicache($cls, $kv) {
-+ ksort($kv);
-+ $c = Memcached_DataObject::memcache();
-+ if (!$c) {
-+ return false;
-+ } else {
-+ $pkeys = implode(',', array_keys($kv));
-+ $pvals = implode(',', array_values($kv));
-+ return $c->get(Memcached_DataObject::cacheKey($cls, $pkeys, $pvals));
-+ }
-+ }
-hunk ./classes/Message.php 29
--
-- function getFrom() {
-- return Profile::staticGet('id', $this->from_profile);
-- }
--
-- function getTo() {
-- return Profile::staticGet('id', $this->to_profile);
-- }
--
-- static function saveNew($from, $to, $content, $source) {
--
-- $msg = new Message();
--
-- $msg->from_profile = $from;
-- $msg->to_profile = $to;
-- $msg->content = common_shorten_links($content);
-- $msg->rendered = common_render_text($content);
-- $msg->created = common_sql_now();
-- $msg->source = $source;
--
-- $result = $msg->insert();
--
-- if (!$result) {
-- common_log_db_error($msg, 'INSERT', __FILE__);
-- return _('Could not insert message.');
-- }
--
-- $orig = clone($msg);
-- $msg->uri = common_local_url('showmessage', array('message' => $msg->id));
--
-- $result = $msg->update($orig);
--
-- if (!$result) {
-- common_log_db_error($msg, 'UPDATE', __FILE__);
-- return _('Could not update message with new URI.');
-- }
--
-- return $msg;
-- }
-+
-+ function getFrom() {
-+ return Profile::staticGet('id', $this->from_profile);
-+ }
-+
-+ function getTo() {
-+ return Profile::staticGet('id', $this->to_profile);
-+ }
-+
-+ static function saveNew($from, $to, $content, $source) {
-+
-+ $msg = new Message();
-+
-+ $msg->from_profile = $from;
-+ $msg->to_profile = $to;
-+ $msg->content = common_shorten_links($content);
-+ $msg->rendered = common_render_text($content);
-+ $msg->created = common_sql_now();
-+ $msg->source = $source;
-+
-+ $result = $msg->insert();
-+
-+ if (!$result) {
-+ common_log_db_error($msg, 'INSERT', __FILE__);
-+ return _('Could not insert message.');
-+ }
-+
-+ $orig = clone($msg);
-+ $msg->uri = common_local_url('showmessage', array('message' => $msg->id));
-+
-+ $result = $msg->update($orig);
-+
-+ if (!$result) {
-+ common_log_db_error($msg, 'UPDATE', __FILE__);
-+ return _('Could not update message with new URI.');
-+ }
-+
-+ return $msg;
-+ }
-hunk ./classes/Notice.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./classes/Notice.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./classes/Notice.php 34
-- ###START_AUTOCODE
-- /* the code below is auto generated do not remove the above tag */
-+ ###START_AUTOCODE
-+ /* the code below is auto generated do not remove the above tag */
-hunk ./classes/Notice.php 37
-- public $__table = 'notice'; // table name
-- public $id; // int(4) primary_key not_null
-- public $profile_id; // int(4) not_null
-- public $uri; // varchar(255) unique_key
-- public $content; // varchar(140)
-- public $rendered; // text()
-- public $url; // varchar(255)
-- public $created; // datetime() not_null
-- public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
-- public $reply_to; // int(4)
-- public $is_local; // tinyint(1)
-- public $source; // varchar(32)
-+ public $__table = 'notice'; // table name
-+ public $id; // int(4) primary_key not_null
-+ public $profile_id; // int(4) not_null
-+ public $uri; // varchar(255) unique_key
-+ public $content; // varchar(140)
-+ public $rendered; // text()
-+ public $url; // varchar(255)
-+ public $created; // datetime() not_null
-+ public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
-+ public $reply_to; // int(4)
-+ public $is_local; // tinyint(1)
-+ public $source; // varchar(32)
-hunk ./classes/Notice.php 50
-- /* Static get */
-- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
-+ /* Static get */
-+ function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
-hunk ./classes/Notice.php 53
-- /* the code above is auto generated do not remove the tag below */
-- ###END_AUTOCODE
-+ /* the code above is auto generated do not remove the tag below */
-+ ###END_AUTOCODE
-hunk ./classes/Notice.php 56
-- function getProfile() {
-- return Profile::staticGet('id', $this->profile_id);
-- }
-+ function getProfile() {
-+ return Profile::staticGet('id', $this->profile_id);
-+ }
-hunk ./classes/Notice.php 60
-- function delete() {
-- $this->blowCaches(true);
-- $this->blowFavesCache(true);
-- $this->blowInboxes();
-- return parent::delete();
-- }
-+ function delete() {
-+ $this->blowCaches(true);
-+ $this->blowFavesCache(true);
-+ $this->blowInboxes();
-+ return parent::delete();
-+ }
-hunk ./classes/Notice.php 67
-- function saveTags() {
-- /* extract all #hastags */
-- $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match);
-- if (!$count) {
-- return true;
-- }
-+ function saveTags() {
-+ /* extract all #hastags */
-+ $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match);
-+ if (!$count) {
-+ return true;
-+ }
-hunk ./classes/Notice.php 74
-- /* elide characters we don't want in the tag */
-- $match[1] = str_replace(array('-', '_', '.'), '', $match[1]);
-+ /* elide characters we don't want in the tag */
-+ $match[1] = str_replace(array('-', '_', '.'), '', $match[1]);
-hunk ./classes/Notice.php 77
-- /* Add them to the database */
-- foreach(array_unique($match[1]) as $hashtag) {
-- $tag = DB_DataObject::factory('Notice_tag');
-- $tag->notice_id = $this->id;
-- $tag->tag = $hashtag;
-- $tag->created = $this->created;
-- $id = $tag->insert();
-- if (!$id) {
-- $last_error = PEAR::getStaticProperty('DB_DataObject','lastError');
-- common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message);
-- common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message));
-- return;
-- }
-- }
-- return true;
-- }
-+ /* Add them to the database */
-+ foreach(array_unique($match[1]) as $hashtag) {
-+ $tag = DB_DataObject::factory('Notice_tag');
-+ $tag->notice_id = $this->id;
-+ $tag->tag = $hashtag;
-+ $tag->created = $this->created;
-+ $id = $tag->insert();
-+ if (!$id) {
-+ $last_error = PEAR::getStaticProperty('DB_DataObject','lastError');
-+ common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message);
-+ common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message));
-+ return;
-+ }
-+ }
-+ return true;
-+ }
+- return NULL;
++ return null;
+hunk ./classes/Foreign_link.php 69
+- return NULL;
++ return null;
+hunk ./classes/Foreign_service.php 20
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); }
+hunk ./classes/Foreign_subscription.php 19
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); }
+hunk ./classes/Foreign_user.php 21
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); }
+hunk ./classes/Foreign_user.php 39
+- return NULL;
++ return null;
+hunk ./classes/Invitation.php 20
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Invitation',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Invitation',$k,$v); }
+hunk ./classes/Memcached_DataObject.php 26
+- function &staticGet($cls, $k, $v=NULL) {
++ function &staticGet($cls, $k, $v=null) {
+hunk ./classes/Memcached_DataObject.php 59
+- $i = NULL;
++ $i = null;
+hunk ./classes/Memcached_DataObject.php 70
+- function update($orig=NULL) {
++ function update($orig=null) {
+hunk ./classes/Message.php 25
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Message',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Message',$k,$v); }
+hunk ./classes/Nonce.php 21
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Nonce',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Nonce',$k,$v); }
+hunk ./classes/Notice.php 51
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice',$k,$v); }
hunk ./classes/Notice.php 94
-- static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) {
-+ static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) {
-hunk ./classes/Notice.php 96
-- $profile = Profile::staticGet($profile_id);
-+ $profile = Profile::staticGet($profile_id);
-hunk ./classes/Notice.php 105
-- return _('Too many notices too fast; take a breather and post again in a few minutes.');
-+ return _('Too many notices too fast; take a breather and post again in a few minutes.');
-hunk ./classes/Notice.php 108
-- $banned = common_config('profile', 'banned');
-+ $banned = common_config('profile', 'banned');
-hunk ./classes/Notice.php 110
-- if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) {
-- common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id).");
-+ if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) {
-+ common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id).");
-hunk ./classes/Notice.php 113
-- }
-+ }
-hunk ./classes/Notice.php 115
-- $notice = new Notice();
-- $notice->profile_id = $profile_id;
-+ $notice = new Notice();
-+ $notice->profile_id = $profile_id;
-hunk ./classes/Notice.php 118
-- $blacklist = common_config('public', 'blacklist');
-+ $blacklist = common_config('public', 'blacklist');
-hunk ./classes/Notice.php 120
-- # Blacklisted are non-false, but not 1, either
-+ # Blacklisted are non-false, but not 1, either
-hunk ./classes/Notice.php 122
-- if ($blacklist && in_array($profile_id, $blacklist)) {
-- $notice->is_local = -1;
-- } else {
-- $notice->is_local = $is_local;
-- }
-+ if ($blacklist && in_array($profile_id, $blacklist)) {
-+ $notice->is_local = -1;
-+ } else {
-+ $notice->is_local = $is_local;
-+ }
-hunk ./classes/Notice.php 128
-- $notice->reply_to = $reply_to;
-- $notice->created = common_sql_now();
-- $notice->content = common_shorten_links($content);
-- $notice->rendered = common_render_content($notice->content, $notice);
-- $notice->source = $source;
-- $notice->uri = $uri;
-+ $notice->reply_to = $reply_to;
-+ $notice->created = common_sql_now();
-+ $notice->content = common_shorten_links($content);
-+ $notice->rendered = common_render_content($notice->content, $notice);
-+ $notice->source = $source;
-+ $notice->uri = $uri;
-hunk ./classes/Notice.php 135
-- $id = $notice->insert();
-+ $id = $notice->insert();
-hunk ./classes/Notice.php 137
-- if (!$id) {
-- common_log_db_error($notice, 'INSERT', __FILE__);
-- return _('Problem saving notice.');
-- }
-+ if (!$id) {
-+ common_log_db_error($notice, 'INSERT', __FILE__);
-+ return _('Problem saving notice.');
-+ }
-hunk ./classes/Notice.php 142
-- # Update the URI after the notice is in the database
-- if (!$uri) {
-- $orig = clone($notice);
-- $notice->uri = common_notice_uri($notice);
-+ # Update the URI after the notice is in the database
-+ if (!$uri) {
-+ $orig = clone($notice);
-+ $notice->uri = common_notice_uri($notice);
-hunk ./classes/Notice.php 147
-- if (!$notice->update($orig)) {
-- common_log_db_error($notice, 'UPDATE', __FILE__);
-- return _('Problem saving notice.');
-- }
-- }
-+ if (!$notice->update($orig)) {
-+ common_log_db_error($notice, 'UPDATE', __FILE__);
-+ return _('Problem saving notice.');
-+ }
-+ }
-hunk ./classes/Notice.php 153
-- # XXX: do we need to change this for remote users?
-+ # XXX: do we need to change this for remote users?
-hunk ./classes/Notice.php 155
-- common_save_replies($notice);
-- $notice->saveTags();
-+ common_save_replies($notice);
-+ $notice->saveTags();
-hunk ./classes/Notice.php 158
-- # Clear the cache for subscribed users, so they'll update at next request
-- # XXX: someone clever could prepend instead of clearing the cache
-+ # Clear the cache for subscribed users, so they'll update at next request
-+ # XXX: someone clever could prepend instead of clearing the cache
-hunk ./classes/Notice.php 161
-- if (common_config('memcached', 'enabled')) {
-- $notice->blowCaches();
-- }
-+ if (common_config('memcached', 'enabled')) {
-+ $notice->blowCaches();
-+ }
-hunk ./classes/Notice.php 165
-- $notice->addToInboxes();
-- return $notice;
-- }
-+ $notice->addToInboxes();
-+ return $notice;
-+ }
-hunk ./classes/Notice.php 187
-- function blowCaches($blowLast=false) {
-- $this->blowSubsCache($blowLast);
-- $this->blowNoticeCache($blowLast);
-- $this->blowRepliesCache($blowLast);
-- $this->blowPublicCache($blowLast);
-- $this->blowTagCache($blowLast);
-- }
-+ function blowCaches($blowLast=false) {
-+ $this->blowSubsCache($blowLast);
-+ $this->blowNoticeCache($blowLast);
-+ $this->blowRepliesCache($blowLast);
-+ $this->blowPublicCache($blowLast);
-+ $this->blowTagCache($blowLast);
-+ }
-hunk ./classes/Notice.php 195
-- function blowTagCache($blowLast=false) {
-- $cache = common_memcache();
-- if ($cache) {
-- $tag = new Notice_tag();
-- $tag->notice_id = $this->id;
-- if ($tag->find()) {
-- while ($tag->fetch()) {
-- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag . ';last'));
-- }
-- }
-- }
-- $tag->free();
-- unset($tag);
-- }
-- }
-+ function blowTagCache($blowLast=false) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $tag = new Notice_tag();
-+ $tag->notice_id = $this->id;
-+ if ($tag->find()) {
-+ while ($tag->fetch()) {
-+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag . ';last'));
-+ }
-+ }
-+ }
-+ $tag->free();
-+ unset($tag);
-+ }
-+ }
-hunk ./classes/Notice.php 213
-- function blowSubsCache($blowLast=false) {
-- $cache = common_memcache();
-- if ($cache) {
-- $user = new User();
-+ function blowSubsCache($blowLast=false) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $user = new User();
-hunk ./classes/Notice.php 218
-- $user->query('SELECT id ' .
-- 'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
-- 'WHERE subscription.subscribed = ' . $this->profile_id);
-+ $user->query('SELECT id ' .
-+ 'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
-+ 'WHERE subscription.subscribed = ' . $this->profile_id);
-hunk ./classes/Notice.php 222
-- while ($user->fetch()) {
-- $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id . ';last'));
-- }
-- }
-- $user->free();
-- unset($user);
-- }
-- }
-+ while ($user->fetch()) {
-+ $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id . ';last'));
-+ }
-+ }
-+ $user->free();
-+ unset($user);
-+ }
-+ }
-hunk ./classes/Notice.php 233
-- function blowNoticeCache($blowLast=false) {
-- if ($this->is_local) {
-- $cache = common_memcache();
-- if ($cache) {
-- $cache->delete(common_cache_key('profile:notices:'.$this->profile_id));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('profile:notices:'.$this->profile_id.';last'));
-- }
-- }
-- }
-- }
-+ function blowNoticeCache($blowLast=false) {
-+ if ($this->is_local) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $cache->delete(common_cache_key('profile:notices:'.$this->profile_id));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('profile:notices:'.$this->profile_id.';last'));
-+ }
-+ }
-+ }
-+ }
-hunk ./classes/Notice.php 245
-- function blowRepliesCache($blowLast=false) {
-- $cache = common_memcache();
-- if ($cache) {
-- $reply = new Reply();
-- $reply->notice_id = $this->id;
-- if ($reply->find()) {
-- while ($reply->fetch()) {
-- $cache->delete(common_cache_key('user:replies:'.$reply->profile_id));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('user:replies:'.$reply->profile_id.';last'));
-- }
-- }
-- }
-- $reply->free();
-- unset($reply);
-- }
-- }
-+ function blowRepliesCache($blowLast=false) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $reply = new Reply();
-+ $reply->notice_id = $this->id;
-+ if ($reply->find()) {
-+ while ($reply->fetch()) {
-+ $cache->delete(common_cache_key('user:replies:'.$reply->profile_id));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('user:replies:'.$reply->profile_id.';last'));
-+ }
-+ }
-+ }
-+ $reply->free();
-+ unset($reply);
-+ }
-+ }
-hunk ./classes/Notice.php 263
-- function blowPublicCache($blowLast=false) {
-- if ($this->is_local == 1) {
-- $cache = common_memcache();
-- if ($cache) {
-- $cache->delete(common_cache_key('public'));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('public').';last');
-- }
-- }
-- }
-- }
-+ function blowPublicCache($blowLast=false) {
-+ if ($this->is_local == 1) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $cache->delete(common_cache_key('public'));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('public').';last');
-+ }
-+ }
-+ }
-+ }
-hunk ./classes/Notice.php 275
-- function blowFavesCache($blowLast=false) {
-- $cache = common_memcache();
-- if ($cache) {
-- $fave = new Fave();
-- $fave->notice_id = $this->id;
-- if ($fave->find()) {
-- while ($fave->fetch()) {
-- $cache->delete(common_cache_key('user:faves:'.$fave->user_id));
-- if ($blowLast) {
-- $cache->delete(common_cache_key('user:faves:'.$fave->user_id.';last'));
-- }
-- }
-- }
-- $fave->free();
-- unset($fave);
-- }
-- }
-+ function blowFavesCache($blowLast=false) {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $fave = new Fave();
-+ $fave->notice_id = $this->id;
-+ if ($fave->find()) {
-+ while ($fave->fetch()) {
-+ $cache->delete(common_cache_key('user:faves:'.$fave->user_id));
-+ if ($blowLast) {
-+ $cache->delete(common_cache_key('user:faves:'.$fave->user_id.';last'));
-+ }
-+ }
-+ }
-+ $fave->free();
-+ unset($fave);
-+ }
-+ }
-hunk ./classes/Notice.php 293
-- # XXX: too many args; we need to move to named params or even a separate
-- # class for notice streams
-+ # XXX: too many args; we need to move to named params or even a separate
-+ # class for notice streams
+- static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) {
++ static function saveNew($profile_id, $content, $source=null, $is_local=1, $reply_to=null, $uri=null) {
hunk ./classes/Notice.php 296
-- static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) {
-+ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) {
-hunk ./classes/Notice.php 298
-- if (common_config('memcached', 'enabled')) {
-+ if (common_config('memcached', 'enabled')) {
-hunk ./classes/Notice.php 300
-- # Skip the cache if this is a since, since_id or before_id qry
-- if ($since_id > 0 || $before_id > 0 || $since) {
-- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
-- } else {
-- return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order);
-- }
-- }
-+ # Skip the cache if this is a since, since_id or before_id qry
-+ if ($since_id > 0 || $before_id > 0 || $since) {
-+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
-+ } else {
-+ return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order);
-+ }
-+ }
-hunk ./classes/Notice.php 308
-- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
-- }
-+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since);
-+ }
-hunk ./classes/Notice.php 311
-- static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) {
-+ static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) {
-hunk ./classes/Notice.php 313
-- $needAnd = FALSE;
-- $needWhere = TRUE;
-+ $needAnd = FALSE;
-+ $needWhere = TRUE;
-hunk ./classes/Notice.php 316
-- if (preg_match('/\bWHERE\b/i', $qry)) {
-- $needWhere = FALSE;
-- $needAnd = TRUE;
-- }
-+ if (preg_match('/\bWHERE\b/i', $qry)) {
-+ $needWhere = FALSE;
-+ $needAnd = TRUE;
-+ }
-hunk ./classes/Notice.php 321
-- if ($since_id > 0) {
-+ if ($since_id > 0) {
-hunk ./classes/Notice.php 323
-- if ($needWhere) {
-- $qry .= ' WHERE ';
-- $needWhere = FALSE;
-- } else {
-- $qry .= ' AND ';
-- }
-+ if ($needWhere) {
-+ $qry .= ' WHERE ';
-+ $needWhere = FALSE;
-+ } else {
-+ $qry .= ' AND ';
-+ }
-hunk ./classes/Notice.php 330
-- $qry .= ' notice.id > ' . $since_id;
-- }
-+ $qry .= ' notice.id > ' . $since_id;
-+ }
-hunk ./classes/Notice.php 333
-- if ($before_id > 0) {
-+ if ($before_id > 0) {
-hunk ./classes/Notice.php 335
-- if ($needWhere) {
-- $qry .= ' WHERE ';
-- $needWhere = FALSE;
-- } else {
-- $qry .= ' AND ';
-- }
-+ if ($needWhere) {
-+ $qry .= ' WHERE ';
-+ $needWhere = FALSE;
-+ } else {
-+ $qry .= ' AND ';
-+ }
-hunk ./classes/Notice.php 342
-- $qry .= ' notice.id < ' . $before_id;
-- }
-+ $qry .= ' notice.id < ' . $before_id;
-+ }
-hunk ./classes/Notice.php 345
-- if ($since) {
-+ if ($since) {
-hunk ./classes/Notice.php 347
-- if ($needWhere) {
-- $qry .= ' WHERE ';
-- $needWhere = FALSE;
-- } else {
-- $qry .= ' AND ';
-- }
-+ if ($needWhere) {
-+ $qry .= ' WHERE ';
-+ $needWhere = FALSE;
-+ } else {
-+ $qry .= ' AND ';
-+ }
-hunk ./classes/Notice.php 354
-- $qry .= ' notice.created > \'' . date('Y-m-d H:i:s', $since) . '\'';
-- }
-+ $qry .= ' notice.created > \'' . date('Y-m-d H:i:s', $since) . '\'';
-+ }
-hunk ./classes/Notice.php 357
-- # Allow ORDER override
-+ # Allow ORDER override
-hunk ./classes/Notice.php 359
-- if ($order) {
-- $qry .= $order;
-- } else {
-- $qry .= ' ORDER BY notice.created DESC, notice.id DESC ';
-- }
-+ if ($order) {
-+ $qry .= $order;
-+ } else {
-+ $qry .= ' ORDER BY notice.created DESC, notice.id DESC ';
-+ }
-hunk ./classes/Notice.php 365
-- if (common_config('db','type') == 'pgsql') {
-- $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-- } else {
-- $qry .= ' LIMIT ' . $offset . ', ' . $limit;
-- }
-+ if (common_config('db','type') == 'pgsql') {
-+ $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
-+ } else {
-+ $qry .= ' LIMIT ' . $offset . ', ' . $limit;
-+ }
-hunk ./classes/Notice.php 371
-- $notice = new Notice();
-+ $notice = new Notice();
-hunk ./classes/Notice.php 373
-- $notice->query($qry);
-+ $notice->query($qry);
-hunk ./classes/Notice.php 375
-- return $notice;
-- }
-+ return $notice;
-+ }
-hunk ./classes/Notice.php 378
-- # XXX: this is pretty long and should probably be broken up into
-- # some helper functions
-+ # XXX: this is pretty long and should probably be broken up into
-+ # some helper functions
-hunk ./classes/Notice.php 381
-- static function getCachedStream($qry, $cachekey, $offset, $limit, $order) {
-+ static function getCachedStream($qry, $cachekey, $offset, $limit, $order) {
-hunk ./classes/Notice.php 383
-- # If outside our cache window, just go to the DB
-+ # If outside our cache window, just go to the DB
-hunk ./classes/Notice.php 385
-- if ($offset + $limit > NOTICE_CACHE_WINDOW) {
-- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
-- }
-+ if ($offset + $limit > NOTICE_CACHE_WINDOW) {
-+ return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
-+ }
-hunk ./classes/Notice.php 389
-- # Get the cache; if we can't, just go to the DB
-+ # Get the cache; if we can't, just go to the DB
-hunk ./classes/Notice.php 391
-- $cache = common_memcache();
-+ $cache = common_memcache();
-hunk ./classes/Notice.php 393
-- if (!$cache) {
-- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
-- }
-+ if (!$cache) {
-+ return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
-+ }
-hunk ./classes/Notice.php 397
-- # Get the notices out of the cache
-+ # Get the notices out of the cache
-hunk ./classes/Notice.php 399
-- $notices = $cache->get(common_cache_key($cachekey));
-+ $notices = $cache->get(common_cache_key($cachekey));
-hunk ./classes/Notice.php 401
-- # On a cache hit, return a DB-object-like wrapper
-+ # On a cache hit, return a DB-object-like wrapper
-hunk ./classes/Notice.php 403
-- if ($notices !== FALSE) {
-- $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit));
-- return $wrapper;
-- }
-+ if ($notices !== FALSE) {
-+ $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit));
-+ return $wrapper;
-+ }
-hunk ./classes/Notice.php 408
-- # If the cache was invalidated because of new data being
-- # added, we can try and just get the new stuff. We keep an additional
-- # copy of the data at the key + ';last'
-+ # If the cache was invalidated because of new data being
-+ # added, we can try and just get the new stuff. We keep an additional
-+ # copy of the data at the key + ';last'
-hunk ./classes/Notice.php 412
-- # No cache hit. Try to get the *last* cached version
-+ # No cache hit. Try to get the *last* cached version
-hunk ./classes/Notice.php 414
-- $last_notices = $cache->get(common_cache_key($cachekey) . ';last');
-+ $last_notices = $cache->get(common_cache_key($cachekey) . ';last');
-hunk ./classes/Notice.php 416
-- if ($last_notices) {
-+ if ($last_notices) {
-hunk ./classes/Notice.php 418
-- # Reverse-chron order, so last ID is last.
-+ # Reverse-chron order, so last ID is last.
-hunk ./classes/Notice.php 420
-- $last_id = $last_notices[0]->id;
-+ $last_id = $last_notices[0]->id;
-hunk ./classes/Notice.php 422
-- # XXX: this assumes monotonically increasing IDs; a fair
-- # bet with our DB.
-+ # XXX: this assumes monotonically increasing IDs; a fair
-+ # bet with our DB.
-hunk ./classes/Notice.php 425
-- $new_notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW,
-- $last_id, NULL, $order, NULL);
-+ $new_notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW,
-+ $last_id, NULL, $order, NULL);
-hunk ./classes/Notice.php 428
-- if ($new_notice) {
-- $new_notices = array();
-- while ($new_notice->fetch()) {
-- $new_notices[] = clone($new_notice);
-- }
-- $new_notice->free();
-- $notices = array_slice(array_merge($new_notices, $last_notices),
-- 0, NOTICE_CACHE_WINDOW);
-+ if ($new_notice) {
-+ $new_notices = array();
-+ while ($new_notice->fetch()) {
-+ $new_notices[] = clone($new_notice);
-+ }
-+ $new_notice->free();
-+ $notices = array_slice(array_merge($new_notices, $last_notices),
-+ 0, NOTICE_CACHE_WINDOW);
-hunk ./classes/Notice.php 437
-- # Store the array in the cache for next time
-+ # Store the array in the cache for next time
-hunk ./classes/Notice.php 439
-- $result = $cache->set(common_cache_key($cachekey), $notices);
-- $result = $cache->set(common_cache_key($cachekey) . ';last', $notices);
-+ $result = $cache->set(common_cache_key($cachekey), $notices);
-+ $result = $cache->set(common_cache_key($cachekey) . ';last', $notices);
-hunk ./classes/Notice.php 442
-- # return a wrapper of the array for use now
-+ # return a wrapper of the array for use now
-hunk ./classes/Notice.php 444
-- return new NoticeWrapper(array_slice($notices, $offset, $limit));
-- }
-- }
-+ return new NoticeWrapper(array_slice($notices, $offset, $limit));
-+ }
-+ }
-hunk ./classes/Notice.php 448
-- # Otherwise, get the full cache window out of the DB
-+ # Otherwise, get the full cache window out of the DB
+- static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) {
++ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=null, $since=null) {
+hunk ./classes/Notice.php 386
+- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
++ return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null);
+hunk ./classes/Notice.php 394
+- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL);
++ return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null);
+hunk ./classes/Notice.php 426
+- $last_id, NULL, $order, NULL);
++ $last_id, null, $order, null);
hunk ./classes/Notice.php 450
-- $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL);
-+ $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL);
-hunk ./classes/Notice.php 452
-- # If there are no hits, just return the value
-+ # If there are no hits, just return the value
-hunk ./classes/Notice.php 454
-- if (!$notice) {
-- return $notice;
-- }
-+ if (!$notice) {
-+ return $notice;
-+ }
-hunk ./classes/Notice.php 458
-- # Pack results into an array
-+ # Pack results into an array
-hunk ./classes/Notice.php 460
-- $notices = array();
-+ $notices = array();
-hunk ./classes/Notice.php 462
-- while ($notice->fetch()) {
-- $notices[] = clone($notice);
-- }
-+ while ($notice->fetch()) {
-+ $notices[] = clone($notice);
-+ }
-hunk ./classes/Notice.php 466
-- $notice->free();
-+ $notice->free();
-hunk ./classes/Notice.php 468
-- # Store the array in the cache for next time
-+ # Store the array in the cache for next time
-hunk ./classes/Notice.php 470
-- $result = $cache->set(common_cache_key($cachekey), $notices);
-- $result = $cache->set(common_cache_key($cachekey) . ';last', $notices);
-+ $result = $cache->set(common_cache_key($cachekey), $notices);
-+ $result = $cache->set(common_cache_key($cachekey) . ';last', $notices);
-hunk ./classes/Notice.php 473
-- # return a wrapper of the array for use now
-+ # return a wrapper of the array for use now
-hunk ./classes/Notice.php 475
-- $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit));
-+ $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit));
-hunk ./classes/Notice.php 477
-- return $wrapper;
-- }
-+ return $wrapper;
-+ }
+- $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL);
++ $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, null, null, $order, null);
hunk ./classes/Notice.php 480
-- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) {
-+ function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) {
-hunk ./classes/Notice.php 482
-- $parts = array();
-+ $parts = array();
-hunk ./classes/Notice.php 484
-- $qry = 'SELECT * FROM notice ';
-+ $qry = 'SELECT * FROM notice ';
-hunk ./classes/Notice.php 486
-- if (common_config('public', 'localonly')) {
-- $parts[] = 'is_local = 1';
-- } else {
-- # -1 == blacklisted
-- $parts[] = 'is_local != -1';
-- }
-+ if (common_config('public', 'localonly')) {
-+ $parts[] = 'is_local = 1';
-+ } else {
-+ # -1 == blacklisted
-+ $parts[] = 'is_local != -1';
-+ }
-hunk ./classes/Notice.php 493
-- if ($parts) {
-- $qry .= ' WHERE ' . implode(' AND ', $parts);
-- }
-+ if ($parts) {
-+ $qry .= ' WHERE ' . implode(' AND ', $parts);
-+ }
-hunk ./classes/Notice.php 497
-- return Notice::getStream($qry,
-- 'public',
-- $offset, $limit, $since_id, $before_id, NULL, $since);
-- }
-+ return Notice::getStream($qry,
-+ 'public',
-+ $offset, $limit, $since_id, $before_id, NULL, $since);
-+ }
-hunk ./classes/Notice.php 502
-- function addToInboxes() {
-- $enabled = common_config('inboxes', 'enabled');
-+ function addToInboxes() {
-+ $enabled = common_config('inboxes', 'enabled');
-hunk ./classes/Notice.php 505
-- if ($enabled === true || $enabled === 'transitional') {
-- $inbox = new Notice_inbox();
-- $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
-- 'SELECT user.id, ' . $this->id . ', "' . $this->created . '" ' .
-- 'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
-- 'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
-- 'AND NOT EXISTS (SELECT user_id, notice_id ' .
-- 'FROM notice_inbox ' .
-- 'WHERE user_id = user.id ' .
-- 'AND notice_id = ' . $this->id . ' )';
-- if ($enabled === 'transitional') {
-- $qry .= ' AND user.inboxed = 1';
-- }
-- $inbox->query($qry);
-- }
-- return;
-- }
-+ if ($enabled === true || $enabled === 'transitional') {
-+ $inbox = new Notice_inbox();
-+ $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' .
-+ 'SELECT user.id, ' . $this->id . ', "' . $this->created . '" ' .
-+ 'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
-+ 'WHERE subscription.subscribed = ' . $this->profile_id . ' ' .
-+ 'AND NOT EXISTS (SELECT user_id, notice_id ' .
-+ 'FROM notice_inbox ' .
-+ 'WHERE user_id = user.id ' .
-+ 'AND notice_id = ' . $this->id . ' )';
-+ if ($enabled === 'transitional') {
-+ $qry .= ' AND user.inboxed = 1';
-+ }
-+ $inbox->query($qry);
-+ }
-+ return;
-+ }
-hunk ./classes/Notice.php 523
-- # Delete from inboxes if we're deleted.
-+ # Delete from inboxes if we're deleted.
-hunk ./classes/Notice.php 525
-- function blowInboxes() {
-+ function blowInboxes() {
-hunk ./classes/Notice.php 527
-- $enabled = common_config('inboxes', 'enabled');
-+ $enabled = common_config('inboxes', 'enabled');
-hunk ./classes/Notice.php 529
-- if ($enabled === true || $enabled === 'transitional') {
-- $inbox = new Notice_inbox();
-- $inbox->notice_id = $this->id;
-- $inbox->delete();
-- }
-+ if ($enabled === true || $enabled === 'transitional') {
-+ $inbox = new Notice_inbox();
-+ $inbox->notice_id = $this->id;
-+ $inbox->delete();
-+ }
-hunk ./classes/Notice.php 535
-- return;
-- }
-+ return;
-+ }
+- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) {
++ function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=null) {
+hunk ./classes/Notice.php 499
+- $offset, $limit, $since_id, $before_id, NULL, $since);
++ $offset, $limit, $since_id, $before_id, null, $since);
hunk ./classes/NoticeWrapper.php 38
-- var $notices = NULL;
-- var $i = -1;
--
-- function __construct($arr) {
-- $this->notices = $arr;
-- }
--
-- function fetch() {
-- static $fields = array('id', 'profile_id', 'uri', 'content', 'rendered',
-- 'url', 'created', 'modified', 'reply_to', 'is_local', 'source');
-- $this->i++;
-- if ($this->i >= count($this->notices)) {
-- return false;
-- } else {
-- $n = $this->notices[$this->i];
-- foreach ($fields as $f) {
-- $this->$f = $n->$f;
-- }
-- return true;
-- }
-- }
-+ var $notices = NULL;
-+ var $i = -1;
-+
-+ function __construct($arr) {
-+ $this->notices = $arr;
-+ }
-+
-+ function fetch() {
-+ static $fields = array('id', 'profile_id', 'uri', 'content', 'rendered',
-+ 'url', 'created', 'modified', 'reply_to', 'is_local', 'source');
-+ $this->i++;
-+ if ($this->i >= count($this->notices)) {
-+ return false;
-+ } else {
-+ $n = $this->notices[$this->i];
-+ foreach ($fields as $f) {
-+ $this->$f = $n->$f;
-+ }
-+ return true;
-+ }
-+ }
-hunk ./classes/Notice_tag.php 37
--
-- static function getStream($tag, $offset=0, $limit=20) {
-- $qry =
-- 'SELECT notice.* ' .
-- 'FROM notice JOIN notice_tag ON notice.id = notice_tag.notice_id ' .
-- 'WHERE notice_tag.tag = "%s" ';
-+
-+ static function getStream($tag, $offset=0, $limit=20) {
-+ $qry =
-+ 'SELECT notice.* ' .
-+ 'FROM notice JOIN notice_tag ON notice.id = notice_tag.notice_id ' .
-+ 'WHERE notice_tag.tag = "%s" ';
-hunk ./classes/Notice_tag.php 44
-- return Notice::getStream(sprintf($qry, $tag),
-- 'notice_tag:notice_stream:' . common_keyize($tag),
-- $offset, $limit);
-- }
--
-- function blowCache() {
-- $cache = common_memcache();
-- if ($cache) {
-- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $this->tag));
-- }
-- }
-+ return Notice::getStream(sprintf($qry, $tag),
-+ 'notice_tag:notice_stream:' . common_keyize($tag),
-+ $offset, $limit);
-+ }
-+
-+ function blowCache() {
-+ $cache = common_memcache();
-+ if ($cache) {
-+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $this->tag));
-+ }
-+ }
+- var $notices = NULL;
++ var $notices = null;
+hunk ./classes/Notice_inbox.php 36
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); }
+hunk ./classes/Notice_source.php 20
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); }
+hunk ./classes/Notice_tag.php 33
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); }
+hunk ./classes/Profile.php 44
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile',$k,$v); }
hunk ./classes/Profile.php 49
-- function getAvatar($width, $height=NULL) {
-- if (is_null($height)) {
-- $height = $width;
-- }
-- return Avatar::pkeyGet(array('profile_id' => $this->id,
-- 'width' => $width,
-- 'height' => $height));
-- }
-+ function getAvatar($width, $height=NULL) {
-+ if (is_null($height)) {
-+ $height = $width;
-+ }
-+ return Avatar::pkeyGet(array('profile_id' => $this->id,
-+ 'width' => $width,
-+ 'height' => $height));
-+ }
-hunk ./classes/Profile.php 58
-- function getOriginalAvatar() {
-- $avatar = DB_DataObject::factory('avatar');
-- $avatar->profile_id = $this->id;
-- $avatar->original = true;
-- if ($avatar->find(true)) {
-- return $avatar;
-- } else {
-- return NULL;
-- }
-- }
-+ function getOriginalAvatar() {
-+ $avatar = DB_DataObject::factory('avatar');
-+ $avatar->profile_id = $this->id;
-+ $avatar->original = true;
-+ if ($avatar->find(true)) {
-+ return $avatar;
-+ } else {
-+ return NULL;
-+ }
-+ }
-hunk ./classes/Profile.php 69
-- function setOriginal($source) {
-+ function setOriginal($source) {
-hunk ./classes/Profile.php 71
-- $info = @getimagesize($source);
-+ $info = @getimagesize($source);
-hunk ./classes/Profile.php 73
-- if (!$info) {
-- return NULL;
-- }
-+ if (!$info) {
-+ return NULL;
-+ }
-hunk ./classes/Profile.php 77
-- $filename = common_avatar_filename($this->id,
-- image_type_to_extension($info[2]),
-- NULL, common_timestamp());
-- $filepath = common_avatar_path($filename);
-+ $filename = common_avatar_filename($this->id,
-+ image_type_to_extension($info[2]),
-+ NULL, common_timestamp());
-+ $filepath = common_avatar_path($filename);
-hunk ./classes/Profile.php 82
-- copy($source, $filepath);
-+ copy($source, $filepath);
-hunk ./classes/Profile.php 84
-- $avatar = new Avatar();
-+ $avatar = new Avatar();
-hunk ./classes/Profile.php 86
-- $avatar->profile_id = $this->id;
-- $avatar->width = $info[0];
-- $avatar->height = $info[1];
-- $avatar->mediatype = image_type_to_mime_type($info[2]);
-- $avatar->filename = $filename;
-- $avatar->original = true;
-- $avatar->url = common_avatar_url($filename);
-- $avatar->created = DB_DataObject_Cast::dateTime(); # current time
-+ $avatar->profile_id = $this->id;
-+ $avatar->width = $info[0];
-+ $avatar->height = $info[1];
-+ $avatar->mediatype = image_type_to_mime_type($info[2]);
-+ $avatar->filename = $filename;
-+ $avatar->original = true;
-+ $avatar->url = common_avatar_url($filename);
-+ $avatar->created = DB_DataObject_Cast::dateTime(); # current time
-hunk ./classes/Profile.php 95
-- # XXX: start a transaction here
-+ # XXX: start a transaction here
-hunk ./classes/Profile.php 97
-- if (!$this->delete_avatars()) {
-- @unlink($filepath);
-- return NULL;
-- }
-+ if (!$this->delete_avatars()) {
-+ @unlink($filepath);
-+ return NULL;
-+ }
-hunk ./classes/Profile.php 102
-- if (!$avatar->insert()) {
-- @unlink($filepath);
-- return NULL;
-- }
-+ if (!$avatar->insert()) {
-+ @unlink($filepath);
-+ return NULL;
-+ }
-hunk ./classes/Profile.php 107
-- foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-- # We don't do a scaled one if original is our scaled size
-- if (!($avatar->width == $size && $avatar->height == $size)) {
-- $s = $avatar->scale($size);
-- if (!$s) {
-- return NULL;
-- }
-- }
-- }
-+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-+ # We don't do a scaled one if original is our scaled size
-+ if (!($avatar->width == $size && $avatar->height == $size)) {
-+ $s = $avatar->scale($size);
-+ if (!$s) {
-+ return NULL;
-+ }
-+ }
-+ }
-hunk ./classes/Profile.php 117
-- return $avatar;
-- }
-+ return $avatar;
-+ }
-hunk ./classes/Profile.php 120
-- function delete_avatars() {
-- $avatar = new Avatar();
-- $avatar->profile_id = $this->id;
-- $avatar->find();
-- while ($avatar->fetch()) {
-- $avatar->delete();
-- }
-- return true;
-- }
-+ function delete_avatars() {
-+ $avatar = new Avatar();
-+ $avatar->profile_id = $this->id;
-+ $avatar->find();
-+ while ($avatar->fetch()) {
-+ $avatar->delete();
-+ }
-+ return true;
-+ }
-hunk ./classes/Profile.php 130
-- function getBestName() {
-- return ($this->fullname) ? $this->fullname : $this->nickname;
-- }
-+ function getBestName() {
-+ return ($this->fullname) ? $this->fullname : $this->nickname;
-+ }
+- function getAvatar($width, $height=NULL) {
++ function getAvatar($width, $height=null) {
+hunk ./classes/Profile.php 65
+- return NULL;
++ return null;
+hunk ./classes/Profile.php 74
+- return NULL;
++ return null;
+hunk ./classes/Profile.php 79
+- NULL, common_timestamp());
++ null, common_timestamp());
+hunk ./classes/Profile.php 99
+- return NULL;
++ return null;
+hunk ./classes/Profile.php 104
+- return NULL;
++ return null;
+hunk ./classes/Profile.php 112
+- return NULL;
++ return null;
hunk ./classes/Profile.php 135
-- function getCurrentNotice($dt=NULL) {
-- $notice = new Notice();
-- $notice->profile_id = $this->id;
-- if ($dt) {
-- $notice->whereAdd('created < "' . $dt . '"');
-- }
-- $notice->orderBy('created DESC, notice.id DESC');
-- $notice->limit(1);
-- if ($notice->find(true)) {
-- return $notice;
-- }
-- return NULL;
-- }
-+ function getCurrentNotice($dt=NULL) {
-+ $notice = new Notice();
-+ $notice->profile_id = $this->id;
-+ if ($dt) {
-+ $notice->whereAdd('created < "' . $dt . '"');
-+ }
-+ $notice->orderBy('created DESC, notice.id DESC');
-+ $notice->limit(1);
-+ if ($notice->find(true)) {
-+ return $notice;
-+ }
-+ return NULL;
-+ }
-hunk ./classes/Profile.php 149
-- function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) {
-- $qry =
-- 'SELECT * ' .
-- 'FROM notice ' .
-- 'WHERE profile_id = %d ';
-+ function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) {
-+ $qry =
-+ 'SELECT * ' .
-+ 'FROM notice ' .
-+ 'WHERE profile_id = %d ';
-hunk ./classes/Profile.php 155
-- return Notice::getStream(sprintf($qry, $this->id),
-- 'profile:notices:'.$this->id,
-- $offset, $limit, $since_id, $before_id);
-- }
-+ return Notice::getStream(sprintf($qry, $this->id),
-+ 'profile:notices:'.$this->id,
-+ $offset, $limit, $since_id, $before_id);
-+ }
-hunk ./classes/Profile_tag.php 24
-- static function getTags($tagger, $tagged) {
--
-- $tags = array();
-+ static function getTags($tagger, $tagged) {
-+
-+ $tags = array();
-hunk ./classes/Profile_tag.php 28
-- # XXX: store this in memcached
--
-- $profile_tag = new Profile_tag();
-- $profile_tag->tagger = $tagger;
-- $profile_tag->tagged = $tagged;
--
-- $profile_tag->find();
--
-- while ($profile_tag->fetch()) {
-- $tags[] = $profile_tag->tag;
-- }
--
-- $profile_tag->free();
--
-- return $tags;
-- }
--
-- static function setTags($tagger, $tagged, $newtags) {
--
-- $oldtags = Profile_tag::getTags($tagger, $tagged);
--
-- # Delete stuff that's old that not in new
--
-- $to_delete = array_diff($oldtags, $newtags);
--
-- # Insert stuff that's in new and not in old
--
-- $to_insert = array_diff($newtags, $oldtags);
--
-- $profile_tag = new Profile_tag();
--
-- $profile_tag->tagger = $tagger;
-- $profile_tag->tagged = $tagged;
--
-- $profile_tag->query('BEGIN');
--
-- foreach ($to_delete as $deltag) {
-- $profile_tag->tag = $deltag;
-- $result = $profile_tag->delete();
-- if (!$result) {
-- common_log_db_error($profile_tag, 'DELETE', __FILE__);
-- return false;
-- }
-- }
--
-- foreach ($to_insert as $instag) {
-- $profile_tag->tag = $instag;
-- $result = $profile_tag->insert();
-- if (!$result) {
-- common_log_db_error($profile_tag, 'INSERT', __FILE__);
-- return false;
-- }
-- }
--
-- $profile_tag->query('COMMIT');
--
-- return true;
-- }
--
-- # Return profiles with a given tag
-- static function getTagged($tagger, $tag) {
-- $profile = new Profile();
-- $profile->query('SELECT profile.* ' .
-- 'FROM profile JOIN profile_tag ' .
-- 'ON profile.id = profile_tag.tagged ' .
-- 'WHERE profile_tag.tagger = ' . $tagger . ' ' .
-- 'AND profile_tag.tag = "' . $tag . '" ');
-- $tagged = array();
-- while ($profile->fetch()) {
-- $tagged[] = clone($profile);
-- }
-- return $tagged;
-- }
-+ # XXX: store this in memcached
-+
-+ $profile_tag = new Profile_tag();
-+ $profile_tag->tagger = $tagger;
-+ $profile_tag->tagged = $tagged;
-+
-+ $profile_tag->find();
-+
-+ while ($profile_tag->fetch()) {
-+ $tags[] = $profile_tag->tag;
-+ }
-+
-+ $profile_tag->free();
-+
-+ return $tags;
-+ }
-+
-+ static function setTags($tagger, $tagged, $newtags) {
-+
-+ $oldtags = Profile_tag::getTags($tagger, $tagged);
-+
-+ # Delete stuff that's old that not in new
-+
-+ $to_delete = array_diff($oldtags, $newtags);
-+
-+ # Insert stuff that's in new and not in old
-+
-+ $to_insert = array_diff($newtags, $oldtags);
-+
-+ $profile_tag = new Profile_tag();
-+
-+ $profile_tag->tagger = $tagger;
-+ $profile_tag->tagged = $tagged;
-+
-+ $profile_tag->query('BEGIN');
-+
-+ foreach ($to_delete as $deltag) {
-+ $profile_tag->tag = $deltag;
-+ $result = $profile_tag->delete();
-+ if (!$result) {
-+ common_log_db_error($profile_tag, 'DELETE', __FILE__);
-+ return false;
-+ }
-+ }
-+
-+ foreach ($to_insert as $instag) {
-+ $profile_tag->tag = $instag;
-+ $result = $profile_tag->insert();
-+ if (!$result) {
-+ common_log_db_error($profile_tag, 'INSERT', __FILE__);
-+ return false;
-+ }
-+ }
-+
-+ $profile_tag->query('COMMIT');
-+
-+ return true;
-+ }
-+
-+ # Return profiles with a given tag
-+ static function getTagged($tagger, $tag) {
-+ $profile = new Profile();
-+ $profile->query('SELECT profile.* ' .
-+ 'FROM profile JOIN profile_tag ' .
-+ 'ON profile.id = profile_tag.tagged ' .
-+ 'WHERE profile_tag.tagger = ' . $tagger . ' ' .
-+ 'AND profile_tag.tag = "' . $tag . '" ');
-+ $tagged = array();
-+ while ($profile->fetch()) {
-+ $tagged[] = clone($profile);
-+ }
-+ return $tagged;
-+ }
-hunk ./classes/Queue_item.php 25
--
-- static function top($transport) {
-+
-+ static function top($transport) {
-hunk ./classes/Queue_item.php 28
-- $qi = new Queue_item();
-- $qi->transport = $transport;
-- $qi->orderBy('created');
-- $qi->whereAdd('claimed is NULL');
-+ $qi = new Queue_item();
-+ $qi->transport = $transport;
-+ $qi->orderBy('created');
-+ $qi->whereAdd('claimed is NULL');
-hunk ./classes/Queue_item.php 33
-- $qi->limit(1);
-+ $qi->limit(1);
-hunk ./classes/Queue_item.php 35
-- $cnt = $qi->find(TRUE);
-+ $cnt = $qi->find(TRUE);
-hunk ./classes/Queue_item.php 37
-- if ($cnt) {
-- # XXX: potential race condition
-- # can we force it to only update if claimed is still NULL
-- # (or old)?
-- common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport);
-- $orig = clone($qi);
-- $qi->claimed = common_sql_now();
-- $result = $qi->update($orig);
-- if ($result) {
-- common_log(LOG_INFO, 'claim succeeded.');
-- return $qi;
-- } else {
-- common_log(LOG_INFO, 'claim failed.');
-- }
-- }
-- $qi = NULL;
-- return NULL;
-- }
-+ if ($cnt) {
-+ # XXX: potential race condition
-+ # can we force it to only update if claimed is still NULL
-+ # (or old)?
-+ common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport);
-+ $orig = clone($qi);
-+ $qi->claimed = common_sql_now();
-+ $result = $qi->update($orig);
-+ if ($result) {
-+ common_log(LOG_INFO, 'claim succeeded.');
-+ return $qi;
-+ } else {
-+ common_log(LOG_INFO, 'claim failed.');
-+ }
-+ }
-+ $qi = NULL;
-+ return NULL;
-+ }
-hunk ./classes/Sms_carrier.php 24
--
-- function toEmailAddress($sms) {
-- return sprintf($this->email_pattern, $sms);
-- }
-+
-+ function toEmailAddress($sms) {
-+ return sprintf($this->email_pattern, $sms);
-+ }
-hunk ./classes/Subscription.php 47
--
-- function &pkeyGet($kv) {
-- return Memcached_DataObject::pkeyGet('Subscription', $kv);
-- }
-+
-+ function &pkeyGet($kv) {
-+ return Memcached_DataObject::pkeyGet('Subscription', $kv);
-+ }
-hunk ./classes/User.php 70
-- function getProfile() {
-- return Profile::staticGet('id', $this->id);
-- }
-+ function getProfile() {
-+ return Profile::staticGet('id', $this->id);
-+ }
-hunk ./classes/User.php 74
-- function isSubscribed($other) {
-- assert(!is_null($other));
-- # XXX: cache results of this query
-- $sub = Subscription::pkeyGet(array('subscriber' => $this->id,
-- 'subscribed' => $other->id));
-- return (is_null($sub)) ? false : true;
-- }
-+ function isSubscribed($other) {
-+ assert(!is_null($other));
-+ # XXX: cache results of this query
-+ $sub = Subscription::pkeyGet(array('subscriber' => $this->id,
-+ 'subscribed' => $other->id));
-+ return (is_null($sub)) ? false : true;
-+ }
-hunk ./classes/User.php 82
-- # 'update' won't write key columns, so we have to do it ourselves.
-+ # 'update' won't write key columns, so we have to do it ourselves.
-hunk ./classes/User.php 84
-- function updateKeys(&$orig) {
-- $parts = array();
-- foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) {
-- if (strcmp($this->$k, $orig->$k) != 0) {
-- $parts[] = $k . ' = ' . $this->_quote($this->$k);
-- }
-- }
-- if (count($parts) == 0) {
-- # No changes
-- return true;
-- }
-- $toupdate = implode(', ', $parts);
-+ function updateKeys(&$orig) {
-+ $parts = array();
-+ foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) {
-+ if (strcmp($this->$k, $orig->$k) != 0) {
-+ $parts[] = $k . ' = ' . $this->_quote($this->$k);
-+ }
-+ }
-+ if (count($parts) == 0) {
-+ # No changes
-+ return true;
-+ }
-+ $toupdate = implode(', ', $parts);
-hunk ./classes/User.php 97
-- $table = $this->tableName();
-- if(common_config('db','quote_identifiers')) {
-- $table = '"' . $table . '"';
-- }
-- $qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
-- ' WHERE id = ' . $this->id;
-- $orig->decache();
-- $result = $this->query($qry);
-- if ($result) {
-- $this->encache();
-- }
-- return $result;
-- }
-+ $table = $this->tableName();
-+ if(common_config('db','quote_identifiers')) {
-+ $table = '"' . $table . '"';
-+ }
-+ $qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
-+ ' WHERE id = ' . $this->id;
-+ $orig->decache();
-+ $result = $this->query($qry);
-+ if ($result) {
-+ $this->encache();
-+ }
-+ return $result;
-+ }
-hunk ./classes/User.php 111
-- function allowed_nickname($nickname) {
-- # XXX: should already be validated for size, content, etc.
-- static $blacklist = array('rss', 'xrds', 'doc', 'main',
-- 'settings', 'notice', 'user',
-- 'search', 'avatar', 'tag', 'tags',
-- 'api', 'message');
-- $merged = array_merge($blacklist, common_config('nickname', 'blacklist'));
-- return !in_array($nickname, $merged);
-- }
-+ function allowed_nickname($nickname) {
-+ # XXX: should already be validated for size, content, etc.
-+ static $blacklist = array('rss', 'xrds', 'doc', 'main',
-+ 'settings', 'notice', 'user',
-+ 'search', 'avatar', 'tag', 'tags',
-+ 'api', 'message');
-+ $merged = array_merge($blacklist, common_config('nickname', 'blacklist'));
-+ return !in_array($nickname, $merged);
-+ }
+- function getCurrentNotice($dt=NULL) {
++ function getCurrentNotice($dt=null) {
+hunk ./classes/Profile.php 146
+- return NULL;
++ return null;
+hunk ./classes/Profile_block.php 39
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); }
+hunk ./classes/Profile_tag.php 19
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); }
+hunk ./classes/Queue_item.php 19
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); }
+hunk ./classes/Queue_item.php 31
+- $qi->whereAdd('claimed is NULL');
++ $qi->whereAdd('claimed is null');
+hunk ./classes/Queue_item.php 39
+- # can we force it to only update if claimed is still NULL
++ # can we force it to only update if claimed is still null
+hunk ./classes/Queue_item.php 52
+- $qi = NULL;
+- return NULL;
++ $qi = null;
++ return null;
+hunk ./classes/Remember_me.php 18
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); }
+hunk ./classes/Remote_profile.php 41
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); }
+hunk ./classes/Reply.php 19
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Reply',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Reply',$k,$v); }
+hunk ./classes/Sms_carrier.php 20
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); }
+hunk ./classes/Subscription.php 43
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Subscription',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Subscription',$k,$v); }
+hunk ./classes/Token.php 22
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Token',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Token',$k,$v); }
+hunk ./classes/User.php 65
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User',$k,$v); }
hunk ./classes/User.php 121
-- function getCurrentNotice($dt=NULL) {
-- $profile = $this->getProfile();
-- if (!$profile) {
-- return NULL;
-- }
-- return $profile->getCurrentNotice($dt);
-- }
-+ function getCurrentNotice($dt=NULL) {
-+ $profile = $this->getProfile();
-+ if (!$profile) {
-+ return NULL;
-+ }
-+ return $profile->getCurrentNotice($dt);
-+ }
-hunk ./classes/User.php 129
-- function getCarrier() {
-- return Sms_carrier::staticGet('id', $this->carrier);
-- }
-+ function getCarrier() {
-+ return Sms_carrier::staticGet('id', $this->carrier);
-+ }
-hunk ./classes/User.php 133
-- function subscribeTo($other) {
-- $sub = new Subscription();
-- $sub->subscriber = $this->id;
-- $sub->subscribed = $other->id;
-+ function subscribeTo($other) {
-+ $sub = new Subscription();
-+ $sub->subscriber = $this->id;
-+ $sub->subscribed = $other->id;
-hunk ./classes/User.php 138
-- $sub->created = common_sql_now(); # current time
-+ $sub->created = common_sql_now(); # current time
-hunk ./classes/User.php 140
-- if (!$sub->insert()) {
-- return false;
-- }
-+ if (!$sub->insert()) {
-+ return false;
-+ }
-hunk ./classes/User.php 144
-- return true;
-- }
-+ return true;
-+ }
-hunk ./classes/User.php 161
-- static function register($fields) {
-+ static function register($fields) {
-hunk ./classes/User.php 163
-- # MAGICALLY put fields into current scope
-+ # MAGICALLY put fields into current scope
-hunk ./classes/User.php 165
-- extract($fields);
-+ extract($fields);
-hunk ./classes/User.php 167
-- $profile = new Profile();
-+ $profile = new Profile();
-hunk ./classes/User.php 169
-- $profile->query('BEGIN');
-+ $profile->query('BEGIN');
-hunk ./classes/User.php 171
-- $profile->nickname = $nickname;
-- $profile->profileurl = common_profile_url($nickname);
-+ $profile->nickname = $nickname;
-+ $profile->profileurl = common_profile_url($nickname);
-hunk ./classes/User.php 174
-- if ($fullname) {
-- $profile->fullname = $fullname;
-- }
-- if ($homepage) {
-- $profile->homepage = $homepage;
-- }
-- if ($bio) {
-- $profile->bio = $bio;
-- }
-- if ($location) {
-- $profile->location = $location;
-- }
-+ if ($fullname) {
-+ $profile->fullname = $fullname;
-+ }
-+ if ($homepage) {
-+ $profile->homepage = $homepage;
-+ }
-+ if ($bio) {
-+ $profile->bio = $bio;
-+ }
-+ if ($location) {
-+ $profile->location = $location;
-+ }
-hunk ./classes/User.php 187
-- $profile->created = common_sql_now();
-+ $profile->created = common_sql_now();
-hunk ./classes/User.php 189
-- $id = $profile->insert();
-+ $id = $profile->insert();
-hunk ./classes/User.php 191
-- if (!$id) {
-- common_log_db_error($profile, 'INSERT', __FILE__);
-- return FALSE;
-- }
-+ if (!$id) {
-+ common_log_db_error($profile, 'INSERT', __FILE__);
-+ return FALSE;
-+ }
-hunk ./classes/User.php 196
-- $user = new User();
-+ $user = new User();
-hunk ./classes/User.php 198
-- $user->id = $id;
-- $user->nickname = $nickname;
-+ $user->id = $id;
-+ $user->nickname = $nickname;
-hunk ./classes/User.php 201
-- if ($password) { # may not have a password for OpenID users
-- $user->password = common_munge_password($password, $id);
-- }
-+ if ($password) { # may not have a password for OpenID users
-+ $user->password = common_munge_password($password, $id);
-+ }
-hunk ./classes/User.php 205
-- # Users who respond to invite email have proven their ownership of that address
-+ # Users who respond to invite email have proven their ownership of that address
-hunk ./classes/User.php 207
-- if ($code) {
-- $invite = Invitation::staticGet($code);
-- if ($invite && $invite->address && $invite->address_type == 'email' && $invite->address == $email) {
-- $user->email = $invite->address;
-- }
-- }
-+ if ($code) {
-+ $invite = Invitation::staticGet($code);
-+ if ($invite && $invite->address && $invite->address_type == 'email' && $invite->address == $email) {
-+ $user->email = $invite->address;
-+ }
-+ }
-hunk ./classes/User.php 214
-- $inboxes = common_config('inboxes', 'enabled');
-+ $inboxes = common_config('inboxes', 'enabled');
-hunk ./classes/User.php 216
-- if ($inboxes === true || $inboxes == 'transitional') {
-- $user->inboxed = 1;
-- }
-+ if ($inboxes === true || $inboxes == 'transitional') {
-+ $user->inboxed = 1;
-+ }
-hunk ./classes/User.php 220
-- $user->created = common_sql_now();
-- $user->uri = common_user_uri($user);
-+ $user->created = common_sql_now();
-+ $user->uri = common_user_uri($user);
-hunk ./classes/User.php 223
-- $result = $user->insert();
-+ $result = $user->insert();
-hunk ./classes/User.php 225
-- if (!$result) {
-- common_log_db_error($user, 'INSERT', __FILE__);
-- return FALSE;
-- }
-+ if (!$result) {
-+ common_log_db_error($user, 'INSERT', __FILE__);
-+ return FALSE;
-+ }
-hunk ./classes/User.php 230
-- # Everyone is subscribed to themself
-+ # Everyone is subscribed to themself
-hunk ./classes/User.php 232
-- $subscription = new Subscription();
-- $subscription->subscriber = $user->id;
-- $subscription->subscribed = $user->id;
-- $subscription->created = $user->created;
-+ $subscription = new Subscription();
-+ $subscription->subscriber = $user->id;
-+ $subscription->subscribed = $user->id;
-+ $subscription->created = $user->created;
-hunk ./classes/User.php 237
-- $result = $subscription->insert();
-+ $result = $subscription->insert();
-hunk ./classes/User.php 239
-- if (!$result) {
-- common_log_db_error($subscription, 'INSERT', __FILE__);
-- return FALSE;
-- }
-+ if (!$result) {
-+ common_log_db_error($subscription, 'INSERT', __FILE__);
-+ return FALSE;
-+ }
-hunk ./classes/User.php 244
-- if ($email && !$user->email) {
-+ if ($email && !$user->email) {
-hunk ./classes/User.php 246
-- $confirm = new Confirm_address();
-- $confirm->code = common_confirmation_code(128);
-- $confirm->user_id = $user->id;
-- $confirm->address = $email;
-- $confirm->address_type = 'email';
-+ $confirm = new Confirm_address();
-+ $confirm->code = common_confirmation_code(128);
-+ $confirm->user_id = $user->id;
-+ $confirm->address = $email;
-+ $confirm->address_type = 'email';
-hunk ./classes/User.php 252
-- $result = $confirm->insert();
-- if (!$result) {
-- common_log_db_error($confirm, 'INSERT', __FILE__);
-- return FALSE;
-- }
-- }
-+ $result = $confirm->insert();
-+ if (!$result) {
-+ common_log_db_error($confirm, 'INSERT', __FILE__);
-+ return FALSE;
-+ }
-+ }
-hunk ./classes/User.php 259
-- if ($code && $user->email) {
-- $user->emailChanged();
-- }
-+ if ($code && $user->email) {
-+ $user->emailChanged();
-+ }
-hunk ./classes/User.php 263
-- $profile->query('COMMIT');
-+ $profile->query('COMMIT');
-hunk ./classes/User.php 265
-- if ($email && !$user->email) {
-- mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
-- }
-+ if ($email && !$user->email) {
-+ mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
-+ }
-hunk ./classes/User.php 269
-- return $user;
-- }
-+ return $user;
-+ }
-hunk ./classes/User.php 272
-- # Things we do when the email changes
-+ # Things we do when the email changes
-hunk ./classes/User.php 274
-- function emailChanged() {
-+ function emailChanged() {
-hunk ./classes/User.php 276
-- $invites = new Invitation();
-- $invites->address = $this->email;
-- $invites->address_type = 'email';
-+ $invites = new Invitation();
-+ $invites->address = $this->email;
-+ $invites->address_type = 'email';
-hunk ./classes/User.php 280
-- if ($invites->find()) {
-- while ($invites->fetch()) {
-- $other = User::staticGet($invites->user_id);
-- subs_subscribe_to($other, $this);
-- }
-- }
-- }
-+ if ($invites->find()) {
-+ while ($invites->fetch()) {
-+ $other = User::staticGet($invites->user_id);
-+ subs_subscribe_to($other, $this);
-+ }
-+ }
-+ }
-hunk ./classes/User.php 288
-- function hasFave($notice) {
-- $cache = common_memcache();
-+ function hasFave($notice) {
-+ $cache = common_memcache();
-hunk ./classes/User.php 291
-- # XXX: Kind of a hack.
-- if ($cache) {
-- # This is the stream of favorite notices, in rev chron
-- # order. This forces it into cache.
-- $faves = $this->favoriteNotices(0, NOTICE_CACHE_WINDOW);
-- $cnt = 0;
-- while ($faves->fetch()) {
-- if ($faves->id < $notice->id) {
-- # If we passed it, it's not a fave
-- return false;
-- } else if ($faves->id == $notice->id) {
-- # If it matches a cached notice, then it's a fave
-- return true;
-- }
-- $cnt++;
-- }
-- # If we're not past the end of the cache window,
-- # then the cache has all available faves, so this one
-- # is not a fave.
-- if ($cnt < NOTICE_CACHE_WINDOW) {
-- return false;
-- }
-- # Otherwise, cache doesn't have all faves;
-- # fall through to the default
-- }
-- $fave = Fave::pkeyGet(array('user_id' => $this->id,
-- 'notice_id' => $notice->id));
-- return ((is_null($fave)) ? false : true);
-- }
-- function mutuallySubscribed($other) {
-- return $this->isSubscribed($other) &&
-- $other->isSubscribed($this);
-- }
-+ # XXX: Kind of a hack.
-+ if ($cache) {
-+ # This is the stream of favorite notices, in rev chron
-+ # order. This forces it into cache.
-+ $faves = $this->favoriteNotices(0, NOTICE_CACHE_WINDOW);
-+ $cnt = 0;
-+ while ($faves->fetch()) {
-+ if ($faves->id < $notice->id) {
-+ # If we passed it, it's not a fave
-+ return false;
-+ } else if ($faves->id == $notice->id) {
-+ # If it matches a cached notice, then it's a fave
-+ return true;
-+ }
-+ $cnt++;
-+ }
-+ # If we're not past the end of the cache window,
-+ # then the cache has all available faves, so this one
-+ # is not a fave.
-+ if ($cnt < NOTICE_CACHE_WINDOW) {
-+ return false;
-+ }
-+ # Otherwise, cache doesn't have all faves;
-+ # fall through to the default
-+ }
-+ $fave = Fave::pkeyGet(array('user_id' => $this->id,
-+ 'notice_id' => $notice->id));
-+ return ((is_null($fave)) ? false : true);
-+ }
-+ function mutuallySubscribed($other) {
-+ return $this->isSubscribed($other) &&
-+ $other->isSubscribed($this);
-+ }
-hunk ./classes/User.php 327
-- # 3-way join; probably should get cached
-- $qry = 'SELECT user.* ' .
-- 'FROM subscription sub1 JOIN user ON sub1.subscribed = user.id ' .
-- 'JOIN subscription sub2 ON user.id = sub2.subscriber ' .
-- 'WHERE sub1.subscriber = %d and sub2.subscribed = %d ' .
-- 'ORDER BY user.nickname';
-- $user = new User();
-- $user->query(sprintf($qry, $this->id, $this->id));
-+ # 3-way join; probably should get cached
-+ $qry = 'SELECT user.* ' .
-+ 'FROM subscription sub1 JOIN user ON sub1.subscribed = user.id ' .
-+ 'JOIN subscription sub2 ON user.id = sub2.subscriber ' .
-+ 'WHERE sub1.subscriber = %d and sub2.subscribed = %d ' .
-+ 'ORDER BY user.nickname';
-+ $user = new User();
-+ $user->query(sprintf($qry, $this->id, $this->id));
-hunk ./classes/User.php 336
-- return $user;
-- }
-+ return $user;
-+ }
+- function getCurrentNotice($dt=NULL) {
++ function getCurrentNotice($dt=null) {
+hunk ./classes/User.php 124
+- return NULL;
++ return null;
hunk ./classes/User.php 339
-- function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
-- $qry =
-- 'SELECT notice.* ' .
-- 'FROM notice JOIN reply ON notice.id = reply.notice_id ' .
-- 'WHERE reply.profile_id = %d ';
-- return Notice::getStream(sprintf($qry, $this->id),
-- 'user:replies:'.$this->id,
-- $offset, $limit, $since_id, $before_id, NULL, $since);
-- }
-+ function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
-+ $qry =
-+ 'SELECT notice.* ' .
-+ 'FROM notice JOIN reply ON notice.id = reply.notice_id ' .
-+ 'WHERE reply.profile_id = %d ';
-+ return Notice::getStream(sprintf($qry, $this->id),
-+ 'user:replies:'.$this->id,
-+ $offset, $limit, $since_id, $before_id, NULL, $since);
-+ }
-hunk ./classes/User.php 356
-- }
-+ }
-hunk ./classes/User.php 359
-- $qry =
-- 'SELECT notice.* ' .
-- 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
-- 'WHERE fave.user_id = %d ';
-- return Notice::getStream(sprintf($qry, $this->id),
-- 'user:faves:'.$this->id,
-- $offset, $limit);
-- }
-+ $qry =
-+ 'SELECT notice.* ' .
-+ 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
-+ 'WHERE fave.user_id = %d ';
-+ return Notice::getStream(sprintf($qry, $this->id),
-+ 'user:faves:'.$this->id,
-+ $offset, $limit);
-+ }
-hunk ./classes/User.php 369
-- $enabled = common_config('inboxes', 'enabled');
-+ $enabled = common_config('inboxes', 'enabled');
-hunk ./classes/User.php 371
-- # Complicated code, depending on whether we support inboxes yet
-- # XXX: make this go away when inboxes become mandatory
-+ # Complicated code, depending on whether we support inboxes yet
-+ # XXX: make this go away when inboxes become mandatory
-hunk ./classes/User.php 374
-- if ($enabled === false ||
-- ($enabled == 'transitional' && $this->inboxed == 0)) {
-- $qry =
-- 'SELECT notice.* ' .
-- 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' .
-- 'WHERE subscription.subscriber = %d ';
-- $order = NULL;
-- } else if ($enabled === true ||
-- ($enabled == 'transitional' && $this->inboxed == 1)) {
-+ if ($enabled === false ||
-+ ($enabled == 'transitional' && $this->inboxed == 0)) {
-+ $qry =
-+ 'SELECT notice.* ' .
-+ 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' .
-+ 'WHERE subscription.subscriber = %d ';
-+ $order = NULL;
-+ } else if ($enabled === true ||
-+ ($enabled == 'transitional' && $this->inboxed == 1)) {
-hunk ./classes/User.php 384
-- $qry =
-- 'SELECT notice.* ' .
-- 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' .
-- 'WHERE notice_inbox.user_id = %d ';
-- # NOTE: we override ORDER
-- $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC ';
-- }
-- return Notice::getStream(sprintf($qry, $this->id),
-- 'user:notices_with_friends:' . $this->id,
-- $offset, $limit, $since_id, $before_id,
-- $order, $since);
-- }
-+ $qry =
-+ 'SELECT notice.* ' .
-+ 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' .
-+ 'WHERE notice_inbox.user_id = %d ';
-+ # NOTE: we override ORDER
-+ $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC ';
-+ }
-+ return Notice::getStream(sprintf($qry, $this->id),
-+ 'user:notices_with_friends:' . $this->id,
-+ $offset, $limit, $since_id, $before_id,
-+ $order, $since);
-+ }
-hunk ./classes/User.php 398
-- $cache = common_memcache();
-- if ($cache) {
-- # Faves don't happen chronologically, so we need to blow
-- # ;last cache, too
-- $cache->delete(common_cache_key('user:faves:'.$this->id));
-- $cache->delete(common_cache_key('user:faves:'.$this->id).';last');
-- }
-- }
-+ $cache = common_memcache();
-+ if ($cache) {
-+ # Faves don't happen chronologically, so we need to blow
-+ # ;last cache, too
-+ $cache->delete(common_cache_key('user:faves:'.$this->id));
-+ $cache->delete(common_cache_key('user:faves:'.$this->id).';last');
-+ }
-+ }
-hunk ./classes/User.php 408
-- return Profile_tag::getTags($this->id, $this->id);
-- }
-+ return Profile_tag::getTags($this->id, $this->id);
-+ }
-hunk ./classes/User.php 412
-- return Profile_tag::setTags($this->id, $this->id, $newtags);
-- }
-+ return Profile_tag::setTags($this->id, $this->id, $newtags);
-+ }
-hunk ./classes/User.php 437
-- $sub = Subscription::pkeyGet(array('subscriber' => $other->id,
-- 'subscribed' => $this->id));
-+ $sub = Subscription::pkeyGet(array('subscriber' => $other->id,
-+ 'subscribed' => $this->id));
-hunk ./lib/common.php 57
-- array('name' => 'Just another Laconica microblog',
-- 'server' => 'localhost',
-- 'theme' => 'default',
-- 'path' => '/',
-- 'logfile' => NULL,
-- 'fancy' => false,
-- 'locale_path' => INSTALLDIR.'/locale',
-- 'language' => 'en_US',
-- 'languages' => get_all_languages(),
-- 'email' =>
-- array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL,
-- 'broughtby' => NULL,
-- 'timezone' => 'UTC',
-- 'broughtbyurl' => NULL,
-- 'closed' => false,
-- 'inviteonly' => false,
-+ array('name' => 'Just another Laconica microblog',
-+ 'server' => 'localhost',
-+ 'theme' => 'default',
-+ 'path' => '/',
-+ 'logfile' => NULL,
-+ 'fancy' => false,
-+ 'locale_path' => INSTALLDIR.'/locale',
-+ 'language' => 'en_US',
-+ 'languages' => get_all_languages(),
-+ 'email' =>
-+ array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL,
-+ 'broughtby' => NULL,
-+ 'timezone' => 'UTC',
-+ 'broughtbyurl' => NULL,
-+ 'closed' => false,
-+ 'inviteonly' => false,
-hunk ./lib/common.php 74
-- 'syslog' =>
-- array('appname' => 'laconica', # for syslog
-- 'priority' => 'debug'), # XXX: currently ignored
-- 'queue' =>
-- array('enabled' => false),
-- 'license' =>
-- array('url' => 'http://creativecommons.org/licenses/by/3.0/',
-- 'title' => 'Creative Commons Attribution 3.0',
-- 'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'),
-- 'mail' =>
-- array('backend' => 'mail',
-- 'params' => NULL),
-- 'nickname' =>
-- array('blacklist' => array(),
-- 'featured' => array()),
-- 'profile' =>
-- array('banned' => array()),
-- 'avatar' =>
-- array('server' => NULL),
-- 'public' =>
-- array('localonly' => true,
-- 'blacklist' => array()),
-- 'theme' =>
-- array('server' => NULL),
-- 'throttle' =>
-+ 'syslog' =>
-+ array('appname' => 'laconica', # for syslog
-+ 'priority' => 'debug'), # XXX: currently ignored
-+ 'queue' =>
-+ array('enabled' => false),
-+ 'license' =>
-+ array('url' => 'http://creativecommons.org/licenses/by/3.0/',
-+ 'title' => 'Creative Commons Attribution 3.0',
-+ 'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'),
-+ 'mail' =>
-+ array('backend' => 'mail',
-+ 'params' => NULL),
-+ 'nickname' =>
-+ array('blacklist' => array(),
-+ 'featured' => array()),
-+ 'profile' =>
-+ array('banned' => array()),
-+ 'avatar' =>
-+ array('server' => NULL),
-+ 'public' =>
-+ array('localonly' => true,
-+ 'blacklist' => array()),
-+ 'theme' =>
-+ array('server' => NULL),
-+ 'throttle' =>
-hunk ./lib/common.php 102
-- 'xmpp' =>
-- array('enabled' => false,
-- 'server' => 'INVALID SERVER',
-- 'port' => 5222,
-- 'user' => 'update',
-- 'encryption' => true,
-- 'resource' => 'uniquename',
-- 'password' => 'blahblahblah',
-- 'host' => NULL, # only set if != server
-- 'debug' => false, # print extra debug info
-- 'public' => array()), # JIDs of users who want to receive the public stream
-+ 'xmpp' =>
-+ array('enabled' => false,
-+ 'server' => 'INVALID SERVER',
-+ 'port' => 5222,
-+ 'user' => 'update',
-+ 'encryption' => true,
-+ 'resource' => 'uniquename',
-+ 'password' => 'blahblahblah',
-+ 'host' => NULL, # only set if != server
-+ 'debug' => false, # print extra debug info
-+ 'public' => array()), # JIDs of users who want to receive the public stream
-hunk ./lib/common.php 117
-- 'tag' =>
-- array('dropoff' => 864000.0),
-- 'popular' =>
-- array('dropoff' => 864000.0),
-- 'daemon' =>
-- array('piddir' => '/var/run',
-- 'user' => false,
-- 'group' => false),
-- 'integration' =>
-- array('source' => 'Laconica'), # source attribute for Twitter
-- 'memcached' =>
-- array('enabled' => false,
-- 'server' => 'localhost',
-- 'port' => 11211),
-- 'inboxes' =>
-- array('enabled' => true), # on by default for new sites
-- );
-+ 'tag' =>
-+ array('dropoff' => 864000.0),
-+ 'popular' =>
-+ array('dropoff' => 864000.0),
-+ 'daemon' =>
-+ array('piddir' => '/var/run',
-+ 'user' => false,
-+ 'group' => false),
-+ 'integration' =>
-+ array('source' => 'Laconica'), # source attribute for Twitter
-+ 'memcached' =>
-+ array('enabled' => false,
-+ 'server' => 'localhost',
-+ 'port' => 11211),
-+ 'inboxes' =>
-+ array('enabled' => true), # on by default for new sites
-+ );
-hunk ./lib/common.php 139
-- 'schema_location' => INSTALLDIR . '/classes',
-- 'class_location' => INSTALLDIR . '/classes',
-- 'require_prefix' => 'classes/',
-- 'class_prefix' => '',
-- 'mirror' => NULL,
-+ 'schema_location' => INSTALLDIR . '/classes',
-+ 'class_location' => INSTALLDIR . '/classes',
-+ 'require_prefix' => 'classes/',
-+ 'class_prefix' => '',
-+ 'mirror' => NULL,
-hunk ./lib/common.php 145
-- 'quote_identifiers' => false,
-- 'type' => 'mysql' );
-+ 'quote_identifiers' => false,
-+ 'type' => 'mysql' );
-hunk ./lib/common.php 149
-- /* Work internally in UTC */
-- date_default_timezone_set('UTC');
-+ /* Work internally in UTC */
-+ date_default_timezone_set('UTC');
-hunk ./lib/common.php 167
-- if ($class == 'OAuthRequest') {
-- require_once('OAuth.php');
-- } else if (file_exists(INSTALLDIR.'/classes/' . $class . '.php')) {
-+ if ($class == 'OAuthRequest') {
-+ require_once('OAuth.php');
-+ } else if (file_exists(INSTALLDIR.'/classes/' . $class . '.php')) {
-hunk ./lib/deleteaction.php 24
-- function handle($args) {
-- parent::handle($args);
-- $user = common_current_user();
-- $notice_id = $this->trimmed('notice');
-- $notice = Notice::staticGet($notice_id);
-- if (!$notice) {
-- common_user_error(_('No such notice.'));
-- exit;
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ $user = common_current_user();
-+ $notice_id = $this->trimmed('notice');
-+ $notice = Notice::staticGet($notice_id);
-+ if (!$notice) {
-+ common_user_error(_('No such notice.'));
-+ exit;
-+ }
-hunk ./lib/deleteaction.php 34
-- $profile = $notice->getProfile();
-- $user_profile = $user->getProfile();
-+ $profile = $notice->getProfile();
-+ $user_profile = $user->getProfile();
-hunk ./lib/deleteaction.php 37
-- if (!common_logged_in()) {
-- common_user_error(_('Not logged in.'));
-- exit;
-- } else if ($notice->profile_id != $user_profile->id) {
-- common_user_error(_('Can\'t delete this notice.'));
-- exit;
-- }
-- }
-+ if (!common_logged_in()) {
-+ common_user_error(_('Not logged in.'));
-+ exit;
-+ } else if ($notice->profile_id != $user_profile->id) {
-+ common_user_error(_('Can\'t delete this notice.'));
-+ exit;
-+ }
-+ }
+- function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
++ function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) {
+hunk ./classes/User.php 346
+- $offset, $limit, $since_id, $before_id, NULL, $since);
++ $offset, $limit, $since_id, $before_id, null, $since);
+hunk ./classes/User.php 349
+- function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
++ function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) {
+hunk ./classes/User.php 352
+- return NULL;
++ return null;
+hunk ./classes/User.php 368
+- function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) {
++ function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) {
+hunk ./classes/User.php 380
+- $order = NULL;
++ $order = null;
+hunk ./classes/User_openid.php 20
+- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_openid',$k,$v); }
++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User_openid',$k,$v); }
+hunk ./lib/common.php 61
+- 'logfile' => NULL,
++ 'logfile' => null,
+hunk ./lib/common.php 67
+- array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL,
+- 'broughtby' => NULL,
++ array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : null,
++ 'broughtby' => null,
+hunk ./lib/common.php 70
+- 'broughtbyurl' => NULL,
++ 'broughtbyurl' => null,
+hunk ./lib/common.php 85
+- 'params' => NULL),
++ 'params' => null),
+hunk ./lib/common.php 92
+- array('server' => NULL),
++ array('server' => null),
+hunk ./lib/common.php 97
+- array('server' => NULL),
++ array('server' => null),
+hunk ./lib/common.php 110
+- 'host' => NULL, # only set if != server
++ 'host' => null, # only set if != server
+hunk ./lib/common.php 143
+- 'mirror' => NULL,
++ 'mirror' => null,
hunk ./lib/deleteaction.php 46
-- function show_top($arr=NULL) {
-- $instr = $this->get_instructions();
-- $output = common_markup_to_html($instr);
-- common_element_start('div', 'instructions');
-- common_raw($output);
-- common_element_end('div');
-- }
-+ function show_top($arr=NULL) {
-+ $instr = $this->get_instructions();
-+ $output = common_markup_to_html($instr);
-+ common_element_start('div', 'instructions');
-+ common_raw($output);
-+ common_element_end('div');
-+ }
-hunk ./lib/deleteaction.php 54
-- function get_title() {
-- return NULL;
-- }
-+ function get_title() {
-+ return NULL;
-+ }
-hunk ./lib/deleteaction.php 58
-- function show_header() {
-- return;
-- }
-+ function show_header() {
-+ return;
-+ }
-hunk ./lib/facebookaction.php 13
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-hunk ./lib/facebookaction.php 17
-- * along with this program. If not, see .
-+ * along with this program. If not, see .
-hunk ./lib/facebookaction.php 26
-- function handle($args) {
-- parent::handle($args);
-- }
-+ function handle($args) {
-+ parent::handle($args);
-+ }
-hunk ./lib/facebookaction.php 30
-- function get_facebook() {
-- $apikey = common_config('facebook', 'apikey');
-- $secret = common_config('facebook', 'secret');
-- return new Facebook($apikey, $secret);
-- }
-+ function get_facebook() {
-+ $apikey = common_config('facebook', 'apikey');
-+ $secret = common_config('facebook', 'secret');
-+ return new Facebook($apikey, $secret);
-+ }
-hunk ./lib/facebookaction.php 36
-- function update_profile_box($facebook, $fbuid, $user) {
-+ function update_profile_box($facebook, $fbuid, $user) {
-hunk ./lib/facebookaction.php 38
-- $notice = $user->getCurrentNotice();
-+ $notice = $user->getCurrentNotice();
-hunk ./lib/facebookaction.php 40
-- # Need to include inline CSS for styling the Profile box
-+ # Need to include inline CSS for styling the Profile box
-hunk ./lib/facebookaction.php 42
-- $style = '';
-+ $style = '';
-hunk ./lib/facebookaction.php 77
-- $html = $this->render_notice($notice);
-+ $html = $this->render_notice($notice);
-hunk ./lib/facebookaction.php 79
-- $fbml = "$content $html";
-- $fbml .= "$content $html";
-+ $fbml = "$content $html";
-+ $fbml .= "$content $html";
-hunk ./lib/facebookaction.php 82
-- $fbml_main = "$content $html";
-+ $fbml_main = "$content $html";
+- function show_top($arr=NULL) {
++ function show_top($arr=null) {
+hunk ./lib/deleteaction.php 55
+- return NULL;
++ return null;
hunk ./lib/facebookaction.php 84
-- $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main);
-- }
-+ $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main);
-+ }
-hunk ./lib/facebookaction.php 87
-- # Display methods
-+ # Display methods
-hunk ./lib/facebookaction.php 89
-- function show_header($selected ='Home') {
-+ function show_header($selected ='Home') {
-hunk ./lib/facebookaction.php 91
-- # Add a timestamp to the CSS file so Facebook cache wont ignore our changes
-- $ts = filemtime(theme_file('facebookapp.css'));
-- $cssurl = theme_path('facebookapp.css') . "?ts=$ts";
-+ # Add a timestamp to the CSS file so Facebook cache wont ignore our changes
-+ $ts = filemtime(theme_file('facebookapp.css'));
-+ $cssurl = theme_path('facebookapp.css') . "?ts=$ts";
-hunk ./lib/facebookaction.php 95
-- $header = '';
-- # $header .='';
-- $header .= '';
-+ $header = '';
-+ # $header .='';
-+ $header .= '';
-hunk ./lib/facebookaction.php 99
-- $header .=
-- ''
-- .''
-- .''
-- .''
-- .'';
-- $header .= '';
-+ $header .=
-+ '
'
-+ .''
-+ .''
-+ .''
-+ .'';
-+ $header .= '
';
-hunk ./lib/facebookaction.php 107
-- echo $header;
-+ echo $header;
-hunk ./lib/facebookaction.php 109
-- }
-+ }
-hunk ./lib/facebookaction.php 111
-- function show_footer() {
-- $footer = '
';
-- echo $footer;
-- }
-+ function show_footer() {
-+ $footer = '
';
-+ echo $footer;
-+ }
-hunk ./lib/facebookaction.php 116
-- function show_login_form() {
-+ function show_login_form() {
-hunk ./lib/facebookaction.php 118
-- $loginform =
-- ' To add the Identi.ca application, you need to log into your Identi.ca account.
'
-- .''
-- .'
'
-- .''
-- .'Login
'
-- .''
-- .'
Login with your username and password. Don\'t have a username yet?'
-- .' Register a new account.'
-- .'
'
-- .'
'
-- .''
-- .'
'
-- .'
'
-- .' Lost or forgotten password?'
-- .'
'
-- .'
To add the Identi.ca application, you need to log into your Identi.ca account.'
-+ .''
-+ .'
'
-+ .''
-+ .'Login
'
-+ .''
-+ .'
Login with your username and password. Don\'t have a username yet?'
-+ .' Register a new account.'
-+ .'
'
-+ .'
'
-+ .''
-+ .'
'
-+ .'
'
-+ .' Lost or forgotten password?'
-+ .'
'
-+ .'
getProfile();
-- $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-+ $profile = $notice->getProfile();
-+ $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-hunk ./lib/facebookaction.php 158
-- $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
-+ $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
-hunk ./lib/facebookaction.php 160
-- # XXX: we need to figure this out better. Is this right?
-- if (strcmp($notice->uri, $noticeurl) != 0 && preg_match('/^http/', $notice->uri)) {
-- $noticeurl = $notice->uri;
-- }
-+ # XXX: we need to figure this out better. Is this right?
-+ if (strcmp($notice->uri, $noticeurl) != 0 && preg_match('/^http/', $notice->uri)) {
-+ $noticeurl = $notice->uri;
-+ }
-hunk ./lib/facebookaction.php 165
-- $html =
-- '- '
-- .''
-- .'
'
-+ .''
-+ .'
'
-- .'' . $profile->nickname . ''
-- .'' . $notice->rendered . '
'
-- .''
-- .'' . common_date_string($notice->created) . '';
-+ $html .=
-+ '">'
-+ .'' . $profile->nickname . ''
-+ .'
' . $notice->rendered . '
'
-+ .''
-+ .'' . common_date_string($notice->created) . '';
-hunk ./lib/facebookaction.php 194
-- if ($notice->source) {
-- $html .= _(' from ');
-- $html .= $this->source_link($notice->source);
-- }
-+ if ($notice->source) {
-+ $html .= _(' from ');
-+ $html .= $this->source_link($notice->source);
-+ }
-hunk ./lib/facebookaction.php 199
-- if ($notice->reply_to) {
-- $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
-- $html .=
-- ' (' . _('in reply to...') . ')';
-- }
-+ if ($notice->reply_to) {
-+ $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to));
-+ $html .=
-+ ' (' . _('in reply to...') . ')';
-+ }
-hunk ./lib/facebookaction.php 205
-- $html .= '
';
-+ $html .= '
';
-hunk ./lib/facebookaction.php 207
-- return $html;
-- }
-+ return $html;
-+ }
-hunk ./lib/facebookaction.php 210
-- function source_link($source) {
-- $source_name = _($source);
-+ function source_link($source) {
-+ $source_name = _($source);
-hunk ./lib/facebookaction.php 213
-- $html = '';
-+ $html = '';
-hunk ./lib/facebookaction.php 215
-- switch ($source) {
-- case 'web':
-- case 'xmpp':
-- case 'mail':
-- case 'omb':
-- case 'api':
-- $html .= $source_name;
-- break;
-- default:
-- $ns = Notice_source::staticGet($source);
-- if ($ns) {
-- $html .= '' . $ns->name . '';
-- } else {
-- $html .= $source_name;
-- }
-- break;
-- }
-+ switch ($source) {
-+ case 'web':
-+ case 'xmpp':
-+ case 'mail':
-+ case 'omb':
-+ case 'api':
-+ $html .= $source_name;
-+ break;
-+ default:
-+ $ns = Notice_source::staticGet($source);
-+ if ($ns) {
-+ $html .= '' . $ns->name . '';
-+ } else {
-+ $html .= $source_name;
-+ }
-+ break;
-+ }
-hunk ./lib/facebookaction.php 233
-- $html .= '';
-+ $html .= '';
-hunk ./lib/facebookaction.php 235
-- return $html;
-- }
-+ return $html;
-+ }
+- $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main);
++ $facebook->api_client->profile_setFBML(null, $fbuid, $fbml, null, null, $fbml_main);
hunk ./lib/facebookaction.php 238
-- function pagination($have_before, $have_after, $page, $fbaction, $args=NULL) {
-+ function pagination($have_before, $have_after, $page, $fbaction, $args=NULL) {
-hunk ./lib/facebookaction.php 240
-- $html = '';
-+ $html = '';
-hunk ./lib/facebookaction.php 242
-- if ($have_before || $have_after) {
-- $html = '