From 15a09c5d694f720ef50f9c82860193545233bcf1 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 20 Jun 2008 03:17:00 -0400 Subject: [PATCH] change from using tag uris to http urls for identifiers Weirdly, I got in an argument with Tim Berners-Lee in #swig about the tag URIs I was using in FOAF documents. Eventually, I was convinced that it's a better thing to use HTTP URLs instead. So, now we have HTTP URLs. The tricky thing was for users. Since they can change their names, we can't use their profile URL, since it includes the name. Instead, I made up a new action, which simply redirects from a user ID to their current profile URL. This should be sufficiently long-term. darcs-hash:20080620071700-84dde-c6145243dc45dd2dff621aff421375d05796057e.gz --- actions/finishopenidlogin.php | 2 +- actions/newnotice.php | 4 ++-- actions/register.php | 2 +- actions/userbyid.php | 36 +++++++++++++++++++++++++++++++++++ htaccess.sample | 2 ++ lib/util.php | 11 +++++++++++ 6 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 actions/userbyid.php diff --git a/actions/finishopenidlogin.php b/actions/finishopenidlogin.php index 7033344537..27e5057ec1 100644 --- a/actions/finishopenidlogin.php +++ b/actions/finishopenidlogin.php @@ -223,7 +223,7 @@ class FinishopenidloginAction extends Action { $user = new User(); $user->id = $id; $user->nickname = $nickname; - $user->uri = common_mint_tag('user:'.$id); + $user->uri = common_user_uri($user); if ($sreg['email'] && Validate::email($sreg['email'], true)) { $user->email = $sreg['email']; diff --git a/actions/newnotice.php b/actions/newnotice.php index a3ba4c9ccf..6d98c820cc 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -61,7 +61,7 @@ class NewnoticeAction extends Action { } $orig = clone($notice); - $notice->uri = common_mint_tag('notice:' . $id); + $notice->uri = common_notice_uri($notice); if (!$notice->update($orig)) { common_server_error(_t('Problem saving notice.')); @@ -91,4 +91,4 @@ class NewnoticeAction extends Action { common_notice_form(); common_show_footer(); } -} \ No newline at end of file +} diff --git a/actions/register.php b/actions/register.php index c167701fd7..3ed892e7ff 100644 --- a/actions/register.php +++ b/actions/register.php @@ -107,7 +107,7 @@ class RegisterAction extends Action { $user->nickname = $nickname; $user->password = common_munge_password($password, $id); $user->created = DB_DataObject_Cast::dateTime(); # current time - $user->uri = common_mint_tag('user:'.$id); + $user->uri = common_user_uri($user); $result = $user->insert(); if (!$result) { diff --git a/actions/userbyid.php b/actions/userbyid.php new file mode 100644 index 0000000000..9de32406a5 --- /dev/null +++ b/actions/userbyid.php @@ -0,0 +1,36 @@ +. + */ + +if (!defined('LACONICA')) { exit(1); } + +class UserbyidAction extends Action { + function handle($args) { + parent::handle($args); + $id = $this->trimmed('id'); + if (!$id) { + $this->client_error(_t('No id.')); + } + $user =& User::staticGet($id); + if (!$id) { + $this->client_error(_t('No such user.')); + } + common_redirect('showstream', + array('nickname' => $user->nickname)); + } +} diff --git a/htaccess.sample b/htaccess.sample index cd8ba10038..41ae878c63 100644 --- a/htaccess.sample +++ b/htaccess.sample @@ -27,6 +27,8 @@ RewriteRule ^settings/openid$ index.php?action=openidsettings [L,QSA] RewriteRule ^notice/new$ index.php?action=newnotice [L,QSA] RewriteRule ^notice/(\d+)$ index.php?action=shownotice¬ice=$1 [L,QSA] +RewriteRule ^user/(\d+)$ index.php?action=userbyid&id=$1 [L,QSA] + RewriteRule ^(\w+)/subscriptions$ index.php?action=subscriptions&nickname=$1 [L,QSA] RewriteRule ^(\w+)/subscribers$ index.php?action=subscribers&nickname=$1 [L,QSA] RewriteRule ^(\w+)/xrds$ index.php?action=xrds&nickname=$1 [L,QSA] diff --git a/lib/util.php b/lib/util.php index e137799f2d..ae6752653d 100644 --- a/lib/util.php +++ b/lib/util.php @@ -572,6 +572,8 @@ function common_fancy_url($action, $args=NULL) { } case 'confirmemail': return common_path('main/confirmemail/'.$args['code']); + case 'userbyid': + return common_path('user/'.$args['id']); default: return common_simple_url($action, $args); } @@ -897,3 +899,12 @@ function common_copy_args($from) { } return $to; } + +function common_user_uri(&$user) { + return common_local_url('userbyid', array('id' => $user->id)); +} + +function common_notice_uri(&$notice) { + return common_local_url('shownotice', + array('notice' => $notice->id)); +}