]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/userprofile.php
Updated plugin to open external links on a new window that are not
[quix0rs-gnu-social.git] / lib / userprofile.php
index 4f9d4984f4e9ef69f8a2e6b0095228b4bebb2efd..ca060842b6e9b44d2acf742f88bdd4fb2815d45f 100644 (file)
@@ -71,7 +71,8 @@ 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'));
             $this->out->element('h2', null, _('User profile'));
 
             if (Event::handle('StartProfilePageProfileElements', array(&$this->out, $this->profile))) {
@@ -228,6 +229,17 @@ class UserProfile extends Widget
 
     function showEntityActions()
     {
+        if ($this->profile->hasRole(Profile_role::DELETED)) {
+            $this->out->elementStart('div', 'entity_actions');
+            $this->out->element('h2', null, _('User actions'));
+            $this->out->elementStart('ul');
+            $this->out->elementStart('p', array('class' => 'profile_deleted'));
+            $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))) {
 
             $cur = common_current_user();
@@ -238,9 +250,12 @@ class UserProfile extends Widget
 
             if (Event::handle('StartProfilePageActionsElements', array(&$this->out, $this->profile))) {
                 if (empty($cur)) { // not logged in
-                    $this->out->elementStart('li', 'entity_subscribe');
-                    $this->showRemoteSubscribeLink();
-                    $this->out->elementEnd('li');
+                    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));
+                    }
                 } else {
                     if ($cur->id == $this->profile->id) { // your own page
                         $this->out->elementStart('li', 'entity_edit');
@@ -283,22 +298,76 @@ class UserProfile extends Widget
                             }
                         }
 
+                        // return-to args, so we don't have to keep re-writing them
+
+                        list($action, $r2args) = $this->out->returnToArgs();
+
+                        // push the action into the list
+
+                        $r2args['action'] = $action;
+
                         // block/unblock
 
                         $blocked = $cur->hasBlocked($this->profile);
                         $this->out->elementStart('li', 'entity_block');
                         if ($blocked) {
-                            $ubf = new UnblockForm($this->out, $this->profile,
-                                                   array('action' => 'showstream',
-                                                         'nickname' => $this->profile->nickname));
+                            $ubf = new UnblockForm($this->out, $this->profile, $r2args);
                             $ubf->show();
                         } else {
-                            $bf = new BlockForm($this->out, $this->profile,
-                                                array('action' => 'showstream',
-                                                      'nickname' => $this->profile->nickname));
+                            $bf = new BlockForm($this->out, $this->profile, $r2args);
                             $bf->show();
                         }
                         $this->out->elementEnd('li');
+
+                        if ($cur->hasRight(Right::SANDBOXUSER) ||
+                            $cur->hasRight(Right::SILENCEUSER) ||
+                            $cur->hasRight(Right::DELETEUSER)) {
+                            $this->out->elementStart('li', 'entity_moderation');
+                            $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()) {
+                                    $usf = new UnSandboxForm($this->out, $this->profile, $r2args);
+                                    $usf->show();
+                                } else {
+                                    $sf = new SandboxForm($this->out, $this->profile, $r2args);
+                                    $sf->show();
+                                }
+                                $this->out->elementEnd('li');
+                            }
+
+                            if ($cur->hasRight(Right::SILENCEUSER)) {
+                                $this->out->elementStart('li', 'entity_silence');
+                                if ($this->user->isSilenced()) {
+                                    $usf = new UnSilenceForm($this->out, $this->profile, $r2args);
+                                    $usf->show();
+                                } else {
+                                    $sf = new SilenceForm($this->out, $this->profile, $r2args);
+                                    $sf->show();
+                                }
+                                $this->out->elementEnd('li');
+                            }
+
+                            if ($cur->hasRight(Right::DELETEUSER)) {
+                                $this->out->elementStart('li', 'entity_delete');
+                                $df = new DeleteUserForm($this->out, $this->profile, $r2args);
+                                $df->show();
+                                $this->out->elementEnd('li');
+                            }
+                            $this->out->elementEnd('ul');
+                            $this->out->elementEnd('li');
+                        }
+                        
+                        if ($cur->hasRight(Right::GRANTROLE)) {
+                            $this->out->elementStart('li', 'entity_role');
+                            $this->out->element('p', null, _('User role'));
+                            $this->out->elementStart('ul');
+                            $this->roleButton('administrator', _m('role', 'Administrator'));
+                            $this->roleButton('moderator', _m('role', 'Moderator'));
+                            $this->out->elementEnd('ul');
+                            $this->out->elementEnd('li');
+                        }
                     }
                 }
 
@@ -312,6 +381,22 @@ class UserProfile extends Widget
         }
     }
 
+    function roleButton($role, $label)
+    {
+        list($action, $r2args) = $this->out->returnToArgs();
+        $r2args['action'] = $action;
+
+        $this->out->elementStart('li', "entity_role_$role");
+        if ($this->user->hasRole($role)) {
+            $rf = new RevokeRoleForm($role, $label, $this->out, $this->profile, $r2args);
+            $rf->show();
+        } else {
+            $rf = new GrantRoleForm($role, $label, $this->out, $this->profile, $r2args);
+            $rf->show();
+        }
+        $this->out->elementEnd('li');
+    }
+
     function showRemoteSubscribeLink()
     {
         $url = common_local_url('remotesubscribe',