Simply flag a profile for review

Instead of trying to have lots of different flags on different
objects, cut to the core of this functionality: flag a profile for
moderator review.
This commit is contained in:
Evan Prodromou 2009-11-07 13:10:22 -05:00
parent d9cde0ef80
commit 55c7c943e7
8 changed files with 8 additions and 390 deletions

View File

@ -1,53 +0,0 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
class Notice_flag extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $__table = 'notice_flag'; // table name
public $flag; // varchar(8) primary_key not_null
public $display; // varchar(255)
public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00
/* Static get */
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_flag',$k,$v); }
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
function table() {
return array(
'flag' => DB_DATAOBJECT_STR,
'display' => DB_DATAOBJECT_STR,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
);
}
function keys() {
return array('flag');
}
}

View File

@ -1,55 +0,0 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
class Profile_flag extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $__table = 'profile_flag'; // table name
public $flag; // varchar(8) primary_key not_null
public $display; // varchar(255)
public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00
/* Static get */
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_flag',$k,$v); }
/* 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,
'display' => DB_DATAOBJECT_STR,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
);
}
function keys() {
return array('flag');
}
}

View File

@ -47,22 +47,6 @@ class UserFlagPlugin extends Plugin
{ {
$schema = Schema::get(); $schema = Schema::get();
// For storing user-submitted flags on notices
$schema->ensureTable('user_flag_notice',
array(new ColumnDef('notice_id', 'integer', null, null, 'PRI'),
new ColumnDef('user_id', 'integer', null, null, 'PRI'),
new ColumnDef('flag', 'varchar', '8'),
new ColumnDef('created', 'datetime', null,
null, 'MUL')));
// Allowable values for user_flag_notice
$schema->ensureTable('notice_flag',
array(new ColumnDef('flag', 'varchar', '8', null, 'PRI'),
new ColumnDef('display', 'varchar', '255'),
new ColumnDef('created', 'datetime', null, null, 'MUL')));
// For storing user-submitted flags on profiles // For storing user-submitted flags on profiles
$schema->ensureTable('user_flag_profile', $schema->ensureTable('user_flag_profile',
@ -70,17 +54,11 @@ class UserFlagPlugin extends Plugin
null, 'PRI'), null, 'PRI'),
new ColumnDef('user_id', 'integer', null, new ColumnDef('user_id', 'integer', null,
null, 'PRI'), null, 'PRI'),
new ColumnDef('flag', 'varchar', '8'),
new ColumnDef('created', 'datetime', null, new ColumnDef('created', 'datetime', null,
null, 'MUL'),
new ColumnDef('cleared', 'datetime', null,
null, 'MUL'))); null, 'MUL')));
// Allowable values for user_flag_notice
$schema->ensureTable('profile_flag',
array(new ColumnDef('flag', 'varchar', '8', null, 'PRI'),
new ColumnDef('display', 'varchar', '255'),
new ColumnDef('created', 'datetime', null,
null, 'MUL')));
return true; return true;
} }
@ -91,9 +69,7 @@ class UserFlagPlugin extends Plugin
} }
function onRouterInitialized(&$m) { function onRouterInitialized(&$m) {
$m->connect('main/flag/notice', array('action' => 'flagnotice'));
$m->connect('main/flag/profile', array('action' => 'flagprofile')); $m->connect('main/flag/profile', array('action' => 'flagprofile'));
$m->connect('admin/notice/flag', array('action' => 'adminnoticeflag'));
$m->connect('admin/profile/flag', array('action' => 'adminprofileflag')); $m->connect('admin/profile/flag', array('action' => 'adminprofileflag'));
return true; return true;
} }
@ -102,19 +78,14 @@ class UserFlagPlugin extends Plugin
{ {
switch ($cls) switch ($cls)
{ {
case 'FlagnoticeAction':
case 'FlagprofileAction': case 'FlagprofileAction':
case 'AdminnoticeflagAction':
case 'AdminprofileflagAction': case 'AdminprofileflagAction':
require_once(INSTALLDIR.'/plugins/UserFlag/' . strtolower(mb_substr($cls, 0, -6)) . '.php'); require_once(INSTALLDIR.'/plugins/UserFlag/' . strtolower(mb_substr($cls, 0, -6)) . '.php');
return false; return false;
case 'FlagProfileForm': case 'FlagProfileForm':
require_once(INSTALLDIR.'/plugins/UserFlag/' . strtolower($cls . '.php')); require_once(INSTALLDIR.'/plugins/UserFlag/' . strtolower($cls . '.php'));
return false; return false;
case 'User_flag_notice':
case 'Notice_flag':
case 'User_flag_profile': case 'User_flag_profile':
case 'Profile_flag':
require_once(INSTALLDIR.'/plugins/UserFlag/'.$cls.'.php'); require_once(INSTALLDIR.'/plugins/UserFlag/'.$cls.'.php');
return false; return false;
default: default:

View File

@ -1,60 +0,0 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
class User_flag_notice extends Memcached_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $__table = 'user_flag_notice'; // table name
public $notice_id; // int(4) primary_key not_null
public $user_id; // int(4) primary_key not_null
public $flag; // varchar(8)
public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00
/* Static get */
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_flag_notice',$k,$v); }
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
function table() {
return array(
'notice_id' => DB_DATAOBJECT_INT,
'user_id' => DB_DATAOBJECT_INT,
'flag' => DB_DATAOBJECT_STR,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
);
}
function keys() {
return array('notice_id', 'user_id');
}
function &pkeyGet($kv)
{
return Memcached_DataObject::pkeyGet('User_flag_notice', $kv);
}
}

