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 */
|
/* the code above is auto generated do not remove the tag below */
|
||||||
###END_AUTOCODE
|
###END_AUTOCODE
|
||||||
|
|
||||||
|
const DEFAULTFLAG = 'review'; // default flag
|
||||||
|
|
||||||
function table() {
|
function table() {
|
||||||
return array(
|
return array(
|
||||||
'flag' => DB_DATAOBJECT_STR,
|
'flag' => DB_DATAOBJECT_STR,
|
||||||
|
|
|
@ -128,11 +128,22 @@ class UserFlagPlugin extends Plugin
|
||||||
|
|
||||||
if (!empty($user)) {
|
if (!empty($user)) {
|
||||||
|
|
||||||
$form = new FlagProfileForm($action, $profile);
|
$action->elementStart('li', 'entity_flag');
|
||||||
|
|
||||||
|
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();
|
$form->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$action->elementEnd('li');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,4 +57,12 @@ class User_flag_profile extends Memcached_DataObject
|
||||||
{
|
{
|
||||||
return Memcached_DataObject::pkeyGet('User_flag_profile', $kv);
|
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
|
class FlagprofileAction extends Action
|
||||||
{
|
{
|
||||||
var $profile = null;
|
var $profile = null;
|
||||||
|
var $flag = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Take arguments for running
|
* Take arguments for running
|
||||||
|
@ -55,10 +56,49 @@ class FlagprofileAction extends Action
|
||||||
|
|
||||||
function prepare($args)
|
function prepare($args)
|
||||||
{
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
||||||
throw new ClientException(_('Action only accepts 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,6 +130,39 @@ class FlagprofileAction extends Action
|
||||||
|
|
||||||
function flagProfile()
|
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->out->hidden('flagprofileto-' . $this->profile->id,
|
||||||
$this->profile->id,
|
$this->profile->id,
|
||||||
'flagprofileto');
|
'flagprofileto');
|
||||||
|
|
||||||
if ($this->args) {
|
if ($this->args) {
|
||||||
foreach ($this->args as $k => $v) {
|
foreach ($this->args as $k => $v) {
|
||||||
$this->out->hidden('returnto-' . $k, $v);
|
$this->out->hidden('returnto-' . $k, $v);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user