class User_group extends Memcached_DataObject
{
+ const JOIN_POLICY_OPEN = 0;
+ const JOIN_POLICY_MODERATE = 1;
+
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $modified; // timestamp not_null default_CURRENT_TIMESTAMP
public $uri; // varchar(255) unique_key
public $mainpage; // varchar(255)
+ public $join_policy; // tinyint
/* Static get */
function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('User_group',$k,$v); }
$inbox->selectAdd();
$inbox->selectAdd('notice_id');
- if ($since_id != 0) {
- $inbox->whereAdd('notice_id > ' . $since_id);
- }
-
- if ($max_id != 0) {
- $inbox->whereAdd('notice_id <= ' . $max_id);
- }
+ Notice::addWhereSinceId($inbox, $since_id, 'notice_id');
+ Notice::addWhereMaxId($inbox, $max_id, 'notice_id');
- $inbox->orderBy('notice_id DESC');
+ $inbox->orderBy('created DESC, notice_id DESC');
if (!is_null($offset)) {
$inbox->limit($offset, $limit);
}
static function register($fields) {
+ if (!empty($fields['userid'])) {
+ $profile = Profile::staticGet('id', $fields['userid']);
+ if ($profile && !$profile->hasRight(Right::CREATEGROUP)) {
+ common_log(LOG_WARNING, "Attempted group creation from banned user: " . $profile->nickname);
+
+ // TRANS: Client exception thrown when a user tries to create a group while banned.
+ throw new ClientException(_('You are not allowed to create groups on this site.'), 403);
+ }
+ }
+
// MAGICALLY put fields into current scope
+ // @fixme kill extract(); it makes debugging absurdly hard
extract($fields);
// fill in later...
$uri = null;
}
+ if (empty($mainpage)) {
+ $mainpage = common_local_url('showgroup', array('nickname' => $nickname));
+ }
$group->nickname = $nickname;
$group->fullname = $fullname;
$group->uri = $uri;
$group->mainpage = $mainpage;
$group->created = common_sql_now();
+ if (isset($fields['join_policy'])) {
+ $group->join_policy = intval($fields['join_policy']);
+ } else {
+ $group->join_policy = 0;
+ }
- $result = $group->insert();
+ if (Event::handle('StartGroupSave', array(&$group))) {
- if (!$result) {
- common_log_db_error($group, 'INSERT', __FILE__);
- // TRANS: Server exception thrown when creating a group failed.
- throw new ServerException(_('Could not create group.'));
- }
+ $result = $group->insert();
- if (!isset($uri) || empty($uri)) {
- $orig = clone($group);
- $group->uri = common_local_url('groupbyid', array('id' => $group->id));
- $result = $group->update($orig);
if (!$result) {
- common_log_db_error($group, 'UPDATE', __FILE__);
- // TRANS: Server exception thrown when updating a group URI failed.
- throw new ServerException(_('Could not set group URI.'));
+ common_log_db_error($group, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when creating a group failed.
+ throw new ServerException(_('Could not create group.'));
}
- }
- $result = $group->setAliases($aliases);
+ if (!isset($uri) || empty($uri)) {
+ $orig = clone($group);
+ $group->uri = common_local_url('groupbyid', array('id' => $group->id));
+ $result = $group->update($orig);
+ if (!$result) {
+ common_log_db_error($group, 'UPDATE', __FILE__);
+ // TRANS: Server exception thrown when updating a group URI failed.
+ throw new ServerException(_('Could not set group URI.'));
+ }
+ }
- if (!$result) {
- // TRANS: Server exception thrown when creating group aliases failed.
- throw new ServerException(_('Could not create aliases.'));
- }
+ $result = $group->setAliases($aliases);
- $member = new Group_member();
+ if (!$result) {
+ // TRANS: Server exception thrown when creating group aliases failed.
+ throw new ServerException(_('Could not create aliases.'));
+ }
- $member->group_id = $group->id;
- $member->profile_id = $userid;
- $member->is_admin = 1;
- $member->created = $group->created;
+ $member = new Group_member();
- $result = $member->insert();
+ $member->group_id = $group->id;
+ $member->profile_id = $userid;
+ $member->is_admin = 1;
+ $member->created = $group->created;
- if (!$result) {
- common_log_db_error($member, 'INSERT', __FILE__);
- // TRANS: Server exception thrown when setting group membership failed.
- throw new ServerException(_('Could not set group membership.'));
- }
+ $result = $member->insert();
- if ($local) {
- $local_group = new Local_group();
+ if (!$result) {
+ common_log_db_error($member, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when setting group membership failed.
+ throw new ServerException(_('Could not set group membership.'));
+ }
- $local_group->group_id = $group->id;
- $local_group->nickname = $nickname;
- $local_group->created = common_sql_now();
+ if ($local) {
+ $local_group = new Local_group();
- $result = $local_group->insert();
+ $local_group->group_id = $group->id;
+ $local_group->nickname = $nickname;
+ $local_group->created = common_sql_now();
- if (!$result) {
- common_log_db_error($local_group, 'INSERT', __FILE__);
- // TRANS: Server exception thrown when saving local group information failed.
- throw new ServerException(_('Could not save local group info.'));
+ $result = $local_group->insert();
+
+ if (!$result) {
+ common_log_db_error($local_group, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when saving local group information failed.
+ throw new ServerException(_('Could not save local group info.'));
+ }
}
+
+ $group->query('COMMIT');
+
+ Event::handle('EndGroupSave', array($group));
}
- $group->query('COMMIT');
return $group;
}