From 334c652e80e9bb9e53116963ec3f794588be4439 Mon Sep 17 00:00:00 2001 From: mikec Date: Mon, 21 Jul 2008 08:00:36 -0400 Subject: [PATCH] Publish MicroIDs for email and mpp on profile and notice pages. darcs-hash:20080721120036-edabd-838335c0e23c80a657d353955b25b52a9a8624b2.gz --- actions/emailsettings.php | 15 +++++---------- actions/imsettings.php | 5 +++++ actions/shownotice.php | 22 ++++++++++++++++++++-- actions/showstream.php | 10 ++++++++++ classes/User.php | 1 + db/laconica.sql | 1 + 6 files changed, 42 insertions(+), 12 deletions(-) diff --git a/actions/emailsettings.php b/actions/emailsettings.php index 2173645f75..72bad8519f 100644 --- a/actions/emailsettings.php +++ b/actions/emailsettings.php @@ -83,14 +83,11 @@ class EmailsettingsAction extends SettingsAction { } common_element('h2', NULL, _('Preferences')); - + common_checkbox('emailnotifysub', - _('Send me notices of new subscriptions through email.'), - $user->emailnotifysub); - common_checkbox('emailpost', - _('I want to post notices by email.'), - $user->emailpost); - + _('Send me notices of new subscriptions through email.'), + $user->emailnotifysub); + common_submit('save', _('Save')); common_element_end('form'); @@ -131,8 +128,7 @@ class EmailsettingsAction extends SettingsAction { function save_preferences() { $emailnotifysub = $this->boolean('emailnotifysub'); - $emailpost = $this->boolean('emailpost'); - + $user = common_current_user(); assert(!is_null($user)); # should already be checked @@ -142,7 +138,6 @@ class EmailsettingsAction extends SettingsAction { $original = clone($user); $user->emailnotifysub = $emailnotifysub; - $user->emailpost = $emailpost; $result = $user->update($original); diff --git a/actions/imsettings.php b/actions/imsettings.php index d1ed48efb3..034f6dc2b2 100644 --- a/actions/imsettings.php +++ b/actions/imsettings.php @@ -75,6 +75,9 @@ class ImsettingsAction extends SettingsAction { 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_element_end('form'); @@ -113,6 +116,7 @@ class ImsettingsAction extends SettingsAction { $jabbernotify = $this->boolean('jabbernotify'); $updatefrompresence = $this->boolean('updatefrompresence'); $jabberreplies = $this->boolean('jabberreplies'); + $jabbermicroid = $this->boolean('jabbermicroid'); $user = common_current_user(); @@ -125,6 +129,7 @@ class ImsettingsAction extends SettingsAction { $user->jabbernotify = $jabbernotify; $user->updatefrompresence = $updatefrompresence; $user->jabberreplies = $jabberreplies; + $user->jabbermicroid = $jabbermicroid; $result = $user->update($original); diff --git a/actions/shownotice.php b/actions/shownotice.php index c05537c38e..f9531b3c40 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -43,7 +43,7 @@ class ShownoticeAction extends StreamAction { # Looks like we're good; show the header common_show_header(sprintf(_('%1$s\'s status on %2$s'), $profile->nickname, common_exact_date($notice->created)), - NULL, $profile, + array($this, 'show_header'), $notice, array($this, 'show_top')); common_element_start('ul', array('id' => 'notices')); @@ -53,7 +53,25 @@ class ShownoticeAction extends StreamAction { common_show_footer(); } - function show_top($user) { + function show_header($notice) + { + $profile = $notice->getProfile(); + $user = User::staticGet($profile->id); + if (!$user) { + return; + } + if ($user->emailmicroid && $user->email && $notice->uri) { + common_element('meta', array('name' => 'microid', + 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($notice->uri)))); + } + if ($user->jabbermicroid && $user->jabber && $notice->uri) { + common_element('meta', array('name' => 'microid', + 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($notice->uri)))); + } + } + + function show_top($notice) { + $user = $notice->getProfile(); $cur = common_current_user(); if ($cur && $cur->id == $user->id) { diff --git a/actions/showstream.php b/actions/showstream.php index 8b473f76a4..fba68d129d 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -94,6 +94,16 @@ class ShowstreamAction extends StreamAction { common_element('meta', array('name' => 'description', 'content' => $profile->bio)); } + + 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)))); + } + } function no_such_user() { diff --git a/classes/User.php b/classes/User.php index bded1e0be6..b7feab6023 100644 --- a/classes/User.php +++ b/classes/User.php @@ -39,6 +39,7 @@ class User extends DB_DataObject public $jabber; // varchar(255) unique_key public $jabbernotify; // tinyint(1) public $jabberreplies; // tinyint(1) + public $jabbermicroid; // tinyint(1) default_1 public $updatefrompresence; // tinyint(1) public $sms; // varchar(64) unique_key public $carrier; // int(4) diff --git a/db/laconica.sql b/db/laconica.sql index 3e8361bc67..79c34e712a 100644 --- a/db/laconica.sql +++ b/db/laconica.sql @@ -50,6 +50,7 @@ create table user ( jabber varchar(255) unique key comment 'jabber ID for notices', jabbernotify tinyint default 0 comment 'whether to send notices to jabber', jabberreplies tinyint default 0 comment 'whether to send notices to jabber on replies', + jabbermicroid tinyint default 1 comment 'whether to publish xmpp microid', updatefrompresence tinyint default 0 comment 'whether to record updates from Jabber presence notices', sms varchar(64) unique key comment 'sms phone number', carrier integer comment 'foreign key to sms_carrier' references sms_carrier (id),