summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2009-11-16 18:24:59 +0100
committerEvan Prodromou <evan@status.net>2009-11-16 18:24:59 +0100
commit55d00a3a907fa275a0df580a82cea20da95889c6 (patch)
treee97b67b6bafdda704a5dfbfd6d44d65b30751345 /plugins
parentbea580873f10c186a3e12047c28d693d3dcb26d2 (diff)
make profile flag actions work like other profile actions
Diffstat (limited to 'plugins')
-rw-r--r--plugins/UserFlag/flagprofile.php94
-rw-r--r--plugins/UserFlag/flagprofileform.php96
2 files changed, 31 insertions, 159 deletions
diff --git a/plugins/UserFlag/flagprofile.php b/plugins/UserFlag/flagprofile.php
index 77c86b233..8ff2f1f72 100644
--- a/plugins/UserFlag/flagprofile.php
+++ b/plugins/UserFlag/flagprofile.php
@@ -41,11 +41,8 @@ if (!defined('STATUSNET')) {
* @link http://status.net/
*/
-class FlagprofileAction extends Action
+class FlagprofileAction extends ProfileFormAction
{
- var $profile = null;
- var $flag = null;
-
/**
* Take arguments for running
*
@@ -56,34 +53,14 @@ class FlagprofileAction extends Action
function prepare($args)
{
- parent::prepare($args);
-
- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- throw new ClientException(_('Action only accepts POST'));
- }
-
- if (!common_logged_in()) {
- $this->clientError(_('Not logged in.'));
- return false;
- }
-
- $id = $this->trimmed('flagprofileto');
-
- if (!$id) {
- $this->clientError(_('No profile specified.'));
- return false;
- }
-
- $this->profile = Profile::staticGet('id', $id);
-
- if (empty($this->profile)) {
- $this->clientError(_('No profile with that ID.'));
+ if (!parent::prepare($args)) {
return false;
}
$user = common_current_user();
assert(!empty($user)); // checked above
+ assert(!empty($this->profile)); // checked above
if (User_flag_profile::exists($this->profile->id,
$user->id))
@@ -96,46 +73,12 @@ class FlagprofileAction extends Action
}
/**
- * Handle request
- *
- * @param array $args $_REQUEST args; handled in prepare()
+ * Handle POST
*
* @return void
*/
- function handle($args)
- {
- parent::handle($args);
-
- $this->flagProfile();
-
- if ($this->boolean('ajax')) {
- header('Content-Type: text/xml;charset=utf-8');
- $this->xw->startDocument('1.0', 'UTF-8');
- $this->elementStart('html');
- $this->elementStart('head');
- $this->element('title', null, _('Flagged for review'));
- $this->elementEnd('head');
- $this->elementStart('body');
- $this->element('p', 'flagged', _('Flagged'));
- $this->elementEnd('body');
- $this->elementEnd('html');
- } else {
- $this->returnTo();
- }
- }
-
- function title() {
- return _('Flag profile');
- }
-
- /**
- * save the profile flag
- *
- * @return void
- */
-
- function flagProfile()
+ function handlePost()
{
$user = common_current_user();
@@ -149,25 +92,24 @@ class FlagprofileAction extends Action
$ufp->created = common_sql_now();
if (!$ufp->insert()) {
- throw new ServerException(sprintf(_("Couldn't flag profile '%s' with flag '%s'."),
- $this->profile->nickname, $this->flag));
+ throw new ServerException(sprintf(_("Couldn't flag profile '%s' for review."),
+ $this->profile->nickname));
}
$ufp->free();
}
- function returnTo()
- {
- // Now, gotta figure where we go back to
- foreach ($this->args as $k => $v) {
- if ($k == 'returnto-action') {
- $action = $v;
- } elseif (substr($k, 0, 9) == 'returnto-') {
- $args[substr($k, 9)] = $v;
- }
- }
-
- common_redirect(common_local_url($action, $args), 303);
+ function ajaxResults() {
+ header('Content-Type: text/xml;charset=utf-8');
+ $this->xw->startDocument('1.0', 'UTF-8');
+ $this->elementStart('html');
+ $this->elementStart('head');
+ $this->element('title', null, _('Flagged for review'));
+ $this->elementEnd('head');
+ $this->elementStart('body');
+ $this->element('p', 'flagged', _('Flagged'));
+ $this->elementEnd('body');
+ $this->elementEnd('html');
}
}
diff --git a/plugins/UserFlag/flagprofileform.php b/plugins/UserFlag/flagprofileform.php
index a8396e2d5..262dad4a7 100644
--- a/plugins/UserFlag/flagprofileform.php
+++ b/plugins/UserFlag/flagprofileform.php
@@ -45,108 +45,38 @@ require_once INSTALLDIR.'/lib/form.php';
* @link http://status.net/
*/
-class FlagProfileForm extends Form
+class FlagProfileForm extends ProfileActionForm
{
/**
- * Profile of profile to flag
- */
-
- var $profile = null;
-
- /**
- * Return-to args
- */
-
- var $args = null;
-
- /**
- * Constructor
- *
- * @param HTMLOutputter $out output channel
- * @param Profile $profile profile of user to flag
- * @param array $args return-to args
- */
-
- function __construct($out=null, $profile=null, $args=null)
- {
- parent::__construct($out);
-
- $this->profile = $profile;
- $this->args = $args;
- }
-
- /**
- * ID of the form
- *
- * @return int ID of the form
- */
-
- function id()
- {
- return 'flagprofile-' . $this->profile->id;
- }
-
- /**
- * class of the form
+ * Action this form provides
*
- * @return string class of the form
+ * @return string Name of the action, lowercased.
*/
- function formClass()
+ function target()
{
- return 'form_entity_flag';
+ return 'flagprofile';
}
/**
- * Action of the form
+ * Title of the form
*
- * @return string URL of the action
+ * @return string Title of the form, internationalized
*/
- function action()
- {
- return common_local_url('flagprofile');
- }
-
- /**
- * Legend of the Form
- *
- * @return void
- */
- function formLegend()
+ function title()
{
- $this->out->element('legend', null, _('Flag profile for review'));
- }
-
- /**
- * Data elements of the form
- *
- * @return void
- */
-
- function formData()
- {
- // TODO: let the user choose a flag
-
- $this->out->hidden('flagprofileto-' . $this->profile->id,
- $this->profile->id,
- 'flagprofileto');
-
- if ($this->args) {
- foreach ($this->args as $k => $v) {
- $this->out->hidden('returnto-' . $k, $v);
- }
- }
+ return _('Flag');
}
/**
- * Action elements
+ * Description of the form
*
- * @return void
+ * @return string description of the form, internationalized
*/
- function formActions()
+ function description()
{
- $this->out->submit('submit', _('Flag'), 'submit', null, _('Flag profile for review'));
+ return _('Flag profile for review');
}
}