From d24ed193e7b19b50f7304790820c945e46ac2c95 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sun, 15 Nov 2009 16:00:29 +0100 Subject: [PATCH] add forms for silence, sandbox, delete user --- lib/deleteuserform.php | 79 ++++++++++++++++++++++++++++++++++++++++ lib/sandboxform.php | 80 +++++++++++++++++++++++++++++++++++++++++ lib/silenceform.php | 80 +++++++++++++++++++++++++++++++++++++++++ lib/unsandboxform.php | 82 ++++++++++++++++++++++++++++++++++++++++++ lib/unsilenceform.php | 80 +++++++++++++++++++++++++++++++++++++++++ lib/userprofile.php | 44 +++++++++++++++++++---- 6 files changed, 439 insertions(+), 6 deletions(-) create mode 100644 lib/deleteuserform.php create mode 100644 lib/sandboxform.php create mode 100644 lib/silenceform.php create mode 100644 lib/unsandboxform.php create mode 100644 lib/unsilenceform.php diff --git a/lib/deleteuserform.php b/lib/deleteuserform.php new file mode 100644 index 0000000000..09ea8f68d1 --- /dev/null +++ b/lib/deleteuserform.php @@ -0,0 +1,79 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Form for deleting a user + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + */ + +class DeleteUserForm extends ProfileActionForm +{ + /** + * Action this form provides + * + * @return string Name of the action, lowercased. + */ + + function target() + { + return 'deleteuser'; + } + + /** + * Title of the form + * + * @return string Title of the form, internationalized + */ + + function title() + { + return _('Delete'); + } + + /** + * Description of the form + * + * @return string description of the form, internationalized + */ + + function description() + { + return _('Delete this user'); + } +} diff --git a/lib/sandboxform.php b/lib/sandboxform.php new file mode 100644 index 0000000000..7a98e0a5f9 --- /dev/null +++ b/lib/sandboxform.php @@ -0,0 +1,80 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Form for sandboxing a user + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see UnSandboxForm + */ + +class SandboxForm extends ProfileActionForm +{ + /** + * Action this form provides + * + * @return string Name of the action, lowercased. + */ + + function target() + { + return 'sandbox'; + } + + /** + * Title of the form + * + * @return string Title of the form, internationalized + */ + + function title() + { + return _('Sandbox'); + } + + /** + * Description of the form + * + * @return string description of the form, internationalized + */ + + function description() + { + return _('Sandbox this user'); + } +} diff --git a/lib/silenceform.php b/lib/silenceform.php new file mode 100644 index 0000000000..c9cf4b0572 --- /dev/null +++ b/lib/silenceform.php @@ -0,0 +1,80 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Form for silencing a user + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see UnSilenceForm + */ + +class SilenceForm extends Form +{ + /** + * Action this form provides + * + * @return string Name of the action, lowercased. + */ + + function target() + { + return 'silence'; + } + + /** + * Title of the form + * + * @return string Title of the form, internationalized + */ + + function title() + { + return _('Silence'); + } + + /** + * Description of the form + * + * @return string description of the form, internationalized + */ + + function description() + { + return _('Silence this user'); + } +} diff --git a/lib/unsandboxform.php b/lib/unsandboxform.php new file mode 100644 index 0000000000..559d1462d2 --- /dev/null +++ b/lib/unsandboxform.php @@ -0,0 +1,82 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Form for unsandboxing a user + * + * Removes the "sandboxed" role for a user. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see UnSandboxForm + */ + +class UnsandboxForm extends Form +{ + /** + * Action this form provides + * + * @return string Name of the action, lowercased. + */ + + function target() + { + return 'unsandbox'; + } + + /** + * Title of the form + * + * @return string Title of the form, internationalized + */ + + function title() + { + return _('Unsandbox'); + } + + /** + * Description of the form + * + * @return string description of the form, internationalized + */ + + function description() + { + return _('Unsandbox this user'); + } +} diff --git a/lib/unsilenceform.php b/lib/unsilenceform.php new file mode 100644 index 0000000000..324d278b92 --- /dev/null +++ b/lib/unsilenceform.php @@ -0,0 +1,80 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Form for unsilencing a user + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see UnSilenceForm + */ + +class UnSilenceForm extends Form +{ + /** + * Action this form provides + * + * @return string Name of the action, lowercased. + */ + + function target() + { + return 'unsilence'; + } + + /** + * Title of the form + * + * @return string Title of the form, internationalized + */ + + function title() + { + return _('Unsilence'); + } + + /** + * Description of the form + * + * @return string description of the form, internationalized + */ + + function description() + { + return _('Unsilence this user'); + } +} diff --git a/lib/userprofile.php b/lib/userprofile.php index 4f9d4984f4..4321a2f939 100644 --- a/lib/userprofile.php +++ b/lib/userprofile.php @@ -283,22 +283,54 @@ class UserProfile extends Widget } } + // return-to args, so we don't have to keep re-writing them + + $r2args = array('action' => 'showstream', + 'nickname' => $this->profile->nickname); + // 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)) { + $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 = DeleteUserForm($this->out, $this->profile, $r2args); + $df->show(); + $this->out->elementEnd('li'); + } } }