2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ©  2003 - 2010 ,  The  ESUP - Portail  consortium  &  the  JA - SIG  Collaborative . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Redistribution  and  use  in  source  and  binary  forms ,  with  or  without 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modification ,  are  permitted  provided  that  the  following  conditions  are  met : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *      *  Redistributions  of  source  code  must  retain  the  above  copyright  notice , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        this  list  of  conditions  and  the  following  disclaimer . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *      *  Redistributions  in  binary  form  must  reproduce  the  above  copyright  notice , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        this  list  of  conditions  and  the  following  disclaimer  in  the  documentation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        and / or  other  materials  provided  with  the  distribution . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *      *  Neither  the  name  of  the  ESUP - Portail  consortium  &  the  JA - SIG 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        Collaborative  nor  the  names  of  its  contributors  may  be  used  to  endorse  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        promote  products  derived  from  this  software  without  specific  prior 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        written  permission . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THIS  SOFTWARE  IS  PROVIDED  BY  THE  COPYRIGHT  HOLDERS  AND  CONTRIBUTORS  " AS IS "  AND 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ANY  EXPRESS  OR  IMPLIED  WARRANTIES ,  INCLUDING ,  BUT  NOT  LIMITED  TO ,  THE  IMPLIED 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE  ARE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  DISCLAIMED .  IN  NO  EVENT  SHALL  THE  COPYRIGHT  OWNER  OR  CONTRIBUTORS  BE  LIABLE  FOR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ANY  DIRECT ,  INDIRECT ,  INCIDENTAL ,  SPECIAL ,  EXEMPLARY ,  OR  CONSEQUENTIAL  DAMAGES 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( INCLUDING ,  BUT  NOT  LIMITED  TO ,  PROCUREMENT  OF  SUBSTITUTE  GOODS  OR  SERVICES ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  LOSS  OF  USE ,  DATA ,  OR  PROFITS ;  OR  BUSINESS  INTERRUPTION )  HOWEVER  CAUSED  AND  ON 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ANY  THEORY  OF  LIABILITY ,  WHETHER  IN  CONTRACT ,  STRICT  LIABILITY ,  OR  TORT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( INCLUDING  NEGLIGENCE  OR  OTHERWISE )  ARISING  IN  ANY  WAY  OUT  OF  THE  USE  OF  THIS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SOFTWARE ,  EVEN  IF  ADVISED  OF  THE  POSSIBILITY  OF  SUCH  DAMAGE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// hack by Vangelis Haniotakis to handle the absence of $_SERVER['REQUEST_URI'] in IIS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( ! $_SERVER [ 'REQUEST_URI' ])  {  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									$_SERVER [ 'REQUEST_URI' ]  =  $_SERVER [ 'SCRIPT_NAME' ]  .  '?'  .  $_SERVER [ 'QUERY_STRING' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// another one by Vangelis Haniotakis also to make phpCAS work with PHP5
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( version_compare ( PHP_VERSION ,  '5' ,  '>=' )  &&  ! ( function_exists ( 'domxml_new_doc' )))  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									require_once  ( dirname ( __FILE__ )  .  '/CAS/domxml-php4-to-php5.php' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ file  CAS / CAS . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Interface  class  of  the  phpCAS  library 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ ingroup  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  CONSTANTS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  CAS VERSIONS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS  version .  accessible  for  the  user  by  phpCAS :: getVersion () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( 'PHPCAS_VERSION' ,  '1.1.2' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  CAS VERSIONS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  CAS  version  1.0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_VERSION_1_0 " ,  '1.0' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*!  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  CAS  version  2.0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_VERSION_2_0 " ,  '2.0' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  SAML defines
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SAML  protocol 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " SAML_VERSION_1_1 " ,  'S1' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  XML  header  for  SAML  POST 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " SAML_XML_HEADER " ,  '<?xml version="1.0" encoding="UTF-8"?>' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SOAP  envelope  for  SAML  POST 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_SOAP_ENV " ,  '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SOAP  body  for  SAML  POST 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_SOAP_BODY " ,  '<SOAP-ENV:Body>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SAMLP  request 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAMLP_REQUEST " ,  '<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"  MajorVersion="1" MinorVersion="1" RequestID="_192.168.16.51.1024506224022" IssueInstant="2002-06-19T17:03:44.022Z">' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " SAMLP_REQUEST_CLOSE " ,  '</samlp:Request>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SAMLP  artifact  tag  ( for  the  ticket ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_ASSERTION_ARTIFACT " ,  '<samlp:AssertionArtifact>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SAMLP  close 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_ASSERTION_ARTIFACT_CLOSE " ,  '</samlp:AssertionArtifact>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SOAP  body  close 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_SOAP_BODY_CLOSE " ,  '</SOAP-ENV:Body>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SOAP  envelope  close 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " SAML_SOAP_ENV_CLOSE " ,  '</SOAP-ENV:Envelope>' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SAML  Attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " SAML_ATTRIBUTES " ,  'SAMLATTRIBS' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  publicPGTStorage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  FILE PGT STORAGE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Default  path  used  when  storing  PGT ' s  to  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_FILE_DEFAULT_PATH " ,  '/tmp' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: setPGTStorageFile () ' s  2 nd  parameter  to  write  plain  text  files 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_FILE_FORMAT_PLAIN " ,  'plain' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: setPGTStorageFile () ' s  2 nd  parameter  to  write  xml  files 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_FILE_FORMAT_XML " ,  'xml' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Default  format  used  when  storing  PGT ' s  to  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT " ,  CAS_PGT_STORAGE_FILE_FORMAT_PLAIN );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  DATABASE PGT STORAGE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  default  database  type  when  storing  PGT ' s  to  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE " ,  'mysql' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  default  host  when  storing  PGT ' s  to  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME " ,  'localhost' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  default  port  when  storing  PGT ' s  to  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_DB_DEFAULT_PORT " ,  '' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  default  database  when  storing  PGT ' s  to  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_DB_DEFAULT_DATABASE " ,  'phpCAS' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  default  table  when  storing  PGT ' s  to  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " CAS_PGT_STORAGE_DB_DEFAULT_TABLE " ,  'pgt' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// SERVICE ACCESS ERRORS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  publicServices 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: service ()  error  code  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " PHPCAS_SERVICE_OK " ,  0 );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: service ()  error  code  when  the  PT  could  not  retrieve  because 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  CAS  server  did  not  respond . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE " ,  1 );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: service ()  error  code  when  the  PT  could  not  retrieve  because 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  response  of  the  CAS  server  was  ill - formed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE " ,  2 );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: service ()  error  code  when  the  PT  could  not  retrieve  because 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  CAS  server  did  not  want  to . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " PHPCAS_SERVICE_PT_FAILURE " ,  3 );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS :: service ()  error  code  when  the  service  was  not  available . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( " PHPCAS_SERVICE_NOT AVAILABLE " ,  4 );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  LANGUAGES
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  publicLang 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_ENGLISH " ,  'english' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_FRENCH " ,  'french' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_GREEK " ,  'greek' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_GERMAN " ,  'german' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_JAPANESE " ,  'japanese' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_SPANISH " ,  'spanish' );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_CATALAN " ,  'catalan' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  internalLang 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  phpCAS  default  language  ( when  phpCAS :: setLang ()  is  not  used ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								define ( " PHPCAS_LANG_DEFAULT " ,  PHPCAS_LANG_ENGLISH );  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  DEBUG
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  publicDebug 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  default  directory  for  the  debug  file  under  Unix . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								define ( 'DEFAULT_DEBUG_DIR' ,  '/tmp/' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  MISC
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ addtogroup  internalMisc 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  global  variable  is  used  by  the  interface  class  phpCAS . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ hideinitializer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$GLOBALS [ 'PHPCAS_CLIENT' ]  =  null ;  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  global  variable  is  used  to  store  where  the  initializer  is  called  from  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( to  print  a  comprehensive  error  in  case  of  multiple  calls ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ hideinitializer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$GLOBALS [ 'PHPCAS_INIT_CALL' ]  =  array  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'done'  =>  FALSE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'file'  =>  '?' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'line'  =>  - 1 , 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'method'  =>  '?' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								);  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  global  variable  is  used  to  store  where  the  method  checking 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  authentication  is  called  from  ( to  print  comprehensive  errors ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ hideinitializer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$GLOBALS [ 'PHPCAS_AUTH_CHECK_CALL' ]  =  array  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'done'  =>  FALSE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'file'  =>  '?' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'line'  =>  - 1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'method'  =>  '?' , 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'result'  =>  FALSE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								);  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  global  variable  is  used  to  store  phpCAS  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ hideinitializer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$GLOBALS [ 'PHPCAS_DEBUG' ]  =  array  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'filename'  =>  FALSE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'indent'  =>  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									'unique_id'  =>  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								);  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @} */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  CLIENT CLASS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// include client class
  
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								include_once  ( dirname ( __FILE__ )  .  '/CAS/client.php' );  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  INTERFACE CLASS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ class  phpCAS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  phpCAS  class  is  a  simple  container  for  the  phpCAS  library .  It  provides  CAS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  authentication  for  web  applications  written  in  PHP . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ ingroup  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author  Pascal  Aubry  < pascal . aubry  at  univ - rennes1 . fr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  \internal  All  its  methods  access  the  same  object  ( $PHPCAS_CLIENT ,  declared  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  at  the  end  of  CAS / client . php ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  phpCAS  {  
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  INITIALIZATION
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicInit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  phpCAS  client  initializer . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ note  Only  one  of  the  phpCAS :: client ()  and  phpCAS :: proxy  functions  should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  called ,  only  once ,  and  before  all  other  methods  ( except  phpCAS :: getVersion () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  and  phpCAS :: setDebug ()) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_version  the  version  of  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_hostname  the  hostname  of  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_port  the  port  the  CAS  server  is  running  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_uri  the  URI  the  CAS  server  is  responding  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $start_session  Have  phpCAS  start  PHP  sessions  ( default  true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  a  newly  created  CASClient  object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  client ( $server_version ,  $server_hostname ,  $server_port ,  $server_uri ,  $start_session  =  true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_INIT_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( $PHPCAS_INIT_CALL [ 'method' ]  .  '() has already been called (at '  .  $PHPCAS_INIT_CALL [ 'file' ]  .  ':'  .  $PHPCAS_INIT_CALL [ 'line' ]  .  ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_version )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_version (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_hostname )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_hostname (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_port )  !=  'integer' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_port (should be `integer\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_uri )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_uri (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the initializer is called from
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_INIT_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// initialize the global object $PHPCAS_CLIENT
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT  =  new  CASClient ( $server_version ,  FALSE  /*proxy*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										,  $server_hostname ,  $server_port ,  $server_uri ,  $start_session ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  phpCAS  proxy  initializer . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ note  Only  one  of  the  phpCAS :: client ()  and  phpCAS :: proxy  functions  should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  called ,  only  once ,  and  before  all  other  methods  ( except  phpCAS :: getVersion () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  and  phpCAS :: setDebug ()) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_version  the  version  of  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_hostname  the  hostname  of  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_port  the  port  the  CAS  server  is  running  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $server_uri  the  URI  the  CAS  server  is  responding  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $start_session  Have  phpCAS  start  PHP  sessions  ( default  true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  a  newly  created  CASClient  object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  proxy ( $server_version ,  $server_hostname ,  $server_port ,  $server_uri ,  $start_session  =  true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_INIT_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( $PHPCAS_INIT_CALL [ 'method' ]  .  '() has already been called (at '  .  $PHPCAS_INIT_CALL [ 'file' ]  .  ':'  .  $PHPCAS_INIT_CALL [ 'line' ]  .  ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_version )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_version (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_hostname )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_hostname (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_port )  !=  'integer' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_port (should be `integer\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $server_uri )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $server_uri (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the initialzer is called from
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_INIT_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// initialize the global object $PHPCAS_CLIENT
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT  =  new  CASClient ( $server_version ,  TRUE  /*proxy*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										,  $server_hostname ,  $server_port ,  $server_uri ,  $start_session ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  DEBUGGING
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicDebug 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set / unset  debug  mode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $filename  the  name  of  the  file  used  for  logging ,  or  FALSE  to  stop  debugging . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setDebug ( $filename  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_DEBUG ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $filename  !=  FALSE  &&  gettype ( $filename )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $dbg (should be FALSE or the name of the log file)' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( empty  ( $filename ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( preg_match ( '/^Win.*/' ,  getenv ( 'OS' )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( isset  ( $_ENV [ 'TMP' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$debugDir  =  $_ENV [ 'TMP' ]  .  '/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( isset  ( $_ENV [ 'TEMP' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$debugDir  =  $_ENV [ 'TEMP' ]  .  '/' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$debugDir  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$debugDir  =  DEFAULT_DEBUG_DIR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$filename  =  $debugDir  .  'phpCAS.log' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( empty  ( $PHPCAS_DEBUG [ 'unique_id' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$PHPCAS_DEBUG [ 'unique_id' ]  =  substr ( strtoupper ( md5 ( uniqid ( '' ))),  0 ,  4 ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_DEBUG [ 'filename' ]  =  $filename ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  trace ( 'START phpCAS-'  .  PHPCAS_VERSION  .  ' ******************' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  internalDebug 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  a  wrapper  for  debug_backtrace ()  that  is  not  available  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  in  all  PHP  versions  ( >=  4.3 . 0  only ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  backtrace ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( function_exists ( 'debug_backtrace' ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  debug_backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// poor man's hack ... but it does work ...
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  array  (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Logs  a  string  in  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $str  the  string  to  write 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  log ( $str )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$indent_str  =  " . " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_DEBUG ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( $PHPCAS_DEBUG [ 'filename' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  0 ;  $i  <  $PHPCAS_DEBUG [ 'indent' ];  $i ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												$indent_str  .=  '|    ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											error_log ( $PHPCAS_DEBUG [ 'unique_id' ]  .  ' '  .  $indent_str  .  $str  .  " \n " ,  3 ,  $PHPCAS_DEBUG [ 'filename' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  by  interface  methods  to  print  an  error  and  where  the  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  was  originally  called  from . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $msg  the  message  to  print 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  error ( $msg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$function  =  '?' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$file  =  '?' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$line  =  '?' ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( is_array ( $dbg ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( $i  =  1 ;  $i  <  sizeof ( $dbg );  $i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( is_array ( $dbg [ $i ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( $dbg [ $i ][ 'class' ]  ==  __CLASS__ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														$function  =  $dbg [ $i ][ 'function' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$file  =  $dbg [ $i ][ 'file' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$line  =  $dbg [ $i ][ 'line' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										echo  " <br /> \n <b>phpCAS error</b>: <font color= \" FF0000 \" ><b> "  .  __CLASS__  .  " :: "  .  $function  .  '(): '  .  htmlentities ( $msg )  .  " </b></font> in <b> "  .  $file  .  " </b> on line <b> "  .  $line  .  " </b><br /> \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  trace ( $msg ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceExit (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exit  (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  log  something  in  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  trace ( $str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  log ( $str  .  ' ['  .  basename ( $dbg [ 1 ][ 'file' ])  .  ':'  .  $dbg [ 1 ][ 'line' ]  .  ']' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  indicate  the  start  of  the  execution  of  a  function  in  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  traceBegin ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_DEBUG ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$str  =  '=> ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! empty  ( $dbg [ 2 ][ 'class' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$str  .=  $dbg [ 2 ][ 'class' ]  .  '::' ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$str  .=  $dbg [ 2 ][ 'function' ]  .  '(' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_array ( $dbg [ 2 ][ 'args' ]))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											foreach  ( $dbg [ 2 ][ 'args' ]  as  $index  =>  $arg )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( $index  !=  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													$str  .=  ', ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												$str  .=  str_replace ( " \n " ,  " " ,  var_export ( $arg ,  TRUE )); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$str  .=  ') ['  .  basename ( $dbg [ 2 ][ 'file' ])  .  ':'  .  $dbg [ 2 ][ 'line' ]  .  ']' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  log ( $str ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_DEBUG [ 'indent' ] ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  indicate  the  end  of  the  execution  of  a  function  in  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $res  the  result  of  the  function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  traceEnd ( $res  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_DEBUG ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_DEBUG [ 'indent' ] -- ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$str  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$str  .=  '<= '  .  str_replace ( " \n " ,  " " ,  var_export ( $res ,  TRUE )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  log ( $str ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  indicate  the  end  of  the  execution  of  the  program 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  traceExit ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_DEBUG ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  log ( 'exit()' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ( $PHPCAS_DEBUG [ 'indent' ]  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  log ( '-' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$PHPCAS_DEBUG [ 'indent' ] -- ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  INTERNATIONALIZATION
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicLang 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  set  the  language  used  by  phpCAS .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ note  Can  be  called  only  once . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $lang  a  string  representing  the  language . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ sa  PHPCAS_LANG_FRENCH ,  PHPCAS_LANG_ENGLISH 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setLang ( $lang )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $lang )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $lang (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setLang ( $lang ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  VERSION
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  returns  the  phpCAS  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  the  phpCAS  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getVersion ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  PHPCAS_VERSION ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  HTML OUTPUT
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicOutput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  sets  the  HTML  header  used  for  all  outputs . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $header  the  HTML  header . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setHTMLHeader ( $header )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $header )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $header (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setHTMLHeader ( $header ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  sets  the  HTML  footer  used  for  all  outputs . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $footer  the  HTML  footer . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setHTMLFooter ( $footer )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $footer )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $footer (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setHTMLFooter ( $footer ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  PGT STORAGE
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicPGTStorage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  tell  phpCAS  to  store  the  response  of  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  CAS  server  to  PGT  requests  onto  the  filesystem .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $format  the  format  used  to  store  the  PGT 's (`plain'  and  ` xml '  allowed ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $path  the  path  where  the  PGT ' s  should  be  stored 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setPGTStorageFile ( $format  =  '' ,  $path  =  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_CLIENT -> isProxy ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called before '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() (called at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $format )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $format (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $path )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $format (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setPGTStorageFile ( $format ,  $path ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  tell  phpCAS  to  store  the  response  of  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  CAS  server  to  PGT  requests  into  a  database .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ note  The  connection  to  the  database  is  done  only  when  needed .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  As  a  consequence ,  bad  parameters  are  detected  only  when  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  initializing  PGT  storage ,  except  in  debug  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $user  the  user  to  access  the  data  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $password  the  user ' s  password 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $database_type  the  type  of  the  database  hosting  the  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $hostname  the  server  hosting  the  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $port  the  port  the  server  is  listening  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $database  the  name  of  the  database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $table  the  name  of  the  table  storing  the  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setPGTStorageDB ( $user ,  $password ,  $database_type  =  '' ,  $hostname  =  '' ,  $port  =  0 ,  $database  =  '' ,  $table  =  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_CLIENT -> isProxy ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called before '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() (called at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $user )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $user (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $password )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $password (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $database_type )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $database_type (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $hostname )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $hostname (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $port )  !=  'integer' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $port (should be `integer\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $database )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $database (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $table )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $table (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setPGTStorageDB ( $user ,  $password ,  $database_type ,  $hostname ,  $port ,  $database ,  $table ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ACCESS TO EXTERNAL SERVICES
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicServices 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  access  an  HTTP [ S ]  service . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  service  to  access . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $err_code  an  error  code  Possible  values  are  PHPCAS_SERVICE_OK  ( on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  success ),  PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE ,  PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  PHPCAS_SERVICE_PT_FAILURE ,  PHPCAS_SERVICE_NOT  AVAILABLE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $output  the  output  of  the  service  ( also  used  to  give  an  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  message  on  failure ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  TRUE  on  success ,  FALSE  otherwise  ( in  this  later  case ,  $err_code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  gives  the  reason  why  it  failed  and  $output  contains  an  error  message ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  serviceWeb ( $url ,  &  $err_code ,  &  $output )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_CLIENT -> isProxy ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after the programmer is sure the user has been authenticated (by calling '  .  __CLASS__  .  '::checkAuthentication() or '  .  __CLASS__  .  '::forceAuthentication()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'result' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'authentication was checked (by '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ') but the method returned FALSE' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$res  =  $PHPCAS_CLIENT -> serviceWeb ( $url ,  $err_code ,  $output ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd ( $res ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $res ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  access  an  IMAP / POP3 / NNTP  service . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  a  string  giving  the  URL  of  the  service ,  including  the  mailing  box 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  for  IMAP  URLs ,  as  accepted  by  imap_open () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $service  a  string  giving  for  CAS  retrieve  Proxy  ticket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $flags  options  given  to  imap_open () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $err_code  an  error  code  Possible  values  are  PHPCAS_SERVICE_OK  ( on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  success ),  PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE ,  PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  PHPCAS_SERVICE_PT_FAILURE ,  PHPCAS_SERVICE_NOT  AVAILABLE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $err_msg  an  error  message  on  failure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $pt  the  Proxy  Ticket  ( PT )  retrieved  from  the  CAS  server  to  access  the  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  on  success ,  FALSE  on  error ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  an  IMAP  stream  on  success ,  FALSE  otherwise  ( in  this  later  case ,  $err_code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  gives  the  reason  why  it  failed  and  $err_msg  contains  an  error  message ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  serviceMail ( $url ,  $service ,  $flags ,  &  $err_code ,  &  $err_msg ,  &  $pt )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_CLIENT -> isProxy ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after the programmer is sure the user has been authenticated (by calling '  .  __CLASS__  .  '::checkAuthentication() or '  .  __CLASS__  .  '::forceAuthentication()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'result' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'authentication was checked (by '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ') but the method returned FALSE' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( gettype ( $flags )  !=  'integer' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $flags (should be `integer\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$res  =  $PHPCAS_CLIENT -> serviceMail ( $url ,  $service ,  $flags ,  $err_code ,  $err_msg ,  $pt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd ( $res ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $res ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//  AUTHENTICATION
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ########################################################################
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ addtogroup  publicAuth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  times  authentication  will  be  cached  before  really  accessing  the  CAS  server  in  gateway  mode :  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  -  - 1 :  check  only  once ,  and  then  never  again  ( until  you  pree  login ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  -  0 :  always  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  -  n :  check  every  " n "  time 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $n  an  integer . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setCacheTimesForAuthRecheck ( $n )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $n )  !=  'integer' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $header (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setCacheTimesForAuthRecheck ( $n ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  called  to  check  if  the  user  is  authenticated  ( use  the  gateway  feature ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  TRUE  when  the  user  is  authenticated ;  otherwise  FALSE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  checkAuthentication ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$auth  =  $PHPCAS_CLIENT -> checkAuthentication (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the authentication has been checked and the result
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_AUTH_CHECK_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'result'  =>  $auth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd ( $auth ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $auth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  called  to  force  authentication  if  the  user  was  not  already  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  authenticated .  If  the  user  is  not  authenticated ,  halt  by  redirecting  to  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  forceAuthentication ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$auth  =  $PHPCAS_CLIENT -> forceAuthentication (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the authentication has been checked and the result
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_AUTH_CHECK_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'result'  =>  $auth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! $auth )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  trace ( 'user is not authenticated, redirecting to the CAS server' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$PHPCAS_CLIENT -> forceAuthentication (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  trace ( 'no need to authenticate (user `'  .  phpCAS  ::  getUser ()  .  '\' is already authenticated)' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $auth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  called  to  renew  the  authentication . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 **/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  renewAuthentication ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before'  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the authentication has been checked and the result
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_AUTH_CHECK_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'result'  =>  $auth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> renewAuthentication (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  has  been  left  from  version  0.4 . 1  for  compatibility  reasons . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  authenticate ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  error ( 'this method is deprecated. You should use '  .  __CLASS__  .  '::forceAuthentication() instead' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  called  to  check  if  the  user  is  authenticated  ( previously  or  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  tickets  given  in  the  URL ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  TRUE  when  the  user  is  authenticated . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  isAuthenticated ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// call the isAuthenticated method of the global $PHPCAS_CLIENT object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$auth  =  $PHPCAS_CLIENT -> isAuthenticated (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// store where the authentication has been checked and the result
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$dbg  =  phpCAS  ::  backtrace (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_AUTH_CHECK_CALL  =  array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'done'  =>  TRUE , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'file'  =>  $dbg [ 0 ][ 'file' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'line'  =>  $dbg [ 0 ][ 'line' ], 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'method'  =>  __CLASS__  .  '::'  .  __FUNCTION__ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'result'  =>  $auth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd ( $auth ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $auth ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Checks  whether  authenticated  based  on  $_SESSION .  Useful  to  avoid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  server  calls . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  true  if  authenticated ,  false  otherwise . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  0.4 . 22  by  Brendan  Arnold 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  isSessionAuthenticated ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ( $PHPCAS_CLIENT -> isSessionAuthenticated ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  returns  the  CAS  user ' s  login  name . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ warning  should  not  be  called  only  after  phpCAS :: forceAuthentication () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  or  phpCAS :: checkAuthentication () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  the  login  name  of  the  authenticated  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getUser ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::forceAuthentication() or '  .  __CLASS__  .  '::isAuthenticated()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'result' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'authentication was checked (by '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ') but the method returned FALSE' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $PHPCAS_CLIENT -> getUser (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  returns  the  CAS  user ' s  login  name . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ warning  should  not  be  called  only  after  phpCAS :: forceAuthentication () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  or  phpCAS :: checkAuthentication () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  the  login  name  of  the  authenticated  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getAttributes ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ,  $PHPCAS_AUTH_CHECK_CALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'done' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::forceAuthentication() or '  .  __CLASS__  .  '::isAuthenticated()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_AUTH_CHECK_CALL [ 'result' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'authentication was checked (by '  .  $PHPCAS_AUTH_CHECK_CALL [ 'method' ]  .  '() at '  .  $PHPCAS_AUTH_CHECK_CALL [ 'file' ]  .  ':'  .  $PHPCAS_AUTH_CHECK_CALL [ 'line' ]  .  ') but the method returned FALSE' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $PHPCAS_CLIENT -> getAttributes (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Handle  logout  requests . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  handleLogoutRequests ( $check_client  =  true ,  $allowed_clients  =  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ( $PHPCAS_CLIENT -> handleLogoutRequests ( $check_client ,  $allowed_clients )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  returns  the  URL  to  be  used  to  login . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  or  phpCAS :: isAuthenticated () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  the  login  name  of  the  authenticated  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getServerLoginURL ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $PHPCAS_CLIENT -> getServerLoginURL (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  login  URL  of  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  login  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  0.4 . 21  by  Wyman  Chan 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setServerLoginURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' this  method  should  only  be  called  after 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															' . __CLASS__ . ' :: client () ' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' type  mismatched  for  parameter  $url  ( should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														` string\ ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setServerLoginURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  serviceValidate  URL  of  the  CAS  server . 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Used  only  in  CAS  1.0  validations 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param  $url  the  serviceValidate  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  1.1 . 0  by  Joachim  Fritschi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setServerServiceValidateURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' this  method  should  only  be  called  after 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															' . __CLASS__ . ' :: client () ' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' type  mismatched  for  parameter  $url  ( should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														` string\ ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setServerServiceValidateURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Set  the  proxyValidate  URL  of  the  CAS  server . 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Used  for  all  CAS  2.0  validations 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param  $url  the  proxyValidate  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  1.1 . 0  by  Joachim  Fritschi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setServerProxyValidateURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' this  method  should  only  be  called  after 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															' . __CLASS__ . ' :: client () ' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' type  mismatched  for  parameter  $url  ( should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														` string\ ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setServerProxyValidateURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Set  the  samlValidate  URL  of  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  samlValidate  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  1.1 . 0  by  Joachim  Fritschi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setServerSamlValidateURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' this  method  should  only  be  called  after 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															' . __CLASS__ . ' :: client () ' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' type  mismatched  for  parameter  $url  ( should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														` string\ ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setServerSamlValidateURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  returns  the  URL  to  be  used  to  login . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  or  phpCAS :: isAuthenticated () . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  the  login  name  of  the  authenticated  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getServerLogoutURL ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should not be called before '  .  __CLASS__  .  '::client() or '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $PHPCAS_CLIENT -> getServerLogoutURL (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  logout  URL  of  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  logout  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  0.4 . 21  by  Wyman  Chan 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setServerLogoutURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' this  method  should  only  be  called  after 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															' . __CLASS__ . ' :: client () ' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( ' type  mismatched  for  parameter  $url  ( should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														` string\ ')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setServerLogoutURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  logout  from  CAS . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ params  $params  an  array  that  contains  the  optional  url  and  service  parameters  that  will  be  passed  to  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  logout ( $params  =  " " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$parsedParams  =  array  (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( $params  !=  " " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_string ( $params ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												phpCAS  ::  error ( 'method `phpCAS::logout($url)\' is now deprecated, use `phpCAS::logoutWithUrl($url)\' instead' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! is_array ( $params ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												phpCAS  ::  error ( 'type mismatched for parameter $params (should be `array\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											foreach  ( $params  as  $key  =>  $value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( $key  !=  " service "  &&  $key  !=  " url " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													phpCAS  ::  error ( 'only `url\' and `service\' parameters are allowed for method `phpCAS::logout($params)\'' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$parsedParams [ $key ]  =  $value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> logout ( $parsedParams ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// never reached
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  logout  from  CAS .  Halts  by  redirecting  to  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $service  a  URL  that  will  be  transmitted  to  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  logoutWithRedirectService ( $service )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_string ( $service ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $service (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> logout ( array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" service "  =>  $service 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										)); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// never reached
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  logout  from  CAS .  Halts  by  redirecting  to  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  a  URL  that  will  be  transmitted  to  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  logoutWithUrl ( $url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_string ( $url ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> logout ( array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" url "  =>  $url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										)); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// never reached
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  This  method  is  used  to  logout  from  CAS .  Halts  by  redirecting  to  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $service  a  URL  that  will  be  transmitted  to  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  a  URL  that  will  be  transmitted  to  the  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  logoutWithRedirectServiceAndUrl ( $service ,  $url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_string ( $service ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $service (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_string ( $url ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> logout ( array  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" service "  =>  $service , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											" url "  =>  $url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										)); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// never reached
 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  fixed  URL  that  will  be  used  by  the  CAS  server  to  transmit  the  PGT . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  When  this  method  is  not  called ,  a  phpCAS  script  uses  its  own  URL  for  the  callback . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setFixedCallbackURL ( $url  =  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! $PHPCAS_CLIENT -> isProxy ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setCallbackURL ( $url ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  fixed  URL  that  will  be  set  as  the  CAS  service  parameter .  When  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  method  is  not  called ,  a  phpCAS  script  uses  its  own  URL . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $url  the  URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setFixedServiceURL ( $url )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $url )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $url (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setURL ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  the  URL  that  is  set  as  the  CAS  service  parameter . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  getServiceURL ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ( $PHPCAS_CLIENT -> getURL ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Retrieve  a  Proxy  Ticket  from  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  retrievePT ( $target_service ,  &  $err_code ,  &  $err_msg )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $target_service )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $target_service(should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ( $PHPCAS_CLIENT -> retrievePT ( $target_service ,  $err_code ,  $err_msg )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  certificate  of  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $cert  the  PEM  certificate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setCasServerCert ( $cert )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $cert )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $cert (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setCasServerCert ( $cert ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  the  certificate  of  the  CAS  server  CA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $cert  the  CA  certificate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setCasServerCACert ( $cert )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( gettype ( $cert )  !=  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'type mismatched for parameter $cert (should be `string\')' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setCasServerCACert ( $cert ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Set  no  SSL  validation  for  the  CAS  server . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  setNoCasServerValidation ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setNoCasServerValidation (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/** @} */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Change  CURL  options . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  CURL  is  used  to  connect  through  HTTPS  to  CAS  server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $key  the  option  key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  $value  the  value  to  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  setExtraCurlOption ( $key ,  $value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $PHPCAS_CLIENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceBegin (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_object ( $PHPCAS_CLIENT ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											phpCAS  ::  error ( 'this method should only be called after '  .  __CLASS__  .  '::client() or'  .  __CLASS__  .  '::proxy()' ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$PHPCAS_CLIENT -> setExtraCurlOption ( $key ,  $value ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										phpCAS  ::  traceEnd (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// DOCUMENTATION
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  MAIN PAGE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ mainpage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  following  pages  only  show  the  source  documentation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  MODULES DEFINITION
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @defgroup public User interface */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicInit  Initialization  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  public  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicAuth  Authentication  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  public  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicServices  Access  to  external  services  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  public  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicConfig  Configuration  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  public  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicLang  Internationalization  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  publicConfig  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicOutput  HTML  output  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  publicConfig  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicPGTStorage  PGT  storage  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  publicConfig  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  publicDebug  Debugging  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  public  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/** @defgroup internal Implementation */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalAuthentication  Authentication  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalBasic  CAS  Basic  client  features  ( CAS  1.0 ,  Service  Tickets )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalProxy  CAS  Proxy  features  ( CAS  2.0 ,  Proxy  Granting  Tickets )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalPGTStorage  PGT  storage  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalProxy  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalPGTStorageDB  PGT  storage  in  a  database  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalPGTStorage  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalPGTStorageFile  PGT  storage  on  the  filesystem  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalPGTStorage  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalCallback  Callback  from  the  CAS  server  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalProxy  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalProxied  CAS  proxied  client  features  ( CAS  2.0 ,  Proxy  Tickets )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalConfig  Configuration  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalOutput  HTML  output  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalConfig  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalLang  Internationalization  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internalConfig 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  To  add  a  new  language : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  1.  define  a  new  constant  PHPCAS_LANG_XXXXXX  in  CAS / CAS . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  2.  copy  any  file  from  CAS / languages  to  CAS / languages / XXXXXX . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  3.  Make  the  translations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalDebug  Debugging  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  @ defgroup  internalMisc  Miscellaneous  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   @ ingroup  internal  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// ########################################################################
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  EXAMPLES
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_simple . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-30 16:53:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_proxy . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_proxy2 . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_lang . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_html . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_file . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_db . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_service . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_session_proxy . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_session_service . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_gateway . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ example  example_custom_urls . php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 23:24:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								?>