X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fdeleteuser.php;h=6e0c6ebf7f2357ad1916b0a86814ba7bb46e136f;hb=64b72a3c9b8c9ee2d8716a3271834293d1e863f8;hp=4e6b27395389406f627cec8bed330ebfe62b274f;hpb=e89908f26140c217e01b2f8f755712f38f3935f3;p=quix0rs-gnu-social.git diff --git a/actions/deleteuser.php b/actions/deleteuser.php index 4e6b273953..6e0c6ebf7f 100644 --- a/actions/deleteuser.php +++ b/actions/deleteuser.php @@ -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))) {