diff --git a/lam/lib/modules/eduPerson.inc b/lam/lib/modules/eduPerson.inc index 96e7c72d..f68622a7 100644 --- a/lam/lib/modules/eduPerson.inc +++ b/lam/lib/modules/eduPerson.inc @@ -3,7 +3,7 @@ $Id$ This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) - Copyright (C) 2009 - 2012 Roland Gruber + Copyright (C) 2009 - 2013 Roland Gruber This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -299,53 +299,65 @@ class eduPerson extends baseModule { $return->addElement($newAffiliationContainer); $return->addElement(new htmlOutputText(''), true); // nick names - $nicks = new htmlTable(); + $nickNames = array(); if (isset($this->attributes['eduPersonNickname'][0])) { - for ($i = 0; $i < sizeof($this->attributes['eduPersonNickname']); $i++) { - $nicks->addElement(new htmlInputField('nickName' . $i, $this->attributes['eduPersonNickname'][$i])); - $nicks->addElement(new htmlButton('delNickName' . $i, 'del.png', true), true); + $nickNames = $this->attributes['eduPersonNickname']; + } + if (sizeof($nickNames) == 0) { + $nickNames[] = ''; + } + $nickNameLabel = new htmlOutputText(_('Nick names')); + $nickNameLabel->alignment = htmlElement::ALIGN_TOP; + $return->addElement($nickNameLabel); + $nickNameContainer = new htmlGroup(); + for ($i = 0; $i < sizeof($nickNames); $i++) { + $nickNameField = new htmlInputField('eduPersonNickname' . $i, $nickNames[$i]); + $nickNameField->setFieldSize(40); + $nickNameContainer->addElement($nickNameField); + if ($nickNames[$i] != '') { + $nickNameContainer->addElement(new htmlButton('deleduPersonNickname' . $i, 'del.png', true)); + } + if ($i < (sizeof($nickNames) - 1)) { + $nickNameContainer->addElement(new htmlOutputText('
', false)); + } + else { + $nickNameContainer->addElement(new htmlButton('addeduPersonNickname', 'add.png', true)); } } - else { - $nicks->addElement(new htmlOutputText('-'), true); - } - $nickLabel = new htmlOutputText(_('Nick names')); - $nickLabel->alignment = htmlElement::ALIGN_TOP; - $return->addElement($nickLabel); - $return->addElement($nicks); - $nickHelp = new htmlHelpLink('nickName'); - $nickHelp->alignment = htmlElement::ALIGN_TOP; - $return->addElement($nickHelp, true); - $return->addElement(new htmlOutputText('')); - $newNickContainer = new htmlTable(); - $newNickContainer->addElement(new htmlInputField('nickName', '')); - $newNickContainer->addElement(new htmlButton('newNickName', 'add.png', true)); - $return->addElement($newNickContainer); - $return->addElement(new htmlOutputText(''), true); + $return->addElement($nickNameContainer); + $nickNameHelp = new htmlHelpLink('nickName'); + $nickNameHelp->alignment = htmlElement::ALIGN_TOP; + $return->addElement($nickNameHelp, true); // entitlements - $entitlements = new htmlTable(); + $entitlements = array(); if (isset($this->attributes['eduPersonEntitlement'][0])) { - for ($i = 0; $i < sizeof($this->attributes['eduPersonEntitlement']); $i++) { - $entitlements->addElement(new htmlInputField('entitlement' . $i, $this->attributes['eduPersonEntitlement'][$i])); - $entitlements->addElement(new htmlButton('delEntitlement' . $i, 'del.png', true), true); - } + $entitlements = $this->attributes['eduPersonEntitlement']; } - else { - $entitlements->addElement(new htmlOutputText('-')); + if (sizeof($entitlements) == 0) { + $entitlements[] = ''; } $entitlementLabel = new htmlOutputText(_('Entitlements')); $entitlementLabel->alignment = htmlElement::ALIGN_TOP; $return->addElement($entitlementLabel); - $return->addElement($entitlements); + $entitlementContainer = new htmlGroup(); + for ($i = 0; $i < sizeof($entitlements); $i++) { + $entitlementField = new htmlInputField('eduPersonEntitlement' . $i, $entitlements[$i]); + $entitlementField->setFieldSize(40); + $entitlementContainer->addElement($entitlementField); + if ($entitlements[$i] != '') { + $entitlementContainer->addElement(new htmlButton('deleduPersonEntitlement' . $i, 'del.png', true)); + } + if ($i < (sizeof($entitlements) - 1)) { + $entitlementContainer->addElement(new htmlOutputText('
', false)); + } + else { + $entitlementContainer->addElement(new htmlButton('addeduPersonEntitlement', 'add.png', true)); + } + } + $return->addElement($entitlementContainer); $entitlementHelp = new htmlHelpLink('entitlement'); $entitlementHelp->alignment = htmlElement::ALIGN_TOP; $return->addElement($entitlementHelp, true); - $return->addElement(new htmlOutputText('')); - $newEntitlementContainer = new htmlTable(); - $newEntitlementContainer->addElement(new htmlInputField('entitlement', '')); - $newEntitlementContainer->addElement(new htmlButton('newEntitlement', 'add.png', true)); - $return->addElement($newEntitlementContainer); - $return->addElement(new htmlOutputText(''), true); // org DN $orgDN = ''; if (isset($this->attributes['eduPersonOrgDN'][0])) { @@ -354,7 +366,7 @@ class eduPerson extends baseModule { $orgDNInput = new htmlTableExtendedInputField(_('Organisation'), 'orgDN', $orgDN, 'orgDN'); $orgDNInput->setFieldSize(40); $return->addElement($orgDNInput, true); - // primare OU DN + // primary OU DN $primaryOrgUnitDN = ''; if (isset($this->attributes['eduPersonPrimaryOrgUnitDN'][0])) { $primaryOrgUnitDN = $this->attributes['eduPersonPrimaryOrgUnitDN'][0]; @@ -363,33 +375,36 @@ class eduPerson extends baseModule { $primaryOUInput->setFieldSize(40); $return->addElement($primaryOUInput, true); // OUs - $orgUnitDN = new htmlTable(); + $orgUnitDNs = array(); if (isset($this->attributes['eduPersonOrgUnitDN'][0])) { - for ($i = 0; $i < sizeof($this->attributes['eduPersonOrgUnitDN']); $i++) { - $orgUnitDNInput = new htmlInputField('orgUnitDN' . $i, $this->attributes['eduPersonOrgUnitDN'][$i]); - $orgUnitDNInput->setFieldSize(40); - $orgUnitDN->addElement($orgUnitDNInput); - $orgUnitDN->addElement(new htmlButton('delOrgUnitDN' . $i, 'del.png', true), true); - } + $orgUnitDNs = $this->attributes['eduPersonOrgUnitDN']; } - else { - $orgUnitDN->addElement(new htmlOutputText('-')); + if (sizeof($orgUnitDNs) == 0) { + $orgUnitDNs[] = ''; } $orgUnitDNLabel = new htmlOutputText(_('Organisational units')); $orgUnitDNLabel->alignment = htmlElement::ALIGN_TOP; $return->addElement($orgUnitDNLabel); - $return->addElement($orgUnitDN); + $orgUnitDNContainer = new htmlGroup(); + for ($i = 0; $i < sizeof($orgUnitDNs); $i++) { + $orgUnitDNField = new htmlInputField('eduPersonOrgUnitDN' . $i, $orgUnitDNs[$i]); + $orgUnitDNField->setFieldSize(40); + $orgUnitDNContainer->addElement($orgUnitDNField); + if ($orgUnitDNs[$i] != '') { + $orgUnitDNContainer->addElement(new htmlButton('deleduPersonOrgUnitDN' . $i, 'del.png', true)); + } + if ($i < (sizeof($orgUnitDNs) - 1)) { + $orgUnitDNContainer->addElement(new htmlOutputText('
', false)); + } + else { + $orgUnitDNContainer->addElement(new htmlButton('addeduPersonOrgUnitDN', 'add.png', true)); + } + } + $return->addElement($orgUnitDNContainer); $orgUnitDNHelp = new htmlHelpLink('orgUnitDN'); $orgUnitDNHelp->alignment = htmlElement::ALIGN_TOP; $return->addElement($orgUnitDNHelp, true); - $return->addElement(new htmlOutputText('')); - $newOrgUnitDN = new htmlTable(); - $newOrgUnitDNInput = new htmlInputField('orgUnitDN', ''); - $newOrgUnitDNInput->setFieldSize(40); - $newOrgUnitDN->addElement($newOrgUnitDNInput); - $newOrgUnitDN->addElement(new htmlButton('newOrgUnitDN', 'add.png', true)); - $return->addElement($newOrgUnitDN); - $return->addElement(new htmlOutputText(''), true); + // remove button $return->addElement(new htmlSpacer(null, '10px'), true); $addButton = new htmlButton('remObjectClass', _('Remove EDU person extension')); $addButton->colspan = 3; @@ -455,31 +470,31 @@ class eduPerson extends baseModule { } $this->attributes['eduPersonAffiliation'] = array_unique($this->attributes['eduPersonAffiliation']); // nick names - $this->attributes['eduPersonNickname'] = array(); - $i = 0; - while (isset($_POST['nickName' . $i])) { - if (!isset($_POST['delNickName' . $i]) && ($_POST['nickName' . $i] != '')) { - $this->attributes['eduPersonNickname'][] = $_POST['nickName' . $i]; + $nickNameCounter = 0; + while (isset($_POST['eduPersonNickname' . $nickNameCounter])) { + $this->attributes['eduPersonNickname'][$nickNameCounter] = $_POST['eduPersonNickname' . $nickNameCounter]; + if (($this->attributes['eduPersonNickname'][$nickNameCounter] == '') || isset($_POST['deleduPersonNickname' . $nickNameCounter])) { + unset($this->attributes['eduPersonNickname'][$nickNameCounter]); } - $i++; + $nickNameCounter++; } - if (isset($_POST['newNickName']) && ($_POST['nickName'] != '')) { - $this->attributes['eduPersonNickname'][] = $_POST['nickName']; + if (isset($_POST['addeduPersonNickname'])) { + $this->attributes['eduPersonNickname'][] = ''; } - $this->attributes['eduPersonNickname'] = array_unique($this->attributes['eduPersonNickname']); + $this->attributes['eduPersonNickname'] = array_values(array_unique($this->attributes['eduPersonNickname'])); // entitlements - $this->attributes['eduPersonEntitlement'] = array(); - $i = 0; - while (isset($_POST['entitlement' . $i])) { - if (!isset($_POST['delEntitlement' . $i]) && ($_POST['entitlement' . $i] != '')) { - $this->attributes['eduPersonEntitlement'][] = $_POST['entitlement' . $i]; + $entitlementCounter = 0; + while (isset($_POST['eduPersonEntitlement' . $entitlementCounter])) { + $this->attributes['eduPersonEntitlement'][$entitlementCounter] = $_POST['eduPersonEntitlement' . $entitlementCounter]; + if (($this->attributes['eduPersonEntitlement'][$entitlementCounter] == '') || isset($_POST['deleduPersonEntitlement' . $entitlementCounter])) { + unset($this->attributes['eduPersonEntitlement'][$entitlementCounter]); } - $i++; + $entitlementCounter++; } - if (isset($_POST['newEntitlement']) && ($_POST['entitlement'] != '')) { - $this->attributes['eduPersonEntitlement'][] = $_POST['entitlement']; + if (isset($_POST['addeduPersonEntitlement'])) { + $this->attributes['eduPersonEntitlement'][] = ''; } - $this->attributes['eduPersonEntitlement'] = array_unique($this->attributes['eduPersonEntitlement']); + $this->attributes['eduPersonEntitlement'] = array_values(array_unique($this->attributes['eduPersonEntitlement'])); // org DN $this->attributes['eduPersonOrgDN'][0] = $_POST['orgDN']; if ($_POST['orgDN'] != '') { @@ -495,28 +510,21 @@ class eduPerson extends baseModule { } } // OUs - $this->attributes['eduPersonOrgUnitDN'] = array(); - $i = 0; - while (isset($_POST['orgUnitDN' . $i])) { - if (!isset($_POST['delOrgUnitDN' . $i]) && ($_POST['orgUnitDN' . $i] != '')) { - $this->attributes['eduPersonOrgUnitDN'][] = $_POST['orgUnitDN' . $i]; - if (!get_preg($_POST['orgUnitDN' . $i], 'dn')) { - $error = $this->messages['orgUnitDN'][0]; - array_push($error, $_POST['orgUnitDN' . $i]); - $errors[] = $error; - } + $orgUnitDNCounter = 0; + while (isset($_POST['eduPersonOrgUnitDN' . $orgUnitDNCounter])) { + $this->attributes['eduPersonOrgUnitDN'][$orgUnitDNCounter] = $_POST['eduPersonOrgUnitDN' . $orgUnitDNCounter]; + if (($this->attributes['eduPersonOrgUnitDN'][$orgUnitDNCounter] == '') || isset($_POST['deleduPersonOrgUnitDN' . $orgUnitDNCounter])) { + unset($this->attributes['eduPersonOrgUnitDN'][$orgUnitDNCounter]); } - $i++; - } - if (isset($_POST['newOrgUnitDN']) && ($_POST['orgUnitDN'] != '')) { - $this->attributes['eduPersonOrgUnitDN'][] = $_POST['orgUnitDN']; - if (!get_preg($_POST['orgUnitDN'], 'dn')) { - $error = $this->messages['orgUnitDN'][0]; - array_push($error, $_POST['orgUnitDN']); - $errors[] = $error; + elseif (!get_preg($this->attributes['eduPersonOrgUnitDN'][$orgUnitDNCounter], 'dn')) { + $errors[] = $this->messages['eduPersonOrgUnitDN'][0]; } + $orgUnitDNCounter++; } - $this->attributes['eduPersonOrgUnitDN'] = array_unique($this->attributes['eduPersonOrgUnitDN']); + if (isset($_POST['addeduPersonOrgUnitDN'])) { + $this->attributes['eduPersonOrgUnitDN'][] = ''; + } + $this->attributes['eduPersonOrgUnitDN'] = array_values(array_unique($this->attributes['eduPersonOrgUnitDN'])); return $errors; } @@ -664,7 +672,7 @@ class eduPerson extends baseModule { $return['eduPerson_primaryAffiliation'][0] = '' . _('Primary affiliation') . '' . $this->attributes['eduPersonPrimaryAffiliation'][0] . ''; } if (isset($this->attributes['eduPersonScopedAffiliation'][0])) { - $return['eduPerson_scopedAffiliation'][0] = '' . _('Scoped affiliation') . '' . $this->attributes['eduPersonScopedAffiliation'][0] . ''; + $return['eduPerson_scopedAffiliation'][0] = '' . _('Scoped affiliation') . '' . implode(', ', $this->attributes['eduPersonScopedAffiliation']) . ''; } if (isset($this->attributes['eduPersonPrincipalName'][0])) { $return['eduPerson_principalName'][0] = '' . _('Principal name') . '' . $this->attributes['eduPersonPrincipalName'][0] . '';