From fec99f7ddeefd0ceb52eccbf35c9fef79def11d4 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Wed, 28 Jun 2006 15:57:48 +0000 Subject: [PATCH] fixed auto GID --- lam/lib/modules/posixGroup.inc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc index 500b3f39..2668f4c2 100644 --- a/lam/lib/modules/posixGroup.inc +++ b/lam/lib/modules/posixGroup.inc @@ -592,9 +592,10 @@ class posixGroup extends baseModule { else $this->userPassword_lock=false; } } + } if ($post['changegids']) $this->changegids=true; else $this->changegids=false; - if ($this->attributes['gidNumber'][0]!=$post['gidNumber']) { + if (($this->attributes['gidNumber'][0] != $post['gidNumber']) || !isset($this->attributes['gidNumber'][0])) { // Check if GID is valid. If none value was entered, the next useable value will be inserted // load min and max GID number $minID = intval($this->moduleSettings['posixGroup_minGID'][0]); @@ -605,7 +606,7 @@ class posixGroup extends baseModule { foreach ($dn_gids as $gid) $gids[] = $gid[0]; sort ($gids, SORT_NUMERIC); } - $this->attributes['gidNumber'][0]=$post['gidNumber']; + $this->attributes['gidNumber'][0] = $post['gidNumber']; if ($this->attributes['gidNumber'][0]=='') { // No id-number given, find free GID if ($this->orig['gidNumber'][0]=='') { @@ -623,11 +624,18 @@ class posixGroup extends baseModule { else { // Check manual ID // id-number is out of valid range - if (($this->attributes['gidNumber'][0] < $minID) || ($this->attributes['gidNumber'][0] > $maxID) || !is_numeric($this->attributes['gidNumber'][0])) $errors['gidNumber'][] = array('ERROR', _('ID-Number'), sprintf(_('Please enter a value between %s and %s!'), $minID, $maxID)); + if (($this->attributes['gidNumber'][0] < $minID) || ($this->attributes['gidNumber'][0] > $maxID) || !is_numeric($this->attributes['gidNumber'][0])) { + $errors['gidNumber'][] = array('ERROR', _('ID-Number'), sprintf(_('Please enter a value between %s and %s!'), $minID, $maxID)); + if (isset($this->orig['gidNumber'][0])) $this->attributes['gidNumber'][0] = $this->orig['gidNumber'][0]; + else unset($this->attributes['gidNumber'][0]); + } // $uids is allways an array but not if no entries were found if (is_array($gids)) { // id-number is in use and account is a new account - if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]=='') $errors['gidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use')); + if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]=='') { + $errors['gidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use')); + unset($this->attributes['gidNumber'][0]); + } // id-number is in use, account is existing account and id-number is not used by itself if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]!='' && ($this->orig['gidNumber'][0] != $this->attributes['gidNumber'][0]) ) { $errors['gidNumber'][] = $this->messages['gidNumber'][4]; @@ -685,12 +693,11 @@ class posixGroup extends baseModule { $errors['cn'][] = $this->messages['cn'][0]; } // show info when gidnumber has changed - if (($this->orig['gidNumber'][0]!=$this->attributes['gidNumber'][0]) && $this->orig['gidNumber'][0]!='' && $post['gidNumber']!=$this->attributes['gidNumber'][0]) - $errors['gidNumber'][] = $this->messages['gidNumber'][0]; - } + if (($this->orig['gidNumber'][0]!=$this->attributes['gidNumber'][0]) && $this->orig['gidNumber'][0]!='' && $post['gidNumber']!=$this->attributes['gidNumber'][0]) { + $errors['gidNumber'][] = $this->messages['gidNumber'][0]; + } } // Return error-messages - print_r($errors); return $errors; }