From: Evan Prodromou Date: Fri, 20 Jun 2008 07:17:00 +0000 (-0400) Subject: change from using tag uris to http urls for identifiers X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=15a09c5d694f720ef50f9c82860193545233bcf1;p=quix0rs-gnu-social.git 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 --- 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)); +}