make profile flag actions work like other profile actions
This commit is contained in:
parent
bea580873f
commit
55d00a3a90
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
* Action this form provides
|
||||
*
|
||||
* @param HTMLOutputter $out output channel
|
||||
* @param Profile $profile profile of user to flag
|
||||
* @param array $args return-to args
|
||||
* @return string Name of the action, lowercased.
|
||||
*/
|
||||
|
||||
function __construct($out=null, $profile=null, $args=null)
|
||||
function target()
|
||||
{
|
||||
parent::__construct($out);
|
||||
|
||||
$this->profile = $profile;
|
||||
$this->args = $args;
|
||||
return 'flagprofile';
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the form
|
||||
* Title of the form
|
||||
*
|
||||
* @return int ID of the form
|
||||
* @return string Title of the form, internationalized
|
||||
*/
|
||||
|
||||
function id()
|
||||
function title()
|
||||
{
|
||||
return 'flagprofile-' . $this->profile->id;
|
||||
return _('Flag');
|
||||
}
|
||||
|
||||
/**
|
||||
* class of the form
|
||||
* Description of the form
|
||||
*
|
||||
* @return string class of the form
|
||||
* @return string description of the form, internationalized
|
||||
*/
|
||||
|
||||
function formClass()
|
||||
function description()
|
||||
{
|
||||
return 'form_entity_flag';
|
||||
}
|
||||
|
||||
/**
|
||||
* Action of the form
|
||||
*
|
||||
* @return string URL of the action
|
||||
*/
|
||||
|
||||
function action()
|
||||
{
|
||||
return common_local_url('flagprofile');
|
||||
}
|
||||
|
||||
/**
|
||||
* Legend of the Form
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function formLegend()
|
||||
{
|
||||
$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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Action elements
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function formActions()
|
||||
{
|
||||
$this->out->submit('submit', _('Flag'), 'submit', null, _('Flag profile for review'));
|
||||
return _('Flag profile for review');
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user