]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/deleteuser.php
Merge branch 'master' into 0.9.x
[quix0rs-gnu-social.git] / actions / deleteuser.php
index 32b703aa7f099fe3e79bf067b184ea1c52339183..02ded68b3181223d9474b5675f5b6b956867ff8e 100644 (file)
@@ -64,14 +64,14 @@ class DeleteuserAction extends ProfileFormAction
         assert(!empty($cur)); // checked by parent
 
         if (!$cur->hasRight(Right::DELETEUSER)) {
-            $this->clientError(_("You cannot delete users."));
+            $this->clientError(_('You cannot delete users.'));
             return false;
         }
 
         $this->user = User::staticGet('id', $this->profile->id);
 
         if (empty($this->user)) {
-            $this->clientError(_("You can only delete local users."));
+            $this->clientError(_('You can only delete local users.'));
             return false;
         }
 
@@ -92,10 +92,10 @@ class DeleteuserAction extends ProfileFormAction
     {
         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();
             }
@@ -131,21 +131,36 @@ class DeleteuserAction extends ProfileFormAction
         $this->elementStart('fieldset');
         $this->hidden('token', common_session_token());
         $this->element('legend', _('Delete user'));
-        $this->element('p', null,
-                       _('Are you sure you want to delete this user? '.
-                         'This will clear all data about the user from the '.
-                         'database, without a backup.'));
-        $this->element('input', array('id' => 'deleteuserto-' . $id,
-                                      'name' => 'profileid',
-                                      'type' => 'hidden',
-                                      'value' => $id));
-        foreach ($this->args as $k => $v) {
-            if (substr($k, 0, 9) == 'returnto-') {
-                $this->hidden($k, $v);
+        if (Event::handle('StartDeleteUserForm', array($this, $this->user))) {
+            $this->element('p', null,
+                           _('Are you sure you want to delete this user? '.
+                             'This will clear all data about the user from the '.
+                             'database, without a backup.'));
+            $this->element('input', array('id' => 'deleteuserto-' . $id,
+                                          'name' => 'profileid',
+                                          'type' => 'hidden',
+                                          'value' => $id));
+            foreach ($this->args as $k => $v) {
+                if (substr($k, 0, 9) == 'returnto-') {
+                    $this->hidden($k, $v);
+                }
             }
+            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 block 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 +173,17 @@ class DeleteuserAction extends ProfileFormAction
 
     function handlePost()
     {
-        $this->user->delete();
+        if (Event::handle('StartDeleteUser', array($this, $this->user))) {
+            // Mark the account as deleted and shove low-level deletion tasks
+            // to background queues. Removing a lot of posts can take a while...
+            if (!$this->user->hasRole(Profile_role::DELETED)) {
+                $this->user->grantRole(Profile_role::DELETED);
+            }
+
+            $qm = QueueManager::get();
+            $qm->enqueue($this->user, 'deluser');
+
+            Event::handle('EndDeleteUser', array($this, $this->user));
+        }
     }
 }
-