]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/showstream.php
Publish MicroIDs for email and mpp on profile and notice pages.
[quix0rs-gnu-social.git] / actions / showstream.php
index 74409d4b681923661854bfb88ddea8573b443dc0..fba68d129d646e9bbf3f2fc2556fad236393903c 100644 (file)
@@ -41,7 +41,7 @@ class ShowstreamAction extends StreamAction {
                $profile = $user->getProfile();
 
                if (!$profile) {
-                       common_server_error(_('User record exists without profile.'));
+                       common_server_error(_('User has no profile.'));
                        return;
                }
 
@@ -89,10 +89,25 @@ class ShowstreamAction extends StreamAction {
                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));
+               }
+
+               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() {
-               common_user_error('No such user');
+               common_user_error(_('No such user.'));
        }
 
        function show_profile($profile) {
@@ -150,7 +165,8 @@ class ShowstreamAction extends StreamAction {
                }
                if ($profile->homepage) {
                        common_element_start('p', 'website');
-                       common_element('a', array('href' => $profile->homepage),
+                       common_element('a', array('href' => $profile->homepage,
+                                                                         'rel' => 'me'),
                                                   $profile->homepage);
                        common_element_end('p');
                }
@@ -199,6 +215,8 @@ class ShowstreamAction extends StreamAction {
 
                $subs = DB_DataObject::factory('subscription');
                $subs->subscriber = $profile->id;
+               $subs->whereAdd('subscribed != ' . $profile->id);
+               
                $subs->orderBy('created DESC');
 
                # We ask for an extra one to know if we need to do another page
@@ -229,6 +247,7 @@ class ShowstreamAction extends StreamAction {
                                                                                                $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)),
@@ -263,11 +282,11 @@ class ShowstreamAction extends StreamAction {
                // XXX: WORM cache this
                $subs = DB_DataObject::factory('subscription');
                $subs->subscriber = $profile->id;
-               $subs_count = (int) $subs->count();
+               $subs_count = (int) $subs->count() - 1;
 
                $subbed = DB_DataObject::factory('subscription');
                $subbed->subscribed = $profile->id;
-               $subbed_count = (int) $subbed->count();
+               $subbed_count = (int) $subbed->count() - 1;
 
                $notices = DB_DataObject::factory('notice');
                $notices->profile_id = $profile->id;
@@ -287,15 +306,15 @@ class ShowstreamAction extends StreamAction {
                                                                                                                         array('nickname' => $profile->nickname))),
                                           _('Subscriptions'));
                common_element_end('dt');
-               common_element('dd', 'subscriptions', $subs_count);
+               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', $subbed_count);
+               common_element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0');
                common_element('dt', 'notices', _('Notices'));
-               common_element('dd', 'notices', $notice_count);
+               common_element('dd', 'notices', (is_int($notice_count)) ? $notice_count : '0');
                common_element_end('dl');
 
                common_element_end('div');
@@ -306,7 +325,7 @@ class ShowstreamAction extends StreamAction {
                $notice = DB_DataObject::factory('notice');
                $notice->profile_id = $profile->id;
 
-               $notice->orderBy('created DESC');
+               $notice->orderBy('created DESC, notice.id DESC');
 
                $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 
@@ -337,7 +356,7 @@ class ShowstreamAction extends StreamAction {
                common_element('h2', NULL, _('Currently'));
 
                $notice = $profile->getCurrentNotice();
-               
+
                if ($notice) {
                        # FIXME: URL, image, video, audio
                        common_element_start('p', array('class' => 'notice_current'));
@@ -355,6 +374,12 @@ class ShowstreamAction extends StreamAction {
 
        function show_notice($notice) {
                $profile = $notice->getProfile();
+               if (common_logged_in()) {
+                       $user = common_current_user();
+                       $user_profile = $user->getProfile();
+               } else {
+                       $user_profile = false;
+               }
                # XXX: RDFa
                common_element_start('li', array('class' => 'notice_single',
                                                                                 'id' => 'notice-' . $notice->id));
@@ -380,18 +405,24 @@ class ShowstreamAction extends StreamAction {
                        common_text(' (');
                        common_element('a', array('class' => 'inreplyto',
                                                                          'href' => $replyurl),
-                                                  _t('in reply to...'));
+                                                  _('in reply to...'));
                        common_text(')');
                }
-               common_element_start('a', 
+               common_element_start('a',
                                                         array('href' => common_local_url('newnotice',
                                                                                                                          array('replyto' => $profile->nickname)),
                                                                   'onclick' => 'doreply("'.$profile->nickname.'"); return false',
-                                                                  'title' => _t('reply'),
+                                                                  'title' => _('reply'),
                                                                   'class' => 'replybutton'));
                common_raw('→');
                common_element_end('a');
                common_element_end('p');
+               if ($user_profile && $notice->profile_id == $user_profile->id) {
+                       $deleteurl = common_local_url('deletenotice', array('notice' => $notice->id));
+                       common_element('a', array('class' => 'deletenotice',
+                                                                        'href' => $deleteurl),
+                                                                         _('delete'));
+               }
                common_element_end('li');
        }
 }
\ No newline at end of file