X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fapigroupcreate.php;h=d216c15cd4f4be0e6a17c0f9a5083f925756e840;hb=1fbc8adf476b34dfc31081dad1da7fed48666e06;hp=d6340eebfc1e2814939ef3a517edb2dd787e586c;hpb=e071a8cbffd8eaf63f2d92e15edc2f6f25d9c984;p=quix0rs-gnu-social.git diff --git a/actions/apigroupcreate.php b/actions/apigroupcreate.php index d6340eebfc..d216c15cd4 100644 --- a/actions/apigroupcreate.php +++ b/actions/apigroupcreate.php @@ -22,8 +22,11 @@ * @category API * @package StatusNet * @author Craig Andrews + * @author Evan Prodromou + * @author Jeffery To * @author Zach Copley * @copyright 2009 StatusNet, Inc. + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -39,6 +42,9 @@ require_once INSTALLDIR . '/lib/apiauth.php'; * * @category API * @package StatusNet + * @author Craig Andrews + * @author Evan Prodromou + * @author Jeffery To * @author Zach Copley * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ @@ -94,26 +100,17 @@ class ApiGroupCreateAction extends ApiAuthAction { parent::handle($args); - if (!common_config('inboxes','enabled')) { - $this->serverError( - _('Inboxes must be enabled for groups to work'), - 400, - $this->format - ); - return false; - } - if ($_SERVER['REQUEST_METHOD'] != 'POST') { - $this->clientError( - _('This method requires a POST.'), - 400, - $this->format - ); - return; + $this->clientError( + _('This method requires a POST.'), + 400, + $this->format + ); + return; } if (empty($this->user)) { - $this->clientError(_('No such user!'), 404, $this->format); + $this->clientError(_('No such user.'), 404, $this->format); return; } @@ -121,60 +118,14 @@ 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, + 'local' => true)); switch($this->format) { case 'xml': @@ -185,7 +136,7 @@ class ApiGroupCreateAction extends ApiAuthAction break; default: $this->clientError( - _('API method not found!'), + _('API method not found.'), 404, $this->format ); @@ -202,14 +153,15 @@ class ApiGroupCreateAction extends ApiAuthAction function validateParams() { - if (!Validate::string( + $valid = Validate::string( $this->nickname, array( 'min_length' => 1, 'max_length' => 64, - 'format' => NICKNAME_FMT) - ) + 'format' => NICKNAME_FMT ) - { + ); + + if (!$valid) { $this->clientError( _( 'Nickname must have only lowercase letters ' . @@ -234,24 +186,24 @@ class ApiGroupCreateAction extends ApiAuthAction ); return false; - } elseif (!is_null($this->homepage) + } elseif ( + !is_null($this->homepage) && strlen($this->homepage) > 0 && !Validate::uri( $this->homepage, array( 'allowed_schemes' => array('http', 'https') ) - )) - { + )) { $this->clientError( _('Homepage is not a valid URL.'), 403, $this->format ); return false; - } elseif (!is_null($this->fullname) - && mb_strlen($this->fullname) > 255) - { + } elseif ( + !is_null($this->fullname) + && mb_strlen($this->fullname) > 255) { $this->clientError( _('Full name is too long (max 255 chars).'), 403, @@ -259,16 +211,18 @@ class ApiGroupCreateAction extends ApiAuthAction ); return false; } elseif (User_group::descriptionTooLong($this->description)) { - $this->clientError(sprintf( - _('Description is too long (max %d chars).'), - User_group::maxDescription()), - 403, - $this->format - ); + $this->clientError( + sprintf( + _('Description is too long (max %d chars).'), + User_group::maxDescription() + ), + 403, + $this->format + ); return false; - } elseif (!is_null($this->location) - && mb_strlen($this->location) > 255) - { + } elseif ( + !is_null($this->location) + && mb_strlen($this->location) > 255) { $this->clientError( _('Location is too long (max 255 chars).'), 403, @@ -280,9 +234,7 @@ class ApiGroupCreateAction extends ApiAuthAction if (!empty($this->aliasstring)) { $this->aliases = array_map( 'common_canonical_nickname', - array_unique(preg_split('/[\s,]+/', - $this->aliasstring) - ) + array_unique(preg_split('/[\s,]+/', $this->aliasstring)) ); } else { $this->aliases = array(); @@ -290,24 +242,29 @@ class ApiGroupCreateAction extends ApiAuthAction if (count($this->aliases) > common_config('group', 'maxaliases')) { $this->clientError( - sprintf(_('Too many aliases! Maximum %d.'), - common_config('group', 'maxaliases')), - 403, - $this->format - ); + sprintf( + _('Too many aliases! Maximum %d.'), + common_config('group', 'maxaliases') + ), + 403, + $this->format + ); return false; } foreach ($this->aliases as $alias) { - if (!Validate::string($alias, array( - 'min_length' => 1, - 'max_length' => 64, - 'format' => NICKNAME_FMT + + $valid = Validate::string( + $alias, array( + 'min_length' => 1, + 'max_length' => 64, + 'format' => NICKNAME_FMT ) - )) - { + ); + + if (!$valid) { $this->clientError( - sprintf(_('Invalid alias: "%s"'), $alias), + sprintf(_('Invalid alias: "%s".'), $alias), 403, $this->format ); @@ -315,8 +272,10 @@ class ApiGroupCreateAction extends ApiAuthAction } if ($this->groupNicknameExists($alias)) { $this->clientError( - sprintf(_('Alias "%s" already in use. Try another one.'), - $alias), + sprintf( + _('Alias "%s" already in use. Try another one.'), + $alias + ), 403, $this->format ); @@ -340,21 +299,29 @@ class ApiGroupCreateAction extends ApiAuthAction return true; } + /** + * Check to see whether a nickname is already in use by a group + * + * @param String $nickname The nickname in question + * + * @return boolean true or false + */ + function groupNicknameExists($nickname) { - $group = User_group::staticGet('nickname', $nickname); + $local = Local_group::staticGet('nickname', $nickname); - if (!empty($group)) { - return true; - } + if (!empty($local)) { + return true; + } - $alias = Group_alias::staticGet('alias', $nickname); + $alias = Group_alias::staticGet('alias', $nickname); - if (!empty($alias)) { - return true; - } + if (!empty($alias)) { + return true; + } - return false; + return false; } }