2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Classes  and  functions  for  XML  based  templates . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author  The  phpLDAPadmin  development  team 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package  phpLDAPadmin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  XML  Templates  Class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package  phpLDAPadmin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage  Templates 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								abstract  class  xmlTemplates  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# The server ID that these templates are configured for.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $server_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Our array of the available templates.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $templates  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  __construct ( $server_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> server_id  =  $server_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$server  =  $_SESSION [ APPCONFIG ] -> getServer ( $this -> server_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$custom_prefix  =  $server -> getValue ( 'custom' , 'pages_prefix' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$class  =  $this -> getClassVars (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$changed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# Try to get the templates from our CACHE.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> templates  =  get_cached_item ( $server_id , $class [ 'item' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( DEBUG_ENABLED ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debug_log ( 'Using CACHED templates' , 4 , 0 , __FILE__ , __LINE__ , __METHOD__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											# See if the template_time has expired to see if we should reload the templates.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach  ( $this -> templates  as  $index  =>  $template )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												# If the file no longer exists, we'll delete the template.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( !  file_exists ( $template -> getFileName ()))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													unset ( $this -> templates [ $index ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$changed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													system_message ( array ( 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-14 19:44:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														'title' => ( 'Template XML file removed.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														'body' => sprintf ( '%s %s (%s)' ,( 'Template XML file has removed' ), $template -> getName ( false ), $template -> getType ()), 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
														'type' => 'info' , 'special' => true )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  (( $template -> getReadTime ()  <  ( time () - $class [ 'cachetime' ])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													&&  ( filectime ( $template -> getFileName ())  >  $template -> getReadTime ()))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													system_message ( array ( 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-14 19:44:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														'title' => ( 'Template XML file changed.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														'body' => sprintf ( '%s %s (%s)' ,( 'Template XML file has changed and been reread' ), $template -> getName ( false ), $template -> getType ()), 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
														'type' => 'info' , 'special' => true )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$changed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													eval ( sprintf ( '$this->templates[$index] = new %s($this->server_id,$template->getName(false),$template->getFileName(),$template->getType(),$index);' , $class [ 'name' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( DEBUG_ENABLED ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debug_log ( 'Templates refreshed' , 4 , 0 , __FILE__ , __LINE__ , __METHOD__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											# See if there are any new template files
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$index  =  max ( array_keys ( $this -> templates )) + 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach  ( $class [ 'types' ]  as  $type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$dir  =  $class [ 'dir' ] . $type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$dh  =  opendir ( $dir ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( !  $type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$type  =  'template' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												while  ( $file  =  readdir ( $dh ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Ignore any files that are not XML files.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( !  preg_match ( '/.xml$/' , $file )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Ignore any files that are not the predefined custom files.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( $_SESSION [ APPCONFIG ] -> getValue ( 'appearance' , 'custom_templates_only' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														&&  !  preg_match ( " /^ ${ custom_prefix } / " , $file )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$filename  =  sprintf ( '%s/%s' , $dir , $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( !  in_array ( $filename , $this -> getTemplateFiles ()))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$templatename  =  preg_replace ( '/.xml$/' , '' , $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														eval ( sprintf ( '$this->templates[$index] = new %s($this->server_id,$templatename,$filename,$type,$index);' , $class [ 'name' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$index ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$changed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														system_message ( array ( 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-08 08:29:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															'title' => ( 'New Template XML found.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															'body' => sprintf ( '%s %s (%s)' ,( 'A new template XML file has been loaded' ), $file , $type ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
															'type' => 'info' , 'special' => true )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( DEBUG_ENABLED ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debug_log ( 'Parsing templates' , 4 , 0 , __FILE__ , __LINE__ , __METHOD__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											# Need to reset this, as get_cached_item() returns null if nothing cached.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this -> templates  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$changed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$counter  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach  ( $class [ 'types' ]  as  $type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$dir  =  $class [ 'dir' ] . $type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$dh  =  opendir ( $class [ 'dir' ] . $type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( !  $type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$type  =  'template' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												while  ( $file  =  readdir ( $dh ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Ignore any files that are not XML files.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( !  preg_match ( '/.xml$/' , $file )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Ignore any files that are not the predefined custom files.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( $_SESSION [ APPCONFIG ] -> getValue ( 'appearance' , 'custom_templates_only' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														&&  !  preg_match ( " /^ ${ custom_prefix } / " , $file )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$filename  =  sprintf ( '%s/%s' , $dir , $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Store the template
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$templatename  =  preg_replace ( '/.xml$/' , '' , $file ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													eval ( sprintf ( '$this->templates[$counter] = new %s($this->server_id,$templatename,$filename,$type,$counter);' , $class [ 'name' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$counter ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Templates loaded' , 4 , 0 , __FILE__ , __LINE__ , __METHOD__ ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $changed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											masort ( $this -> templates , 'title' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_cached_item ( $server_id , $class [ 'item' ], 'null' , $this -> templates ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  will  return  our  custom  class  variables ,  used  by  the  parent  to  create  objects . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  getClassVars ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$class  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( get_class ( $this ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  'Queries' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'item' ]  =  'query' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'name' ]  =  'Query' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'cachetime' ]  =  $_SESSION [ APPCONFIG ] -> getValue ( 'cache' , 'query_time' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'types' ]  =  array ( '' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'dir' ]  =  QUERYDIR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  'Templates' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'item' ]  =  'template' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'name' ]  =  'Template' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'cachetime' ]  =  $_SESSION [ APPCONFIG ] -> getValue ( 'cache' , 'template_time' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'types' ]  =  array ( 'creation' , 'modification' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$class [ 'dir' ]  =  TMPLDIR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debug_dump_backtrace ( sprintf ( 'Unknown class %s' , get_class ( $this )), 1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $class ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  a  list  of  templates  by  their  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  function  should  return  a  sorted  list ,  as  the  array  is  built  sorted . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  string  Type  of  template ,  eg :  creation ,  modification 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  boolean  Exclude  templates  purposely  disabled . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  array  List  of  templates  of  the  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getTemplates ( $type = null , $container = null , $disabled = false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$result  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_array ( $this -> templates )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach  ( $this -> templates  as  $details )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												# Clone this, as we'll disable some templates, as a result of the container being requested.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$template  =  clone  $details ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( !  is_null ( $container )  &&  ( $regexp  =  $template -> getRegExp ())  &&  ( !  @ preg_match ( '/' . $regexp . '/i' , $container )))  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-15 18:10:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													$template -> setInvalid (( 'This template is not valid in this container' ), true ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( $_SESSION [ APPCONFIG ] -> getValue ( 'appearance' , 'hide_template_regexp' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$template -> setInvisible (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( $template -> isVisible ()  &&  ( !  $disabled  ||  !  $template -> isAdminDisabled ())) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( is_null ( $type )  ||  ( !  is_null ( $type )  &&  $template -> isType ( $type ))) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														array_push ( $result , $template ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  a  template  by  its  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  string  The  template  ID  as  it  was  when  it  was  generated  ( normally  used  in  $_REQUEST  vars ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  object  Template  ( or  default  template  if  the  ID  doesnt  exist ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  getTemplate ( $templateid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$class  =  $this -> getClassVars (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> templates  as  $template ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( $template -> getID ()  ===  $templateid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  clone  $template ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# If we get here, the template ID didnt exist, so return a blank template, which be interpreted as the default template
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eval ( sprintf ( '$object = new %s($this->server_id,null,null,"default");' , $class [ 'name' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $object ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  a  list  of  template  filenames . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  function  getTemplateFiles ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$result  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> templates  as  $template ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array_push ( $result , $template -> getFileName ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  XML  Template  Class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package  phpLDAPadmin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage  Templates 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								abstract  class  xmlTemplate  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Server ID that the template is linked to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $server_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Template unique ID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Template name - as extracted from the filename
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Template type - creation/modification
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Time this object was created
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $readtime ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Template file name
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $filename ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# The TEMPLATE attributes as per the template definition, or the DN entry
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $attributes  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  __construct ( $server_id , $name = null , $filename = null , $type = null , $id = null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> server_id  =  $server_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> name  =  $name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> type  =  $type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> filename  =  $filename ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> readtime  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> id  =  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# If there is no filename, then this template is a default template.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_null ( $filename )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# If we have a filename, parse the template file and build the object.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$objXML  =  new  xml2array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$xmldata  =  $objXML -> parseXML ( file_get_contents ( $filename ), $filename ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> storeTemplate ( $xmldata ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  an  attribute  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  string  The  Attribute  being  searched . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  int  Attribute  ID  in  the  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  function  getAttrID ( $attr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> attributes  as  $index  =>  $attribute ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( strtolower ( $attr )  ==  $attribute -> getName ()  ||  in_array ( strtolower ( $attr ), $attribute -> getAliases ())) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  $index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  the  Template  filename . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getFileName ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> filename ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> filename ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  the  template  by  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getID ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  sprintf ( '%s:%s' , $this -> getName ( false ), $this -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  'none' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  the  template  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  boolean  Force  the  name  to  be  lowercase  ( default ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getName ( $lower = true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> name ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $lower ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  strtolower ( $this -> name ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  $this -> name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  the  Template  read  time . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getReadTime ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> readtime ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> readtime ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  this  LDAP  Server  object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  object  DataStore  Server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  function  getServer ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $_SESSION [ APPCONFIG ] -> getServer ( $this -> getServerID ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  the  LDAP  server  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  int  Server  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  function  getServerID ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> server_id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> server_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Test  if  a  template  is  of  a  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  isType ( $type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> type  ==  $type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Return  the  template  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getType ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 1 , __FILE__ , __LINE__ , __METHOD__ , $fargs , $this -> type ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  template  title 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getTitle ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( !  isset ( $this -> title )  &&  !  isset ( $this -> description )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  isset ( $this -> title )  ?  $this -> title  :  $this -> description ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Add  another  attribute  to  this  template 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  int  Attribute  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  addAttribute ( $name , $value , $source = null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( !  is_array ( $value )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_dump_backtrace ( 'Value should be an array()' , 1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$server  =  $this -> getServer (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# Initialise the Attribute Factory.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$attribute_factory  =  new  AttributeFactory (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# If there isnt a schema item for this attribute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$attribute  =  $attribute_factory -> newAttribute ( $name , $value , $server -> getIndex (), $source ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$attrid  =  $this -> getAttrID ( $attribute -> getName ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_null ( $attrid )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array_push ( $this -> attributes , $attribute ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_dump_backtrace ( sprintf ( 'There was a request to add an attribute (%s), but it was already defined? (%s)' , $attrid , __METHOD__ ), true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $this -> getID ()  ==  'none' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											usort ( $this -> attributes , 'sortAttrs' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $attribute ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  the  attribute  names 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  array  Array  of  attributes  Names 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getAttributeNames ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$result  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> attributes  as  $attribute ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array_push ( $result , $attribute -> getName ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  a  specific  Attribute 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  string  Name  of  attribute  to  retrieve 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  object  Attribute 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  getAttribute ( $name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( DEBUG_ENABLED  &&  (( $fargs = func_get_args ()) || $fargs = 'NOARGS' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_log ( 'Entered (%%)' , 5 , 0 , __FILE__ , __LINE__ , __METHOD__ , $fargs ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  ( $this -> attributes  as  $attribute ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (( $attribute -> getName ()  ==  strtolower ( $name ))  ||  in_array ( strtolower ( $name ), $attribute -> getAliases ())) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  $attribute ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  May  be  overloaded  in  other  classes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  isAdminDisabled ()  {} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								?>