diff --git a/lam/HISTORY b/lam/HISTORY index 529d08d3..997d13ab 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,6 +1,7 @@ March 2020 7.1 - PHP 7 required - Webauthn/FIDO2 support for 2-factor-authentication (requires PHP 7.2) + - Personal: support display name (hidden by default in server profile) 21.12.2019 7.0 diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc index 108ec3a5..29f0549c 100644 --- a/lam/lib/modules/inetOrgPerson.inc +++ b/lam/lib/modules/inetOrgPerson.inc @@ -6,7 +6,7 @@ use LAM\PDF\PDFImage; This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) Copyright (C) 2003 - 2006 Tilo Lutz - 2005 - 2019 Roland Gruber + 2005 - 2020 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 @@ -163,12 +163,12 @@ class inetOrgPerson extends baseModule implements passwordService { 'location' => _('Location'), 'state' => _('State'), 'officeName' => _('Office name'), 'businessCategory' => _('Business category'), 'departmentNumber' => _('Department'), 'initials' => _('Initials'), 'title' => _('Job title'), 'labeledURI' => _('Web site'), 'userCertificate' => _('User certificates'), 'o' => _('Organisation'), 'ou' => _('Organisational unit'), 'description' => _('Description'), - 'uid' => _('User name')); + 'uid' => _('User name'), 'displayName' => _('Display name')); // possible self service read-only fields $return['selfServiceReadOnlyFields'] = array('firstName', 'lastName', 'mail', 'telephoneNumber', 'mobile', 'faxNumber', 'pager', 'street', 'postalAddress', 'registeredAddress', 'postalCode', 'postOfficeBox', 'jpegPhoto', 'homePhone', 'roomNumber', 'carLicense', 'location', 'state', 'officeName', 'businessCategory', 'departmentNumber', 'initials', 'title', 'labeledURI', 'userCertificate', - 'o', 'ou', 'description', 'uid'); + 'o', 'ou', 'description', 'uid', 'displayName'); // profile checks and mappings if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideInitials')) { $return['profile_mappings']['inetOrgPerson_initials'] = 'initials'; @@ -681,6 +681,10 @@ class inetOrgPerson extends baseModule implements passwordService { "Headline" => _("Common name"), 'attr' => 'cn', "Text" => _("This is the natural name of the user. If empty, the first and last name is used.") ), + 'displayName' => array ( + "Headline" => _("Display name"), 'attr' => 'displayName', + "Text" => _("This is the user's preferred name to be used when displaying entries.") + ), 'uid' => array( "Headline" => _("User name"), 'attr' => 'uid', "Text" => _("User name of the user who should be created. Valid characters are: a-z,A-Z,0-9, @.-_.") @@ -807,6 +811,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (!$this->isUnixActive()) { $attrs[] = 'cn'; } + if (!$this->isSamba3Active()) { + $attrs[] = 'displayName'; + } return $attrs; } @@ -1017,6 +1024,9 @@ class inetOrgPerson extends baseModule implements passwordService { } } } + if (!$this->isSamba3Active() && !$this->isBooleanConfigOptionSet('inetOrgPerson_hidedisplayName', true)) { + $this->attributes['displayName'][0] = $_POST['displayName']; + } if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideTelephoneNumber') && !$this->isAdminReadOnly('telephoneNumber')) { $this->processMultiValueInputTextField('telephoneNumber', $errors, 'telephone'); } @@ -1221,6 +1231,10 @@ class inetOrgPerson extends baseModule implements passwordService { $this->addMultiValueInputTextField($fieldContainer, 'cn', _('Common name'), true); } } + // display name + if (!$this->isSamba3Active() && !$this->isBooleanConfigOptionSet('inetOrgPerson_hidedisplayName', true)) { + $this->addSimpleInputTextField($fieldContainer, 'displayName', _('Display name')); + } // description if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hideDescription')) { if ($this->isAdminReadOnly('description')) { @@ -1934,6 +1948,11 @@ class inetOrgPerson extends baseModule implements passwordService { $fields['cn'] = _('Common name'); $fields['userPassword'] = _('Password'); } + if (!$this->isSamba3Active($modules)) { + if (!$this->isBooleanConfigOptionSet('inetOrgPerson_hidedisplayName', true)) { + $fields['displayName'] = _('Display name'); + } + } return $fields; } @@ -1976,6 +1995,7 @@ class inetOrgPerson extends baseModule implements passwordService { $this->addSimplePDFField($return, 'initials', _('Initials')); $this->addSimplePDFField($return, 'labeledURI', _('Web site')); $this->addSimplePDFField($return, 'departmentNumber', _('Department')); + $this->addSimplePDFField($return, 'displayName', _('Display name')); if (isset($this->clearTextPassword)) { $this->addPDFKeyValue($return, 'userPassword', _('Password'), $this->clearTextPassword); } @@ -2193,6 +2213,14 @@ class inetOrgPerson extends baseModule implements passwordService { 'example' => _('secret'), ); } + if (!$this->isSamba3Active() && !$this->isBooleanConfigOptionSet('inetOrgPerson_hidedisplayName', true)) { + $return[] = array( + 'name' => 'inetOrgPerson_displayName', + 'description' => _('Display name'), + 'help' => 'displayName', + 'example' => _('Steve Miller'), + ); + } return $return; } @@ -2255,6 +2283,8 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($ids['inetOrgPerson_initials']) && ($rawAccounts[$i][$ids['inetOrgPerson_initials']] != "")) { $partialAccounts[$i]['initials'] = preg_split('/;[ ]*/', $rawAccounts[$i][$ids['inetOrgPerson_initials']]); } + // display name + $this->mapSimpleUploadField($rawAccounts, $ids, $partialAccounts, $i, 'inetOrgPerson_displayName', 'displayName'); // description $this->mapSimpleUploadField($rawAccounts, $ids, $partialAccounts, $i, 'inetOrgPerson_description', 'description'); // title @@ -2540,7 +2570,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('firstName', $fields)) { $firstName = ''; - if (isset($attributes['givenName'][0])) $firstName = $attributes['givenName'][0]; + if (isset($attributes['givenName'][0])) { + $firstName = $attributes['givenName'][0]; + } $firstNameField = new htmlInputField('inetOrgPerson_firstName', $firstName); if (in_array('firstName', $readOnlyFields)) { $firstNameField = new htmlOutputText($firstName); @@ -2551,7 +2583,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('lastName', $fields)) { $lastName = ''; - if (isset($attributes['sn'][0])) $lastName = $attributes['sn'][0]; + if (isset($attributes['sn'][0])) { + $lastName = $attributes['sn'][0]; + } $lastNameField = new htmlInputField('inetOrgPerson_lastName', $lastName); if (in_array('lastName', $readOnlyFields)) { $lastNameField = new htmlOutputText($lastName); @@ -2562,7 +2596,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('mail', $fields)) { $mail = ''; - if (isset($attributes['mail'][0])) $mail = $attributes['mail'][0]; + if (isset($attributes['mail'][0])) { + $mail = $attributes['mail'][0]; + } $mailField = new htmlInputField('inetOrgPerson_mail', $mail); if (in_array('mail', $readOnlyFields)) { $mailField = new htmlOutputText($mail); @@ -2573,7 +2609,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('labeledURI', $fields)) { $labeledURI = ''; - if (isset($attributes['labeledURI'][0])) $labeledURI = implode('; ', $attributes['labeledURI']); + if (isset($attributes['labeledURI'][0])) { + $labeledURI = implode('; ', $attributes['labeledURI']); + } $labeledURIField = new htmlInputField('inetOrgPerson_labeledURI', $labeledURI); if (in_array('labeledURI', $readOnlyFields)) { $labeledURIField = new htmlOutputText($labeledURI); @@ -2584,7 +2622,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('telephoneNumber', $fields)) { $telephoneNumber = ''; - if (isset($attributes['telephoneNumber'][0])) $telephoneNumber = $attributes['telephoneNumber'][0]; + if (isset($attributes['telephoneNumber'][0])) { + $telephoneNumber = $attributes['telephoneNumber'][0]; + } $telephoneNumberField = new htmlInputField('inetOrgPerson_telephoneNumber', $telephoneNumber); if (in_array('telephoneNumber', $readOnlyFields)) { $telephoneNumberField = new htmlOutputText($telephoneNumber); @@ -2595,7 +2635,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('homePhone', $fields)) { $homePhone = ''; - if (isset($attributes['homePhone'][0])) $homePhone = $attributes['homePhone'][0]; + if (isset($attributes['homePhone'][0])) { + $homePhone = $attributes['homePhone'][0]; + } $homePhoneField = new htmlInputField('inetOrgPerson_homePhone', $homePhone); if (in_array('homePhone', $readOnlyFields)) { $homePhoneField = new htmlOutputText($homePhone); @@ -2606,7 +2648,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('mobile', $fields)) { $mobile = ''; - if (isset($attributes['mobile'][0])) $mobile = $attributes['mobile'][0]; + if (isset($attributes['mobile'][0])) { + $mobile = $attributes['mobile'][0]; + } $mobileField = new htmlInputField('inetOrgPerson_mobile', $mobile); if (in_array('mobile', $readOnlyFields)) { $mobileField = new htmlOutputText($mobile); @@ -2617,7 +2661,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('faxNumber', $fields)) { $faxNumber = ''; - if (isset($attributes['facsimileTelephoneNumber'][0])) $faxNumber = $attributes['facsimileTelephoneNumber'][0]; + if (isset($attributes['facsimileTelephoneNumber'][0])) { + $faxNumber = $attributes['facsimileTelephoneNumber'][0]; + } $faxNumberField = new htmlInputField('inetOrgPerson_faxNumber', $faxNumber); if (in_array('faxNumber', $readOnlyFields)) { $faxNumberField = new htmlOutputText($faxNumber); @@ -2628,7 +2674,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('pager', $fields)) { $pager = ''; - if (isset($attributes['pager'][0])) $pager = $attributes['pager'][0]; + if (isset($attributes['pager'][0])) { + $pager = $attributes['pager'][0]; + } $pagerField = new htmlInputField('inetOrgPerson_pager', $pager); if (in_array('pager', $readOnlyFields)) { $pagerField = new htmlOutputText($pager); @@ -2639,7 +2687,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('street', $fields)) { $street = ''; - if (isset($attributes['street'][0])) $street = $attributes['street'][0]; + if (isset($attributes['street'][0])) { + $street = $attributes['street'][0]; + } $streetField = new htmlInputField('inetOrgPerson_street', $street); if (in_array('street', $readOnlyFields)) { $streetField = new htmlOutputText($street); @@ -2650,7 +2700,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('postalAddress', $fields)) { $postalAddress = ''; - if (isset($attributes['postalAddress'][0])) $postalAddress = $attributes['postalAddress'][0]; + if (isset($attributes['postalAddress'][0])) { + $postalAddress = $attributes['postalAddress'][0]; + } $postalAddressField = new htmlInputField('inetOrgPerson_postalAddress', $postalAddress); if (in_array('postalAddress', $readOnlyFields)) { $postalAddressField = new htmlOutputText($postalAddress); @@ -2661,7 +2713,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('registeredAddress', $fields)) { $registeredAddress = ''; - if (isset($attributes['registeredAddress'][0])) $registeredAddress = $attributes['registeredAddress'][0]; + if (isset($attributes['registeredAddress'][0])) { + $registeredAddress = $attributes['registeredAddress'][0]; + } $registeredAddressField = new htmlInputField('inetOrgPerson_registeredAddress', $registeredAddress); if (in_array('registeredAddress', $readOnlyFields)) { $registeredAddressField = new htmlOutputText($registeredAddress); @@ -2672,7 +2726,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('postalCode', $fields)) { $postalCode = ''; - if (isset($attributes['postalCode'][0])) $postalCode = $attributes['postalCode'][0]; + if (isset($attributes['postalCode'][0])) { + $postalCode = $attributes['postalCode'][0]; + } $postalCodeField = new htmlInputField('inetOrgPerson_postalCode', $postalCode); if (in_array('postalCode', $readOnlyFields)) { $postalCodeField = new htmlOutputText($postalCode); @@ -2683,7 +2739,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('postOfficeBox', $fields)) { $postOfficeBox = ''; - if (isset($attributes['postOfficeBox'][0])) $postOfficeBox = $attributes['postOfficeBox'][0]; + if (isset($attributes['postOfficeBox'][0])) { + $postOfficeBox = $attributes['postOfficeBox'][0]; + } $postOfficeBoxField = new htmlInputField('inetOrgPerson_postOfficeBox', $postOfficeBox); if (in_array('postOfficeBox', $readOnlyFields)) { $postOfficeBoxField = new htmlOutputText($postOfficeBox); @@ -2694,7 +2752,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('roomNumber', $fields)) { $roomNumber = ''; - if (isset($attributes['roomNumber'][0])) $roomNumber = $attributes['roomNumber'][0]; + if (isset($attributes['roomNumber'][0])) { + $roomNumber = $attributes['roomNumber'][0]; + } $roomNumberField = new htmlInputField('inetOrgPerson_roomNumber', $roomNumber); if (in_array('roomNumber', $readOnlyFields)) { $roomNumberField = new htmlOutputText($roomNumber); @@ -2705,7 +2765,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('location', $fields)) { $l = ''; - if (isset($attributes['l'][0])) $l = $attributes['l'][0]; + if (isset($attributes['l'][0])) { + $l = $attributes['l'][0]; + } $lField = new htmlInputField('inetOrgPerson_location', $l); if (in_array('location', $readOnlyFields)) { $lField = new htmlOutputText($l); @@ -2716,7 +2778,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('state', $fields)) { $st = ''; - if (isset($attributes['st'][0])) $st = $attributes['st'][0]; + if (isset($attributes['st'][0])) { + $st = $attributes['st'][0]; + } $stField = new htmlInputField('inetOrgPerson_state', $st); if (in_array('state', $readOnlyFields)) { $stField = new htmlOutputText($st); @@ -2727,7 +2791,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('carLicense', $fields)) { $carLicense = ''; - if (isset($attributes['carLicense'][0])) $carLicense = $attributes['carLicense'][0]; + if (isset($attributes['carLicense'][0])) { + $carLicense = $attributes['carLicense'][0]; + } $carLicenseField = new htmlInputField('inetOrgPerson_carLicense', $carLicense); if (in_array('carLicense', $readOnlyFields)) { $carLicenseField = new htmlOutputText($carLicense); @@ -2738,7 +2804,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('officeName', $fields)) { $physicalDeliveryOfficeName = ''; - if (isset($attributes['physicalDeliveryOfficeName'][0])) $physicalDeliveryOfficeName = $attributes['physicalDeliveryOfficeName'][0]; + if (isset($attributes['physicalDeliveryOfficeName'][0])) { + $physicalDeliveryOfficeName = $attributes['physicalDeliveryOfficeName'][0]; + } $physicalDeliveryOfficeNameField = new htmlInputField('inetOrgPerson_officeName', $physicalDeliveryOfficeName); if (in_array('officeName', $readOnlyFields)) { $physicalDeliveryOfficeNameField = new htmlOutputText($physicalDeliveryOfficeName); @@ -2749,7 +2817,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('businessCategory', $fields)) { $businessCategory = ''; - if (isset($attributes['businessCategory'][0])) $businessCategory = $attributes['businessCategory'][0]; + if (isset($attributes['businessCategory'][0])) { + $businessCategory = $attributes['businessCategory'][0]; + } $businessCategoryField = new htmlInputField('inetOrgPerson_businessCategory', $businessCategory); if (in_array('businessCategory', $readOnlyFields)) { $businessCategoryField = new htmlOutputText($businessCategory); @@ -2775,7 +2845,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('departmentNumber', $fields)) { $departmentNumber = ''; - if (isset($attributes['departmentNumber'][0])) $departmentNumber = implode('; ', $attributes['departmentNumber']); + if (isset($attributes['departmentNumber'][0])) { + $departmentNumber = implode('; ', $attributes['departmentNumber']); + } $departmentNumberField = new htmlInputField('inetOrgPerson_departmentNumber', $departmentNumber); if (in_array('departmentNumber', $readOnlyFields)) { $departmentNumberField = new htmlOutputText($departmentNumber); @@ -2786,7 +2858,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('initials', $fields)) { $initials = ''; - if (isset($attributes['initials'][0])) $initials = implode('; ', $attributes['initials']); + if (isset($attributes['initials'][0])) { + $initials = implode('; ', $attributes['initials']); + } $initialsField = new htmlInputField('inetOrgPerson_initials', $initials); if (in_array('initials', $readOnlyFields)) { $initialsField = new htmlOutputText($initials); @@ -2797,7 +2871,9 @@ class inetOrgPerson extends baseModule implements passwordService { } if (in_array('title', $fields)) { $title = ''; - if (isset($attributes['title'][0])) $title = $attributes['title'][0]; + if (isset($attributes['title'][0])) { + $title = $attributes['title'][0]; + } $titleField = new htmlInputField('inetOrgPerson_title', $title); if (in_array('title', $readOnlyFields)) { $titleField = new htmlOutputText($title); @@ -2835,7 +2911,9 @@ class inetOrgPerson extends baseModule implements passwordService { // o if (in_array('o', $fields)) { $o = ''; - if (isset($attributes['o'][0])) $o = $attributes['o'][0]; + if (isset($attributes['o'][0])) { + $o = $attributes['o'][0]; + } if (in_array('o', $readOnlyFields)) { $oField = new htmlOutputText(getAbstractDN($o)); } @@ -2871,7 +2949,9 @@ class inetOrgPerson extends baseModule implements passwordService { // ou if (in_array('ou', $fields)) { $ou = ''; - if (isset($attributes['ou'][0])) $ou = $attributes['ou'][0]; + if (isset($attributes['ou'][0])) { + $ou = $attributes['ou'][0]; + } if (in_array('ou', $readOnlyFields)) { $ouField = new htmlOutputText(getAbstractDN($ou)); } @@ -2907,7 +2987,9 @@ class inetOrgPerson extends baseModule implements passwordService { // description if (in_array('description', $fields)) { $description = ''; - if (isset($attributes['description'][0])) $description = $attributes['description'][0]; + if (isset($attributes['description'][0])) { + $description = $attributes['description'][0]; + } $descriptionField = new htmlInputField('inetOrgPerson_description', $description); if (in_array('description', $readOnlyFields)) { $descriptionField = new htmlOutputText($description); @@ -2919,7 +3001,9 @@ class inetOrgPerson extends baseModule implements passwordService { // uid if (in_array('uid', $fields)) { $uid = ''; - if (isset($attributes['uid'][0])) $uid = $attributes['uid'][0]; + if (isset($attributes['uid'][0])) { + $uid = $attributes['uid'][0]; + } $uidField = new htmlInputField('inetOrgPerson_uid', $uid); if (in_array('uid', $readOnlyFields)) { $uidField = new htmlOutputText($uid); @@ -2928,6 +3012,19 @@ class inetOrgPerson extends baseModule implements passwordService { new htmlOutputText($this->getSelfServiceLabel('uid', _('User name'))), $uidField ); } + if (in_array('displayName', $fields)) { + $displayName = ''; + if (isset($attributes['displayName'][0])) { + $displayName = $attributes['displayName'][0]; + } + $displayNameField = new htmlInputField('inetOrgPerson_displayName', $displayName); + if (in_array('displayName', $readOnlyFields)) { + $displayNameField = new htmlOutputText($displayName); + } + $return['displayName'] = new htmlResponsiveRow( + new htmlOutputText($this->getSelfServiceLabel('displayName', _('Display name'))), $displayNameField + ); + } return $return; } @@ -3174,17 +3271,27 @@ class inetOrgPerson extends baseModule implements passwordService { if (in_array('firstName', $fields) && !in_array('firstName', $readOnlyFields)) { $attributeNames[] = 'givenName'; if (isset($_POST['inetOrgPerson_firstName']) && ($_POST['inetOrgPerson_firstName'] != '')) { - if (!get_preg($_POST['inetOrgPerson_firstName'], 'realname')) $return['messages'][] = $this->messages['givenName'][0]; - else $attributesNew['givenName'][0] = $_POST['inetOrgPerson_firstName']; + if (!get_preg($_POST['inetOrgPerson_firstName'], 'realname')) { + $return['messages'][] = $this->messages['givenName'][0]; + } + else { + $attributesNew['givenName'][0] = $_POST['inetOrgPerson_firstName']; + } + } + elseif (isset($attributes['givenName'])) { + unset($attributesNew['givenName']); } - elseif (isset($attributes['givenName'])) unset($attributesNew['givenName']); } // last name if (in_array('lastName', $fields) && !in_array('lastName', $readOnlyFields)) { $attributeNames[] = 'sn'; if (isset($_POST['inetOrgPerson_lastName']) && ($_POST['inetOrgPerson_lastName'] != '')) { - if (!get_preg($_POST['inetOrgPerson_lastName'], 'realname')) $return['messages'][] = $this->messages['lastname'][0]; - else $attributesNew['sn'][0] = $_POST['inetOrgPerson_lastName']; + if (!get_preg($_POST['inetOrgPerson_lastName'], 'realname')) { + $return['messages'][] = $this->messages['lastname'][0]; + } + else { + $attributesNew['sn'][0] = $_POST['inetOrgPerson_lastName']; + } } else { // last name is required attribute @@ -3195,10 +3302,16 @@ class inetOrgPerson extends baseModule implements passwordService { if (in_array('mail', $fields) && !in_array('mail', $readOnlyFields)) { $attributeNames[] = 'mail'; if (isset($_POST['inetOrgPerson_mail']) && ($_POST['inetOrgPerson_mail'] != '')) { - if (!get_preg($_POST['inetOrgPerson_mail'], 'email')) $return['messages'][] = $this->messages['email'][0]; - else $attributesNew['mail'][0] = $_POST['inetOrgPerson_mail']; + if (!get_preg($_POST['inetOrgPerson_mail'], 'email')) { + $return['messages'][] = $this->messages['email'][0]; + } + else { + $attributesNew['mail'][0] = $_POST['inetOrgPerson_mail']; + } + } + elseif (isset($attributes['mail'])) { + unset($attributesNew['mail']); } - elseif (isset($attributes['mail'])) unset($attributesNew['mail']); } // labeledURI if (in_array('labeledURI', $fields) && !in_array('labeledURI', $readOnlyFields)) { @@ -3206,88 +3319,144 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_labeledURI']) && ($_POST['inetOrgPerson_labeledURI'] != '')) { $attributesNew['labeledURI'] = preg_split('/;[ ]*/', $_POST['inetOrgPerson_labeledURI']); } - elseif (isset($attributes['labeledURI'])) unset($attributesNew['labeledURI']); + elseif (isset($attributes['labeledURI'])) { + unset($attributesNew['labeledURI']); + } } // telephone number if (in_array('telephoneNumber', $fields) && !in_array('telephoneNumber', $readOnlyFields)) { $attributeNames[] = 'telephoneNumber'; if (isset($_POST['inetOrgPerson_telephoneNumber']) && ($_POST['inetOrgPerson_telephoneNumber'] != '')) { - if (!get_preg($_POST['inetOrgPerson_telephoneNumber'], 'telephone')) $return['messages'][] = $this->messages['telephoneNumber'][0]; - else $attributesNew['telephoneNumber'][0] = $_POST['inetOrgPerson_telephoneNumber']; + if (!get_preg($_POST['inetOrgPerson_telephoneNumber'], 'telephone')) { + $return['messages'][] = $this->messages['telephoneNumber'][0]; + } + else { + $attributesNew['telephoneNumber'][0] = $_POST['inetOrgPerson_telephoneNumber']; + } + } + elseif (isset($attributes['telephoneNumber'])) { + unset($attributesNew['telephoneNumber']); } - elseif (isset($attributes['telephoneNumber'])) unset($attributesNew['telephoneNumber']); } // home telephone number if (in_array('homePhone', $fields) && !in_array('homePhone', $readOnlyFields)) { $attributeNames[] = 'homePhone'; if (isset($_POST['inetOrgPerson_homePhone']) && ($_POST['inetOrgPerson_homePhone'] != '')) { - if (!get_preg($_POST['inetOrgPerson_homePhone'], 'telephone')) $return['messages'][] = $this->messages['homePhone'][0]; - else $attributesNew['homePhone'][0] = $_POST['inetOrgPerson_homePhone']; + if (!get_preg($_POST['inetOrgPerson_homePhone'], 'telephone')) { + $return['messages'][] = $this->messages['homePhone'][0]; + } + else { + $attributesNew['homePhone'][0] = $_POST['inetOrgPerson_homePhone']; + } + } + elseif (isset($attributes['homePhone'])) { + unset($attributesNew['homePhone']); } - elseif (isset($attributes['homePhone'])) unset($attributesNew['homePhone']); } // fax number if (in_array('faxNumber', $fields) && !in_array('faxNumber', $readOnlyFields)) { $attributeNames[] = 'facsimileTelephoneNumber'; if (isset($_POST['inetOrgPerson_faxNumber']) && ($_POST['inetOrgPerson_faxNumber'] != '')) { - if (!get_preg($_POST['inetOrgPerson_faxNumber'], 'telephone')) $return['messages'][] = $this->messages['facsimileNumber'][0]; - else $attributesNew['facsimileTelephoneNumber'][0] = $_POST['inetOrgPerson_faxNumber']; + if (!get_preg($_POST['inetOrgPerson_faxNumber'], 'telephone')) { + $return['messages'][] = $this->messages['facsimileNumber'][0]; + } + else { + $attributesNew['facsimileTelephoneNumber'][0] = $_POST['inetOrgPerson_faxNumber']; + } + } + elseif (isset($attributes['facsimileTelephoneNumber'])) { + $attributesNew['facsimileTelephoneNumber'] = array(); } - elseif (isset($attributes['facsimileTelephoneNumber'])) $attributesNew['facsimileTelephoneNumber'] = array(); } // mobile telephone number if (in_array('mobile', $fields) && !in_array('mobile', $readOnlyFields)) { $attributeNames[] = 'mobile'; if (isset($_POST['inetOrgPerson_mobile']) && ($_POST['inetOrgPerson_mobile'] != '')) { - if (!get_preg($_POST['inetOrgPerson_mobile'], 'telephone')) $return['messages'][] = $this->messages['mobileTelephone'][0]; - else $attributesNew['mobile'][0] = $_POST['inetOrgPerson_mobile']; + if (!get_preg($_POST['inetOrgPerson_mobile'], 'telephone')) { + $return['messages'][] = $this->messages['mobileTelephone'][0]; + } + else { + $attributesNew['mobile'][0] = $_POST['inetOrgPerson_mobile']; + } + } + elseif (isset($attributes['mobile'])) { + unset($attributesNew['mobile']); } - elseif (isset($attributes['mobile'])) unset($attributesNew['mobile']); } // pager if (in_array('pager', $fields) && !in_array('pager', $readOnlyFields)) { $attributeNames[] = 'pager'; if (isset($_POST['inetOrgPerson_pager']) && ($_POST['inetOrgPerson_pager'] != '')) { - if (!get_preg($_POST['inetOrgPerson_pager'], 'telephone')) $return['messages'][] = $this->messages['pager'][0]; - else $attributesNew['pager'][0] = $_POST['inetOrgPerson_pager']; + if (!get_preg($_POST['inetOrgPerson_pager'], 'telephone')) { + $return['messages'][] = $this->messages['pager'][0]; + } + else { + $attributesNew['pager'][0] = $_POST['inetOrgPerson_pager']; + } + } + elseif (isset($attributes['pager'])) { + unset($attributesNew['pager']); } - elseif (isset($attributes['pager'])) unset($attributesNew['pager']); } // street if (in_array('street', $fields) && !in_array('street', $readOnlyFields)) { $attributeNames[] = 'street'; if (isset($_POST['inetOrgPerson_street']) && ($_POST['inetOrgPerson_street'] != '')) { - if (!get_preg($_POST['inetOrgPerson_street'], 'street')) $return['messages'][] = $this->messages['street'][0]; - else $attributesNew['street'][0] = $_POST['inetOrgPerson_street']; + if (!get_preg($_POST['inetOrgPerson_street'], 'street')) { + $return['messages'][] = $this->messages['street'][0]; + } + else { + $attributesNew['street'][0] = $_POST['inetOrgPerson_street']; + } + } + elseif (isset($attributes['street'])) { + unset($attributesNew['street']); } - elseif (isset($attributes['street'])) unset($attributesNew['street']); } // postal address if (in_array('postalAddress', $fields) && !in_array('postalAddress', $readOnlyFields)) { $attributeNames[] = 'postalAddress'; if (isset($_POST['inetOrgPerson_postalAddress']) && ($_POST['inetOrgPerson_postalAddress'] != '')) { - if (!get_preg($_POST['inetOrgPerson_postalAddress'], 'postalAddress')) $return['messages'][] = $this->messages['postalAddress'][0]; - else $attributesNew['postalAddress'][0] = $_POST['inetOrgPerson_postalAddress']; + if (!get_preg($_POST['inetOrgPerson_postalAddress'], 'postalAddress')) { + $return['messages'][] = $this->messages['postalAddress'][0]; + } + else { + $attributesNew['postalAddress'][0] = $_POST['inetOrgPerson_postalAddress']; + } + } + elseif (isset($attributes['postalAddress'])) { + $attributesNew['postalAddress'] = array(); } - elseif (isset($attributes['postalAddress'])) $attributesNew['postalAddress'] = array(); } // registered address if (in_array('registeredAddress', $fields) && !in_array('registeredAddress', $readOnlyFields)) { $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']; + 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(); } - elseif (isset($attributes['registeredAddress'])) $attributesNew['registeredAddress'] = array(); } // postal code if (in_array('postalCode', $fields) && !in_array('postalCode', $readOnlyFields)) { $attributeNames[] = 'postalCode'; if (isset($_POST['inetOrgPerson_postalCode']) && ($_POST['inetOrgPerson_postalCode'] != '')) { - if (!get_preg($_POST['inetOrgPerson_postalCode'], 'postalCode')) $return['messages'][] = $this->messages['postalCode'][0]; - else $attributesNew['postalCode'][0] = $_POST['inetOrgPerson_postalCode']; + if (!get_preg($_POST['inetOrgPerson_postalCode'], 'postalCode')) { + $return['messages'][] = $this->messages['postalCode'][0]; + } + else { + $attributesNew['postalCode'][0] = $_POST['inetOrgPerson_postalCode']; + } + } + elseif (isset($attributes['postalCode'])) { + unset($attributesNew['postalCode']); } - elseif (isset($attributes['postalCode'])) unset($attributesNew['postalCode']); } // post office box if (in_array('postOfficeBox', $fields) && !in_array('postOfficeBox', $readOnlyFields)) { @@ -3295,7 +3464,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_postOfficeBox']) && ($_POST['inetOrgPerson_postOfficeBox'] != '')) { $attributesNew['postOfficeBox'][0] = $_POST['inetOrgPerson_postOfficeBox']; } - elseif (isset($attributes['postOfficeBox'])) unset($attributesNew['postOfficeBox']); + elseif (isset($attributes['postOfficeBox'])) { + unset($attributesNew['postOfficeBox']); + } } // room number if (in_array('roomNumber', $fields) && !in_array('roomNumber', $readOnlyFields)) { @@ -3303,7 +3474,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_roomNumber']) && ($_POST['inetOrgPerson_roomNumber'] != '')) { $attributesNew['roomNumber'][0] = $_POST['inetOrgPerson_roomNumber']; } - elseif (isset($attributes['roomNumber'])) unset($attributesNew['roomNumber']); + elseif (isset($attributes['roomNumber'])) { + unset($attributesNew['roomNumber']); + } } // l if (in_array('location', $fields) && !in_array('location', $readOnlyFields)) { @@ -3311,7 +3484,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_location']) && ($_POST['inetOrgPerson_location'] != '')) { $attributesNew['l'][0] = $_POST['inetOrgPerson_location']; } - elseif (isset($attributes['l'])) unset($attributesNew['l']); + elseif (isset($attributes['l'])) { + unset($attributesNew['l']); + } } // st if (in_array('state', $fields) && !in_array('state', $readOnlyFields)) { @@ -3319,7 +3494,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_state']) && ($_POST['inetOrgPerson_state'] != '')) { $attributesNew['st'][0] = $_POST['inetOrgPerson_state']; } - elseif (isset($attributes['st'])) unset($attributesNew['st']); + elseif (isset($attributes['st'])) { + unset($attributesNew['st']); + } } // car license if (in_array('carLicense', $fields) && !in_array('carLicense', $readOnlyFields)) { @@ -3327,7 +3504,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_carLicense']) && ($_POST['inetOrgPerson_carLicense'] != '')) { $attributesNew['carLicense'][0] = $_POST['inetOrgPerson_carLicense']; } - elseif (isset($attributes['carLicense'])) unset($attributesNew['carLicense']); + elseif (isset($attributes['carLicense'])) { + unset($attributesNew['carLicense']); + } } // office name if (in_array('officeName', $fields) && !in_array('officeName', $readOnlyFields)) { @@ -3335,7 +3514,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_officeName']) && ($_POST['inetOrgPerson_officeName'] != '')) { $attributesNew['physicalDeliveryOfficeName'][0] = $_POST['inetOrgPerson_officeName']; } - elseif (isset($attributes['physicalDeliveryOfficeName'])) unset($attributesNew['physicalDeliveryOfficeName']); + elseif (isset($attributes['physicalDeliveryOfficeName'])) { + unset($attributesNew['physicalDeliveryOfficeName']); + } } // business category if (in_array('businessCategory', $fields) && !in_array('businessCategory', $readOnlyFields)) { @@ -3348,7 +3529,9 @@ class inetOrgPerson extends baseModule implements passwordService { $attributesNew['businessCategory'][0] = $_POST['inetOrgPerson_businessCategory']; } } - elseif (isset($attributes['businessCategory'])) unset($attributesNew['businessCategory']); + elseif (isset($attributes['businessCategory'])) { + unset($attributesNew['businessCategory']); + } } // photo if (in_array('jpegPhoto', $fields) && !in_array('jpegPhoto', $readOnlyFields)) { @@ -3394,7 +3577,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_departmentNumber']) && ($_POST['inetOrgPerson_departmentNumber'] != '')) { $attributesNew['departmentNumber'] = preg_split('/;[ ]*/', $_POST['inetOrgPerson_departmentNumber']); } - elseif (isset($attributes['departmentNumber'])) unset($attributesNew['departmentNumber']); + elseif (isset($attributes['departmentNumber'])) { + unset($attributesNew['departmentNumber']); + } } // initials if (in_array('initials', $fields) && !in_array('initials', $readOnlyFields)) { @@ -3402,16 +3587,24 @@ class inetOrgPerson extends baseModule implements passwordService { if (isset($_POST['inetOrgPerson_initials']) && ($_POST['inetOrgPerson_initials'] != '')) { $attributesNew['initials'] = preg_split('/;[ ]*/', $_POST['inetOrgPerson_initials']); } - elseif (isset($attributes['initials'])) unset($attributesNew['initials']); + elseif (isset($attributes['initials'])) { + unset($attributesNew['initials']); + } } // title if (in_array('title', $fields) && !in_array('title', $readOnlyFields)) { $attributeNames[] = 'title'; if (isset($_POST['inetOrgPerson_title']) && ($_POST['inetOrgPerson_title'] != '')) { - if (!get_preg($_POST['inetOrgPerson_title'], 'title')) $return['messages'][] = $this->messages['title'][0]; - else $attributesNew['title'][0] = $_POST['inetOrgPerson_title']; + if (!get_preg($_POST['inetOrgPerson_title'], 'title')) { + $return['messages'][] = $this->messages['title'][0]; + } + else { + $attributesNew['title'][0] = $_POST['inetOrgPerson_title']; + } + } + elseif (isset($attributes['title'])) { + unset($attributesNew['title']); } - elseif (isset($attributes['title'])) unset($attributesNew['title']); } // user certificates if (in_array('userCertificate', $fields)) { @@ -3434,7 +3627,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (!empty($_POST['inetOrgPerson_description'])) { $attributesNew['description'][0] = $_POST['inetOrgPerson_description']; } - elseif (isset($attributes['description'])) unset($attributesNew['description']); + elseif (isset($attributes['description'])) { + unset($attributesNew['description']); + } } // ou if (in_array('ou', $fields) && !in_array('ou', $readOnlyFields)) { @@ -3442,7 +3637,9 @@ class inetOrgPerson extends baseModule implements passwordService { if (!empty($_POST['inetOrgPerson_ou'])) { $attributesNew['ou'][0] = $_POST['inetOrgPerson_ou']; } - elseif (isset($attributes['ou'])) unset($attributesNew['ou']); + elseif (isset($attributes['ou'])) { + unset($attributesNew['ou']); + } } // o if (in_array('o', $fields) && !in_array('o', $readOnlyFields)) { @@ -3450,16 +3647,34 @@ class inetOrgPerson extends baseModule implements passwordService { if (!empty($_POST['inetOrgPerson_o'])) { $attributesNew['o'][0] = $_POST['inetOrgPerson_o']; } - elseif (isset($attributes['o'])) unset($attributesNew['o']); + elseif (isset($attributes['o'])) { + unset($attributesNew['o']); + } } // uid if (in_array('uid', $fields) && !in_array('uid', $readOnlyFields)) { $attributeNames[] = 'uid'; if (isset($_POST['inetOrgPerson_uid']) && ($_POST['inetOrgPerson_uid'] != '')) { - if (!get_preg($_POST['inetOrgPerson_uid'], 'username')) $return['messages'][] = $this->messages['uid'][0]; - else $attributesNew['uid'][0] = $_POST['inetOrgPerson_uid']; + if (!get_preg($_POST['inetOrgPerson_uid'], 'username')) { + $return['messages'][] = $this->messages['uid'][0]; + } + else { + $attributesNew['uid'][0] = $_POST['inetOrgPerson_uid']; + } + } + elseif (isset($attributes['uid'])) { + unset($attributesNew['uid']); + } + } + // display name + if (in_array('displayName', $fields) && !in_array('displayName', $readOnlyFields)) { + $attributeNames[] = 'displayName'; + if (!empty($_POST['inetOrgPerson_displayName'])) { + $attributesNew['displayName'][0] = $_POST['inetOrgPerson_displayName']; + } + elseif (isset($attributes['displayName'])) { + unset($attributesNew['displayName']); } - elseif (isset($attributes['uid'])) unset($attributesNew['uid']); } // find differences for ($i = 0; $i < sizeof($attributeNames); $i++) { @@ -3886,9 +4101,12 @@ class inetOrgPerson extends baseModule implements passwordService { $configContainer->add(new htmlResponsiveInputCheckbox('inetOrgPerson_hideuserCertificate', false, _('User certificates'), null, true), 12, 4); $configContainer->add(new htmlResponsiveInputCheckbox('inetOrgPerson_hidejpegPhoto', false, _('Photo'), null, true), 12, 4); if (isset($_SESSION['conf_config'])) { - $confActiveUnixUserModules = $_SESSION['conf_config']->get_AccountModules('user'); + $confActiveUserModules = $_SESSION['conf_config']->get_AccountModules('user'); + if (!in_array('sambaSamAccount', $confActiveUserModules)) { + $configContainer->add(new htmlResponsiveInputCheckbox('inetOrgPerson_hidedisplayName', true, _('Display name'), null, true), 12, 4); + } // option to hide uid - if (!in_array('posixAccount', $confActiveUnixUserModules)) { + if (!in_array('posixAccount', $confActiveUserModules)) { $configContainer->add(new htmlResponsiveInputCheckbox('inetOrgPerson_hideUID', false, _('User name'), null, true), 12, 4); } else { @@ -3969,6 +4187,23 @@ class inetOrgPerson extends baseModule implements passwordService { return in_array('posixAccount', $modules); } + /** + * Returns if the Samba 3 module is also active. + * + * @param string[] $modules active account mdules + * @return boolean Samba 3 is active + */ + private function isSamba3Active($modules = null) { + if (!empty($modules)) { + return in_array('sambaSamAccount', $modules); + } + if ($this->getAccountContainer() == null) { + return false; + } + $modules = $this->getAccountContainer()->get_type()->getModules(); + return in_array('sambaSamAccount', $modules); + } + /** * {@inheritdoc} */