diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc index b120d9fb..9d4ceda9 100644 --- a/lam/lib/modules/inetOrgPerson.inc +++ b/lam/lib/modules/inetOrgPerson.inc @@ -63,6 +63,8 @@ class inetOrgPerson extends baseModule implements passwordService { $this->messages['street'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_street', _('Please enter a valid street name!')); $this->messages['postalAddress'][0] = array('ERROR', _('Postal address'), _('Please enter a valid postal address!')); $this->messages['postalAddress'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_address', _('Please enter a valid postal address!')); + $this->messages['registeredAddress'][0] = array('ERROR', _('Registered address'), _('Please enter a valid registered address.')); + $this->messages['registeredAddress'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_registeredAddress', _('Please enter a valid registered address.')); $this->messages['postalCode'][0] = array('ERROR', _('Postal code'), _('Please enter a valid postal code!')); $this->messages['postalCode'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_postalCode', _('Please enter a valid postal code!')); $this->messages['title'][0] = array('ERROR', _('Job title'), _('Please enter a valid job title!')); @@ -113,13 +115,13 @@ class inetOrgPerson extends baseModule implements passwordService { $return['attributes'] = array('uid', 'cn', 'employeeType', 'givenName', 'jpegPhoto', 'mail', 'manager', 'mobile', 'title', 'telephoneNumber', 'facsimileTelephoneNumber', 'street', 'postOfficeBox', 'postalCode', 'postalAddress', 'sn', 'userPassword', 'description', 'homePhone', 'roomNumber', 'businessCategory', 'l', 'st', 'physicalDeliveryOfficeName', - 'carLicense', 'departmentNumber', 'o', 'employeeNumber', 'initials'); + 'carLicense', 'departmentNumber', 'o', 'employeeNumber', 'initials', 'registeredAddress'); // self service search attributes $return['selfServiceSearchAttributes'] = array('uid', 'mail', 'cn', 'surname', 'givenName', 'employeeNumber'); // self service field settings $return['selfServiceFieldSettings'] = array('firstName' => _('First name'), 'lastName' => _('Last name'), 'mail' => _('Email address'), 'telephoneNumber' => _('Telephone number'), 'mobile' => _('Mobile number'), - 'faxNumber' => _('Fax number'), 'street' => _('Street'), 'postalAddress' => _('Postal address'), + 'faxNumber' => _('Fax number'), 'street' => _('Street'), 'postalAddress' => _('Postal address'), 'registeredAddress' => _('Registered address'), 'postalCode' => _('Postal code'), 'postOfficeBox' => _('Post office box'), 'jpegPhoto' => _('Photo'), 'homePhone' => _('Home telephone number'), 'roomNumber' => _('Room number'), 'carLicense' => _('Car license'), 'location' => _('Location'), 'state' => _('State'), 'officeName' => _('Office name'), 'businessCategory' => _('Business category'), @@ -144,6 +146,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostalAddress')) { $profileElements[] = new htmlTableExtendedInputField(_('Postal address'), 'inetOrgPerson_postalAddress', null, 'postalAddress'); } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $profileElements[] = new htmlTableExtendedInputField(_('Registered address'), 'inetOrgPerson_registeredAddress', null, 'registeredAddress'); + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideTelephoneNumber')) { $profileElements[] = new htmlTableExtendedInputField(_('Telephone number'), 'inetOrgPerson_telephoneNumber', null, 'telephoneNumber'); } @@ -207,6 +212,13 @@ class inetOrgPerson extends baseModule implements passwordService { 'error_message' => $this->messages['postalAddress'][0]); $return['profile_mappings']['inetOrgPerson_postalAddress'] = 'postalAddress'; } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $return['profile_checks']['inetOrgPerson_registeredAddress'] = array( + 'type' => 'ext_preg', + 'regex' => 'postalAddress', + 'error_message' => $this->messages['registeredAddress'][0]); + $return['profile_mappings']['inetOrgPerson_registeredAddress'] = 'registeredAddress'; + } // configuration settings $configContainer = new htmlTable(); $configContainerHead = new htmlTable(); @@ -228,32 +240,34 @@ class inetOrgPerson extends baseModule implements passwordService { $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hidePostalAddress', false, _('Postal address'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); - $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideOfficeName', false, _('Office name'), null, false)); + $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideRegisteredAddress', false, _('Registered address'), null, false)); $configContainerOptions->addNewLine(); + $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideOfficeName', false, _('Office name'), null, false)); + $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideRoomNumber', false, _('Room number'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideTelephoneNumber', false, _('Telephone number'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideHomeTelephoneNumber', false, _('Home telephone number'), null, false)); - $configContainerOptions->addElement(new htmlOutputText(' ')); - $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideMobileNumber', false, _('Mobile number'), null, false)); $configContainerOptions->addNewLine(); + $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideMobileNumber', false, _('Mobile number'), null, false)); + $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideFaxNumber', false, _('Fax number'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideEMailAddress', false, _('Email address'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideJobTitle', false, _('Job title'), null, false)); - $configContainerOptions->addElement(new htmlOutputText(' ')); - $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideCarLicense', false, _('Car license'), null, false)); $configContainerOptions->addNewLine(); + $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideCarLicense', false, _('Car license'), null, false)); + $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideEmployeeType', false, _('Employee type'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideBusinessCategory', false, _('Business category'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideDepartments', false, _('Department(s)'), null, false)); - $configContainerOptions->addElement(new htmlOutputText(' ')); - $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideManager', false, _('Manager'), null, false)); $configContainerOptions->addNewLine(); + $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideManager', false, _('Manager'), null, false)); + $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideO', false, _('Organisation'), null, false)); $configContainerOptions->addElement(new htmlOutputText(' ')); $configContainerOptions->addElement(new htmlTableExtendedInputCheckbox('inetOrgPerson_hideEmployeeNumber', false, _('Employee number'), null, false)); @@ -368,6 +382,14 @@ class inetOrgPerson extends baseModule implements passwordService { 'example' => _('Mycity') ); } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $return['upload_columns'][] = array( + 'name' => 'inetOrgPerson_registeredAddress', + 'description' => _('Registered address'), + 'help' => 'registeredAddress', + 'example' => _('Mycity') + ); + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostOfficeBox')) { $return['upload_columns'][] = array( 'name' => 'inetOrgPerson_postOfficeBox', @@ -498,6 +520,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostalAddress')) { $return['PDF_fields']['postalAddress'] = _('Postal address'); } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $return['PDF_fields']['registeredAddress'] = _('Registered address'); + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideOfficeName')) { $return['PDF_fields']['officeName'] = _('Office name'); } @@ -596,6 +621,10 @@ class inetOrgPerson extends baseModule implements passwordService { "Headline" => _("Postal address"), "Text" => _("Postal address, city") ), + 'registeredAddress' => array ( + "Headline" => _("Registered address"), + "Text" => _("Registered address, city") + ), 'telephoneNumber' => array ( "Headline" => _("Telephone number"), "Text" => _("The user's telephone number.") . ' ' . _('Multiple values are separated by semicolon.') @@ -738,11 +767,15 @@ class inetOrgPerson extends baseModule implements passwordService { return array(); } $return = $this->getAccountContainer()->save_module_attributes($this->attributes, $this->orig); - // postalAddress, facsimileTelephoneNumber and jpegPhoto need special removing + // postalAddress, registeredAddress, facsimileTelephoneNumber and jpegPhoto need special removing if (isset($return[$this->getAccountContainer()->dn_orig]['remove']['postalAddress'])) { $return[$this->getAccountContainer()->dn_orig]['modify']['postalAddress'] = $this->attributes['postalAddress']; unset($return[$this->getAccountContainer()->dn_orig]['remove']['postalAddress']); } + if (isset($return[$this->getAccountContainer()->dn_orig]['remove']['registeredAddress'])) { + $return[$this->getAccountContainer()->dn_orig]['modify']['registeredAddress'] = $this->attributes['registeredAddress']; + unset($return[$this->getAccountContainer()->dn_orig]['remove']['registeredAddress']); + } if (isset($return[$this->getAccountContainer()->dn_orig]['remove']['facsimileTelephoneNumber'])) { $return[$this->getAccountContainer()->dn_orig]['modify']['facsimileTelephoneNumber'] = $this->attributes['facsimileTelephoneNumber']; unset($return[$this->getAccountContainer()->dn_orig]['remove']['facsimileTelephoneNumber']); @@ -868,6 +901,21 @@ class inetOrgPerson extends baseModule implements passwordService { } $this->attributes['postalAddress'] = array_values($this->attributes['postalAddress']); } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $addressCounter = 0; + while (isset($_POST['registeredAddress' . $addressCounter])) { + $this->attributes['registeredAddress'][$addressCounter] = implode('$', preg_split('/[\r][\n]/', $_POST['registeredAddress' . $addressCounter])); + if (!get_preg($this->attributes['registeredAddress'][$addressCounter], 'postalAddress')) $errors[] = $this->messages['registeredAddress'][0]; + if ($this->attributes['registeredAddress'][$addressCounter] == '') { + unset($this->attributes['registeredAddress'][$addressCounter]); + } + $addressCounter++; + } + if (isset($_POST['addRegisteredAddress'])) { + $this->attributes['registeredAddress'][] = ''; + } + $this->attributes['registeredAddress'] = array_values($this->attributes['registeredAddress']); + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideEmployeeType')) { $this->attributes['employeeType'][0] = $_POST['employeeType']; if (!get_preg($this->attributes['employeeType'][0], 'employeeType')) $errors[] = $this->messages['employeeType'][0]; @@ -1013,7 +1061,8 @@ class inetOrgPerson extends baseModule implements passwordService { if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideStreet') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostOfficeBox') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostalCode') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideLocation') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideState') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hidePostalAddress') - || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideOfficeName') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideRoomNumber')) { + || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideOfficeName') || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideRoomNumber') + || !$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { $fieldContainer->addElement(new htmlSubTitle(_('Address')), true); } @@ -1070,6 +1119,34 @@ class inetOrgPerson extends baseModule implements passwordService { $addressHelp->alignment = htmlElement::ALIGN_TOP; $fieldContainer->addElement($addressHelp, true); } + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideRegisteredAddress')) { + $registeredAddresses = array(); + if (isset($this->attributes['registeredAddress'][0])) { + for ($i = 0; $i < sizeof($this->attributes['registeredAddress']); $i++) { + $registeredAddresses[] = implode("\r\n", explode('$', $this->attributes['registeredAddress'][$i])); + } + } + if (sizeof($registeredAddresses) == 0) { + $registeredAddresses[] = ''; + } + $registeredAddressLabel = new htmlOutputText(_('Registered address')); + $registeredAddressLabel->alignment = htmlElement::ALIGN_TOP; + $fieldContainer->addElement($registeredAddressLabel); + $registeredAddressContainer = new htmlGroup(); + for ($i = 0; $i < sizeof($registeredAddresses); $i++) { + $registeredAddressContainer->addElement(new htmlInputTextarea('registeredAddress' . $i, $registeredAddresses[$i], 30, 3)); + if ($i < (sizeof($registeredAddresses) - 1)) { + $registeredAddressContainer->addElement(new htmlOutputText('
', false)); + } + else { + $registeredAddressContainer->addElement(new htmlButton('addRegisteredAddress', 'add.png', true)); + } + } + $fieldContainer->addElement($registeredAddressContainer); + $registeredAddressHelp = new htmlHelpLink('registeredAddress'); + $registeredAddressHelp->alignment = htmlElement::ALIGN_TOP; + $fieldContainer->addElement($registeredAddressHelp, true); + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideOfficeName')) { $physicalDeliveryOfficeName = ''; if (isset($this->attributes['physicalDeliveryOfficeName'][0])) $physicalDeliveryOfficeName = $this->attributes['physicalDeliveryOfficeName'][0]; @@ -1272,6 +1349,10 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($this->attributes['postalAddress'][0])) { $postalAddress = implode(', ', $this->attributes['postalAddress']); } + $registeredAddress = ''; + if (isset($this->attributes['registeredAddress'][0])) { + $registeredAddress = implode(', ', $this->attributes['registeredAddress']); + } $telephoneNumber = ''; if (isset($this->attributes['telephoneNumber'][0])) { $telephoneNumber = implode(', ', $this->attributes['telephoneNumber']); @@ -1350,6 +1431,7 @@ class inetOrgPerson extends baseModule implements passwordService { get_class($this) . '_postOfficeBox' => array('' . _('Post office box') . '' . $postOfficeBox . ''), get_class($this) . '_postalCode' => array('' . _('Postal code') . '' . $postalCode . ''), get_class($this) . '_postalAddress' => array('' . _('Postal address') . '' . $postalAddress . ''), + get_class($this) . '_registeredAddress' => array('' . _('Registered address') . '' . $registeredAddress . ''), get_class($this) . '_telephoneNumber' => array('' . _('Telephone number') . '' . $telephoneNumber . ''), get_class($this) . '_homePhone' => array('' . _('Home telephone number') . '' . $homePhone . ''), get_class($this) . '_mobileTelephoneNumber' => array('' . _('Mobile number') . '' . $mobile . ''), @@ -1667,6 +1749,17 @@ class inetOrgPerson extends baseModule implements passwordService { $errors[] = $errMsg; } } + // registered address + if ($rawAccounts[$i][$ids['inetOrgPerson_registeredAddress']] != "") { + if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_registeredAddress']], 'postalAddress')) { + $partialAccounts[$i]['registeredAddress'] = $rawAccounts[$i][$ids['inetOrgPerson_registeredAddress']]; + } + else { + $errMsg = $this->messages['registeredAddress'][1]; + array_push($errMsg, array($i)); + $errors[] = $errMsg; + } + } // telephone if ($rawAccounts[$i][$ids['inetOrgPerson_telephone']] != "") { $telephoneList = preg_split('/;[ ]*/', $rawAccounts[$i][$ids['inetOrgPerson_telephone']]); @@ -1845,6 +1938,13 @@ class inetOrgPerson extends baseModule implements passwordService { new htmlTableExtendedInputField(_('Postal address'), 'inetOrgPerson_postalAddress', $postalAddress) )); } + if (in_array('registeredAddress', $fields)) { + $registeredAddress = ''; + if (isset($attributes['registeredAddress'][0])) $registeredAddress = $attributes['registeredAddress'][0]; + $return['registeredAddress'] = new htmlTableRow(array( + new htmlTableExtendedInputField(_('Registered address'), 'inetOrgPerson_registeredAddress', $registeredAddress) + )); + } if (in_array('postalCode', $fields)) { $postalCode = ''; if (isset($attributes['postalCode'][0])) $postalCode = $attributes['postalCode'][0]; @@ -2053,6 +2153,15 @@ class inetOrgPerson extends baseModule implements passwordService { } elseif (isset($attributes['postalAddress'])) $attributesNew['postalAddress'] = array(); } + // registered address + if (in_array('registeredAddress', $fields)) { + $attributeNames[] = 'registeredAddress'; + if (isset($_POST['inetOrgPerson_registeredAddress']) && ($_POST['inetOrgPerson_registeredAddress'] != '')) { + if (!get_preg($_POST['inetOrgPerson_registeredAddress'], 'postalAddress')) $return['messages'][] = $this->messages['registeredAddress'][0]; + else $attributesNew['registeredAddress'][0] = $_POST['inetOrgPerson_registeredAddress']; + } + elseif (isset($attributes['registeredAddress'])) $attributesNew['registeredAddress'] = array(); + } // postal code if (in_array('postalCode', $fields)) { $attributeNames[] = 'postalCode';