2003-12-12 00:52:35 +00:00
< ? php
/*
$Id $
This code is part of LDAP Account Manager ( http :// www . sourceforge . net / projects / lam )
2006-03-03 17:30:35 +00:00
Copyright ( C ) 2003 - 2006 Tilo Lutz
2008-03-27 19:57:42 +00:00
2005 - 2008 Roland Gruber
2003-12-12 00:52:35 +00:00
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
/**
2007-06-24 17:54:23 +00:00
* This module manages LDAP attributes of the object class inetOrgPerson ( e . g . name and address ) .
2004-07-02 12:09:06 +00:00
*
* @ package modules
2003-12-12 00:52:35 +00:00
*/
2004-06-08 18:54:37 +00:00
class inetOrgPerson extends baseModule {
2007-11-14 13:07:11 +00:00
private static $unix_hosts_supported = 'unknown' ;
/**
* Returns if the host attribute is supported by the schema .
*
* @ return boolean true if supported
*/
private function supportUnixHosts () {
if ( inetOrgPerson :: $unix_hosts_supported === 'unknown' ) {
inetOrgPerson :: $unix_hosts_supported = 'no' ;
get_schema_objectclasses ();
$classes = get_cached_schema ( 'objectclasses' );
if ( isset ( $classes [ 'inetorgperson' ])) {
$mayAttrs = $classes [ 'inetorgperson' ] -> getMayAttrs ();
if ( is_array ( $mayAttrs )) {
for ( $i = 0 ; $i < sizeof ( $mayAttrs ); $i ++ ) {
if ( $mayAttrs [ $i ] -> getName () === 'host' ) {
inetOrgPerson :: $unix_hosts_supported = 'yes' ;
break ;
}
}
}
}
}
return ( inetOrgPerson :: $unix_hosts_supported === 'yes' );
}
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!' ));
2006-07-23 15:06:49 +00:00
$this -> messages [ 'lastname' ][ 0 ] = array ( 'ERROR' , _ ( 'Last name' ), _ ( 'Last name contains invalid characters or is empty!' ));
$this -> messages [ 'lastname' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_firstName' , _ ( 'Last name contains invalid characters or is empty!' ));
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!' ));
2007-06-11 18:19:05 +00:00
$this -> messages [ 'homePhone' ][ 0 ] = array ( 'ERROR' , _ ( 'Home telephone number' ), _ ( 'Please enter a valid telephone number!' ));
$this -> messages [ 'homePhone' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_homePhone' , _ ( '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.' ));
2007-05-03 19:28:12 +00:00
$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 #*,.;:_-+!%&/|?{[()]}=@$ !' ));
2005-12-05 14:45:01 +00:00
$this -> messages [ 'photo' ][ 0 ] = array ( 'ERROR' , _ ( 'No file selected.' ));
2007-06-11 18:19:05 +00:00
$this -> messages [ 'businessCategory' ][ 0 ] = array ( 'ERROR' , _ ( 'Business category' ), _ ( 'Please enter a valid business category!' ));
$this -> messages [ 'businessCategory' ][ 1 ] = array ( 'ERROR' , _ ( 'Account %s:' ) . ' inetOrgPerson_businessCategory' , _ ( 'Please enter a valid business category!' ));
2006-08-13 12:58:19 +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
2008-02-03 14:28:28 +00:00
*
* @ see baseModule :: get_metaData ()
2004-06-13 19:58:58 +00:00
*/
function get_metaData () {
$return = array ();
2007-11-19 18:42:03 +00:00
// icon
$return [ 'icon' ] = 'uid.png' ;
2004-06-13 19:58:58 +00:00
// 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
2007-07-03 15:43:52 +00:00
$return [ " RDN " ] = array ( " cn " => " normal " , 'uid' => '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 ());
2006-04-05 15:48:27 +00:00
// managed object classes
$return [ 'objectClasses' ] = array ( 'inetOrgPerson' );
2006-05-01 16:13:10 +00:00
// LDAP aliases
$return [ 'LDAPaliases' ] = array ( 'commonName' => 'cn' , 'surname' => 'sn' , 'streetAddress' => 'street' ,
'fax' => 'facsimileTelephoneNumber' , 'gn' => 'givenName' , 'userid' => 'uid' , 'rfc822Mailbox' => 'mail' ,
'mobileTelephoneNumber' => 'mobile' );
2006-05-13 08:55:31 +00:00
// managed attributes
$return [ 'attributes' ] = array ( 'uid' , 'cn' , 'employeeType' , 'givenName' , 'jpegPhoto' , 'mail' , 'manager' , 'mobile' ,
2007-12-29 11:02:57 +00:00
'title' , 'telephoneNumber' , 'facsimileTelephoneNumber' , 'street' , 'postOfficeBox' , 'postalCode' , 'postalAddress' ,
2008-02-09 18:01:29 +00:00
'sn' , 'userPassword' , 'description' , 'homePhone' , 'roomNumber' , 'businessCategory' , 'l' , 'st' , 'physicalDeliveryOfficeName' ,
'carLicense' );
2008-05-15 17:32:59 +00:00
if ( isset ( $_SESSION [ 'loggedIn' ]) && ( $_SESSION [ 'loggedIn' ] === true ) && $this -> supportUnixHosts ()) {
2007-12-29 11:02:57 +00:00
$return [ 'attributes' ][] = 'host' ;
}
2006-06-28 15:13:57 +00:00
// self service search attributes
$return [ 'selfServiceSearchAttributes' ] = array ( 'uid' , 'mail' , 'cn' , 'surname' , 'givenName' );
2006-07-16 17:15:37 +00:00
// self service field settings
$return [ 'selfServiceFieldSettings' ] = array ( 'firstName' => _ ( 'First name' ), 'lastName' => _ ( 'Last name' ),
'mail' => _ ( 'eMail address' ), 'telephoneNumber' => _ ( 'Telephone number' ), 'mobile' => _ ( 'Mobile number' ),
'faxNumber' => _ ( 'Fax number' ), 'street' => _ ( 'Street' ), 'postalAddress' => _ ( 'Postal address' ),
2007-06-11 18:19:05 +00:00
'postalCode' => _ ( 'Postal code' ), 'postOfficeBox' => _ ( 'Post office box' ), 'jpegPhoto' => _ ( 'Photo' ),
2008-02-09 18:01:29 +00:00
'homePhone' => _ ( 'Home telephone number' ), 'roomNumber' => _ ( 'Room number' ), 'carLicense' => _ ( 'Car license' ),
'location' => _ ( 'Location' ), 'state' => _ ( 'State' ), 'officeName' => _ ( 'Office name' ));
2004-07-01 15:54:33 +00:00
// profile elements
$return [ 'profile_options' ] = array (
2008-02-09 18:01:29 +00:00
array (
array ( 'kind' => 'text' , 'text' => _ ( 'Location' ) . " : " ),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_l' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
array ( 'kind' => 'help' , 'value' => 'l' )),
array (
array ( 'kind' => 'text' , 'text' => _ ( 'State' ) . " : " ),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_st' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
array ( 'kind' => 'help' , 'value' => 'st' )),
2004-07-01 15:54:33 +00:00
array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Job title' ) . " : " ),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_title' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
array ( 'kind' => 'help' , 'value' => 'title' )),
2004-07-01 15:54:33 +00:00
array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Employee type' ) . " : " ),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_employeeType' , 'type' => 'text' , 'size' => '30' , 'maxlength' => '255' ),
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 (
2008-02-09 18:01:29 +00:00
'inetOrgPerson_l' => 'l' ,
'inetOrgPerson_st' => 'st' ,
2005-01-16 12:41:38 +00:00
'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' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( 'uid=smiller,ou=People,dc=company,dc=com' )
2005-07-02 12:05:33 +00:00
),
array (
2007-06-11 18:19:05 +00:00
'name' => 'inetOrgPerson_businessCategory' ,
'description' => _ ( 'Business category' ),
'help' => 'businessCategory' ,
'example' => _ ( 'Administration' )
),
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' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( 'GB-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' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( '12345' )
2005-07-02 12:05:33 +00:00
),
array (
2004-10-11 18:06:53 +00:00
'name' => 'inetOrgPerson_telephone' ,
'description' => _ ( 'Telephone number' ),
'help' => 'telephoneNumber' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( '123-123-1234' )
2004-10-11 18:06:53 +00:00
),
array (
2007-06-11 18:19:05 +00:00
'name' => 'inetOrgPerson_homePhone' ,
'description' => _ ( 'Home telephone number' ),
'help' => 'homePhone' ,
'example' => _ ( '123-124-1234' )
),
array (
2004-10-11 18:06:53 +00:00
'name' => 'inetOrgPerson_mobile' ,
'description' => _ ( 'Mobile number' ),
'help' => 'mobileTelephoneNumber' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( '123-123-1235' )
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_fax' ,
'description' => _ ( 'Fax number' ),
'help' => 'facsimileTelephoneNumber' ,
2007-06-10 14:51:35 +00:00
'example' => _ ( '123-123-1236' )
2004-10-11 18:06:53 +00:00
),
array (
'name' => 'inetOrgPerson_email' ,
'description' => _ ( 'eMail address' ),
'help' => 'mail' ,
'example' => _ ( 'user@company.com' )
2007-06-11 18:19:05 +00:00
),
array (
'name' => 'inetOrgPerson_roomNumber' ,
'description' => _ ( 'Room number' ),
'help' => 'roomNumber' ,
'example' => 'A 2.24'
2008-02-09 18:01:29 +00:00
),
array (
'name' => 'inetOrgPerson_l' ,
'description' => _ ( 'Location' ),
'help' => 'l' ,
'example' => _ ( 'MyCity' )
),
array (
'name' => 'inetOrgPerson_st' ,
'description' => _ ( 'State' ),
'help' => 'st' ,
'example' => _ ( 'New York' )
),
array (
'name' => 'inetOrgPerson_carLicense' ,
'description' => _ ( 'Car license' ),
'help' => 'carLicense' ,
'example' => _ ( 'yes' )
),
array (
'name' => 'inetOrgPerson_physicalDeliveryOfficeName' ,
'description' => _ ( 'Office name' ),
'help' => 'physicalDeliveryOfficeName' ,
'example' => _ ( 'YourCompany, Human Resources' )
2004-10-11 18:06:53 +00:00
)
);
2005-06-19 09:38:44 +00:00
// cn and uid for upload (only if posixAccount is not loaded)
2008-05-15 17:32:59 +00:00
if ( isset ( $_SESSION [ 'loggedIn' ]) && ( $_SESSION [ 'loggedIn' ] === true )) {
2005-06-19 09:38:44 +00:00
$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
2008-05-15 17:32:59 +00:00
if ( isset ( $_SESSION [ 'loggedIn' ]) && ( $_SESSION [ 'loggedIn' ] === true )) {
2007-11-14 13:07:11 +00:00
if ( $this -> supportUnixHosts ()) {
$return [ 'upload_columns' ][] = array (
'name' => 'inetOrgPerson_hosts' ,
'description' => _ ( 'Unix workstations' ),
'help' => 'workstations' ,
'example' => _ ( 'pc01,pc02' )
);
}
2005-06-06 19:24:48 +00:00
}
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' ,
2007-06-11 18:19:05 +00:00
'mail' ,
'homePhone' ,
'roomNumber' ,
2008-02-09 18:01:29 +00:00
'businessCategory' ,
'location' ,
'state' ,
'carLicense' ,
'officeName'
2004-10-30 16:46:06 +00:00
);
2008-05-15 17:32:59 +00:00
if ( isset ( $_SESSION [ 'loggedIn' ]) && ( $_SESSION [ 'loggedIn' ] === true )) {
2005-06-19 09:38:44 +00:00
$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 (
2006-08-13 12:58:19 +00:00
'user' => array (
2004-10-30 16:46:06 +00:00
'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 " ),
2007-07-23 15:13:41 +00:00
" Text " => _ ( " User name of the user who should be created. Valid characters are: a-z,A-Z,0-9, .-_. LAM does not allow a number as first character because useradd also does not allow it. 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-19 09:38:44 +00:00
),
2005-06-06 19:24:48 +00:00
'workstations' => array (
" Headline " => _ ( " Unix workstations " ),
2006-05-05 10:28:23 +00:00
" Text " => _ ( " Please enter a comma separated list of host names where this user is allowed to log in. If you enable host restrictions for your servers then \" * \" means every host and an empty field means no host. " )
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. " )
2005-12-05 14:45:01 +00:00
),
'photoUpload' => array (
" Headline " => _ ( " Add photo " ),
" Text " => _ ( " Please select an image file to upload. It must be in JPG format (.jpg/.jpeg). " )
2007-06-11 18:19:05 +00:00
),
'homePhone' => array (
" Headline " => _ ( " Home telephone number " ),
" Text " => _ ( " Private telephone number " )
),
'roomNumber' => array (
" Headline " => _ ( " Room number " ),
" Text " => _ ( " The room number of the employee's office. " )
),
'businessCategory' => array (
" Headline " => _ ( " Business category " ),
" Text " => _ ( " Business category (e.g. Administration, IT-Services, Manangement, ...) " )
2008-02-09 18:01:29 +00:00
),
'l' => array (
" Headline " => _ ( " Location " ),
" Text " => _ ( " This describes the location of the user. " )
),
'st' => array (
" Headline " => _ ( " State " ),
" Text " => _ ( " The state where the user resides or works. " )
),
'carLicense' => array (
" Headline " => _ ( " Car license " ),
" Text " => _ ( " This can be used to specify if the user has a car license. " )
),
'physicalDeliveryOfficeName' => array (
" Headline " => _ ( " Office name " ),
" Text " => _ ( " The office name of the user (e.g. YourCompany, Human Resources). " )
2004-10-30 16:46:06 +00:00
)
)
);
2006-08-13 12:58:19 +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 () {
2007-10-03 18:02:10 +00:00
if ( ! $this -> getAccountContainer () -> isNewAccount ) {
2005-08-26 08:53:16 +00:00
// check if account is based on our object class
2007-10-03 18:02:10 +00:00
$objectClasses = $this -> getAccountContainer () -> attributes_orig [ 'objectClass' ];
2005-08-26 08:53:16 +00:00
if ( is_array ( $objectClasses ) && ! in_array ( 'inetOrgPerson' , $objectClasses )) {
return true ;
}
}
2006-05-01 16:13:10 +00:00
if ( ! isset ( $this -> attributes [ 'sn' ][ 0 ]) || ( $this -> attributes [ 'sn' ][ 0 ] == '' )) return false ;
2004-02-09 18:11:01 +00:00
return true ;
2006-08-13 12:58:19 +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 () {
2007-10-03 18:02:10 +00:00
if ( ! $this -> getAccountContainer () -> isNewAccount ) {
2005-08-26 08:53:16 +00:00
// check if account is based on our object class
2007-10-03 18:02:10 +00:00
$objectClasses = $this -> getAccountContainer () -> attributes_orig [ 'objectClass' ];
2005-08-26 08:53:16 +00:00
if ( is_array ( $objectClasses ) && ! in_array ( 'inetOrgPerson' , $objectClasses )) {
return " disabled " ;
}
}
return " enabled " ;
}
2007-11-03 14:17:19 +00:00
/**
* Returns a list of modifications which have to be made to the LDAP account .
*
* @ return array list of modifications
* < br > This function returns an array with 3 entries :
* < br > array ( DN1 ( 'add' => array ( $attr ), 'remove' => array ( $attr ), 'modify' => array ( $attr )), DN2 .... )
* < br > 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 )
* < br > " add " are attributes which have to be added to LDAP entry
* < br > " remove " are attributes which have to be removed from LDAP entry
* < br > " modify " are attributes which have to been modified in LDAP entry
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
2007-10-03 18:02:10 +00:00
if ( ! $this -> getAccountContainer () -> isNewAccount && ! in_array ( 'inetOrgPerson' , $this -> getAccountContainer () -> attributes_orig [ 'objectClass' ])) {
2005-08-26 08:53:16 +00:00
return array ();
}
2007-10-03 18:02:10 +00:00
$return = $this -> getAccountContainer () -> save_module_attributes ( $this -> attributes , $this -> orig );
2005-08-16 12:04:09 +00:00
// do not set password if posixAccount is active
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( in_array ( 'posixAccount' , $modules )) {
2007-10-03 18:02:10 +00:00
if ( isset ( $return [ $this -> getAccountContainer () -> dn ][ 'modify' ][ 'userPassword' ])) {
unset ( $return [ $this -> getAccountContainer () -> dn ][ 'modify' ][ 'userPassword' ]);
2005-08-16 12:04:09 +00:00
}
2007-10-03 18:02:10 +00:00
if ( isset ( $return [ $this -> getAccountContainer () -> dn ][ 'add' ][ 'userPassword' ])) {
unset ( $return [ $this -> getAccountContainer () -> dn ][ 'add' ][ 'userPassword' ]);
2005-08-16 12:04:09 +00:00
}
}
2005-12-05 14:45:01 +00:00
// postalAddress, facsimileTelephoneNumber and jpegPhoto need special removing
2007-10-03 18:02:10 +00:00
if ( isset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'postalAddress' ])) {
$return [ $this -> getAccountContainer () -> dn ][ 'modify' ][ 'postalAddress' ] = array ();
unset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'postalAddress' ]);
2005-11-12 10:18:54 +00:00
}
2007-10-03 18:02:10 +00:00
if ( isset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'facsimileTelephoneNumber' ])) {
$return [ $this -> getAccountContainer () -> dn ][ 'modify' ][ 'facsimileTelephoneNumber' ] = array ();
unset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'facsimileTelephoneNumber' ]);
2005-11-12 10:18:54 +00:00
}
2007-10-03 18:02:10 +00:00
if ( isset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'jpegPhoto' ])) {
$return [ $this -> getAccountContainer () -> dn ][ 'modify' ][ 'jpegPhoto' ] = array ();
unset ( $return [ $this -> getAccountContainer () -> dn ][ 'remove' ][ 'jpegPhoto' ]);
2005-12-05 14:45:01 +00:00
}
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 .
*
* @ return array list of info / error messages
*/
2006-08-13 12:58:19 +00:00
function process_attributes () {
2006-05-20 16:32:02 +00:00
$errors = array ();
2007-11-14 09:12:27 +00:00
// add parent object classes
if ( $this -> getAccountContainer () -> isNewAccount ) {
if ( ! in_array ( 'organizationalPerson' , $this -> attributes [ 'objectClass' ])) {
$this -> attributes [ 'objectClass' ][] = 'organizationalPerson' ;
}
if ( ! in_array ( 'person' , $this -> attributes [ 'objectClass' ])) {
$this -> attributes [ 'objectClass' ][] = 'person' ;
}
}
2003-12-30 15:36:30 +00:00
// Load attributes
2006-08-13 12:58:19 +00:00
$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' ];
$this -> attributes [ 'mobile' ][ 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' ];
2007-06-11 18:19:05 +00:00
$this -> attributes [ 'homePhone' ][ 0 ] = $_POST [ 'homePhone' ];
$this -> attributes [ 'roomNumber' ][ 0 ] = $_POST [ 'roomNumber' ];
$this -> attributes [ 'businessCategory' ][ 0 ] = $_POST [ 'businessCategory' ];
2008-02-09 18:01:29 +00:00
$this -> attributes [ 'l' ][ 0 ] = $_POST [ 'l' ];
$this -> attributes [ 'st' ][ 0 ] = $_POST [ 'st' ];
$this -> attributes [ 'carLicense' ][ 0 ] = $_POST [ 'carLicense' ];
$this -> attributes [ 'physicalDeliveryOfficeName' ][ 0 ] = $_POST [ 'physicalDeliveryOfficeName' ];
2006-08-13 12:58:19 +00:00
if ( $_POST [ 'manager' ] != '-' ) {
$this -> attributes [ 'manager' ][ 0 ] = $_POST [ 'manager' ];
2005-07-02 12:05:33 +00:00
}
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
2007-07-21 09:47:48 +00:00
if ( isset ( $_POST [ 'userName' ]) && ( $_POST [ 'userName' ] != '' )) {
if ( ! get_preg ( $_POST [ 'userName' ], 'username' )) {
$errors [] = $this -> messages [ 'uid' ][ 0 ];
}
else {
$this -> attributes [ 'uid' ][ 0 ] = $_POST [ 'userName' ];
}
2005-06-19 09:38:44 +00:00
}
// cn
2006-08-13 12:58:19 +00:00
if ( $_POST [ 'cn' ] == '' ) {
if ( $_POST [ 'givenName' ] != '' ) {
$this -> attributes [ 'cn' ][ 0 ] = $_POST [ 'givenName' ] . " " . $_POST [ 'sn' ];
2005-06-19 09:38:44 +00:00
}
else {
2006-08-13 12:58:19 +00:00
$this -> attributes [ 'cn' ][ 0 ] = $_POST [ 'sn' ];
2005-06-19 09:38:44 +00:00
}
}
else {
2006-08-13 12:58:19 +00:00
$this -> attributes [ 'cn' ][ 0 ] = $_POST [ 'cn' ];
2005-06-19 09:38:44 +00:00
}
if ( ! get_preg ( $this -> attributes [ 'cn' ][ 0 ], 'cn' )) {
2006-08-16 17:42:35 +00:00
$errors [] = $this -> messages [ 'cn' ][ 0 ];
2005-06-19 09:38:44 +00:00
}
}
2003-12-30 15:36:30 +00:00
// handle host-attribute in on epice because it's not set by default
2007-11-14 13:07:11 +00:00
if ( $this -> supportUnixHosts ()) {
2006-08-13 12:58:19 +00:00
$host = $_POST [ 'host' ];
2006-05-05 10:28:23 +00:00
if ( ! get_preg ( $host , 'unixhost' )) {
2006-08-16 17:42:35 +00:00
$errors [] = $this -> messages [ 'host' ][ 0 ];
2006-05-05 10:28:23 +00:00
}
2005-06-06 19:24:48 +00:00
$hosts = explode ( " , " , $host );
2003-12-30 15:36:30 +00:00
$this -> attributes [ 'host' ] = array ();
2006-05-13 08:55:31 +00:00
for ( $i = 0 ; $i < sizeof ( $hosts ); $i ++ ) {
2006-05-05 10:28:23 +00:00
if ( $hosts [ $i ] != " " ) {
$this -> attributes [ 'host' ][] = $hosts [ $i ];
}
2003-12-30 15:36:30 +00:00
}
2006-05-13 08:55:31 +00:00
}
2003-12-30 15:36:30 +00:00
// Do some regex-checks and return error if attributes are set to wrong values
2006-08-16 17:42:35 +00:00
if (( $this -> attributes [ 'givenName' ][ 0 ] != '' ) && ! get_preg ( $this -> attributes [ 'givenName' ][ 0 ], 'realname' )) $errors [] = $this -> messages [ 'givenName' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'sn' ][ 0 ], 'realname' )) $errors [] = $this -> messages [ 'lastname' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'telephoneNumber' ][ 0 ], 'telephone' )) $errors [] = $this -> messages [ 'telephoneNumber' ][ 0 ];
2007-06-11 18:19:05 +00:00
if ( ! get_preg ( $this -> attributes [ 'homePhone' ][ 0 ], 'telephone' )) $errors [] = $this -> messages [ 'homePhone' ][ 0 ];
2006-08-16 17:42:35 +00:00
if ( ! get_preg ( $this -> attributes [ 'mobile' ][ 0 ], 'telephone' )) $errors [] = $this -> messages [ 'mobileTelephone' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ], 'telephone' )) $errors [] = $this -> messages [ 'facsimileNumber' ][ 0 ];
if (( $this -> attributes [ 'mail' ][ 0 ] != '' ) && ! get_preg ( $this -> attributes [ 'mail' ][ 0 ], 'email' )) $errors [] = $this -> messages [ 'email' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'street' ][ 0 ], 'street' )) $errors [] = $this -> messages [ 'street' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'postalAddress' ][ 0 ], 'postalAddress' )) $errors [] = $this -> messages [ 'postalAddress' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'postalCode' ][ 0 ], 'postalCode' )) $errors [] = $this -> messages [ 'postalCode' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'title' ][ 0 ], 'title' )) $errors [] = $this -> messages [ 'title' ][ 0 ];
if ( ! get_preg ( $this -> attributes [ 'employeeType' ][ 0 ], 'employeeType' )) $errors [] = $this -> messages [ 'employeeType' ][ 0 ];
2007-06-11 18:19:05 +00:00
if ( ! get_preg ( $this -> attributes [ 'businessCategory' ][ 0 ], 'businessCategory' )) $errors [] = $this -> messages [ 'businessCategory' ][ 0 ];
2008-12-30 16:39:12 +00:00
if ( isset ( $_POST [ 'userPassword' ]) && ( $_POST [ 'userPassword' ] != '' )) {
2006-08-13 12:58:19 +00:00
if ( $_POST [ 'userPassword' ] != $_POST [ 'userPassword2' ]) {
2006-08-16 17:42:35 +00:00
$errors [] = $this -> messages [ 'userPassword' ][ 0 ];
2005-08-15 18:36:56 +00:00
}
else {
2006-08-13 12:58:19 +00:00
if ( ! get_preg ( $_POST [ 'userPassword' ], 'password' )) {
2006-08-16 17:42:35 +00:00
$errors [] = $this -> messages [ 'userPassword' ][ 1 ];
2005-08-15 18:36:56 +00:00
}
else {
2008-02-14 17:37:02 +00:00
$pwdPolicyResult = checkPasswordStrength ( $_POST [ 'userPassword' ]);
if ( $pwdPolicyResult === true ) {
$this -> attributes [ 'userPassword' ][ 0 ] = pwd_hash ( $_POST [ 'userPassword' ], true , 'SSHA' );
}
else {
$errors [] = array ( 'ERROR' , $pwdPolicyResult );
}
2005-08-15 18:36:56 +00:00
}
}
}
2008-04-24 18:50:02 +00:00
if ( isset ( $_POST [ 'delPhoto' ])) {
$this -> attributes [ 'jpegPhoto' ] = array ();
}
2003-12-30 15:36:30 +00:00
// Return error-messages
2006-05-20 16:32:02 +00:00
return $errors ;
2006-01-23 19:26:16 +00:00
}
2003-12-12 00:52:35 +00:00
2007-06-24 17:54:23 +00:00
/**
* Returns the HTML meta data for the main account page .
*
* @ return array HTML meta data
*/
2006-08-13 12:58:19 +00:00
function display_html_attributes () {
2005-06-19 09:38:44 +00:00
$modules = $_SESSION [ 'config' ] -> get_AccountModules ( $this -> get_scope ());
if ( ! in_array ( 'posixAccount' , $modules )) {
2006-05-01 16:13:10 +00:00
$uid = '' ;
if ( isset ( $this -> attributes [ 'uid' ][ 0 ])) $uid = $this -> attributes [ 'uid' ][ 0 ];
2008-12-17 17:14:28 +00:00
$return [] = array ( array ( 'kind' => 'text' , 'text' => _ ( 'User name' )),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'input' , 'name' => 'userName' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $uid ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'uid' ));
2005-06-19 09:38:44 +00:00
}
2006-05-01 16:13:10 +00:00
$firstName = '' ;
if ( isset ( $this -> attributes [ 'givenName' ][ 0 ])) $firstName = $this -> attributes [ 'givenName' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'First name' )),
array ( 'kind' => 'input' , 'name' => 'givenName' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $firstName ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'givenName' ));
2006-05-01 16:13:10 +00:00
$lastName = '' ;
if ( isset ( $this -> attributes [ 'sn' ][ 0 ])) $lastName = $this -> attributes [ 'sn' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Last name' ) . '*' ),
array ( 'kind' => 'input' , 'name' => 'sn' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $lastName ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'sn' ));
2005-06-19 09:38:44 +00:00
if ( ! in_array ( 'posixAccount' , $modules )) {
2006-05-01 16:13:10 +00:00
$cn = '' ;
if ( isset ( $this -> attributes [ 'cn' ][ 0 ])) $cn = $this -> attributes [ 'cn' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Common name' ) . '*' ),
array ( 'kind' => 'input' , 'name' => 'cn' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $cn ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'cn' ));
2005-06-19 09:38:44 +00:00
}
2006-05-01 16:13:10 +00:00
$description = '' ;
if ( isset ( $this -> attributes [ 'description' ][ 0 ])) $description = $this -> attributes [ 'description' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Description' )),
array ( 'kind' => 'input' , 'name' => 'description' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $description ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'description' ));
2005-07-02 12:05:33 +00:00
2008-12-17 17:14:28 +00:00
$return [] = array ( array ( 'kind' => 'text' , 'td' => array ( 'colspan' => 3 )));
2005-07-02 12:05:33 +00:00
2005-08-15 18:36:56 +00:00
// password
if ( ! in_array ( 'posixAccount' , $modules )) {
// new account, show input fields
2008-02-05 19:33:03 +00:00
if ( $this -> getAccountContainer () -> isNewAccount && ! isset ( $this -> attributes [ 'userPassword' ][ 0 ])) {
2005-08-15 18:36:56 +00:00
$return [] = array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
2008-02-05 19:33:03 +00:00
array ( 'kind' => 'input' , 'name' => 'userPassword' , 'type' => 'password' , 'size' => '30' , 'maxlength' => '255' ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'userPassword' ));
2005-08-15 18:36:56 +00:00
$return [] = array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Repeat password' )),
2008-02-05 19:33:03 +00:00
array ( 'kind' => 'input' , 'name' => 'userPassword2' , 'type' => 'password' , 'size' => '30' , 'maxlength' => '255' ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => '' ));
2005-08-15 18:36:56 +00:00
}
// old account, show button for password page
else {
$return [] = array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
2007-06-24 17:54:23 +00:00
array ( 'kind' => 'input' , 'name' => 'form_subpage_' . get_class ( $this ) . '_password_open' , 'type' => 'submit' , 'value' => _ ( 'Change password' )));
2005-08-15 18:36:56 +00:00
}
2007-06-11 18:19:05 +00:00
$return [] = array ( array ( 'kind' => 'text' , 'td' => array ( 'colspan' => 3 )));
2005-08-15 18:36:56 +00:00
}
2006-05-01 16:13:10 +00:00
$street = '' ;
if ( isset ( $this -> attributes [ 'street' ][ 0 ])) $street = $this -> attributes [ 'street' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Street' )),
array ( 'kind' => 'input' , 'name' => 'street' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $street ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'street' ));
2006-05-01 16:13:10 +00:00
$postOffice = '' ;
if ( isset ( $this -> attributes [ 'postOfficeBox' ][ 0 ])) $postOffice = $this -> attributes [ 'postOfficeBox' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Post office box' )),
array ( 'kind' => 'input' , 'name' => 'postOfficeBox' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $postOffice ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'postOfficeBox' ));
2006-05-01 16:13:10 +00:00
$postalCode = '' ;
if ( isset ( $this -> attributes [ 'postalCode' ][ 0 ])) $postalCode = $this -> attributes [ 'postalCode' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Postal code' )),
array ( 'kind' => 'input' , 'name' => 'postalCode' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $postalCode ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'postalCode' ));
2008-02-09 18:01:29 +00:00
$l = '' ;
if ( isset ( $this -> attributes [ 'l' ][ 0 ])) $l = $this -> attributes [ 'l' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Location' )),
array ( 'kind' => 'input' , 'name' => 'l' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $l ),
array ( 'kind' => 'help' , 'value' => 'l' ));
$st = '' ;
if ( isset ( $this -> attributes [ 'st' ][ 0 ])) $st = $this -> attributes [ 'st' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'State' )),
array ( 'kind' => 'input' , 'name' => 'st' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $st ),
array ( 'kind' => 'help' , 'value' => 'st' ));
2006-05-01 16:13:10 +00:00
$postalAddress = '' ;
if ( isset ( $this -> attributes [ 'postalAddress' ][ 0 ])) $postalAddress = $this -> attributes [ 'postalAddress' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Postal address' )),
array ( 'kind' => 'input' , 'name' => 'postalAddress' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $postalAddress ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'postalAddress' ));
2008-02-09 18:01:29 +00:00
$physicalDeliveryOfficeName = '' ;
if ( isset ( $this -> attributes [ 'physicalDeliveryOfficeName' ][ 0 ])) $physicalDeliveryOfficeName = $this -> attributes [ 'physicalDeliveryOfficeName' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Office name' )),
array ( 'kind' => 'input' , 'name' => 'physicalDeliveryOfficeName' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $physicalDeliveryOfficeName ),
array ( 'kind' => 'help' , 'value' => 'physicalDeliveryOfficeName' ));
2007-06-11 18:19:05 +00:00
$roomNumber = '' ;
if ( isset ( $this -> attributes [ 'roomNumber' ][ 0 ])) $roomNumber = $this -> attributes [ 'roomNumber' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Room number' )),
array ( 'kind' => 'input' , 'name' => 'roomNumber' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $roomNumber ),
array ( 'kind' => 'help' , 'value' => 'roomNumber' ));
2008-02-09 18:01:29 +00:00
2008-12-17 17:14:28 +00:00
$return [] = array ( array ( 'kind' => 'text' , 'td' => array ( 'colspan' => 3 )));
2008-02-09 18:01:29 +00:00
2006-05-01 16:13:10 +00:00
$telephone = '' ;
if ( isset ( $this -> attributes [ 'telephoneNumber' ][ 0 ])) $telephone = $this -> attributes [ 'telephoneNumber' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Telephone number' )),
array ( 'kind' => 'input' , 'name' => 'telephoneNumber' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $telephone ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'telephoneNumber' ));
$homePhone = '' ;
if ( isset ( $this -> attributes [ 'homePhone' ][ 0 ])) $homePhone = $this -> attributes [ 'homePhone' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Home telephone number' )),
array ( 'kind' => 'input' , 'name' => 'homePhone' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $homePhone ),
array ( 'kind' => 'help' , 'value' => 'homePhone' ));
2006-05-01 16:13:10 +00:00
$mobile = '' ;
if ( isset ( $this -> attributes [ 'mobile' ][ 0 ])) $mobile = $this -> attributes [ 'mobile' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Mobile number' )),
array ( 'kind' => 'input' , 'name' => 'mobileTelephoneNumber' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $mobile ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'mobileTelephoneNumber' ));
2006-05-01 16:13:10 +00:00
$fax = '' ;
if ( isset ( $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ])) $fax = $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Fax number' )),
array ( 'kind' => 'input' , 'name' => 'facsimileTelephoneNumber' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $fax ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'facsimileTelephoneNumber' ));
2006-05-01 16:13:10 +00:00
$email = '' ;
if ( isset ( $this -> attributes [ 'mail' ][ 0 ])) $email = $this -> attributes [ 'mail' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'eMail address' )),
array ( 'kind' => 'input' , 'name' => 'mail' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $email ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'mail' ));
2005-07-02 12:05:33 +00:00
2007-06-11 18:19:05 +00:00
$return [] = array ( array ( 'kind' => 'text' , 'td' => array ( 'colspan' => 3 )));
2005-07-02 12:05:33 +00:00
2006-05-01 16:13:10 +00:00
$title = '' ;
if ( isset ( $this -> attributes [ 'title' ][ 0 ])) $title = $this -> attributes [ 'title' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Job title' )),
array ( 'kind' => 'input' , 'name' => 'title' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'value' => $title ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'title' ));
2008-02-09 18:01:29 +00:00
$carLicense = '' ;
if ( isset ( $this -> attributes [ 'carLicense' ][ 0 ])) $carLicense = $this -> attributes [ 'carLicense' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Car license' )),
array ( 'kind' => 'input' , 'name' => 'carLicense' , 'type' => 'text' , 'size' => '30' ,
'value' => $carLicense ),
array ( 'kind' => 'help' , 'value' => 'carLicense' ));
2006-05-01 16:13:10 +00:00
$employeeType = '' ;
if ( isset ( $this -> attributes [ 'employeeType' ][ 0 ])) $employeeType = $this -> attributes [ 'employeeType' ][ 0 ];
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Employee type' )),
array ( 'kind' => 'input' , 'name' => 'employeeType' , 'type' => 'text' , 'size' => '30' ,
2006-05-01 16:13:10 +00:00
'maxlength' => '255' , 'value' => $employeeType ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'employeeType' ));
$businessCategory = '' ;
if ( isset ( $this -> attributes [ 'businessCategory' ][ 0 ])) $businessCategory = $this -> attributes [ 'businessCategory' ][ 0 ];
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Business category' )),
array ( 'kind' => 'input' , 'name' => 'businessCategory' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $businessCategory ),
array ( 'kind' => 'help' , 'value' => 'businessCategory' ));
2007-11-14 13:07:11 +00:00
if ( $this -> supportUnixHosts ()) {
2006-01-24 14:23:42 +00:00
$hostvalue = " " ;
2008-03-27 19:57:42 +00:00
if ( isset ( $this -> attributes [ 'host' ]) && is_array ( $this -> attributes [ 'host' ])) {
2005-06-19 09:38:44 +00:00
$hostvalue .= implode ( " , " , $this -> attributes [ 'host' ]);
}
2007-06-11 18:19:05 +00:00
$return [] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Unix workstations' )),
array ( 'kind' => 'input' , 'name' => 'host' , 'type' => 'text' , 'size' => '30' ,
2005-06-19 09:38:44 +00:00
'maxlength' => '255' , 'value' => $hostvalue ),
2007-06-11 18:19:05 +00:00
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 ();
2006-05-01 16:13:10 +00:00
if ( isset ( $this -> attributes [ 'manager' ][ 0 ])) {
2005-07-02 12:05:33 +00:00
$optionsSelected [] = $this -> attributes [ 'manager' ][ 0 ];
}
else {
$optionsSelected [] = '-' ;
}
$return [] = array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Manager' )),
array ( 'kind' => 'select' , 'name' => 'manager' , 'size' => '1' ,
2005-07-02 12:05:33 +00:00
'options' => $dnUsers , 'options_selected' => $optionsSelected ),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'help' , 'value' => 'manager' ));
2005-12-05 14:45:01 +00:00
// photo
$photoFile = '../../graphics/userDefault.png' ;
$noPhoto = true ;
2006-01-24 14:23:42 +00:00
if ( isset ( $this -> attributes [ 'jpegPhoto' ][ 0 ])) {
2005-12-05 14:45:01 +00:00
$jpeg_filename = 'jpg' . $_SESSION [ 'ldap' ] -> new_rand () . '.jpg' ;
$outjpeg = @ fopen ( $_SESSION [ 'lampath' ] . 'tmp/' . $jpeg_filename , " wb " );
fwrite ( $outjpeg , $this -> attributes [ 'jpegPhoto' ][ 0 ]);
fclose ( $outjpeg );
$photoFile = '../../tmp/' . $jpeg_filename ;
$noPhoto = false ;
}
$photo = array ( array (
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'image' , 'alt' => _ ( 'Photo' ), 'path' => $photoFile , 'td' => array ( 'align' => 'center' ))));
2005-12-05 14:45:01 +00:00
if ( $noPhoto ) {
2007-06-24 17:54:23 +00:00
$photo [] = array ( array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'form_subpage_' . get_class ( $this ) . '_photo_open' , 'value' => _ ( 'Add photo' )));
2005-12-05 14:45:01 +00:00
}
else {
$photo [] = array ( array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'delPhoto' , 'value' => _ ( 'Delete photo' )));
}
$return = array ( array (
2007-11-14 16:47:08 +00:00
array ( 'kind' => 'table' , 'value' => $return , 'td' => array ( 'width' => '100%' )),
2007-06-11 18:19:05 +00:00
array ( 'kind' => 'table' , 'value' => $photo , 'td' => array ( 'valign' => 'top' , 'align' => 'right' , 'width' => '100%' ))
2005-12-05 14:45:01 +00:00
));
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 .
*/
2006-08-13 12:58:19 +00:00
function process_password () {
2007-06-24 17:54:23 +00:00
if ( $_POST [ 'form_subpage_' . get_class ( $this ) . '_attributes_back' ]) return array ();
2005-08-15 18:36:56 +00:00
$messages = array ();
2006-08-13 12:58:19 +00:00
if ( $_POST [ 'userPassword' ] != $_POST [ 'userPassword2' ]) {
2007-01-06 14:29:10 +00:00
$messages [] = $this -> messages [ 'userPassword' ][ 0 ];
2005-08-15 18:36:56 +00:00
}
else {
2006-08-13 12:58:19 +00:00
if ( ! get_preg ( $_POST [ 'userPassword' ], 'password' )) {
2007-01-06 14:29:10 +00:00
$messages [] = $this -> messages [ 'userPassword' ][ 1 ];
2005-08-15 18:36:56 +00:00
}
else {
2008-02-14 17:37:02 +00:00
$pwdPolicyResult = checkPasswordStrength ( $_POST [ 'userPassword' ]);
if ( $pwdPolicyResult === true ) {
$this -> attributes [ 'userPassword' ][ 0 ] = pwd_hash ( $_POST [ 'userPassword' ], true , 'SSHA' );
}
else {
$messages [] = array ( 'ERROR' , $pwdPolicyResult );
}
2005-08-15 18:36:56 +00:00
}
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 .
*
* @ return array meta HTML code
*/
2006-08-13 12:58:19 +00:00
function display_html_password () {
2005-08-15 18:36:56 +00:00
$return [] = array (
2008-12-17 17:14:28 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Password' ) ),
array ( 'kind' => 'input' , 'name' => 'userPassword' , 'type' => 'password' , 'size' => '20' , 'maxlength' => '255' ),
array ( 'kind' => 'help' , 'value' => 'userPassword' ));
2005-08-15 18:36:56 +00:00
$return [] = array (
2008-12-17 17:14:28 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Repeat password' )),
array ( 'kind' => 'input' , 'name' => 'userPassword2' , 'type' => 'password' , 'size' => '20' , 'maxlength' => '255' ));
2005-08-15 18:36:56 +00:00
$return [] = array (
2008-12-17 17:14:28 +00:00
array ( 'kind' => 'table' , 'value' => array (
array (
array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Ok' ), 'name' => 'form_subpage_' . get_class ( $this ) . '_attributes_submit' ),
array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Cancel' ), 'name' => 'form_subpage_' . get_class ( $this ) . '_attributes_back' ),
array ( 'kind' => 'text' )))));
2005-08-15 18:36:56 +00:00
return $return ;
}
2004-03-09 12:03:39 +00:00
2005-12-05 14:45:01 +00:00
/**
* Sets a new photo .
*/
2006-08-13 12:58:19 +00:00
function process_photo () {
2007-06-24 17:54:23 +00:00
if ( $_POST [ 'form_subpage_' . get_class ( $this ) . '_attributes_back' ]) return array ();
2005-12-05 14:45:01 +00:00
$messages = array ();
if ( $_FILES [ 'photoFile' ] && ( $_FILES [ 'photoFile' ][ 'size' ] > 0 )) {
$handle = fopen ( $_FILES [ 'photoFile' ][ 'tmp_name' ], " r " );
$data = fread ( $handle , 1000000 );
fclose ( $handle );
$this -> attributes [ 'jpegPhoto' ][ 0 ] = $data ;
}
else {
2007-01-06 14:29:10 +00:00
$messages [] = $this -> messages [ 'photo' ][ 0 ];
2005-12-05 14:45:01 +00:00
}
return $messages ;
}
/**
* Displays the photo upload page .
*
* @ return array meta HTML code
*/
2006-08-13 12:58:19 +00:00
function display_html_photo () {
2005-12-05 14:45:01 +00:00
$return [] = array (
2008-12-17 17:14:28 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Photo file (JPG format)' ) ),
array ( 'kind' => 'input' , 'name' => 'photoFile' , 'type' => 'file' ),
array ( 'kind' => 'help' , 'value' => 'photoUpload' ));
2005-12-05 14:45:01 +00:00
$return [] = array (
2008-12-17 17:14:28 +00:00
array ( 'kind' => 'table' , 'value' => array (
array (
array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Add photo' ), 'name' => 'form_subpage_' . get_class ( $this ) . '_attributes_submit' ),
array ( 'kind' => 'input' , 'type' => 'submit' , 'value' => _ ( 'Back' ), 'name' => 'form_subpage_' . get_class ( $this ) . '_attributes_back' ),
array ( 'kind' => 'text' )))));
2005-12-05 14:45:01 +00:00
return $return ;
}
2005-10-09 18:05:32 +00:00
/**
* Returns the PDF entries for this module .
2006-08-13 12:58:19 +00:00
*
2005-10-09 18:05:32 +00:00
* @ return array list of possible PDF entries
*/
function get_pdfEntries () {
2005-06-19 09:38:44 +00:00
return array (
2007-06-27 18:01:12 +00:00
get_class ( $this ) . '_description' => array ( '<block><key>' . _ ( 'Description' ) . '</key><value>' . $this -> attributes [ 'description' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_host' => array ( '<block><key>' . _ ( 'Unix workstations' ) . '</key><value>' . $this -> attributes [ 'host' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_title' => array ( '<block><key>' . _ ( 'Job title' ) . '</key><value>' . $this -> attributes [ 'title' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_givenName' => array ( '<block><key>' . _ ( 'First name' ) . '</key><value>' . $this -> attributes [ 'givenName' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_sn' => array ( '<block><key>' . _ ( 'Last name' ) . '</key><value>' . $this -> attributes [ 'sn' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_employeeType' => array ( '<block><key>' . _ ( 'Employee type' ) . '</key><value>' . $this -> attributes [ 'employeeType' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_manager' => array ( '<block><key>' . _ ( 'Manager' ) . '</key><value>' . $this -> attributes [ 'manager' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_street' => array ( '<block><key>' . _ ( 'Street' ) . '</key><value>' . $this -> attributes [ 'street' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_postOfficeBox' => array ( '<block><key>' . _ ( 'Post office box' ) . '</key><value>' . $this -> attributes [ 'postOfficeBox' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_postalCode' => array ( '<block><key>' . _ ( 'Postal code' ) . '</key><value>' . $this -> attributes [ 'postalCode' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_postalAddress' => array ( '<block><key>' . _ ( 'Postal address' ) . '</key><value>' . $this -> attributes [ 'postalAddress' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_telephoneNumber' => array ( '<block><key>' . _ ( 'Telephone number' ) . '</key><value>' . $this -> attributes [ 'telephoneNumber' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_homePhone' => array ( '<block><key>' . _ ( 'Home telephone number' ) . '</key><value>' . $this -> attributes [ 'homePhone' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_mobileTelephoneNumber' => array ( '<block><key>' . _ ( 'Mobile number' ) . '</key><value>' . $this -> attributes [ 'mobile' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_facimileTelephoneNumber' => array ( '<block><key>' . _ ( 'Fax number' ) . '</key><value>' . $this -> attributes [ 'facsimileTelephoneNumber' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_mail' => array ( '<block><key>' . _ ( 'eMail address' ) . '</key><value>' . $this -> attributes [ 'mail' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_cn' => array ( '<block><key>' . _ ( 'Common name' ) . '</key><value>' . $this -> attributes [ 'cn' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_roomNumber' => array ( '<block><key>' . _ ( 'Room number' ) . '</key><value>' . $this -> attributes [ 'roomNumber' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_businessCategory' => array ( '<block><key>' . _ ( 'Business category' ) . '</key><value>' . $this -> attributes [ 'businessCategory' ][ 0 ] . '</value></block>' ),
2008-02-09 18:01:29 +00:00
get_class ( $this ) . '_uid' => array ( '<block><key>' . _ ( 'User name' ) . '</key><value>' . $this -> attributes [ 'uid' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_carLicense' => array ( '<block><key>' . _ ( 'Car license' ) . '</key><value>' . $this -> attributes [ 'carLicense' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_location' => array ( '<block><key>' . _ ( 'Location' ) . '</key><value>' . $this -> attributes [ 'l' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_state' => array ( '<block><key>' . _ ( 'State' ) . '</key><value>' . $this -> attributes [ 'st' ][ 0 ] . '</value></block>' ),
get_class ( $this ) . '_officeName' => array ( '<block><key>' . _ ( 'Office name' ) . '</key><value>' . $this -> attributes [ 'physicalDeliveryOfficeName' ][ 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 ) {
2006-05-20 16:32:02 +00:00
$errors = 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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
2004-10-11 18:06:53 +00:00
}
2007-06-11 18:19:05 +00:00
// business category
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_businessCategory' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_businessCategory' ]], 'businessCategory' )) {
$partialAccounts [ $i ][ 'businessCategory' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_businessCategory' ]];
}
else {
$errMsg = $this -> messages [ 'businessCategory' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$errors [] = $errMsg ;
}
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-07-02 12:05:33 +00:00
}
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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' ]];
}
2007-06-11 18:19:05 +00:00
// room number
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_roomNumber' ]] != " " ) {
$partialAccounts [ $i ][ 'roomNumber' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_roomNumber' ]];
}
2008-02-09 18:01:29 +00:00
// location
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_l' ]] != " " ) {
$partialAccounts [ $i ][ 'l' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_l' ]];
}
// state
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_st' ]] != " " ) {
$partialAccounts [ $i ][ 'st' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_st' ]];
}
// physicalDeliveryOfficeName
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_physicalDeliveryOfficeName' ]] != " " ) {
$partialAccounts [ $i ][ 'physicalDeliveryOfficeName' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_physicalDeliveryOfficeName' ]];
}
// carLicense
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_carLicense' ]] != " " ) {
$partialAccounts [ $i ][ 'carLicense' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_carLicense' ]];
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
2004-10-11 18:06:53 +00:00
}
2007-06-11 18:19:05 +00:00
// home telephone
if ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_homePhone' ]] != " " ) {
if ( get_preg ( $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_homePhone' ]], 'telephone' )) {
$partialAccounts [ $i ][ 'homePhone' ] = $rawAccounts [ $i ][ $ids [ 'inetOrgPerson_homePhone' ]];
}
else {
$errMsg = $this -> messages [ 'homePhone' ][ 1 ];
array_push ( $errMsg , array ( $i ));
$errors [] = $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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-07 18:19:48 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-19 09:38:44 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-19 09:38:44 +00:00
}
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 ));
2006-05-20 16:32:02 +00:00
$errors [] = $errMsg ;
2005-06-06 19:24:48 +00:00
}
}
2004-10-11 18:06:53 +00:00
}
2006-05-20 16:32:02 +00:00
return $errors ;
2004-10-11 18:06:53 +00:00
}
2006-07-23 15:06:49 +00:00
/**
* Returns the meta HTML code for each input field .
* format : array ( < field1 > => array ( < META HTML > ), ... )
* It is not possible to display help links .
*
* @ param array $fields list of active fields
* @ param array $attributes attributes of LDAP account ( attribute names in lower case )
* @ return array meta HTML
*/
function getSelfServiceOptions ( $fields , $attributes ) {
$return = array ();
if ( in_array ( 'firstName' , $fields )) {
$firstName = '' ;
if ( isset ( $attributes [ 'givenName' ][ 0 ])) $firstName = $attributes [ 'givenName' ][ 0 ];
$return [ 'firstName' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'First name' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_firstName' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $firstName ));
}
if ( in_array ( 'lastName' , $fields )) {
$lastName = '' ;
if ( isset ( $attributes [ 'sn' ][ 0 ])) $lastName = $attributes [ 'sn' ][ 0 ];
$return [ 'lastName' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Last name' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_lastName' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $lastName ));
}
if ( in_array ( 'mail' , $fields )) {
$mail = '' ;
if ( isset ( $attributes [ 'mail' ][ 0 ])) $mail = $attributes [ 'mail' ][ 0 ];
$return [ 'mail' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'eMail address' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_mail' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $mail ));
}
if ( in_array ( 'telephoneNumber' , $fields )) {
$telephoneNumber = '' ;
if ( isset ( $attributes [ 'telephoneNumber' ][ 0 ])) $telephoneNumber = $attributes [ 'telephoneNumber' ][ 0 ];
$return [ 'telephoneNumber' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Telephone number' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_telephoneNumber' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $telephoneNumber ));
}
2007-06-11 18:19:05 +00:00
if ( in_array ( 'homePhone' , $fields )) {
$homePhone = '' ;
if ( isset ( $attributes [ 'homePhone' ][ 0 ])) $homePhone = $attributes [ 'homePhone' ][ 0 ];
$return [ 'homePhone' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Home telephone number' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_homePhone' , 'type' => 'text' , 'size' => '30' ,
2007-06-11 18:19:05 +00:00
'maxlength' => '255' , 'value' => $homePhone ));
}
2006-07-23 15:06:49 +00:00
if ( in_array ( 'mobile' , $fields )) {
$mobile = '' ;
if ( isset ( $attributes [ 'mobile' ][ 0 ])) $mobile = $attributes [ 'mobile' ][ 0 ];
$return [ 'mobile' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Mobile telephone number' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_mobile' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $mobile ));
}
if ( in_array ( 'faxNumber' , $fields )) {
$faxNumber = '' ;
if ( isset ( $attributes [ 'facsimileTelephoneNumber' ][ 0 ])) $faxNumber = $attributes [ 'facsimileTelephoneNumber' ][ 0 ];
$return [ 'faxNumber' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Fax number' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_faxNumber' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $faxNumber ));
}
if ( in_array ( 'street' , $fields )) {
$street = '' ;
if ( isset ( $attributes [ 'street' ][ 0 ])) $street = $attributes [ 'street' ][ 0 ];
$return [ 'street' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Street' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_street' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $street ));
}
if ( in_array ( 'postalAddress' , $fields )) {
$postalAddress = '' ;
if ( isset ( $attributes [ 'postalAddress' ][ 0 ])) $postalAddress = $attributes [ 'postalAddress' ][ 0 ];
$return [ 'postalAddress' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Postal address' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_postalAddress' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $postalAddress ));
}
if ( in_array ( 'postalCode' , $fields )) {
$postalCode = '' ;
if ( isset ( $attributes [ 'postalCode' ][ 0 ])) $postalCode = $attributes [ 'postalCode' ][ 0 ];
$return [ 'postalCode' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Postal code' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_postalCode' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $postalCode ));
}
if ( in_array ( 'postOfficeBox' , $fields )) {
$postOfficeBox = '' ;
if ( isset ( $attributes [ 'postOfficeBox' ][ 0 ])) $postOfficeBox = $attributes [ 'postOfficeBox' ][ 0 ];
$return [ 'postOfficeBox' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Post office box' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_postOfficeBox' , 'type' => 'text' , 'size' => '30' ,
2006-07-23 15:06:49 +00:00
'maxlength' => '255' , 'value' => $postOfficeBox ));
}
2007-06-11 18:19:05 +00:00
if ( in_array ( 'roomNumber' , $fields )) {
$roomNumber = '' ;
if ( isset ( $attributes [ 'roomNumber' ][ 0 ])) $roomNumber = $attributes [ 'roomNumber' ][ 0 ];
$return [ 'roomNumber' ] = array (
2008-02-09 18:01:29 +00:00
array ( 'kind' => 'text' , 'text' => _ ( 'Room number' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_roomNumber' , 'type' => 'text' , 'size' => '30' ,
2007-06-11 18:19:05 +00:00
'maxlength' => '255' , 'value' => $roomNumber ));
}
2008-02-09 18:01:29 +00:00
if ( in_array ( 'location' , $fields )) {
$l = '' ;
if ( isset ( $attributes [ 'l' ][ 0 ])) $l = $attributes [ 'l' ][ 0 ];
$return [ 'location' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Location' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_location' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $l ));
}
if ( in_array ( 'state' , $fields )) {
$st = '' ;
if ( isset ( $attributes [ 'st' ][ 0 ])) $st = $attributes [ 'st' ][ 0 ];
$return [ 'state' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'State' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_state' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $st ));
}
if ( in_array ( 'carLicense' , $fields )) {
$carLicense = '' ;
if ( isset ( $attributes [ 'carLicense' ][ 0 ])) $carLicense = $attributes [ 'carLicense' ][ 0 ];
$return [ 'carLicense' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Car license' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_carLicense' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $carLicense ));
}
if ( in_array ( 'officeName' , $fields )) {
$physicalDeliveryOfficeName = '' ;
if ( isset ( $attributes [ 'physicalDeliveryOfficeName' ][ 0 ])) $physicalDeliveryOfficeName = $attributes [ 'physicalDeliveryOfficeName' ][ 0 ];
$return [ 'officeName' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Office name' )),
array ( 'kind' => 'input' , 'name' => 'inetOrgPerson_officeName' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , 'value' => $physicalDeliveryOfficeName ));
}
2007-02-18 18:37:15 +00:00
if ( in_array ( 'jpegPhoto' , $fields )) {
if ( isset ( $attributes [ 'jpegPhoto' ][ 0 ])) {
$jpeg_filename = 'jpegPhoto' . session_id () . '.jpg' ;
$outjpeg = fopen ( realpath ( '../../' ) . '/tmp/' . $jpeg_filename , " wb " );
fwrite ( $outjpeg , $attributes [ 'jpegPhoto' ][ 0 ]);
fclose ( $outjpeg );
$photoFile = '../../tmp/' . $jpeg_filename ;
$return [ 'jpegPhoto' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Photo' )),
array ( 'kind' => 'table' , 'value' => array (
array (
array ( 'kind' => 'image' , 'alt' => _ ( 'Photo' ), 'path' => $photoFile )
),
array (
array ( 'kind' => 'table' , 'value' => array ( array (
array ( 'kind' => 'input' , 'type' => 'checkbox' , 'name' => 'removeReplacePhoto' ),
array ( 'kind' => 'text' , 'text' => _ ( 'Remove/replace photo' )),
array ( 'kind' => 'input' , 'name' => 'replacePhotoFile' , 'type' => 'file' )
))),
)
))
);
}
else {
$return [ 'jpegPhoto' ] = array (
array ( 'kind' => 'text' , 'text' => _ ( 'Photo' )),
array ( 'kind' => 'table' , 'value' => array ( array (
array ( 'kind' => 'text' , 'text' => _ ( 'Add photo' )),
array ( 'kind' => 'input' , 'name' => 'photoFile' , 'type' => 'file' )
)))
);
}
}
2006-07-23 15:06:49 +00:00
return $return ;
}
/**
* Checks if all input values are correct and returns the LDAP commands which should be executed .
*
* @ param string $fields input fields
* @ param array $attributes LDAP attributes
* @ return array messages and LDAP commands ( array ( 'messages' => array (), 'add' => array (), 'del' => array (), 'mod' => array ()))
*/
function checkSelfServiceOptions ( $fields , $attributes ) {
$return = array ( 'messages' => array (), 'add' => array (), 'del' => array (), 'mod' => array ());
$attributeNames = array (); // list of attributes which should be checked for modification
$attributesNew = $attributes ;
// first name
if ( in_array ( 'firstName' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'givenName' ])) unset ( $attributesNew [ 'givenName' ]);
}
// last name
if ( in_array ( 'lastName' , $fields )) {
$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' ];
}
else {
// last name is required attribute
$return [ 'messages' ][] = $this -> messages [ 'lastname' ][ 0 ];
}
}
// email
if ( in_array ( 'mail' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'mail' ])) unset ( $attributesNew [ 'mail' ]);
}
// telephone number
if ( in_array ( 'telephoneNumber' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'telephoneNumber' ])) unset ( $attributesNew [ 'telephoneNumber' ]);
}
2007-06-11 18:19:05 +00:00
// home telephone number
if ( in_array ( 'homePhone' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'homePhone' ])) unset ( $attributesNew [ 'homePhone' ]);
}
2006-07-23 15:06:49 +00:00
// fax number
if ( in_array ( 'faxNumber' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'facsimileTelephoneNumber' ])) $attributesNew [ 'facsimileTelephoneNumber' ] = array ();
}
// mobile telephone number
if ( in_array ( 'mobile' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'mobile' ])) unset ( $attributesNew [ 'mobile' ]);
}
// street
if ( in_array ( 'street' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'street' ])) unset ( $attributesNew [ 'street' ]);
}
// postal address
if ( in_array ( 'postalAddress' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'postalAddress' ])) $attributesNew [ 'postalAddress' ] = array ();
}
// postal code
if ( in_array ( 'postalCode' , $fields )) {
$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' ];
}
elseif ( isset ( $attributes [ 'postalCode' ])) unset ( $attributesNew [ 'postalCode' ]);
}
// post office box
if ( in_array ( 'postOfficeBox' , $fields )) {
$attributeNames [] = 'postOfficeBox' ;
if ( isset ( $_POST [ 'inetOrgPerson_postOfficeBox' ]) && ( $_POST [ 'inetOrgPerson_postOfficeBox' ] != '' )) {
$attributesNew [ 'postOfficeBox' ][ 0 ] = $_POST [ 'inetOrgPerson_postOfficeBox' ];
}
elseif ( isset ( $attributes [ 'postOfficeBox' ])) unset ( $attributesNew [ 'postOfficeBox' ]);
}
2007-06-11 18:19:05 +00:00
// room number
if ( in_array ( 'roomNumber' , $fields )) {
$attributeNames [] = 'roomNumber' ;
if ( isset ( $_POST [ 'inetOrgPerson_roomNumber' ]) && ( $_POST [ 'inetOrgPerson_roomNumber' ] != '' )) {
$attributesNew [ 'roomNumber' ][ 0 ] = $_POST [ 'inetOrgPerson_roomNumber' ];
}
elseif ( isset ( $attributes [ 'roomNumber' ])) unset ( $attributesNew [ 'roomNumber' ]);
}
2008-02-09 18:01:29 +00:00
// l
if ( in_array ( 'location' , $fields )) {
$attributeNames [] = 'l' ;
if ( isset ( $_POST [ 'inetOrgPerson_location' ]) && ( $_POST [ 'inetOrgPerson_location' ] != '' )) {
$attributesNew [ 'l' ][ 0 ] = $_POST [ 'inetOrgPerson_location' ];
}
elseif ( isset ( $attributes [ 'l' ])) unset ( $attributesNew [ 'l' ]);
}
// st
if ( in_array ( 'state' , $fields )) {
$attributeNames [] = 'st' ;
if ( isset ( $_POST [ 'inetOrgPerson_state' ]) && ( $_POST [ 'inetOrgPerson_state' ] != '' )) {
$attributesNew [ 'st' ][ 0 ] = $_POST [ 'inetOrgPerson_state' ];
}
elseif ( isset ( $attributes [ 'st' ])) unset ( $attributesNew [ 'st' ]);
}
// car license
if ( in_array ( 'carLicense' , $fields )) {
$attributeNames [] = 'carLicense' ;
if ( isset ( $_POST [ 'inetOrgPerson_carLicense' ]) && ( $_POST [ 'inetOrgPerson_carLicense' ] != '' )) {
$attributesNew [ 'carLicense' ][ 0 ] = $_POST [ 'inetOrgPerson_carLicense' ];
}
elseif ( isset ( $attributes [ 'carLicense' ])) unset ( $attributesNew [ 'carLicense' ]);
}
// office name
if ( in_array ( 'officeName' , $fields )) {
$attributeNames [] = 'physicalDeliveryOfficeName' ;
if ( isset ( $_POST [ 'inetOrgPerson_officeName' ]) && ( $_POST [ 'inetOrgPerson_officeName' ] != '' )) {
$attributesNew [ 'physicalDeliveryOfficeName' ][ 0 ] = $_POST [ 'inetOrgPerson_officeName' ];
}
elseif ( isset ( $attributes [ 'physicalDeliveryOfficeName' ])) unset ( $attributesNew [ 'physicalDeliveryOfficeName' ]);
}
2007-02-18 18:37:15 +00:00
// photo
if ( in_array ( 'jpegPhoto' , $fields )) {
if ( $_FILES [ 'photoFile' ] && ( $_FILES [ 'photoFile' ][ 'size' ] > 0 )) {
$handle = fopen ( $_FILES [ 'photoFile' ][ 'tmp_name' ], " r " );
$data = fread ( $handle , 1000000 );
fclose ( $handle );
$return [ 'add' ][ 'jpegPhoto' ][ 0 ] = $data ;
}
2008-05-15 17:32:59 +00:00
if ( isset ( $_POST [ 'removeReplacePhoto' ]) && ( $_POST [ 'removeReplacePhoto' ] == 'on' )) {
2007-02-18 18:37:15 +00:00
if ( $_FILES [ 'replacePhotoFile' ] && ( $_FILES [ 'replacePhotoFile' ][ 'size' ] > 0 )) {
$handle = fopen ( $_FILES [ 'replacePhotoFile' ][ 'tmp_name' ], " r " );
$data = fread ( $handle , 1000000 );
fclose ( $handle );
$return [ 'mod' ][ 'jpegPhoto' ][ 0 ] = $data ;
}
else {
$return [ 'mod' ][ 'jpegPhoto' ] = array ();
}
}
}
2006-07-23 15:06:49 +00:00
// find differences
for ( $i = 0 ; $i < sizeof ( $attributeNames ); $i ++ ) {
$attrName = $attributeNames [ $i ];
if ( isset ( $attributes [ $attrName ]) && ! isset ( $attributesNew [ $attrName ])) $return [ 'del' ][ $attrName ] = $attributes [ $attrName ];
elseif ( ! isset ( $attributes [ $attrName ]) && isset ( $attributesNew [ $attrName ])) $return [ 'add' ][ $attrName ] = $attributesNew [ $attrName ];
else {
for ( $a = 0 ; $a < sizeof ( $attributes [ $attrName ]); $a ++ ) {
if ( ! in_array ( $attributes [ $attrName ][ $a ], $attributesNew [ $attrName ])) {
$return [ 'mod' ][ $attrName ] = $attributesNew [ $attrName ];
break ;
}
}
}
}
return $return ;
}
2004-03-09 12:03:39 +00:00
}
2003-12-12 00:52:35 +00:00
?>