2013-04-22 17:42:35 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< html > < head > < title > Module HowTo - Self service< / title >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:15:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-22 17:42:35 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < link  rel = "stylesheet"  type = "text/css"  href = "style/layout.css" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									< link  rel = "shortcut icon"  type = "image/x-icon"  href = "images/favicon.ico" > < / head > < body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div  style = "text-align: center;" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > Module HowTo - Self service< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / h1 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div  style = "text-align: left;" > < br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Self service is a LAM Pro feature. It allows your users to manage their own data (e.g. telephone numbers).< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:15:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< div  style = "text-align: left;" > First you need to implement the function < span  style = "font-weight: bold;" > getSelfServiceFields()< / span >  or use < span  style = "font-weight: bold;" > meta['selfServiceFieldSettings']< / span > . Each field 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								has an ID and a descriptive name that will be displayed on the self
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								service page.< br > 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-22 17:42:35 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Your input fields may also be defined as read-only in the self service
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								profile editor. If your fields supports read-only then use
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								canSelfServiceFieldBeReadOnly() or < span  style = "font-weight: bold;" > meta['selfServiceReadOnlyFields']< / span > .< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< span  style = "font-weight: bold; text-decoration: underline;" > Example:< / span > < br  style = "font-weight: bold; text-decoration: underline;" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The < span  style = "font-style: italic;" > inetOrgPerson< / span >  module
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:15:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								provides lots of possible input fields for the self service.< br > 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-22 17:42:35 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  style = "width: 100%; text-align: left;"  class = "mod-code"  border = "0"  cellpadding = "2"  cellspacing = "2" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < td  style = "vertical-align: top;" >        /**< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       * Returns meta data that is interpreted by parent 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       *< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       * @return array array with meta data< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       */< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < span  style = "font-weight: bold;" >  function< / span >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get_metaData() {< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $return = array();< br >        
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $return['selfServiceFieldSettings'] = 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								array('firstName' =>  _('First name'), 'lastName' =>  _('Last
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								name'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'mail' =>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_('Email address'), 'telephoneNumber' =>  _('Telephone number'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'mobile' =>  _('Mobile number'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'faxNumber' 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=>  _('Fax number'), 'street' =>  _('Street'), 'postalAddress'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=>  _('Postal address'), 'registeredAddress' =>  _('Registered
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								address'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'postalCode' 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=>  _('Postal code'), 'postOfficeBox' =>  _('Post office box'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'jpegPhoto' =>  _('Photo'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'homePhone' 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=>  _('Home telephone number'), 'roomNumber' =>  _('Room number'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'carLicense' =>  _('Car license'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'location' 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=>  _('Location'), 'state' =>  _('State'), 'officeName' => 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_('Office name'), 'businessCategory' =>  _('Business category'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  'departmentNumber' =>  _('Department'), 'initials' =>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_('Initials'), 'title' =>  _('Job title'), 'labeledURI' =>  _('Web
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								site'),< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'userCertificate' =>  _('User certificates'));< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              // possible self service read-only fields< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  $return['selfServiceReadOnlyFields'] = array('firstName', 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'lastName', 'mail', 'telephoneNumber', 'mobile', 'faxNumber', 'street',< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  'postalAddress', 'registeredAddress', 'postalCode', 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'postOfficeBox', 'jpegPhoto', 'homePhone', 'roomNumber', 'carLicense',< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     'location', 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'state', 'officeName', 'businessCategory', 'departmentNumber',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'initials', 'title', 'labeledURI', 'userCertificate');< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               [...]< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In very rare cases you need to specify self service search attributes.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								These are used to identify the user inside LDAP. Common examples are
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"uid" or "mail".< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< span  style = "font-weight: bold; text-decoration: underline;" > Example:< / span > < br  style = "font-weight: bold; text-decoration: underline;" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The < span  style = "font-style: italic;" > inetOrgPerson< / span >  module specifies several search attributes.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  style = "width: 100%; text-align: left;"  class = "mod-code"  border = "0"  cellpadding = "2"  cellspacing = "2" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < td  style = "vertical-align: top;" >        /**< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       * Returns meta data that is interpreted by parent 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       *< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       * @return array array with meta data< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       */< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < span  style = "font-weight: bold;" >  function< / span >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get_metaData() {< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $return = array();< br >               // self service search attributes< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  $return['selfServiceSearchAttributes'] = array('uid', 'mail', 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'cn', 'surname', 'givenName', 'employeeNumber');< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               [...]< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The HTML code for the user page is generated with the function < span  style = "font-weight: bold;" > getSelfServiceOptions()< / span > . It returns one table row for each input field.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Please note that some fields may be defined as read-only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								($readOnlyFields). If $passwordChangeOnly is set then no input fields
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								other than the bind password should be displayed (you will not get any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								attribute values).< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< span  style = "font-weight: bold; text-decoration: underline;" > Example:< / span > < br  style = "font-weight: bold; text-decoration: underline;" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The < span  style = "font-style: italic;" > windowsUser< / span >  module uses
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								the addSimpleSelfServiceTextField() function from baseModule to print
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								the text field. You may also build the table row yourself if the input
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								field is more complex.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  style = "width: 100%; text-align: left;"  class = "mod-code"  border = "0"  cellpadding = "2"  cellspacing = "2" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < td  style = "vertical-align: top;" >          /**< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * Returns the meta HTML code for each input field.< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * format: array(< field1>  =>  array(< META HTML> ), ...)< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * It is not possible to display help links.< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         *< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param array $fields list of active fields< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param array $attributes attributes of LDAP account< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param boolean $passwordChangeOnly indicates 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								that the user is only allowed to change his password and no LDAP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								content is readable< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param array $readOnlyFields list of read-only fields< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @return array list of meta HTML elements (field name =>  htmlTableRow)< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         */< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       function getSelfServiceOptions($fields, $attributes, $passwordChangeOnly, $readOnlyFields) {< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $return = array();< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              if ($passwordChangeOnly) {< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     return 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$return; // only password fields as long no LDAP content can be read< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              }< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$this-> addSimpleSelfServiceTextField($return,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'physicalDeliveryOfficeName', _('Office name'), $fields, $attributes,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$readOnlyFields);< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               [...]< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Of course, the user input should also be validated before making any LDAP changes. This is done in < span  style = "font-weight: bold;" > checkSelfServiceOptions()< / span > .< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The return value includes any error messages to display and also all LDAP operations.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Please note that some fields may be defined as read-only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								($readOnlyFields). If $passwordChangeOnly is set then no input fields
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								other than the bind
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								password should be displayed (you will not get any attribute values).< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< span  style = "font-weight: bold; text-decoration: underline;" > Example:< / span > < br  style = "font-weight: bold; text-decoration: underline;" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The < span  style = "font-style: italic;" > inetOrgPerson< / span >  module has a field for the user's first name.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< table  style = "width: 100%; text-align: left;"  class = "mod-code"  border = "0"  cellpadding = "2"  cellspacing = "2" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < td  style = "vertical-align: top;" >        /**< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * Checks if all input values are correct and returns the LDAP attributes which should be changed.< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> Return values:< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> messages: array of parameters to create status messages< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> add: array of attributes to add< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> del: array of attributes to remove< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> mod: array of attributes to modify< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br> info: array of values with 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								informational value (e.g. to be used later by pre/postModify actions)< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * < br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * Calling this method does not require the existence of an enclosing {@link accountContainer}.< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         *< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param string $fields input fields< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param array $attributes LDAP attributes< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param boolean $passwordChangeOnly indicates 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								that the user is only allowed to change his password and no LDAP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								content is readable< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @param array $readOnlyFields list of read-only fields< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         * @return array messages and attributes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								(array('messages' =>  array(), 'add' =>  array('mail' => 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								array('test@test.com')), 'del' =>  array(), 'mod' =>  array(),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'info' =>  array()))< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         */< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly, $readOnlyFields) {< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $return = array('messages' =>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								array(), 'add' =>  array(), 'del' =>  array(), 'mod' =>  array(),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'info' =>  array());< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              if ($passwordChangeOnly) {< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     return $return; // skip processing if only a password change is done< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              }< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $attributeNames = array(); // list of attributes which should be checked for modification< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $attributesNew = $attributes;< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              // first name< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              if (in_array('firstName', $fields) & &  !in_array('firstName', $readOnlyFields)) {< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     $attributeNames[] = 'givenName';< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     if 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								(isset($_POST['inetOrgPerson_firstName']) & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								($_POST['inetOrgPerson_firstName'] != '')) {< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       if (!get_preg($_POST['inetOrgPerson_firstName'], 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'realname')) $return['messages'][] = $this-> messages['givenName'][0];< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       else $attributesNew['givenName'][0] = 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$_POST['inetOrgPerson_firstName'];< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     }< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     elseif 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								(isset($attributes['givenName'])) unset($attributesNew['givenName']);< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              }< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               [...]< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / td > < / tr > < / tbody >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / table >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The self service also supports configuration settings for each module. See < span  style = "font-weight: bold;" > getSelfServiceSettings() < / span > or < span  style = "font-weight: bold;" > meta['selfServiceSettings'] < / span > to specify the options.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								You can validate the input with < span  style = "font-weight: bold;" > checkSelfServiceSettings()< / span > .< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Self service configuration settings are displayed on a separate tab in the self service profile editor.< br > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< span  style = "font-weight: bold;" > < / span >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h2 > < span  style = "font-weight: bold;" > < / span > < / h2 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / body > < / html >