insert profile flags more or less correctly
This commit is contained in:
parent
70e4580c3f
commit
f2b642ce82
|
@ -39,6 +39,8 @@ class Profile_flag extends Memcached_DataObject
|
|||
/* the code above is auto generated do not remove the tag below */
|
||||
###END_AUTOCODE
|
||||
|
||||
const DEFAULTFLAG = 'review'; // default flag
|
||||
|
||||
function table() {
|
||||
return array(
|
||||
'flag' => DB_DATAOBJECT_STR,
|
||||
|
|
|
@ -128,9 +128,20 @@ class UserFlagPlugin extends Plugin
|
|||
|
||||
if (!empty($user)) {
|
||||
|
||||
$form = new FlagProfileForm($action, $profile);
|
||||
$action->elementStart('li', 'entity_flag');
|
||||
|
||||
$form->show();
|
||||
if (User_flag_profile::exists($profile->id, $user->id,
|
||||
Profile_flag::DEFAULTFLAG)) {
|
||||
$action->element('span',
|
||||
_('Flagged for review'));
|
||||
} else {
|
||||
$form = new FlagProfileForm($action, $profile,
|
||||
array('action' => 'showstream',
|
||||
'nickname' => $profile->nickname));
|
||||
$form->show();
|
||||
}
|
||||
|
||||
$action->elementEnd('li');
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -57,4 +57,12 @@ class User_flag_profile extends Memcached_DataObject
|
|||
{
|
||||
return Memcached_DataObject::pkeyGet('User_flag_profile', $kv);
|
||||
}
|
||||
|
||||
static function exists($profile_id, $user_id, $flag)
|
||||
{
|
||||
$ufp = User_flag_profile::pkeyGet(array('profile_id' => $profile_id,
|
||||
'user_id' => $user_id));
|
||||
|
||||
return !empty($ufp);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ if (!defined('STATUSNET')) {
|
|||
class FlagprofileAction extends Action
|
||||
{
|
||||
var $profile = null;
|
||||
var $flag = null;
|
||||
|
||||
/**
|
||||
* Take arguments for running
|
||||
|
@ -55,10 +56,49 @@ 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.'));
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->flag = $this->trimmed('flag');
|
||||
|
||||
if (empty($this->flag)) {
|
||||
$this->flag = Profile_flag::DEFAULTFLAG;
|
||||
}
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
assert(!empty($user)); // checked above
|
||||
|
||||
if (User_flag_profile::exists($this->profile->id,
|
||||
$user->id,
|
||||
$this->flag))
|
||||
{
|
||||
$this->clientError(_('Flag already exists.'));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -90,6 +130,39 @@ class FlagprofileAction extends Action
|
|||
|
||||
function flagProfile()
|
||||
{
|
||||
$user = common_current_user();
|
||||
|
||||
assert(!empty($user));
|
||||
assert(!empty($this->profile));
|
||||
assert(!empty($this->flag));
|
||||
|
||||
$ufp = new User_flag_profile();
|
||||
|
||||
$ufp->profile_id = $this->profile->id;
|
||||
$ufp->user_id = $user->id;
|
||||
$ufp->flag = $this->flag;
|
||||
$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));
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -131,6 +131,7 @@ class FlagProfileForm extends Form
|
|||
$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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user