All pastes #812414 Raw Edit

Jemand

public text v1 · immutable
·published 2007-12-11 19:22 UTC
rendered paste body
<?php
class ajax_xajax implements iAjax
{
	private 	static	$instance 	= null;
	private 	static	$api		= null;
	public  	static	$engine		= null;
	public	 	static	$response	= null;
	private 			$methods	= null;
	private				$registered	= array();
	
	
	protected function __construct( )
	{
		$this->methods = get_class_methods( $this );
	}
	
	public static function getInstance( $api )
	{
		if ( self::$instance == null )
		{
			self::$instance = new ajax_xajax();
			
			self::$api = $api;
			
			self::setConfig();
		}
		
		return self::$instance;
	}
	
	private function setConfig()
	{
		require_once( self::$api->vars['root_path'] . 'lib/kernel/xajax/xajax_core/xajax.inc.php' );
		self::$engine	= new xajax();
		self::$response	= self::$engine->getGlobalResponse();
		self::$engine->setCharEncoding('utf-8');
		self::$engine->setFlag('waitCursor',true);
		self::$engine->setFlag('decodeUTF8Input',true);
		//self::$engine->setFlag('debug',true);
		self::$engine->setWrapperPrefix( '' );
		//self::$engine->configure('deferScriptGeneration', true);
	}

	/**
	 * Calls ajax function of its own, or of the used framework
	 * awaits an undefined number of values
	 */
	private function __call( $sMethod, $aArgs )
	{
		if ( in_array( $sMethod, $this->methods ) )
		{
			$aFunction = array( $this, $sMethod);
		}
		else 
		{
			$aFunction = array(self::$response, $sMethod);
		}
		
		call_user_func_array($aFunction, $aArgs);
	}

	/**
	 * Register all ajax  functions of an entire class
	 * 
	 *  @param mixed $class
	 */
	public function registerClassMethods( $class )
	{
		$methods = get_class_methods( get_class( $class ) );

		foreach ( $methods as $method )
		{
			if ( preg_match( "/^ajax_/", $method) )
			{
				if ( !$this->registered[ $method ] )
				{
					self::$engine->registerFunction(array($method, $class, $method));
					
					$this->registered[ $method ] = true;
				}
			}
		}		
	}
	
	/**
	 * Register one ajax function 
	 * 
	 *  @param string $name
	 */
	public function registerSimpleFunction( $name )
	{
		self::$engine->registerFunction($name);		
	}
	
	public function getJavascript()
	{
		self::$engine->processRequest();
		
		return self::$engine->getJavascript( self::$api->vars['root_uri'] . 'lib/kernel/xajax/');
	}
	
	public function returnResponse()
	{
		return self::$response;
	}
	
	public function addWidget( $content )
	{
		$content = preg_replace( "/\\n/", '\\n', $content );
		$content = preg_replace( "/\\r/", '\\r', $content );
		$content = preg_replace( "/\\t/", '\\t', $content );
		$content = utf8_encode( $content );
		$content = addslashes( $content );
		self::script("addWidget( '{$content}' )");
		return self::returnResponse();
	}
	
	public function alert( $aArgs )
	{
		if ( is_array( $aArgs ) or is_object( $aArgs ) )
		{
			$aArgs = print_r( $aArgs, true );
		}
		
		self::$response->alert( $aArgs );
	}
}

?>