]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/userprofile.php
implement mail headers
[quix0rs-gnu-social.git] / lib / userprofile.php
index ee205af85df86284feb3286398971bf744547aea..8464c2446499556a8fd8bb7812121f2f32f8e32d 100644 (file)
@@ -238,9 +238,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');
@@ -304,34 +307,53 @@ class UserProfile extends Widget
                         }
                         $this->out->elementEnd('li');
 
-                        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();
+                        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');
                             }
-                            $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();
+                            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::DELETEUSER)) {
-                            $this->out->elementStart('li', 'entity_delete');
-                            $df = new DeleteUserForm($this->out, $this->profile, $r2args);
-                            $df->show();
+                        
+                        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');
                         }
                     }
@@ -347,6 +369,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',