/** * phpCAS proxy initializer. * * @param string $server_version the version of the CAS server * @param string $server_hostname the hostname of the CAS server * @param string $server_port the port the CAS server is running on * @param string $server_uri the URI the CAS server is responding on * @param bool $changeSessionID Allow phpCAS to change the session_id (Single * Sign Out/handleLogoutRequests is based on that change) * * @return a newly created CAS_Client object * @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()). */ public static function proxy($server_version, $server_hostname, $server_port, $server_uri, $changeSessionID = true) { phpCAS::traceBegin(); if (is_object(self::$_PHPCAS_CLIENT)) { phpCAS::error(self::$_PHPCAS_INIT_CALL['method'] . '() has already been called (at ' . self::$_PHPCAS_INIT_CALL['file'] . ':' . self::$_PHPCAS_INIT_CALL['line'] . ')'); } // store where the initialzer is called from $dbg = debug_backtrace(); self::$_PHPCAS_INIT_CALL = array('done' => true, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], 'method' => __CLASS__ . '::' . __FUNCTION__); // initialize the object $_PHPCAS_CLIENT try { self::$_PHPCAS_CLIENT = new CAS_Client($server_version, true, $server_hostname, $server_port, $server_uri, $changeSessionID); } catch (Exception $e) { phpCAS::error(get_class($e) . ': ' . $e->getMessage()); } phpCAS::traceEnd(); }
/** * phpCAS proxy initializer. * * @param string $server_version the version of the CAS server * @param string $server_hostname the hostname of the CAS server * @param string $server_port the port the CAS server is running on * @param string $server_uri the URI the CAS server is responding on * @param bool $changeSessionID Allow phpCAS to change the session_id (Single * Sign Out/handleLogoutRequests is based on that change) * * @return a newly created CAS_Client object * @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()). */ public static function proxy($server_version, $server_hostname, $server_port, $server_uri, $changeSessionID = true) { phpCAS::traceBegin(); if (is_object(self::$_PHPCAS_CLIENT)) { phpCAS::error(self::$_PHPCAS_INIT_CALL['method'] . '() has already been called (at ' . self::$_PHPCAS_INIT_CALL['file'] . ':' . self::$_PHPCAS_INIT_CALL['line'] . ')'); } if (gettype($server_version) != 'string') { phpCAS::error('type mismatched for parameter $server_version (should be `string\')'); } if (gettype($server_hostname) != 'string') { phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')'); } if (gettype($server_port) != 'integer') { phpCAS::error('type mismatched for parameter $server_port (should be `integer\')'); } if (gettype($server_uri) != 'string') { phpCAS::error('type mismatched for parameter $server_uri (should be `string\')'); } // store where the initialzer is called from $dbg = debug_backtrace(); self::$_PHPCAS_INIT_CALL = array('done' => true, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], 'method' => __CLASS__ . '::' . __FUNCTION__); // initialize the object $_PHPCAS_CLIENT self::$_PHPCAS_CLIENT = new CAS_Client($server_version, true, $server_hostname, $server_port, $server_uri, $changeSessionID); phpCAS::traceEnd(); }
/** * For testing purposes, use this method to set the client to a test double * * @return void */ public static function setCasClient(\CAS_Client $client) { self::$_PHPCAS_CLIENT = $client; }