View File

@ -31,8 +31,8 @@ class User_flag_profile extends Memcached_DataObject
public $__table = 'user_flag_profile'; // table name public $__table = 'user_flag_profile'; // table name
public $profile_id; // int(4) primary_key not_null public $profile_id; // int(4) primary_key not_null
public $user_id; // int(4) primary_key not_null public $user_id; // int(4) primary_key not_null
public $flag; // varchar(8)
public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00
public $cleared; // datetime not_null default_0000-00-00%2000%3A00%3A00
/* Static get */ /* Static get */
function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_flag_profile',$k,$v); } function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_flag_profile',$k,$v); }
@ -44,8 +44,8 @@ class User_flag_profile extends Memcached_DataObject
return array( return array(
'profile_id' => DB_DATAOBJECT_INT, 'profile_id' => DB_DATAOBJECT_INT,
'user_id' => DB_DATAOBJECT_INT, 'user_id' => DB_DATAOBJECT_INT,
'flag' => DB_DATAOBJECT_STR, 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME 'cleared' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME
); );
} }
@ -58,7 +58,7 @@ 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) static function exists($profile_id, $user_id)
{ {
$ufp = User_flag_profile::pkeyGet(array('profile_id' => $profile_id, $ufp = User_flag_profile::pkeyGet(array('profile_id' => $profile_id,
'user_id' => $user_id)); 'user_id' => $user_id));

View File

@ -1,88 +0,0 @@
<?php
/**
* Show latest and greatest notice flags
*
* PHP version 5
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET')) {
exit(1);
}
/**
* Show the latest and greatest notice flags
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*/
class AdminnoticeflagAction extends Action
{
/**
* Take arguments for running
*
* @param array $args $_REQUEST args
*
* @return boolean success flag
*/
function prepare($args)
{
return true;
}
/**
* Handle request
*
* @param array $args $_REQUEST args; handled in prepare()
*
* @return void
*/
function handle($args)
{
parent::handle($args);
$this->showPage();
}
function title() {
return _('Flagged notices');
}
/**
* save the notice flag
*
* @return void
*/
function showContent()
{
}
}

View File

@ -1,97 +0,0 @@
<?php
/**
* Add a flag to a notice
*
* PHP version 5
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if (!defined('STATUSNET')) {
exit(1);
}
/**
* Action to flag a notice.
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*/
class FlagnoticeAction extends Action
{
var $notice = null;
/**
* Take arguments for running
*
* @param array $args $_REQUEST args
*
* @return boolean success flag
*/
function prepare($args)
{
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
throw new ClientException(_('Action only accepts POST'));
}
return true;
}
/**
* Handle request
*
* Shows a page with list of favorite notices
*
* @param array $args $_REQUEST args; handled in prepare()
*
* @return void
*/
function handle($args)
{
parent::handle($args);
$this->flagNotice();
$this->returnTo();
}
function title() {
return _('Flag notice');
}
/**
* save the notice flag
*
* @return void
*/
function flagNotice()
{
}
}

View File

@ -115,7 +115,7 @@ class FlagProfileForm extends Form
*/ */
function formLegend() function formLegend()
{ {
$this->out->element('legend', null, _('Flag this profile')); $this->out->element('legend', null, _('Flag profile for review'));
} }
/** /**
@ -147,6 +147,6 @@ class FlagProfileForm extends Form
function formActions() function formActions()
{ {
$this->out->submit('submit', _('Flag'), 'submit', null, _('Flag this profile')); $this->out->submit('submit', _('Flag'), 'submit', null, _('Flag profile for review'));
} }
} }