Consolidate group creation into static function in User_group

This commit is contained in:
Eric Helgeson 2009-11-18 15:53:33 -05:00
parent 8f2db3820f
commit 199ccdb53f
3 changed files with 76 additions and 94 deletions

View File

@ -117,61 +117,13 @@ class ApiGroupCreateAction extends ApiAuthAction
return;
}
$group = new User_group();
$group->query('BEGIN');
$group->nickname = $this->nickname;
$group->fullname = $this->fullname;
$group->homepage = $this->homepage;
$group->description = $this->description;
$group->location = $this->location;
$group->created = common_sql_now();
$result = $group->insert();
if (!$result) {
common_log_db_error($group, 'INSERT', __FILE__);
$this->serverError(
_('Could not create group.'),
500,
$this->format
);
return;
}
$result = $group->setAliases($this->aliases);
if (!$result) {
$this->serverError(
_('Could not create aliases.'),
500,
$this->format
);
return;
}
$member = new Group_member();
$member->group_id = $group->id;
$member->profile_id = $this->user->id;
$member->is_admin = 1;
$member->created = $group->created;
$result = $member->insert();
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
$this->serverError(
_('Could not set group membership.'),
500,
$this->format
);
return;
}
$group->query('COMMIT');
$group = User_group::register(array('nickname' => $this->nickname,
'fullname' => $this->fullname,
'homepage' => $this->homepage,
'description' => $this->description,
'location' => $this->location,
'aliases' => $this->aliases,
'userid' => $this->user->id));
switch($this->format) {
case 'xml':
$this->showSingleXmlGroup($group);

View File

@ -186,45 +186,13 @@ class NewgroupAction extends Action
assert(!is_null($cur));
$group = new User_group();
$group->query('BEGIN');
$group->nickname = $nickname;
$group->fullname = $fullname;
$group->homepage = $homepage;
$group->description = $description;
$group->location = $location;
$group->created = common_sql_now();
$result = $group->insert();
if (!$result) {
common_log_db_error($group, 'INSERT', __FILE__);
$this->serverError(_('Could not create group.'));
}
$result = $group->setAliases($aliases);
if (!$result) {
$this->serverError(_('Could not create aliases.'));
}
$member = new Group_member();
$member->group_id = $group->id;
$member->profile_id = $cur->id;
$member->is_admin = 1;
$member->created = $group->created;
$result = $member->insert();
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
$this->serverError(_('Could not set group membership.'));
}
$group->query('COMMIT');
$group = User_group::register(array('nickname' => $nickname,
'fullname' => $fullname,
'homepage' => $homepage,
'description' => $description,
'location' => $location,
'aliases' => $aliases,
'userid' => $cur->id));
common_redirect($group->homeUrl(), 303);
}

View File

@ -354,4 +354,66 @@ class User_group extends Memcached_DataObject
return $xs->getString();
}
static function register($fields) {
// MAGICALLY put fields into current scope
extract($fields);
$group = new User_group();
$group->query('BEGIN');
$group->nickname = $nickname;
$group->fullname = $fullname;
$group->homepage = $homepage;
$group->description = $description;
$group->location = $location;
$group->created = common_sql_now();
$result = $group->insert();
if (!$result) {
common_log_db_error($group, 'INSERT', __FILE__);
$this->serverError(
_('Could not create group.'),
500,
$this->format
);
return;
}
$result = $group->setAliases($aliases);
if (!$result) {
$this->serverError(
_('Could not create aliases.'),
500,
$this->format
);
return;
}
$member = new Group_member();
$member->group_id = $group->id;
$member->profile_id = $userid;
$member->is_admin = 1;
$member->created = $group->created;
$result = $member->insert();
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
$this->serverError(
_('Could not set group membership.'),
500,
$this->format
);
return;
}
$group->query('COMMIT');
return $group;
}
}