diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc index 87ba030e..52a95ce1 100644 --- a/lam/lib/modules/inetOrgPerson.inc +++ b/lam/lib/modules/inetOrgPerson.inc @@ -75,8 +75,9 @@ class inetOrgPerson extends baseModule { $this->messages['cn'][0] = array('ERROR', _('Common name'), _('Please enter a valid common name!')); $this->messages['cn'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_cn', _('Please enter a valid common name!')); $this->messages['uid'][0] = array('ERROR', _('User name'), _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][1] = array('ERROR', _('Account %s:') . ' posixAccount_userName', _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); - $this->messages['uid'][3] = array('ERROR', _('Account %s:') . ' posixAccount_userName', _('User name already exists!')); + $this->messages['uid'][1] = array('ERROR', _('Account %s:') . ' inetOrgPerson_userName', _('User name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !')); + $this->messages['uid'][3] = array('ERROR', _('Account %s:') . ' inetOrgPerson_userName', _('User name already exists!')); + $this->messages['manager'][0] = array('ERROR', _('Account %s:') . ' inetOrgPerson_manager', _('This is not a valid DN!')); } /** @@ -157,6 +158,12 @@ class inetOrgPerson extends baseModule { 'example' => _('Temp') ), array( + 'name' => 'inetOrgPerson_manager', + 'description' => _('Manager'), + 'help' => 'manager', + 'example' => 'uid=smiller,ou=People,dc=company,dc=com' + ), + array( 'name' => 'inetOrgPerson_street', 'description' => _('Street'), 'help' => 'street', @@ -175,6 +182,12 @@ class inetOrgPerson extends baseModule { 'example' => _('Mycity') ), array( + 'name' => 'inetOrgPerson_postOfficeBox', + 'description' => _('Post office box'), + 'help' => 'postOfficeBox', + 'example' => '12345' + ), + array( 'name' => 'inetOrgPerson_telephone', 'description' => _('Telephone number'), 'help' => 'telephoneNumber', @@ -233,11 +246,13 @@ class inetOrgPerson extends baseModule { $return['PDF_fields'] = array( 'description', 'host', - 'title', 'givenName', 'sn', + 'title', 'employeeType', + 'manager', 'street', + 'postOfficeBox', 'postalCode', 'postalAddress', 'telephoneNumber', @@ -275,10 +290,18 @@ class inetOrgPerson extends baseModule { "Headline" => _("Employee type"), "Text" => _("Employee type: Contractor, Employee, Intern, Temp, External, ...") ), + 'manager' => array ( + "Headline" => _("Manager"), + "Text" => _("This is the LDAP DN of the user's manager. Use this property to represent hierarchies in your company.") + ), 'street' => array ( "Headline" => _("Street"), "Text" => _("Street") ), + 'postOfficeBox' => array ( + "Headline" => _("Post office box"), + "Text" => _("Post office box") + ), 'postalCode' => array ( "Headline" => _("Postal code"), "Text" => _("Postal code") @@ -394,9 +417,16 @@ class inetOrgPerson extends baseModule { $this->attributes['mobileTelephoneNumber'][0] = $post['mobileTelephoneNumber']; $this->attributes['facsimileTelephoneNumber'][0] = $post['facsimileTelephoneNumber']; $this->attributes['street'][0] = $post['street']; + $this->attributes['postOfficeBox'][0] = $post['postOfficeBox']; $this->attributes['postalCode'][0] = $post['postalCode']; $this->attributes['postalAddress'][0] = $post['postalAddress']; $this->attributes['employeeType'][0] = $post['employeeType']; + if ($post['manager'] != '-') { + $this->attributes['manager'][0] = $post['manager']; + } + else { + unset($this->attributes['manager'][0]); + } $modules = $_SESSION['config']->get_AccountModules($this->get_scope()); if (!in_array('posixAccount', $modules)) { @@ -477,18 +507,21 @@ class inetOrgPerson extends baseModule { 'maxlength' => '255', 'value' => $this->attributes['cn'][0] ), 2 => array ('kind' => 'help', 'value' => 'cn')); } - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Job title') ), - 1 => array ( 'kind' => 'input', 'name' => 'title', 'type' => 'text', 'size' => '30', - 'value' => $this->attributes['title'][0] ), - 2 => array ('kind' => 'help', 'value' => 'title')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Employee type') ), - 1 => array ( 'kind' => 'input', 'name' => 'employeeType', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['employeeType'][0] ), - 2 => array ('kind' => 'help', 'value' => 'employeeType')); + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Description') ), + 1 => array ( 'kind' => 'input', 'name' => 'description', 'type' => 'text', 'size' => '30', + 'maxlength' => '255', 'value' => $this->attributes['description'][0] ), + 2 => array ('kind' => 'help', 'value' => 'description')); + + $return[] = array(0 => array('kind' => 'text', 'td' => array('colspan' => 3))); + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Street') ), 1 => array ( 'kind' => 'input', 'name' => 'street', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['street'][0] ), 2 => array ('kind' => 'help', 'value' => 'street')); + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Post office box') ), + 1 => array ( 'kind' => 'input', 'name' => 'postOfficeBox', 'type' => 'text', 'size' => '30', + 'maxlength' => '255', 'value' => $this->attributes['postOfficeBox'][0] ), + 2 => array ('kind' => 'help', 'value' => 'postOfficeBox')); $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Postal code') ), 1 => array ( 'kind' => 'input', 'name' => 'postalCode', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['postalCode'][0] ), @@ -513,10 +546,17 @@ class inetOrgPerson extends baseModule { 1 => array ( 'kind' => 'input', 'name' => 'mail', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['mail'][0] ), 2 => array ('kind' => 'help', 'value' => 'mail')); - $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Description') ), - 1 => array ( 'kind' => 'input', 'name' => 'description', 'type' => 'text', 'size' => '30', - 'maxlength' => '255', 'value' => $this->attributes['description'][0] ), - 2 => array ('kind' => 'help', 'value' => 'description')); + + $return[] = array(0 => array('kind' => 'text', 'td' => array('colspan' => 3))); + + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Job title') ), + 1 => array ( 'kind' => 'input', 'name' => 'title', 'type' => 'text', 'size' => '30', + 'value' => $this->attributes['title'][0] ), + 2 => array ('kind' => 'help', 'value' => 'title')); + $return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Employee type') ), + 1 => array ( 'kind' => 'input', 'name' => 'employeeType', 'type' => 'text', 'size' => '30', + 'maxlength' => '255', 'value' => $this->attributes['employeeType'][0] ), + 2 => array ('kind' => 'help', 'value' => 'employeeType')); if (isset($this->attributes['host'])) { if (is_array($this->attributes['host'])) { $hostvalue .= implode(",", $this->attributes['host']); @@ -525,7 +565,25 @@ class inetOrgPerson extends baseModule { 1 => array ( 'kind' => 'input', 'name' => 'host', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $hostvalue ), 2 => array ('kind' => 'help', 'value' => 'workstations')); - } + } + // get list of existing users for manager attribute + $dnUsers = $_SESSION['cache']->get_cache('uid', 'inetOrgPerson', 'user'); + if (!is_array($dnUsers)) $dnUsers = array(); + $dnUsers = array_keys($dnUsers); + usort($dnUsers, array($_SESSION['ldap'], 'cmp_array')); + array_unshift($dnUsers, '-'); + $optionsSelected = array(); + if ($this->attributes['manager'][0]) { + $optionsSelected[] = $this->attributes['manager'][0]; + } + else { + $optionsSelected[] = '-'; + } + $return[] = array( + 0 => array('kind' => 'text', 'text' => _('Manager')), + 1 => array('kind' => 'select', 'name' => 'manager', 'size' => '1', + 'options' => $dnUsers, 'options_selected' => $optionsSelected), + 2 => array('kind' => 'help', 'value' => 'manager')); return $return; } @@ -545,7 +603,9 @@ class inetOrgPerson extends baseModule { 'inetOrgPerson_givenName' => array('' . _('First name') . '' . $this->attributes['givenName'][0] . ''), 'inetOrgPerson_sn' => array('' . _('Last name') . '' . $this->attributes['sn'][0] . ''), 'inetOrgPerson_employeeType' => array('' . _('Employee type') . '' . $this->attributes['employeeType'][0] . ''), + 'inetOrgPerson_manager' => array('' . _('Manager') . '' . $this->attributes['manager'][0] . ''), 'inetOrgPerson_street' => array('' . _('Street') . '' . $this->attributes['street'][0] . ''), + 'inetOrgPerson_postOfficeBox' => array('' . _('Post office box') . '' . $this->attributes['postOfficeBox'][0] . ''), 'inetOrgPerson_postalCode' => array('' . _('Postal code') . '' . $this->attributes['postalCode'][0] . ''), 'inetOrgPerson_postalAddress' => array('' . _('Postal address') . '' . $this->attributes['postalAddress'][0] . ''), 'inetOrgPerson_telephoneNumber' => array('' . _('Telephone number') . '' . $this->attributes['telephoneNumber'][0] . ''), @@ -622,6 +682,17 @@ class inetOrgPerson extends baseModule { $triggered_messages[] = $errMsg; } } + // manager + if ($rawAccounts[$i][$ids['inetOrgPerson_manager']] != "") { + if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_manager']], 'dn')) { + $partialAccounts[$i]['manager'] = $rawAccounts[$i][$ids['inetOrgPerson_manager']]; + } + else { + $errMsg = $this->messages['manager'][0]; + array_push($errMsg, array($i)); + $triggered_messages[] = $errMsg; + } + } // street if ($rawAccounts[$i][$ids['inetOrgPerson_street']] != "") { if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_street']], 'street')) { @@ -633,6 +704,10 @@ class inetOrgPerson extends baseModule { $triggered_messages[] = $errMsg; } } + // post office box + if ($rawAccounts[$i][$ids['inetOrgPerson_postOfficeBox']] != "") { + $partialAccounts[$i]['postOfficeBox'] = $rawAccounts[$i][$ids['inetOrgPerson_postOfficeBox']]; + } // postal code if ($rawAccounts[$i][$ids['inetOrgPerson_postalCode']] != "") { if (get_preg($rawAccounts[$i][$ids['inetOrgPerson_postalCode']], 'postalCode')) {