]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/deleteuser.php
New domain regexp for WebFinger matching.
[quix0rs-gnu-social.git] / actions / deleteuser.php
index 4e6b27395389406f627cec8bed330ebfe62b274f..6e0c6ebf7f2357ad1916b0a86814ba7bb46e136f 100644 (file)
@@ -27,9 +27,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
 
 /**
  * Delete a user
@@ -40,39 +38,34 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
  * @link     http://status.net/
  */
-
 class DeleteuserAction extends ProfileFormAction
 {
     var $user = null;
 
-    /**
-     * Take arguments for running
-     *
-     * @param array $args $_REQUEST args
-     *
-     * @return boolean success flag
-     */
-
-    function prepare($args)
+    function prepare(array $args=array())
     {
         if (!parent::prepare($args)) {
             return false;
         }
 
-        $cur = common_current_user();
+        assert($this->scoped instanceof Profile);
 
-        assert(!empty($cur)); // checked by parent
-
-        if (!$cur->hasRight(Right::DELETEUSER)) {
-            $this->clientError(_("You cannot delete users."));
-            return false;
+        if (!$this->scoped->hasRight(Right::DELETEUSER)) {
+            // TRANS: Client error displayed when trying to delete a user without having the right to delete users.
+            throw new AuthorizationException(_('You cannot delete users.'));
         }
 
-        $this->user = User::staticGet('id', $this->profile->id);
+        try {
+            $this->user = $this->profile->getUser();
+        } catch (NoSuchUserException $e) {
+            // TRANS: Client error displayed when trying to delete a non-local user.
+            throw new ClientException(_('You can only delete local users.'));
+        }
 
-        if (empty($this->user)) {
-            $this->clientError(_("You can only delete local users."));
-            return false;
+        // Only administrators can delete other privileged users (such as others who have the right to silence).
+        if ($this->profile->isPrivileged() && !$this->scoped->hasRole(Profile_role::ADMINISTRATOR)) {
+            // TRANS: Client error displayed when trying to delete a user that has been granted moderation privileges
+            throw new AuthorizationException(_('You cannot delete other privileged users.'));
         }
 
         return true;
@@ -87,15 +80,14 @@ class DeleteuserAction extends ProfileFormAction
      *
      * @return void
      */
-
     function handle($args)
     {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             if ($this->arg('no')) {
-                $this->returnToArgs();
+                $this->returnToPrevious();
             } elseif ($this->arg('yes')) {
                 $this->handlePost();
-                $this->returnToArgs();
+                $this->returnToPrevious();
             } else {
                 $this->showPage();
             }
@@ -104,10 +96,13 @@ class DeleteuserAction extends ProfileFormAction
 
     function showContent() {
         $this->areYouSureForm();
+        $block = new AccountProfileBlock($this, $this->profile);
+        $block->show();        
     }
 
     function title() {
-        return _('Delete user');
+        // TRANS: Title of delete user page.
+        return _m('TITLE','Delete user');
     }
 
     function showNoticeForm() {
@@ -130,9 +125,11 @@ class DeleteuserAction extends ProfileFormAction
                                            'action' => common_local_url('deleteuser')));
         $this->elementStart('fieldset');
         $this->hidden('token', common_session_token());
+        // TRANS: Fieldset legend on delete user page.
         $this->element('legend', _('Delete user'));
         if (Event::handle('StartDeleteUserForm', array($this, $this->user))) {
             $this->element('p', null,
+                           // TRANS: Information text to request if a user is certain that the described action has to be performed.
                            _('Are you sure you want to delete this user? '.
                              'This will clear all data about the user from the '.
                              'database, without a backup.'));
@@ -147,8 +144,20 @@ class DeleteuserAction extends ProfileFormAction
             }
             Event::handle('EndDeleteUserForm', array($this, $this->user));
         }
-        $this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user"));
-        $this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Delete this user'));
+        $this->submit('form_action-no',
+                      // TRANS: Button label on the delete user form.
+                      _m('BUTTON','No'),
+                      'submit form_action-primary',
+                      'no',
+                      // TRANS: Submit button title for 'No' when deleting a user.
+                      _('Do not delete this user.'));
+        $this->submit('form_action-yes',
+                      // TRANS: Button label on the delete user form.
+                      _m('BUTTON','Yes'),
+                      'submit form_action-secondary',
+                      'yes',
+                      // TRANS: Submit button title for 'Yes' when deleting a user.
+                      _('Delete this user.'));
         $this->elementEnd('fieldset');
         $this->elementEnd('form');
     }
@@ -158,7 +167,6 @@ class DeleteuserAction extends ProfileFormAction
      *
      * @return void
      */
-
     function handlePost()
     {
         if (Event::handle('StartDeleteUser', array($this, $this->user))) {