X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fapigroupcreate.php;h=561c721975763b0226985c289d8636ce06b44eed;hb=261ccfac8699534ff584a2f93d5dcd384529d855;hp=1608e030b8c44ab026ae5743ee27dd0fb44b1c22;hpb=8ff44a1fb9f54ce61a91987ca44cbd4fccf0a012;p=quix0rs-gnu-social.git diff --git a/actions/apigroupcreate.php b/actions/apigroupcreate.php index 1608e030b8..561c721975 100644 --- a/actions/apigroupcreate.php +++ b/actions/apigroupcreate.php @@ -35,8 +35,6 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR . '/lib/apiauth.php'; - /** * Make a new group. Sets the authenticated user as the administrator of the group. * @@ -51,6 +49,8 @@ require_once INSTALLDIR . '/lib/apiauth.php'; */ class ApiGroupCreateAction extends ApiAuthAction { + protected $needPost = true; + var $group = null; var $nickname = null; var $fullname = null; @@ -66,16 +66,12 @@ class ApiGroupCreateAction extends ApiAuthAction * @param array $args $_REQUEST args * * @return boolean success flag - * */ - - function prepare($args) + protected function prepare(array $args=array()) { parent::prepare($args); - $this->user = $this->auth_user; - - $this->nickname = $this->arg('nickname'); + $this->nickname = Nickname::normalize($this->arg('nickname'), true); $this->fullname = $this->arg('full_name'); $this->homepage = $this->arg('homepage'); $this->description = $this->arg('description'); @@ -90,28 +86,15 @@ class ApiGroupCreateAction extends ApiAuthAction * * Save the new group * - * @param array $args $_REQUEST data (unused) - * * @return void */ - function handle($args) + protected function handle() { - parent::handle($args); - - if ($_SERVER['REQUEST_METHOD'] != 'POST') { - $this->clientError( - // TRANS: Client error. POST is a HTTP command. It should not be translated. - _('This method requires a POST.'), - 400, - $this->format - ); - return; - } + parent::handle(); if (empty($this->user)) { // TRANS: Client error given when a user was not found (404). - $this->clientError(_('No such user.'), 404, $this->format); - return; + $this->clientError(_('No such user.'), 404); } if ($this->validateParams() == false) { @@ -135,13 +118,8 @@ class ApiGroupCreateAction extends ApiAuthAction $this->showSingleJsonGroup($group); break; default: - $this->clientError( - // TRANS: Client error given when an API method was not found (404). - _('API method not found.'), - 404, - $this->format - ); - break; + // TRANS: Client error displayed when coming across a non-supported API method. + $this->clientError(_('API method not found.'), 404); } } @@ -150,95 +128,35 @@ class ApiGroupCreateAction extends ApiAuthAction * * @return void */ - function validateParams() { - $valid = Validate::string( - $this->nickname, array( - 'min_length' => 1, - 'max_length' => 64, - 'format' => NICKNAME_FMT - ) - ); + if (!is_null($this->homepage) + && strlen($this->homepage) > 0 + && !common_valid_http_url($this->homepage)) { + // TRANS: Client error in form for group creation. + $this->clientError(_('Homepage is not a valid URL.'), 403); - if (!$valid) { - $this->clientError( - // TRANS: Validation error in form for group creation. - _( - 'Nickname must have only lowercase letters ' . - 'and numbers and no spaces.' - ), - 403, - $this->format - ); - return false; - } elseif ($this->groupNicknameExists($this->nickname)) { - $this->clientError( - // TRANS: Client error trying to create a group with a nickname this is already in use. - _('Nickname already in use. Try another one.'), - 403, - $this->format - ); - return false; - } else if (!User_group::allowedNickname($this->nickname)) { - $this->clientError( - // TRANS: Client error in form for group creation. - _('Not a valid nickname.'), - 403, - $this->format - ); - return false; + } elseif (!is_null($this->fullname) + && mb_strlen($this->fullname) > 255) { + // TRANS: Client error in form for group creation. + $this->clientError(_('Full name is too long (maximum 255 characters).'), 403); - } elseif ( - !is_null($this->homepage) - && strlen($this->homepage) > 0 - && !Validate::uri( - $this->homepage, array( - 'allowed_schemes' => - array('http', 'https') - ) - )) { - $this->clientError( - // TRANS: Client error in form for group creation. - _('Homepage is not a valid URL.'), - 403, - $this->format - ); - return false; - } elseif ( - !is_null($this->fullname) - && mb_strlen($this->fullname) > 255) { - $this->clientError( - // TRANS: Client error in form for group creation. - _('Full name is too long (maximum 255 characters).'), - 403, - $this->format - ); - return false; } elseif (User_group::descriptionTooLong($this->description)) { - $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) { - $this->clientError( - _('Location is too long (maximum 255 characters).'), - 403, - $this->format - ); - return false; + // TRANS: Client error shown when providing too long a description during group creation. + // TRANS: %d is the maximum number of allowed characters. + $this->clientError(sprintf(_m('Description is too long (maximum %d character).', + 'Description is too long (maximum %d characters).', + User_group::maxDescription()), User_group::maxDescription()), 403); + + } elseif (!is_null($this->location) + && mb_strlen($this->location) > 255) { + // TRANS: Client error shown when providing too long a location during group creation. + $this->clientError(_('Location is too long (maximum 255 characters).'), 403); } if (!empty($this->aliasstring)) { $this->aliases = array_map( - 'common_canonical_nickname', + array('Nickname', 'normalize'), // static call to Nickname::normalize array_unique(preg_split('/[\s,]+/', $this->aliasstring)) ); } else { @@ -246,87 +164,18 @@ 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 - ); - return false; - } - - foreach ($this->aliases as $alias) { - - $valid = Validate::string( - $alias, array( - 'min_length' => 1, - 'max_length' => 64, - 'format' => NICKNAME_FMT - ) - ); - - if (!$valid) { - $this->clientError( - sprintf(_('Invalid alias: "%s".'), $alias), - 403, - $this->format - ); - return false; - } - if ($this->groupNicknameExists($alias)) { - $this->clientError( - sprintf( - _('Alias "%s" already in use. Try another one.'), - $alias - ), - 403, - $this->format - ); - return false; - } - - // XXX assumes alphanum nicknames - - if (strcmp($alias, $this->nickname) == 0) { - $this->clientError( - _('Alias can\'t be the same as nickname.'), - 403, - $this->format - ); - return false; - } + $this->clientError(sprintf( + // TRANS: Client error shown when providing too many aliases during group creation. + // TRANS: %d is the maximum number of allowed aliases. + _m('Too many aliases! Maximum %d allowed.', + 'Too many aliases! Maximum %d allowed.', + common_config('group', 'maxaliases')), + common_config('group', 'maxaliases')), + 403); } - // Evarything looks OK + // Everything looks OK 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) - { - $local = Local_group::staticGet('nickname', $nickname); - - if (!empty($local)) { - return true; - } - - $alias = Group_alias::staticGet('alias', $nickname); - - if (!empty($alias)) { - return true; - } - - return false; - } - }