diff --git a/lam/lib/modules/sambaGroupMapping.inc b/lam/lib/modules/sambaGroupMapping.inc index fdec5262..7e848047 100644 --- a/lam/lib/modules/sambaGroupMapping.inc +++ b/lam/lib/modules/sambaGroupMapping.inc @@ -83,9 +83,23 @@ class sambaGroupMapping extends baseModule { } $errors = array(); for ($i = 0; $i < sizeof($rawAccounts); $i++) { - // group type is always 2 - // TODO - $partialAccounts[$i]['sambaGroupType'] = "2"; + // group type + if ($rawAccounts[$i][$ids['sambaGroupMapping_groupType']] != "") { + if (in_array($rawAccounts[$i][$ids['sambaGroupMapping_groupType']], $this->sambaGroupTypes)) { // number given + $partialAccounts[$i]['sambaGroupType'] = $rawAccounts[$i][$ids['sambaGroupMapping_groupType']]; + } + elseif (in_array($rawAccounts[$i][$ids['sambaGroupMapping_groupType']], array_keys($this->sambaGroupTypes))) { // description given + $partialAccounts[$i]['sambaGroupType'] = $this->sambaGroupTypes[$rawAccounts[$i][$ids['sambaGroupMapping_groupType']]]; + } + else { // invalid type + $errMsg = $this->messages['groupType'][0]; + array_push($errMsg, array($i, implode(", ", array_keys($this->sambaGroupTypes) + $this->sambaGroupTypes))); + $errors[] = $errMsg; + } + } + else { + $partialAccounts[$i]['sambaGroupType'] = "2"; // 2 is the default (domain group) + } if (!in_array("sambaGroupMapping", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaGroupMapping"; // SID $domSID = $nameToSID[$rawAccounts[$i][$ids['sambaGroupMapping_domain']]]; @@ -218,22 +232,26 @@ class sambaGroupMapping extends baseModule { 'name' => 'sambaGroupMapping_domain', 'description' => _('Samba 3 domain name'), 'help' => 'sambaDomainName', - 'example' => _('domain1'), + 'example' => _('Domain1'), 'required' => true ), array( 'name' => 'sambaGroupMapping_name', 'description' => _('Samba 3 display name'), 'help' => 'displayName', - 'example' => _('Domain administrators'), - 'required' => false + 'example' => _('Domain administrators') ), array( 'name' => 'sambaGroupMapping_rid', 'description' => _('Samba 3 RID number'), 'help' => 'rid', - 'example' => 'DOMAIN_ADMINS', - 'required' => false + 'example' => _('DOMAIN_ADMINS') + ), + array( + 'name' => 'sambaGroupMapping_groupType', + 'description' => _('Samba 3 group type'), + 'help' => 'type', + 'example' => '2' ) ); $return['upload_preDepends'] = array('posixGroup'); @@ -254,7 +272,11 @@ class sambaGroupMapping extends baseModule { 'sambaDomainName' => array( "ext" => "FALSE", "Headline" => _("Domain"), - "Text" => _("Windows-Domain name of group."). ' '. _("Can be left empty."))); + "Text" => _("Windows-Domain name of group."). ' '. _("Can be left empty.")), + 'type' => array( + "ext" => "FALSE", + "Headline" => _("Samba group type"), + "Text" => _("Windows group type.") . "

" . _("Possible values: ") . "" . implode(", ", array_keys($this->sambaGroupTypes) + $this->sambaGroupTypes))); return $return; } @@ -310,6 +332,7 @@ class sambaGroupMapping extends baseModule { function load_Messages() { $this->messages['sambaSID'][0] = array('ERROR', _('Special Group'),sprintf( _('There can be only one group %s.'), $rids[$i]), 'sambaSID'); $this->messages['sambaSID'][1] = array('ERROR', _("Account %s (sambaGroupMapping_domain): LAM was unable to find a Samba 3 domain with this name!")); // third parameter must be set dynamically + $this->messages['groupType'][0] = array('ERROR', _("Account %s (sambaGroupMapping_type): This is not a valid Samba 3 group type!"), _("Possible values:") . " %s"); }