- $nickname = common_canonical_nickname($this->trimmed('nickname'));
- $fullname = $this->trimmed('fullname');
- $homepage = $this->trimmed('homepage');
- $description = $this->trimmed('description');
- $location = $this->trimmed('location');
- $aliasstring = $this->trimmed('aliases');
-
- if (!Validate::string($nickname, array('min_length' => 1,
- 'max_length' => 64,
- 'format' => NICKNAME_FMT))) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Nickname must have only lowercase letters '.
- 'and numbers and no spaces.'));
- return;
- } else if ($this->nicknameExists($nickname)) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Nickname already in use. Try another one.'));
- return;
- } else if (!User_group::allowedNickname($nickname)) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Not a valid nickname.'));
- return;
- } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
- !Validate::uri($homepage,
- array('allowed_schemes' =>
- array('http', 'https')))) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Homepage is not a valid URL.'));
- return;
- } else if (!is_null($fullname) && mb_strlen($fullname) > 255) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Full name is too long (maximum 255 characters).'));
- return;
- } else if (User_group::descriptionTooLong($description)) {
- $this->showForm(sprintf(
- // TRANS: Group edit form validation error.
- _m('Description is too long (maximum %d character).',
- 'Description is too long (maximum %d characters).',
- User_group::maxDescription()),
- User_group::maxDescription()));
- return;
- } else if (!is_null($location) && mb_strlen($location) > 255) {
- // TRANS: Group edit form validation error.
- $this->showForm(_('Location is too long (maximum 255 characters).'));
- return;
- }
-
- if (!empty($aliasstring)) {
- $aliases = array_map('common_canonical_nickname', array_unique(preg_split('/[\s,]+/', $aliasstring)));
- } else {
- $aliases = array();
- }
+ if (Event::handle('StartGroupSaveForm', array($this))) {
+
+ $nickname = $this->trimmed('newnickname');
+ try {
+ $nickname = Nickname::normalize($nickname, true);
+ } catch (NicknameTakenException $e) {
+ // Abort only if the nickname is occupied by _another_ group
+ if ($e->profile->id != $this->group->profile_id) {
+ $this->showForm($e->getMessage());
+ return;
+ }
+ $nickname = Nickname::normalize($nickname); // without in-use check this time
+ } catch (NicknameException $e) {
+ $this->showForm($e->getMessage());
+ return;
+ }