diff options
author | Eric Helgeson <erichelgeson@gmail.com> | 2009-11-18 15:53:33 -0500 |
---|---|---|
committer | Eric Helgeson <erichelgeson@gmail.com> | 2009-11-18 15:54:24 -0500 |
commit | 199ccdb53fbd732eeced3edf734e39687729da9b (patch) | |
tree | 9b32c2c2de01b8a339da9c6ea276189f0be2b917 /classes | |
parent | 8f2db3820f6ab2c8881521c0adc9a6427b5ea86b (diff) |
Consolidate group creation into static function in User_group
Diffstat (limited to 'classes')
-rw-r--r-- | classes/User_group.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/classes/User_group.php b/classes/User_group.php index b92638f7a..c86eadf8f 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -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; + } } |