]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/userprofile.php
UR FACE
[quix0rs-gnu-social.git] / lib / userprofile.php
index 2c3b1ea453bb4460291ba49273cd2dc88c566a15..9c563db5d068f7a831832a56cd8eab18c26e0a21 100644 (file)
@@ -48,7 +48,6 @@ require_once INSTALLDIR.'/lib/widget.php';
  *
  * @see      HTMLOutputter
  */
-
 class UserProfile extends Widget
 {
     var $user = null;
@@ -71,7 +70,9 @@ class UserProfile extends Widget
     {
         if (Event::handle('StartProfilePageProfileSection', array(&$this->out, $this->profile))) {
 
-            $this->out->elementStart('div', 'entity_profile vcard author');
+            $this->out->elementStart('div', array('id' => 'i',
+                                                  'class' => 'entity_profile vcard author'));
+            // TRANS: H2 for user profile information.
             $this->out->element('h2', null, _('User profile'));
 
             if (Event::handle('StartProfilePageProfileElements', array(&$this->out, $this->profile))) {
@@ -94,48 +95,46 @@ class UserProfile extends Widget
 
     function showAvatar()
     {
+        $this->out->elementStart('div', 'ur_face');
+
         if (Event::handle('StartProfilePageAvatar', array($this->out, $this->profile))) {
 
             $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
+            if (!$avatar) {
+                // hack for remote Twitter users: no 96px, but large Twitter size is 73px
+                $avatar = $this->profile->getAvatar(73);
+            }
 
-            $this->out->elementStart('dl', 'entity_depiction');
-            $this->out->element('dt', null, _('Photo'));
-            $this->out->elementStart('dd');
-            $this->out->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE),
-                                        'class' => 'photo avatar',
-                                        'width' => AVATAR_PROFILE_SIZE,
-                                        'height' => AVATAR_PROFILE_SIZE,
-                                        'alt' => $this->profile->nickname));
-            $this->out->elementEnd('dd');
-
-            $user = User::staticGet('id', $this->profile->id);
-
+            $this->out->element('img', 
+                                array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE),
+                                      'class' => 'photo avatar entity_depiction',
+                                      'width' => AVATAR_PROFILE_SIZE,
+                                      'height' => AVATAR_PROFILE_SIZE,
+                                      'alt' => $this->profile->nickname));
+            
             $cur = common_current_user();
-            if ($cur && $cur->id == $user->id) {
-                $this->out->elementStart('dd');
+
+            if ($cur && $cur->id == $this->profile->id) {
                 $this->out->element('a', array('href' => common_local_url('avatarsettings')), _('Edit Avatar'));
-                $this->out->elementEnd('dd');
             }
 
-            $this->out->elementEnd('dl');
-
-            Event::handle('EndProfilePageAvatar', array($this->out, $this->profile));
+            Event::handle('EndProfilePageAvatar',
+                          array($this->out, $this->profile));
         }
+
+        $this->out->elementEnd('div');
     }
 
     function showNickname()
     {
         if (Event::handle('StartProfilePageNickname', array($this->out, $this->profile))) {
 
-            $this->out->elementStart('dl', 'entity_nickname');
-            $this->out->element('dt', null, _('Nickname'));
-            $this->out->elementStart('dd');
-            $hasFN = ($this->profile->fullname) ? 'nickname url uid' : 'fn nickname url uid';
-            $this->out->element('a', array('href' => $this->profile->profileurl,
-                                      'rel' => 'me', 'class' => $hasFN),
+            $hasFN = ($this->profile->fullname) ? 'entity_nickname nickname url uid' : 'entity_nickname fn nickname url uid';
+            $this->out->element('a',
+                                array('href' => $this->profile->profileurl,
+                                      'rel' => 'me',
+                                      'class' => $hasFN),
                            $this->profile->nickname);
-            $this->out->elementEnd('dd');
-            $this->out->elementEnd('dl');
 
             Event::handle('EndProfilePageNickname', array($this->out, $this->profile));
         }
@@ -145,12 +144,9 @@ class UserProfile extends Widget
     {
         if (Event::handle('StartProfilePageFullName', array($this->out, $this->profile))) {
             if ($this->profile->fullname) {
-                $this->out->elementStart('dl', 'entity_fn');
-                $this->out->element('dt', null, _('Full name'));
-                $this->out->elementStart('dd');
-                $this->out->element('span', 'fn', $this->profile->fullname);
-                $this->out->elementEnd('dd');
-                $this->out->elementEnd('dl');
+                $this->out->element('span',
+                                    'entity_fn fn',
+                                    $this->profile->fullname);
             }
             Event::handle('EndProfilePageFullName', array($this->out, $this->profile));
         }
@@ -160,10 +156,9 @@ class UserProfile extends Widget
     {
         if (Event::handle('StartProfilePageLocation', array($this->out, $this->profile))) {
             if ($this->profile->location) {
-                $this->out->elementStart('dl', 'entity_location');
-                $this->out->element('dt', null, _('Location'));
-                $this->out->element('dd', 'label', $this->profile->location);
-                $this->out->elementEnd('dl');
+                $this->out->element('span',
+                                    'entity_location label',
+                                    $this->profile->location);
             }
             Event::handle('EndProfilePageLocation', array($this->out, $this->profile));
         }
@@ -173,14 +168,11 @@ class UserProfile extends Widget
     {
         if (Event::handle('StartProfilePageHomepage', array($this->out, $this->profile))) {
             if ($this->profile->homepage) {
-                $this->out->elementStart('dl', 'entity_url');
-                $this->out->element('dt', null, _('URL'));
-                $this->out->elementStart('dd');
-                $this->out->element('a', array('href' => $this->profile->homepage,
-                                          'rel' => 'me', 'class' => 'url'),
+                $this->out->element('a',
+                                    array('href' => $this->profile->homepage,
+                                          'rel' => 'me',
+                                          'class' => 'url entity_url'),
                                $this->profile->homepage);
-                $this->out->elementEnd('dd');
-                $this->out->elementEnd('dl');
             }
             Event::handle('EndProfilePageHomepage', array($this->out, $this->profile));
         }
@@ -190,10 +182,9 @@ class UserProfile extends Widget
     {
         if (Event::handle('StartProfilePageBio', array($this->out, $this->profile))) {
             if ($this->profile->bio) {
-                $this->out->elementStart('dl', 'entity_note');
-                $this->out->element('dt', null, _('Note'));
-                $this->out->element('dd', 'note', $this->profile->bio);
-                $this->out->elementEnd('dl');
+                $this->out->element('div',
+                                    'note entity_note',
+                                    $this->profile->bio);
             }
             Event::handle('EndProfilePageBio', array($this->out, $this->profile));
         }
@@ -205,10 +196,7 @@ class UserProfile extends Widget
             $tags = Profile_tag::getTags($this->profile->id, $this->profile->id);
 
             if (count($tags) > 0) {
-                $this->out->elementStart('dl', 'entity_tags');
-                $this->out->element('dt', null, _('Tags'));
-                $this->out->elementStart('dd');
-                $this->out->elementStart('ul', 'tags xoxo');
+                $this->out->elementStart('ul', 'tags xoxo entity_tags');
                 foreach ($tags as $tag) {
                     $this->out->elementStart('li');
                     // Avoid space by using raw output.
@@ -219,8 +207,6 @@ class UserProfile extends Widget
                     $this->out->elementEnd('li');
                 }
                 $this->out->elementEnd('ul');
-                $this->out->elementEnd('dd');
-                $this->out->elementEnd('dl');
             }
             Event::handle('EndProfilePageProfileTags', array($this->out, $this->profile));
         }
@@ -230,36 +216,41 @@ class UserProfile extends Widget
     {
         if ($this->profile->hasRole(Profile_role::DELETED)) {
             $this->out->elementStart('div', 'entity_actions');
+            // TRANS: H2 for user actions in a profile.
             $this->out->element('h2', null, _('User actions'));
             $this->out->elementStart('ul');
             $this->out->elementStart('p', array('class' => 'profile_deleted'));
+            // TRANS: Text shown in user profile of not yet compeltely deleted users.
             $this->out->text(_('User deletion in progress...'));
             $this->out->elementEnd('p');
             $this->out->elementEnd('ul');
             $this->out->elementEnd('div');
             return;
         }
-        if (Event::handle('StartProfilePageActionsSection', array(&$this->out, $this->profile))) {
+        if (Event::handle('StartProfilePageActionsSection', array($this->out, $this->profile))) {
 
             $cur = common_current_user();
 
             $this->out->elementStart('div', 'entity_actions');
+            // TRANS: H2 for entity actions in a profile.
             $this->out->element('h2', null, _('User actions'));
             $this->out->elementStart('ul');
 
-            if (Event::handle('StartProfilePageActionsElements', array(&$this->out, $this->profile))) {
+            if (Event::handle('StartProfilePageActionsElements', array($this->out, $this->profile))) {
                 if (empty($cur)) { // not logged in
-                    if (Event::handle('StartProfileRemoteSubscribe', array(&$this->out, $this->profile))) {
+                    if (Event::handle('StartProfileRemoteSubscribe', array($this->out, $this->profile))) {
                         $this->out->elementStart('li', 'entity_subscribe');
                         $this->showRemoteSubscribeLink();
                         $this->out->elementEnd('li');
-                        Event::handle('EndProfileRemoteSubscribe', array(&$this->out, $this->profile));
+                        Event::handle('EndProfileRemoteSubscribe', array($this->out, $this->profile));
                     }
                 } else {
                     if ($cur->id == $this->profile->id) { // your own page
                         $this->out->elementStart('li', 'entity_edit');
                         $this->out->element('a', array('href' => common_local_url('profilesettings'),
+                                                  // TRANS: Link title for link on user profile.
                                                   'title' => _('Edit profile settings')),
+                                       // TRANS: Link text for link on user profile.
                                        _('Edit'));
                         $this->out->elementEnd('li');
                     } else { // someone else's page
@@ -277,19 +268,21 @@ class UserProfile extends Widget
                         }
                         $this->out->elementEnd('li');
 
-                        if ($cur->mutuallySubscribed($this->user)) {
+                        if ($cur->mutuallySubscribed($this->profile)) {
 
                             // message
 
                             $this->out->elementStart('li', 'entity_send-a-message');
                             $this->out->element('a', array('href' => common_local_url('newmessage', array('to' => $this->user->id)),
+                                                      // TRANS: Link title for link on user profile.
                                                       'title' => _('Send a direct message to this user')),
+                                           // TRANS: Link text for link on user profile.
                                            _('Message'));
                             $this->out->elementEnd('li');
 
                             // nudge
 
-                            if ($this->user->email && $this->user->emailnotifynudge) {
+                            if ($this->user && $this->user->email && $this->user->emailnotifynudge) {
                                 $this->out->elementStart('li', 'entity_nudge');
                                 $nf = new NudgeForm($this->out, $this->user);
                                 $nf->show();
@@ -318,15 +311,19 @@ class UserProfile extends Widget
                         }
                         $this->out->elementEnd('li');
 
+                        // Some actions won't be applicable to non-local users.
+                        $isLocal = !empty($this->user);
+
                         if ($cur->hasRight(Right::SANDBOXUSER) ||
                             $cur->hasRight(Right::SILENCEUSER) ||
                             $cur->hasRight(Right::DELETEUSER)) {
                             $this->out->elementStart('li', 'entity_moderation');
+                            // TRANS: Label text on user profile to select a user role.
                             $this->out->element('p', null, _('Moderate'));
                             $this->out->elementStart('ul');
                             if ($cur->hasRight(Right::SANDBOXUSER)) {
                                 $this->out->elementStart('li', 'entity_sandbox');
-                                if ($this->user->isSandboxed()) {
+                                if ($this->profile->isSandboxed()) {
                                     $usf = new UnSandboxForm($this->out, $this->profile, $r2args);
                                     $usf->show();
                                 } else {
@@ -338,7 +335,7 @@ class UserProfile extends Widget
 
                             if ($cur->hasRight(Right::SILENCEUSER)) {
                                 $this->out->elementStart('li', 'entity_silence');
-                                if ($this->user->isSilenced()) {
+                                if ($this->profile->isSilenced()) {
                                     $usf = new UnSilenceForm($this->out, $this->profile, $r2args);
                                     $usf->show();
                                 } else {
@@ -348,7 +345,7 @@ class UserProfile extends Widget
                                 $this->out->elementEnd('li');
                             }
 
-                            if ($cur->hasRight(Right::DELETEUSER)) {
+                            if ($isLocal && $cur->hasRight(Right::DELETEUSER)) {
                                 $this->out->elementStart('li', 'entity_delete');
                                 $df = new DeleteUserForm($this->out, $this->profile, $r2args);
                                 $df->show();
@@ -357,12 +354,15 @@ class UserProfile extends Widget
                             $this->out->elementEnd('ul');
                             $this->out->elementEnd('li');
                         }
-                        
-                        if ($cur->hasRight(Right::GRANTROLE)) {
+
+                        if ($isLocal && $cur->hasRight(Right::GRANTROLE)) {
                             $this->out->elementStart('li', 'entity_role');
+                            // TRANS: Label text on user profile to select a user role.
                             $this->out->element('p', null, _('User role'));
                             $this->out->elementStart('ul');
+                            // TRANS: Role that can be set for a user profile.
                             $this->roleButton('administrator', _m('role', 'Administrator'));
+                            // TRANS: Role that can be set for a user profile.
                             $this->roleButton('moderator', _m('role', 'Moderator'));
                             $this->out->elementEnd('ul');
                             $this->out->elementEnd('li');
@@ -370,13 +370,13 @@ class UserProfile extends Widget
                     }
                 }
 
-                Event::handle('EndProfilePageActionsElements', array(&$this->out, $this->profile));
+                Event::handle('EndProfilePageActionsElements', array($this->out, $this->profile));
             }
 
             $this->out->elementEnd('ul');
             $this->out->elementEnd('div');
 
-            Event::handle('EndProfilePageActionsSection', array(&$this->out, $this->profile));
+            Event::handle('EndProfilePageActionsSection', array($this->out, $this->profile));
         }
     }
 
@@ -386,7 +386,7 @@ class UserProfile extends Widget
         $r2args['action'] = $action;
 
         $this->out->elementStart('li', "entity_role_$role");
-        if ($this->user->hasRole($role)) {
+        if ($this->profile->hasRole($role)) {
             $rf = new RevokeRoleForm($role, $label, $this->out, $this->profile, $r2args);
             $rf->show();
         } else {
@@ -402,6 +402,7 @@ class UserProfile extends Widget
                                 array('nickname' => $this->profile->nickname));
         $this->out->element('a', array('href' => $url,
                                   'class' => 'entity_remote_subscribe'),
+                       // TRANS: Link text for link that will subscribe to a remote profile.
                        _('Subscribe'));
     }
 }