2003-12-12 00:52:35 +00:00
< ? php
/*
$Id $
This code is part of LDAP Account Manager ( http :// www . sourceforge . net / projects / lam )
Copyright ( C ) 2003 Tilo Lutz
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
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
2004-07-02 12:09:06 +00:00
/**
* Manages the atrributes of object class inetOrgPerson .
*
* @ package modules
* @ author Tilo Lutz
* @ author Roland Gruber
* @ author Michael Duergner
2003-12-12 00:52:35 +00:00
*/
2004-07-02 12:09:06 +00:00
/**
* This class contains all account LDAP attributes
* and funtioncs required to deal with inetOrgPerson .
*
* @ package modules
2003-12-12 00:52:35 +00:00
*/
2004-06-08 18:54:37 +00:00
class inetOrgPerson extends baseModule {
2004-06-13 19:58:58 +00:00
2004-06-24 09:51:12 +00:00
/**
2005-08-15 18:36:56 +00:00
* This function fills the message array .
2004-09-26 13:48:52 +00:00
**/
function load_Messages () {
2005-06-06 19:24:48 +00:00
$this -> messages [ 'host' ][ 0 ] = array ( 'ERROR' , _ ( 'Unix workstations' ), _ ( 'Unix workstations are invalid!' ));
$this -> messages [ 'host' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_hosts' , _ ( 'Unix workstations are invalid!' ));
2004-10-28 15:14:54 +00:00
$this -> messages [ 'givenName' ][ 0 ] = array ( 'ERROR' , _ ( 'First name' ), _ ( 'First name contains invalid characters!' ));
$this -> messages [ 'givenName' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_lastName' , _ ( 'First name contains invalid characters!' ));
$this -> messages [ 'lastname' ][ 0 ] = array ( 'ERROR' , _ ( 'Last name' ), _ ( 'Last name contains invalid characters!' ));
$this -> messages [ 'lastname' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_firstName' , _ ( 'Last name contains invalid characters!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'telephoneNumber' ][ 0 ] = array ( 'ERROR' , _ ( 'Telephone number' ), _ ( 'Please enter a valid telephone number!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'telephoneNumber' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_telephone' , _ ( 'Please enter a valid telephone number!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'mobileTelephone' ][ 0 ] = array ( 'ERROR' , _ ( 'Mobile number' ), _ ( 'Please enter a valid mobile number!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'mobileTelephone' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . " inetOrgPerson_mobile " , _ ( 'Please enter a valid mobile number!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'facsimileNumber' ][ 0 ] = array ( 'ERROR' , _ ( 'Fax number' ), _ ( 'Please enter a valid fax number!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'facsimileNumber' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_fax' , _ ( 'Please enter a valid fax number!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'email' ][ 0 ] = array ( 'ERROR' , _ ( 'eMail address' ), _ ( 'Please enter a valid eMail address!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'email' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_email' , _ ( 'Please enter a valid eMail address!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'street' ][ 0 ] = array ( 'ERROR' , _ ( 'Street' ), _ ( 'Please enter a valid street name!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'street' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_street' , _ ( 'Please enter a valid street name!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'postalAddress' ][ 0 ] = array ( 'ERROR' , _ ( 'Postal address' ), _ ( 'Please enter a valid postal address!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'postalAddress' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_address' , _ ( 'Please enter a valid postal address!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'postalCode' ][ 0 ] = array ( 'ERROR' , _ ( 'Postal code' ), _ ( 'Please enter a valid postal code!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'postalCode' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_postalCode' , _ ( 'Please enter a valid postal code!' ));
2004-11-07 12:56:55 +00:00
$this -> messages [ 'title' ][ 0 ] = array ( 'ERROR' , _ ( 'Job title' ), _ ( 'Please enter a valid job title!' ));
$this -> messages [ 'title' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_title' , _ ( 'Please enter a valid job title!' ));
2004-09-26 13:48:52 +00:00
$this -> messages [ 'employeeType' ][ 0 ] = array ( 'ERROR' , _ ( 'Employee type' ), _ ( 'Please enter a valid employee type!' ));
2004-10-23 11:11:31 +00:00
$this -> messages [ 'employeeType' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_type' , _ ( 'Please enter a valid employee type!' ));
2005-06-19 09:38:44 +00:00
$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 .-_ !' ));
2005-07-02 12:05:33 +00:00
$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!' ));
2005-08-15 18:36:56 +00:00
$this -> messages [ 'userPassword' ][ 0 ] = array ( 'ERROR' , _ ( 'Password' ), _ ( 'Please enter the same password in both password fields.' ));
$this -> messages [ 'userPassword' ][ 1 ] = array ( 'ERROR' , _ ( 'Password' ), _ ( 'Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !' ));
$this -> messages [ 'userPassword' ][ 2 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' posixAccount_password' , _ ( 'Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !' ));
2004-09-26 13:48:52 +00:00
}
2004-06-13 19:58:58 +00:00
/**
* Returns meta data that is interpreted by parent class
*
* @ return array array with meta data
*/
function get_metaData () {
$return = array ();
// manages user accounts
$return [ " account_types " ] = array ( " user " );
2004-06-14 16:05:36 +00:00
// alias name
$return [ " alias " ] = _ ( 'Personal' );
2005-01-10 10:41:38 +00:00
// this is a base module
$return [ " is_base " ] = true ;
2004-10-06 18:17:22 +00:00
// RDN attribute
$return [ " RDN " ] = array ( " cn " => " low " );
2005-06-19 09:38:44 +00:00
// LDAP filter
$return [ " ldap_filter " ] = array ( 'or' => " (objectClass=inetOrgPerson) " );
2004-06-20 17:32:02 +00:00
// module dependencies
2005-06-19 09:38:44 +00:00
$return [ 'dependencies' ] = array ( 'depends' => array (), 'conflicts' => array ());
2004-07-01 15:54:33 +00:00
// profile elements
$return [ 'profile_options' ] = array (
array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Job title' ) . " : " ),
1 => array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_title' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
2004-11-14 13:51:49 +00:00
2 => array ( 'kind' => 'help' , 'value' => 'title' )),
2004-07-01 15:54:33 +00:00
array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Employee type' ) . " : " ),
1 => array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_employeeType' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
2004-11-14 13:51:49 +00:00
2 => array ( 'kind' => 'help' , 'value' => 'employeeType' ))
2004-07-01 15:54:33 +00:00
);
// profile checks
2004-09-26 15:55:29 +00:00
$return [ 'profile_checks' ][ 'inetOrgPerson_title' ] = array (
'type' => 'ext_preg' ,
'regex' => 'title' ,
2004-09-26 13:48:52 +00:00
'error_message' => $this -> messages [ 'title' ][ 0 ]);
2004-09-26 15:55:29 +00:00
$return [ 'profile_checks' ][ 'inetOrgPerson_employeeType' ] = array (
'type' => 'ext_preg' ,
'regex' => 'employeeType' ,
'error_message' => $this -> messages [ 'employeeType' ][ 0 ]);
2005-01-16 12:41:38 +00:00
// profile mappings
$return [ 'profile_mappings' ] = array (
'inetOrgPerson_title' => 'title' ,
'inetOrgPerson_employeeType' => 'employeeType'
);
// upload fields
2004-10-11 18:06:53 +00:00
$return [ 'upload_columns' ] = array (
array (
'name' => 'inetOrgPerson_firstName' ,
2004-10-23 11:11:31 +00:00
'description' => _ ( 'First name' ),
2004-10-11 18:06:53 +00:00
'help' => 'givenName' ,
'example' => _ ( 'Steve' )
),
array (
'name' => 'inetOrgPerson_lastName' ,
2004-10-23 11:11:31 +00:00
'description' => _ ( 'Last name' ),
2004-10-11 18:06:53 +00:00
'help' => 'sn' ,
'example' => _ ( 'Miller' ),
'required' => true
),
array (
'name' => 'inetOrgPerson_description' ,
2004-10-23 09:52:59 +00:00
'description' => _ ( 'Description' ),
2004-10-11 18:06:53 +00:00
'help' => 'description' ,
'example' => _ ( 'Temp, contract until december' )
),
array (
'name' => 'inetOrgPerson_title' ,
'description' => _ ( 'Job title' ),
'help' => 'title' ,
'example' => _ ( 'President' )
),
array (
'name' => 'inetOrgPerson_type' ,
'description' => _ ( 'Employee type' ),
'help' => 'employeeType' ,
2004-11-07 12:56:55 +00:00
'example' => _ ( 'Temp' )
2004-10-11 18:06:53 +00:00
),
array (
2005-07-02 12:05:33 +00:00
'name' => 'inetOrgPerson_manager' ,
'description' => _ ( 'Manager' ),
'help' => 'manager' ,
'example' => 'uid=smiller,ou=People,dc=company,dc=com'
),
array (
2004-10-11 18:06:53 +00:00
'name' => 'inetOrgPerson_street' ,
'description' => _ ( 'Street' ),
'help' => 'street' ,
'example' => _ ( 'Mystreetname 42' )
),
array (
'name' => 'inetOrgPerson_postalCode' ,
'description' => _ ( 'Postal code' ),
'help' => 'postalCode' ,
2004-10-23 09:52:59 +00:00
'example' => '12345'
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_address' ,
'description' => _ ( 'Postal address' ),
'help' => 'postalAddress' ,
'example' => _ ( 'Mycity' )
),
array (
2005-07-02 12:05:33 +00:00
'name' => 'inetOrgPerson_postOfficeBox' ,
'description' => _ ( 'Post office box' ),
'help' => 'postOfficeBox' ,
'example' => '12345'
),
array (
2004-10-11 18:06:53 +00:00
'name' => 'inetOrgPerson_telephone' ,
'description' => _ ( 'Telephone number' ),
'help' => 'telephoneNumber' ,
2004-10-23 09:52:59 +00:00
'example' => '123-123-1234'
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_mobile' ,
'description' => _ ( 'Mobile number' ),
'help' => 'mobileTelephoneNumber' ,
2004-10-23 09:52:59 +00:00
'example' => '123-123-1234'
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_fax' ,
'description' => _ ( 'Fax number' ),
'help' => 'facsimileTelephoneNumber' ,
2004-10-23 09:52:59 +00:00
'example' => '123-123-1234'
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_email' ,
'description' => _ ( 'eMail address' ),
'help' => 'mail' ,
'example' => _ ( 'user@company.com' )
)
);
2005-06-19 09:38:44 +00:00
// cn and uid for upload (only if posixAccount is not loaded)
if ( $_SESSION [ 'loggedIn' ]) {
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
$return [ 'upload_columns' ][] = array (
'name' => 'inetOrgPerson_cn' ,
'description' => _ ( 'Common name' ),
'help' => 'cn' ,
'example' => _ ( 'Steve Miller' ),
'default' => '<i><inetOrgPerson_firstName> <inetOrgPerson_lastName></i>'
);
$return [ 'upload_columns' ][] = array (
'name' => 'inetOrgPerson_userName' ,
'description' => _ ( 'User name' ),
'help' => 'uid' ,
'example' => _ ( 'smiller' ),
'unique' => true ,
'required' => true
);
}
}
2005-06-06 19:24:48 +00:00
// Unix workstations for upload
2005-07-05 12:48:15 +00:00
if ( $_SESSION [ 'loggedIn' ] && $_SESSION [ 'ldap' ] -> supports_unix_hosts ) {
2005-06-06 19:24:48 +00:00
$return [ 'upload_columns' ][] = array (
'name' => 'inetOrgPerson_hosts' ,
'description' => _ ( 'Unix workstations' ),
'help' => 'workstations' ,
'example' => _ ( 'pc01,pc02' )
);
}
2004-08-17 15:16:17 +00:00
// available PDF fields
2004-10-30 16:46:06 +00:00
$return [ 'PDF_fields' ] = array (
'description' ,
'host' ,
'givenName' ,
'sn' ,
2005-07-02 12:05:33 +00:00
'title' ,
2004-10-30 16:46:06 +00:00
'employeeType' ,
2005-07-02 12:05:33 +00:00
'manager' ,
2004-10-30 16:46:06 +00:00
'street' ,
2005-07-02 12:05:33 +00:00
'postOfficeBox' ,
2004-10-30 16:46:06 +00:00
'postalCode' ,
'postalAddress' ,
'telephoneNumber' ,
'mobileTelephoneNumber' ,
2005-06-19 09:38:44 +00:00
'facimilieTelephoneNumber' ,
2004-10-30 16:46:06 +00:00
'mail'
);
2005-06-19 09:38:44 +00:00
if ( $_SESSION [ 'loggedIn' ]) {
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
$return [ 'PDF_fields' ][] = 'uid' ;
$return [ 'PDF_fields' ][] = 'cn' ;
}
}
2004-09-08 17:39:06 +00:00
// help Entries
2004-10-28 15:14:54 +00:00
$return [ 'help' ] = array (
2004-10-30 16:46:06 +00:00
'user' => array (
'description' => array (
2005-06-02 20:30:18 +00:00
" Headline " => _ ( " Description " ),
2004-10-30 16:46:06 +00:00
" Text " => _ ( " User description. If left empty sur- and give name will be used. " )
),
'title' => array (
2004-11-07 12:56:55 +00:00
" Headline " => _ ( " Job title " ),
" Text " => _ ( " Job title of user: President, department manager, ... " )
2004-10-30 16:46:06 +00:00
),
'givenName' => array (
2004-11-06 13:05:34 +00:00
" Headline " => _ ( " First name " ),
" Text " => _ ( " First name of user. Only letters, - and spaces are allowed. " )
2004-10-30 16:46:06 +00:00
),
'sn' => array (
2004-11-06 13:05:34 +00:00
" Headline " => _ ( " Last name " ),
" Text " => _ ( " Last name of user. Only letters, - and spaces are allowed. " )
2004-10-30 16:46:06 +00:00
),
'employeeType' => array (
" Headline " => _ ( " Employee type " ),
2004-11-07 12:56:55 +00:00
" Text " => _ ( " Employee type: Contractor, Employee, Intern, Temp, External, ... " )
2004-10-30 16:46:06 +00:00
),
2005-07-02 12:05:33 +00:00
'manager' => array (
" Headline " => _ ( " Manager " ),
" Text " => _ ( " This is the LDAP DN of the user's manager. Use this property to represent hierarchies in your company. " )
),
2004-10-30 16:46:06 +00:00
'street' => array (
" Headline " => _ ( " Street " ),
" Text " => _ ( " Street " )
),
2005-07-02 12:05:33 +00:00
'postOfficeBox' => array (
" Headline " => _ ( " Post office box " ),
" Text " => _ ( " Post office box " )
),
2004-10-30 16:46:06 +00:00
'postalCode' => array (
" Headline " => _ ( " Postal code " ),
" Text " => _ ( " Postal code " )
),
'postalAddress' => array (
" Headline " => _ ( " Postal address " ),
" Text " => _ ( " Postal address, city " )
),
'telephoneNumber' => array (
" Headline " => _ ( " Telephone number " ),
" Text " => _ ( " Telephone number " )
),
'mobileTelephoneNumber' => array (
" Headline " => _ ( " Mobile number " ),
" Text " => _ ( " Mobile number " )
),
'facsimileTelephoneNumber' => array (
" Headline " => _ ( " Fax number " ),
" Text " => _ ( " Fax number " )
),
'mail' => array (
" Headline " => _ ( " eMail address " ),
" Text " => _ ( " eMail address " )
2005-06-06 19:24:48 +00:00
),
2005-06-19 09:38:44 +00:00
'cn' => array (
" Headline " => _ ( " Common name " ),
" Text " => _ ( " This is the natural name of the user. If empty, the first and last name is used. " )
),
'uid' => array (
" Headline " => _ ( " User name " ),
" Text " => _ ( " User name of the user who should be created. Valid characters are: a-z,0-9, .-_. LAM does not allow a number as first character because useradd also does not allow it. LAM does not allow capital letters A-Z because it can cause several problems. If user name is already used user name will be expanded with a number. The next free number will be used. Warning: Older systems have problems with user names longer than 8 characters. You can not log in to Windows if user name is longer than 16 characters. " )
),
2005-06-06 19:24:48 +00:00
'workstations' => array (
" Headline " => _ ( " Unix workstations " ),
" Text " => _ ( " Please enter a comma separated list of host names where this user is allowed to log in. Can be left empty. " )
2005-08-15 18:36:56 +00:00
),
'userPassword' => array (
" Headline " => _ ( " Password " ),
" Text " => _ ( " Please enter the password which you want to set for this account. " )
2004-10-30 16:46:06 +00:00
)
)
);
2004-08-17 15:16:17 +00:00
2004-06-13 19:58:58 +00:00
return $return ;
}
2005-08-15 18:36:56 +00:00
/**
* This functions return true if all needed settings are done .
*
* @ return boolean true , if all is ok
2004-02-09 18:11:01 +00:00
*/
function module_complete () {
2005-08-26 08:53:16 +00:00
if ( ! $_SESSION [ $this -> base ] -> isNewAccount ) {
// check if account is based on our object class
$objectClasses = $_SESSION [ $this -> base ] -> attributes_orig [ 'objectClass' ];
if ( is_array ( $objectClasses ) && ! in_array ( 'inetOrgPerson' , $objectClasses )) {
return true ;
}
}
2004-02-09 18:11:01 +00:00
if ( $this -> attributes [ 'sn' ][ 0 ] == '' ) return false ;
return true ;
2005-08-15 18:36:56 +00:00
}
2004-02-09 18:11:01 +00:00
2005-08-26 08:53:16 +00:00
/**
* Controls if the module button the account page is visible and activated .
*
* @ return string status ( " enabled " , " disabled " , " hidden " )
*/
function getButtonStatus () {
if ( ! $_SESSION [ $this -> base ] -> isNewAccount ) {
// check if account is based on our object class
$objectClasses = $_SESSION [ $this -> base ] -> attributes_orig [ 'objectClass' ];
if ( is_array ( $objectClasses ) && ! in_array ( 'inetOrgPerson' , $objectClasses )) {
return " disabled " ;
}
}
return " enabled " ;
}
2003-12-27 11:21:00 +00:00
/* This function returns an array with 4 entries :
* array ( DN1 ( 'add' => array ( $attr ), 'remove' => array ( $attr ), 'modify' => array ( $attr ), 'lamdaemon' => array ( cmds )), DN2 .... )
2003-12-12 00:52:35 +00:00
* DN is the DN to change . It may be possible to change several DNs ,
* e . g . create a new user and add him to some groups via attribute memberUid
* add are attributes which have to be added to ldap entry
* remove are attributes which have to be removed from ldap entry
2003-12-27 11:21:00 +00:00
* lamdaemon are lamdaemon commands to modify homedir , quotas , ...
2003-12-12 00:52:35 +00:00
*/
function save_attributes () {
2005-08-26 08:53:16 +00:00
// skip saving if account is based on another structural object class
if ( ! $_SESSION [ $this -> base ] -> isNewAccount && ! in_array ( 'inetOrgPerson' , $_SESSION [ $this -> base ] -> attributes_orig [ 'objectClass' ])) {
return array ();
}
2005-08-16 12:04:09 +00:00
$return = $_SESSION [ $this -> base ] -> save_module_attributes ( $this -> attributes , $this -> orig );
// do not set password if posixAccount is active
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( in_array ( 'posixAccount' , $modules )) {
if ( isset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'modify' ][ 'userPassword' ])) {
unset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'modify' ][ 'userPassword' ]);
}
if ( isset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'add' ][ 'userPassword' ])) {
unset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'add' ][ 'userPassword' ]);
}
}
2005-11-12 10:18:54 +00:00
// postalAddress and facsimileTelephoneNumber need special removing
if ( isset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'remove' ][ 'postalAddress' ])) {
$return [ $_SESSION [ $this -> base ] -> dn ][ 'modify' ][ 'postalAddress' ] = array ();
unset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'remove' ][ 'postalAddress' ]);
}
if ( isset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'remove' ][ 'facsimileTelephoneNumber' ])) {
$return [ $_SESSION [ $this -> base ] -> dn ][ 'modify' ][ 'facsimileTelephoneNumber' ] = array ();
unset ( $return [ $_SESSION [ $this -> base ] -> dn ][ 'remove' ][ 'facsimileTelephoneNumber' ]);
}
2005-08-16 12:04:09 +00:00
return $return ;
2005-08-15 18:36:56 +00:00
}
2003-12-30 15:36:30 +00:00
2005-09-07 12:58:34 +00:00
/**
* Processes user input of the primary module page .
* It checks if all input values are correct and updates the associated LDAP attributes .
*
* @ param array $post HTTP - POST values
* @ return array list of info / error messages
*/
2005-03-10 18:35:04 +00:00
function process_attributes ( & $post ) {
2003-12-30 15:36:30 +00:00
// Load attributes
$this -> attributes [ 'description' ][ 0 ] = $post [ 'description' ];
$this -> attributes [ 'sn' ][ 0 ] = $post [ 'sn' ];
$this -> attributes [ 'givenName' ][ 0 ] = $post [ 'givenName' ];
$this -> attributes [ 'title' ][ 0 ] = $post [ 'title' ];
$this -> attributes [ 'mail' ][ 0 ] = $post [ 'mail' ];
$this -> attributes [ 'telephoneNumber' ][ 0 ] = $post [ 'telephoneNumber' ];
2005-09-27 12:54:44 +00:00
$this -> attributes [ 'mobile' ][ 0 ] = $post [ 'mobileTelephoneNumber' ];
2003-12-30 15:36:30 +00:00
$this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ] = $post [ 'facsimileTelephoneNumber' ];
$this -> attributes [ 'street' ][ 0 ] = $post [ 'street' ];
2005-07-02 12:05:33 +00:00
$this -> attributes [ 'postOfficeBox' ][ 0 ] = $post [ 'postOfficeBox' ];
2003-12-30 15:36:30 +00:00
$this -> attributes [ 'postalCode' ][ 0 ] = $post [ 'postalCode' ];
$this -> attributes [ 'postalAddress' ][ 0 ] = $post [ 'postalAddress' ];
$this -> attributes [ 'employeeType' ][ 0 ] = $post [ 'employeeType' ];
2005-07-02 12:05:33 +00:00
if ( $post [ 'manager' ] != '-' ) {
$this -> attributes [ 'manager' ][ 0 ] = $post [ 'manager' ];
}
else {
unset ( $this -> attributes [ 'manager' ][ 0 ]);
}
2003-12-30 15:36:30 +00:00
2005-06-19 09:38:44 +00:00
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
// uid
if ( ! get_preg ( $post [ 'userName' ], 'username' )) {
$triggered_messages [ 'uid' ][] = $this -> messages [ 'uid' ][ 0 ];
}
else {
$this -> attributes [ 'uid' ][ 0 ] = $post [ 'userName' ];
}
// cn
if ( $post [ 'cn' ] == '' ) {
if ( $post [ 'givenName' ] != '' ) {
$this -> attributes [ 'cn' ][ 0 ] = $post [ 'givenName' ] . " " . $post [ 'sn' ];
}
else {
$this -> attributes [ 'cn' ][ 0 ] = $post [ 'sn' ];
}
}
else {
$this -> attributes [ 'cn' ][ 0 ] = $post [ 'cn' ];
}
if ( ! get_preg ( $this -> attributes [ 'cn' ][ 0 ], 'cn' )) {
$triggered_messages [ 'cn' ][] = $this -> messages [ 'cn' ][ 0 ];
}
}
2003-12-30 15:36:30 +00:00
// handle host-attribute in on epice because it's not set by default
if ( isset ( $this -> attributes [ 'host' ])) {
$host = $post [ 'host' ];
2004-09-26 13:48:52 +00:00
if ( ! get_preg ( $host , 'unixhost' ))
2004-10-16 19:51:36 +00:00
$triggered_messages [ 'host' ][] = $this -> messages [ 'host' ][ 0 ];
2005-06-06 19:24:48 +00:00
$hosts = explode ( " , " , $host );
2003-12-30 15:36:30 +00:00
$this -> attributes [ 'host' ] = array ();
foreach ( $hosts as $host )
if ( $host != " " ) $this -> attributes [ 'host' ][] = $host ;
}
// Do some regex-checks and return error if attributes are set to wrong values
2005-04-16 10:45:39 +00:00
if (( $this -> attributes [ 'givenName' ][ 0 ] != '' ) && ! get_preg ( $this -> attributes [ 'givenName' ][ 0 ], 'realname' )) $triggered_messages [ 'givenName' ][] = $this -> messages [ 'givenName' ][ 0 ];
2004-10-28 15:14:54 +00:00
if ( ! get_preg ( $this -> attributes [ 'sn' ][ 0 ], 'realname' )) $triggered_messages [ 'sn' ][] = $this -> messages [ 'lastname' ][ 0 ];
2004-10-16 19:51:36 +00:00
if ( ! get_preg ( $this -> attributes [ 'telephoneNumber' ][ 0 ], 'telephone' )) $triggered_messages [ 'telephoneNumber' ][] = $this -> messages [ 'telephoneNumber' ][ 0 ];
2005-09-27 12:54:44 +00:00
if ( ! get_preg ( $this -> attributes [ 'mobile' ][ 0 ], 'telephone' )) $triggered_messages [ 'mobileTelephoneNumber' ][] = $this -> messages [ 'mobileTelephone' ][ 0 ];
2004-10-16 19:51:36 +00:00
if ( ! get_preg ( $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ], 'telephone' )) $triggered_messages [ 'facsimileTelephoneNumber' ][] = $this -> messages [ 'facsimileNumber' ][ 0 ];
2005-04-16 10:45:39 +00:00
if (( $this -> attributes [ 'mail' ][ 0 ] != '' ) && ! get_preg ( $this -> attributes [ 'mail' ][ 0 ], 'email' )) $triggered_messages [ 'mail' ][] = $this -> messages [ 'email' ][ 0 ];
2004-10-16 19:51:36 +00:00
if ( ! get_preg ( $this -> attributes [ 'street' ][ 0 ], 'street' )) $triggered_messages [ 'street' ][] = $this -> messages [ 'street' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'postalAddress' ][ 0 ], 'postalAddress' )) $triggered_messages [ 'postalAdress' ][] = $this -> messages [ 'postalAddress' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'personal_postalCode' ][ 0 ], 'postalCode' )) $triggered_messages [ 'personal_postalCode' ][] = $this -> messages [ 'postalCode' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'title' ][ 0 ], 'title' )) $triggered_messages [ 'title' ][] = $this -> messages [ 'title' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'employeeType' ][ 0 ], 'employeeType' )) $triggered_messages [ 'employeeType' ][] = $this -> messages [ 'employeeType' ][ 0 ];
2005-08-15 18:36:56 +00:00
if ( $post [ 'userPassword' ]) {
if ( $post [ 'userPassword' ] != $post [ 'userPassword2' ]) {
$triggered_messages [ 'userPassword' ][] = $this -> messages [ 'userPassword' ][ 0 ];
}
else {
if ( ! get_preg ( $post [ 'userPassword' ], 'password' )) {
$triggered_messages [ 'userPassword' ][] = $this -> messages [ 'userPassword' ][ 1 ];
}
else {
$this -> attributes [ 'userPassword' ][ 0 ] = $post [ 'userPassword' ];
}
}
}
2003-12-30 15:36:30 +00:00
// Return error-messages
2004-10-16 19:51:36 +00:00
if ( is_array ( $triggered_messages )) return $triggered_messages ;
2003-12-12 00:52:35 +00:00
}
/* This function will create the html - page
* to show a page with all attributes .
* It will output a complete html - table
*/
2005-02-16 21:00:19 +00:00
function display_html_attributes ( & $post ) {
2005-06-19 09:38:44 +00:00
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'User name' ) . '*' ),
1 => array ( 'kind' => 'input' , 'name' => 'userName' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'uid' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'uid' ));
}
2005-04-16 10:45:39 +00:00
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'First name' ) ),
2004-10-16 19:51:36 +00:00
1 => array ( 'kind' => 'input' , 'name' => 'givenName' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'givenName' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'givenName' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Last name' ) . '*' ),
1 => array ( 'kind' => 'input' , 'name' => 'sn' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'sn' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'sn' ));
2005-06-19 09:38:44 +00:00
if ( ! in_array ( 'posixAccount' , $modules )) {
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Common name' ) . '*' ),
1 => array ( 'kind' => 'input' , 'name' => 'cn' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'cn' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'cn' ));
}
2005-07-02 12:05:33 +00:00
$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 )));
2005-08-15 18:36:56 +00:00
// password
if ( ! in_array ( 'posixAccount' , $modules )) {
// new account, show input fields
if ( $_SESSION [ $this -> base ] -> isNewAccount ) {
$return [] = array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'userPassword' , 'type' => 'password' , 'size' => '30' , 'maxlength' => '255' , 'value' => $this -> attributes [ 'userPassword' ][ 0 ]),
2 => array ( 'kind' => 'help' , 'value' => 'userPassword' ));
$return [] = array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Repeat password' )),
1 => array ( 'kind' => 'input' , 'name' => 'userPassword2' , 'type' => 'password' , 'size' => '30' , 'maxlength' => '255' , 'value' => $this -> attributes [ 'userPassword' ][ 0 ]),
2 => array ( 'kind' => 'text' , 'text' => '' ));
}
// old account, show button for password page
else {
$return [] = array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
2005-09-01 15:20:15 +00:00
1 => array ( 'kind' => 'input' , 'name' => 'form_subpage_inetOrgPerson_password_open' , 'type' => 'submit' , 'value' => _ ( 'Change password' )));
2005-08-15 18:36:56 +00:00
}
$return [] = array ( 0 => array ( 'kind' => 'text' , 'td' => array ( 'colspan' => 3 )));
}
2004-10-16 19:51:36 +00:00
$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' ));
2005-07-02 12:05:33 +00:00
$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' ));
2004-10-16 19:51:36 +00:00
$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 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'postalCode' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Postal address' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'postalAddress' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'postalAddress' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'postalAddress' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Telephone number' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'telephoneNumber' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'telephoneNumber' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'telephoneNumber' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Mobile number' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'mobileTelephoneNumber' , 'type' => 'text' , 'size' => '30' ,
2005-09-27 12:54:44 +00:00
'maxlength' => '255' , 'value' => $this -> attributes [ 'mobile' ][ 0 ] ),
2004-10-16 19:51:36 +00:00
2 => array ( 'kind' => 'help' , 'value' => 'mobileTelephoneNumber' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Fax number' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'facsimileTelephoneNumber' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'facsimileTelephoneNumber' ));
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'eMail address' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'mail' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $this -> attributes [ 'mail' ][ 0 ] ),
2 => array ( 'kind' => 'help' , 'value' => 'mail' ));
2005-07-02 12:05:33 +00:00
$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' ));
2005-06-19 09:38:44 +00:00
if ( isset ( $this -> attributes [ 'host' ])) {
if ( is_array ( $this -> attributes [ 'host' ])) {
$hostvalue .= implode ( " , " , $this -> attributes [ 'host' ]);
}
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Unix workstations' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'host' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $hostvalue ),
2 => array ( 'kind' => 'help' , 'value' => 'workstations' ));
2005-07-02 12:05:33 +00:00
}
// 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' ));
2004-01-18 12:52:52 +00:00
return $return ;
2003-12-12 00:52:35 +00:00
}
2005-08-15 18:36:56 +00:00
/**
* Sets a new password .
*
* @ param $post HTTP POST
*/
function process_password ( & $post ) {
2005-09-01 15:20:15 +00:00
if ( $post [ 'form_subpage_inetOrgPerson_attributes_back' ]) return ;
2005-08-15 18:36:56 +00:00
$messages = array ();
if ( $post [ 'userPassword' ] != $post [ 'userPassword2' ]) {
$messages [ 'userPassword' ][] = $this -> messages [ 'userPassword' ][ 0 ];
}
else {
if ( ! get_preg ( $post [ 'userPassword' ], 'password' )) {
$messages [ 'userPassword' ][] = $this -> messages [ 'userPassword' ][ 1 ];
}
else {
$this -> attributes [ 'userPassword' ][ 0 ] = $post [ 'userPassword' ];
}
2003-12-30 15:36:30 +00:00
}
2005-09-01 15:20:15 +00:00
return $messages ;
2005-08-15 18:36:56 +00:00
}
/**
* Displays the password changing dialog .
*
* @ param array $post HTTP - POST
* @ return array meta HTML code
*/
function display_html_password ( & $post ) {
$return [] = array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
1 => array ( 'kind' => 'input' , 'name' => 'userPassword' , 'type' => 'password' , 'size' => '20' , 'maxlength' => '255' , 'value' => " " ),
2 => array ( 'kind' => 'help' , 'value' => 'userPassword' ));
$return [] = array (
0 => array ( 'kind' => 'text' , 'text' => _ ( 'Repeat password' )),
1 => array ( 'kind' => 'input' , 'name' => 'userPassword2' , 'type' => 'password' , 'size' => '20' , 'maxlength' => '255' , 'value' => " " ));
$return [] = array (
0 => array ( 'kind' => 'table' , 'value' => array (
0 => array (
2005-09-01 15:20:15 +00:00
0 => array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Submit' ), 'name' => 'form_subpage_inetOrgPerson_attributes_submit' ),
1 => array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Back' ), 'name' => 'form_subpage_inetOrgPerson_attributes_back' ),
2005-08-15 18:36:56 +00:00
2 => array ( 'kind' => 'text' )))));
return $return ;
}
2004-03-09 12:03:39 +00:00
2005-10-09 18:05:32 +00:00
/**
* Returns the PDF entries for this module .
*
* @ return array list of possible PDF entries
*/
function get_pdfEntries () {
2005-06-19 09:38:44 +00:00
return array (
'inetOrgPerson_description' => array ( '<block><key>' . _ ( 'Description' ) . '</key><value>' . $this -> attributes [ 'description' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_host' => array ( '<block><key>' . _ ( 'Unix workstations' ) . '</key><value>' . $this -> attributes [ 'host' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_title' => array ( '<block><key>' . _ ( 'Job title' ) . '</key><value>' . $this -> attributes [ 'title' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_givenName' => array ( '<block><key>' . _ ( 'First name' ) . '</key><value>' . $this -> attributes [ 'givenName' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_sn' => array ( '<block><key>' . _ ( 'Last name' ) . '</key><value>' . $this -> attributes [ 'sn' ][ 0 ] . '</value></block>' ),
2005-06-28 15:58:22 +00:00
'inetOrgPerson_employeeType' => array ( '<block><key>' . _ ( 'Employee type' ) . '</key><value>' . $this -> attributes [ 'employeeType' ][ 0 ] . '</value></block>' ),
2005-07-02 12:05:33 +00:00
'inetOrgPerson_manager' => array ( '<block><key>' . _ ( 'Manager' ) . '</key><value>' . $this -> attributes [ 'manager' ][ 0 ] . '</value></block>' ),
2005-06-19 09:38:44 +00:00
'inetOrgPerson_street' => array ( '<block><key>' . _ ( 'Street' ) . '</key><value>' . $this -> attributes [ 'street' ][ 0 ] . '</value></block>' ),
2005-07-02 12:05:33 +00:00
'inetOrgPerson_postOfficeBox' => array ( '<block><key>' . _ ( 'Post office box' ) . '</key><value>' . $this -> attributes [ 'postOfficeBox' ][ 0 ] . '</value></block>' ),
2005-06-19 09:38:44 +00:00
'inetOrgPerson_postalCode' => array ( '<block><key>' . _ ( 'Postal code' ) . '</key><value>' . $this -> attributes [ 'postalCode' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_postalAddress' => array ( '<block><key>' . _ ( 'Postal address' ) . '</key><value>' . $this -> attributes [ 'postalAddress' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_telephoneNumber' => array ( '<block><key>' . _ ( 'Telephone number' ) . '</key><value>' . $this -> attributes [ 'telephoneNumber' ][ 0 ] . '</value></block>' ),
2005-09-27 12:54:44 +00:00
'inetOrgPerson_mobileTelephoneNumber' => array ( '<block><key>' . _ ( 'Mobile number' ) . '</key><value>' . $this -> attributes [ 'mobile' ][ 0 ] . '</value></block>' ),
2005-06-19 09:38:44 +00:00
'inetOrgPerson_facimileTelephoneNumber' => array ( '<block><key>' . _ ( 'Fax number' ) . '</key><value>' . $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_mail' => array ( '<block><key>' . _ ( 'eMail address' ) . '</key><value>' . $this -> attributes [ 'mail' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_cn' => array ( '<block><key>' . _ ( 'Common name' ) . '</key><value>' . $this -> attributes [ 'cn' ][ 0 ] . '</value></block>' ),
'inetOrgPerson_uid' => array ( '<block><key>' . _ ( 'User name' ) . '</key><value>' . $this -> attributes [ 'uid' ][ 0 ] . '</value></block>' ));
2004-05-24 21:39:57 +00:00
}
2004-03-14 17:33:05 +00:00
2004-10-11 18:06:53 +00:00
/**
* In this function the LDAP account is built up .
*
* @ param array $rawAccounts list of hash arrays ( name => value ) from user input
* @ param array $partialAccounts list of hash arrays ( name => value ) which are later added to LDAP
* @ param array $ids list of IDs for column position ( e . g . " posixAccount_uid " => 5 )
* @ return array list of error messages if any
*/
function build_uploadAccounts ( $rawAccounts , $ids , & $partialAccounts ) {
2004-10-16 19:51:36 +00:00
$triggered_messages = array ();
2004-10-11 18:06:53 +00:00
for ( $i = 0 ; $i < sizeof ( $rawAccounts ); $i ++ ) {
if ( ! in_array ( " inetOrgPerson " , $partialAccounts [ $i ][ 'objectClass' ])) $partialAccounts [ $i ][ 'objectClass' ][] = " inetOrgPerson " ;
// last name
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_lastName' ]], 'realname' )) {
$partialAccounts [ $i ][ 'sn' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_lastName' ]];
}
else {
2004-10-28 15:14:54 +00:00
$errMsg = $this -> messages [ 'lastname' ][ 1 ];
2004-10-11 18:06:53 +00:00
array_push ( $errMsg , array ( $i ));
2004-10-16 19:51:36 +00:00
$triggered_messages [] = $errMsg ;
2004-10-11 18:06:53 +00:00
}
// first name
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_firstName' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_firstName' ]], 'realname' )) {
$partialAccounts [ $i ][ 'givenName' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_firstName' ]];
}
else {
$errMsg = $this -> messages [ 'givenName' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// description
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_description' ]] != " " ) {
$partialAccounts [ $i ][ 'description' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_description' ]];
}
else {
if ( $partialAccounts [ $i ][ 'givenName' ] != " " ) {
$partialAccounts [ $i ][ 'description' ] = $partialAccounts [ $i ][ 'givenName' ] . " " . $partialAccounts [ $i ][ 'sn' ];
}
else {
$partialAccounts [ $i ][ 'description' ] = $partialAccounts [ $i ][ 'sn' ];
}
}
// title
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_title' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_title' ]], 'title' )) {
$partialAccounts [ $i ][ 'title' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_title' ]];
}
else {
$errMsg = $this -> messages [ 'title' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// employee type
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_type' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_type' ]], 'employeeType' )) {
$partialAccounts [ $i ][ 'employeeType' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_type' ]];
}
else {
$errMsg = $this -> messages [ 'employeeType' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
2005-07-02 12:05:33 +00:00
// 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 ;
}
}
2004-10-11 18:06:53 +00:00
// street
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_street' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_street' ]], 'street' )) {
$partialAccounts [ $i ][ 'street' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_street' ]];
}
else {
$errMsg = $this -> messages [ 'street' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
2005-07-02 12:05:33 +00:00
// post office box
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_postOfficeBox' ]] != " " ) {
$partialAccounts [ $i ][ 'postOfficeBox' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_postOfficeBox' ]];
}
2004-10-11 18:06:53 +00:00
// postal code
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_postalCode' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_postalCode' ]], 'postalCode' )) {
$partialAccounts [ $i ][ 'postalCode' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_postalCode' ]];
}
else {
$errMsg = $this -> messages [ 'postalCode' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// postal address
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_address' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_address' ]], 'postalAddress' )) {
$partialAccounts [ $i ][ 'postalAddress' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_address' ]];
}
else {
$errMsg = $this -> messages [ 'postalAddress' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// telephone
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_telephone' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_telephone' ]], 'telephone' )) {
$partialAccounts [ $i ][ 'telephoneNumber' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_telephone' ]];
}
else {
$errMsg = $this -> messages [ 'telephoneNumber' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// mobile
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_mobile' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_mobile' ]], 'telephone' )) {
2005-09-27 12:54:44 +00:00
$partialAccounts [ $i ][ 'mobile' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_mobile' ]];
2005-06-07 18:19:48 +00:00
}
else {
$errMsg = $this -> messages [ 'mobileTelephone' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// facsimile
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_fax' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_fax' ]], 'telephone' )) {
$partialAccounts [ $i ][ 'facsimileTelephoneNumber' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_fax' ]];
}
else {
$errMsg = $this -> messages [ 'facsimileNumber' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
// eMail
2005-06-07 18:19:48 +00:00
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_email' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_email' ]], 'email' )) {
$partialAccounts [ $i ][ 'mail' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_email' ]];
}
else {
$errMsg = $this -> messages [ 'email' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
2005-06-19 09:38:44 +00:00
// Unix workstations
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_hosts' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_hosts' ]], 'unixhost' )) {
$partialAccounts [ $i ][ 'host' ] = explode ( " , " , $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_hosts' ]]);
2004-10-11 18:06:53 +00:00
}
else {
2005-06-19 09:38:44 +00:00
$errMsg = $this -> messages [ 'host' ][ 1 ];
2004-10-11 18:06:53 +00:00
array_push ( $errMsg , array ( $i ));
2004-10-16 19:51:36 +00:00
$triggered_messages [] = $errMsg ;
2004-10-11 18:06:53 +00:00
}
}
2005-06-19 09:38:44 +00:00
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
// cn
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_cn' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_cn' ]], 'cn' )) {
$partialAccounts [ $i ][ 'cn' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_cn' ]];
}
else {
$errMsg = $this -> messages [ 'cn' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
2004-10-11 18:06:53 +00:00
}
else {
2005-06-19 09:38:44 +00:00
if ( $partialAccounts [ $i ][ 'givenName' ] != " " ) {
$partialAccounts [ $i ][ 'cn' ] = $partialAccounts [ $i ][ 'givenName' ] . " " . $partialAccounts [ $i ][ 'sn' ];
}
else {
$partialAccounts [ $i ][ 'cn' ] = $partialAccounts [ $i ][ 'sn' ];
}
2004-10-11 18:06:53 +00:00
}
2005-06-19 09:38:44 +00:00
// uid
// get list of existing users
2005-10-15 09:33:05 +00:00
$dnUsers = $_SESSION [ 'cache' ] -> get_cache ( 'uid' , 'inetOrgPerson' , 'user' );
2005-06-19 09:38:44 +00:00
$existingUsers = array ();
foreach ( $dnUsers as $dn ) {
$existingUsers [] = $dn [ 0 ];
}
if ( in_array ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_userName' ]], $existingUsers )) {
$errMsg = $this -> messages [ 'uid' ][ 3 ];
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
elseif ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_userName' ]], 'username' )) {
$partialAccounts [ $i ][ 'uid' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_userName' ]];
2005-06-06 19:24:48 +00:00
}
else {
2005-06-19 09:38:44 +00:00
$errMsg = $this -> messages [ 'uid' ][ 1 ];
2005-06-06 19:24:48 +00:00
array_push ( $errMsg , array ( $i ));
$triggered_messages [] = $errMsg ;
}
}
2004-10-11 18:06:53 +00:00
}
2004-10-16 19:51:36 +00:00
return $triggered_messages ;
2004-10-11 18:06:53 +00:00
}
2004-03-09 12:03:39 +00:00
}
2003-12-12 00:52:35 +00:00
?>