- $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))) {
- $this->showForm(_('Nickname must have only lowercase letters '.
- 'and numbers and no spaces.'));
- return;
- } else if ($this->nicknameExists($nickname)) {
- $this->showForm(_('Nickname already in use. Try another one.'));
- return;
- } else if (!User_group::allowedNickname($nickname)) {
- $this->showForm(_('Not a valid nickname.'));
- return;
- } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
- !Validate::uri($homepage,
- array('allowed_schemes' =>
- array('http', 'https')))) {
- $this->showForm(_('Homepage is not a valid URL.'));
- return;
- } else if (!is_null($fullname) && mb_strlen($fullname) > 255) {
- $this->showForm(_('Full name is too long (max 255 chars).'));
- return;
- } else if (User_group::descriptionTooLong($description)) {
- $this->showForm(sprintf(_('description is too long (max %d chars).'), User_group::maxDescription()));
- return;
- } else if (!is_null($location) && mb_strlen($location) > 255) {
- $this->showForm(_('Location is too long (max 255 chars).'));
- return;
- }
-
- if (!empty($aliasstring)) {
- $aliases = array_map('common_canonical_nickname', array_unique(preg_split('/[\s,]+/', $aliasstring)));
- } else {
- $aliases = array();
- }
-
- if (count($aliases) > common_config('group', 'maxaliases')) {
- $this->showForm(sprintf(_('Too many aliases! Maximum %d.'),
- common_config('group', 'maxaliases')));
- return;
- }
+ if (Event::handle('StartGroupSaveForm', array($this))) {
+
+ $nickname = Nickname::normalize($this->trimmed('nickname'));
+ $fullname = $this->trimmed('fullname');
+ $homepage = $this->trimmed('homepage');
+ $description = $this->trimmed('description');
+ $location = $this->trimmed('location');
+ $aliasstring = $this->trimmed('aliases');
+ $private = $this->boolean('private');
+
+ if ($private) {
+ $force_scope = 1;
+ $join_policy = User_group::JOIN_POLICY_MODERATE;
+ } else {
+ $force_scope = 0;
+ $join_policy = User_group::JOIN_POLICY_OPEN;
+ }