⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xajax.inc.php

📁 voip开源项目
💻 PHP
📖 第 1 页 / 共 3 页
字号:
	/**	 * Turns off decoding the input request args from UTF-8 (default behavior).	 */	function decodeUTF8InputOff()	{		$this->bDecodeUTF8Input = false;	}		/**	 * Tells the response object to convert special characters to HTML entities	 * automatically (only works if the mb_string extension is available).	 */	function outputEntitiesOn()	{		$this->bOutputEntities = true;	}		/**	 * Tells the response object to output special characters intact. (default	 * behavior).	 */	function outputEntitiesOff()	{		$this->bOutputEntities = false;	}					/**	 * Registers a PHP function or method to be callable through xajax in your	 * Javascript. If you want to register a function, pass in the name of that	 * function. If you want to register a static class method, pass in an	 * array like so:	 * <kbd>array("myFunctionName", "myClass", "myMethod")</kbd>	 * For an object instance method, use an object variable for the second	 * array element (and in PHP 4 make sure you put an & before the variable	 * to pass the object by reference). Note: the function name is what you	 * call via Javascript, so it can be anything as long as it doesn't	 * conflict with any other registered function name.	 * 	 * <i>Usage:</i> <kbd>$xajax->registerFunction("myFunction");</kbd>	 * or: <kbd>$xajax->registerFunction(array("myFunctionName", &$myObject, "myMethod"));</kbd>	 * 	 * @param mixed  contains the function name or an object callback array	 * @param mixed  request type (XAJAX_GET/XAJAX_POST) that should be used 	 *               for this function.  Defaults to XAJAX_POST.	 */	function registerFunction($mFunction,$sRequestType=XAJAX_POST)	{		if (is_string($sRequestType)) {			return $this->registerExternalFunction($mFunction, $sRequestType);		}			if (is_array($mFunction)) {			$this->aFunctions[$mFunction[0]] = 1;			$this->aFunctionRequestTypes[$mFunction[0]] = $sRequestType;			$this->aObjects[$mFunction[0]] = array_slice($mFunction, 1);		}			else {			$this->aFunctions[$mFunction] = 1;			$this->aFunctionRequestTypes[$mFunction] = $sRequestType;		}	}		/**	 * Registers a PHP function to be callable through xajax which is located	 * in some other file.  If the function is requested the external file will	 * be included to define the function before the function is called.	 * 	 * <i>Usage:</i> <kbd>$xajax->registerExternalFunction("myFunction","myFunction.inc.php",XAJAX_POST);</kbd>	 * 	 * @param string contains the function name or an object callback array	 *               ({@link xajax::registerFunction() see registerFunction} for	 *               more info on object callback arrays)	 * @param string contains the path and filename of the include file	 * @param mixed  the RequestType (XAJAX_GET/XAJAX_POST) that should be used 	 *		          for this function. Defaults to XAJAX_POST.	 */	function registerExternalFunction($mFunction,$sIncludeFile,$sRequestType=XAJAX_POST)	{		$this->registerFunction($mFunction, $sRequestType);				if (is_array($mFunction)) {			$this->aFunctionIncludeFiles[$mFunction[0]] = $sIncludeFile;		}		else {			$this->aFunctionIncludeFiles[$mFunction] = $sIncludeFile;		}	}		/**	 * Registers a PHP function to be called when xajax cannot find the	 * function being called via Javascript. Because this is technically	 * impossible when using "wrapped" functions, the catch-all feature is	 * only useful when you're directly using the xajax.call() Javascript	 * method. Use the catch-all feature when you want more dynamic ability to	 * intercept unknown calls and handle them in a custom way.	 * 	 * <i>Usage:</i> <kbd>$xajax->registerCatchAllFunction("myCatchAllFunction");</kbd>	 * 	 * @param string contains the function name or an object callback array	 *               ({@link xajax::registerFunction() see registerFunction} for	 *               more info on object callback arrays)	 */	function registerCatchAllFunction($mFunction)	{		if (is_array($mFunction)) {			$this->sCatchAllFunction = $mFunction[0];			$this->aObjects[$mFunction[0]] = array_slice($mFunction, 1);		}		else {			$this->sCatchAllFunction = $mFunction;		}	}		/**	 * Registers a PHP function to be called before xajax calls the requested	 * function. xajax will automatically add the request function's response	 * to the pre-function's response to create a single response. Another	 * feature is the ability to return not just a response, but an array with	 * the first element being false (a boolean) and the second being the	 * response. In this case, the pre-function's response will be returned to	 * the browser without xajax calling the requested function.	 * 	 * <i>Usage:</i> <kbd>$xajax->registerPreFunction("myPreFunction");</kbd>	 * 	 * @param string contains the function name or an object callback array	 *               ({@link xajax::registerFunction() see registerFunction} for	 *               more info on object callback arrays)	 */	function registerPreFunction($mFunction)	{		if (is_array($mFunction)) {			$this->sPreFunction = $mFunction[0];			$this->aObjects[$mFunction[0]] = array_slice($mFunction, 1);		}		else {			$this->sPreFunction = $mFunction;		}	}		/**	 * Returns true if xajax can process the request, false if otherwise.	 * You can use this to determine if xajax needs to process the request or	 * not.	 * 	 * @return boolean	 */ 	function canProcessRequests()	{		if ($this->getRequestMode() != -1) return true;		return false;	}		/**	 * Returns the current request mode (XAJAX_GET or XAJAX_POST), or -1 if	 * there is none.	 * 	 * @return mixed	 */	function getRequestMode()	{		if (!empty($_GET["xajax"]))			return XAJAX_GET;				if (!empty($_POST["xajax"]))			return XAJAX_POST;					return -1;	}		function processRequest()	{		return $this->processRequests();	}		/**	 * This is the main communications engine of xajax. The engine handles all	 * incoming xajax requests, calls the apporiate PHP functions (or	 * class/object methods) and passes the XML responses back to the	 * Javascript response handler. If your RequestURI is the same as your Web	 * page then this function should be called before any headers or HTML has	 * been sent.	 */	function processRequests()	{					$requestMode = -1;		$sFunctionName = "";		$bFoundFunction = true;		$bFunctionIsCatchAll = false;		$sFunctionNameForSpecial = "";		$aArgs = array();		$sPreResponse = "";		$bEndRequest = false;				$requestMode = $this->getRequestMode();		if ($requestMode == -1) return;			if ($requestMode == XAJAX_POST)		{			$sFunctionName = $_POST["xajax"];						if (!empty($_POST["xajaxargs"])) 				$aArgs = $_POST["xajaxargs"];		}		else		{				header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");			header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");			header ("Cache-Control: no-cache, must-revalidate");			header ("Pragma: no-cache");						$sFunctionName = $_GET["xajax"];						if (!empty($_GET["xajaxargs"])) 				$aArgs = $_GET["xajaxargs"];		}				// Use xajax error handler if necessary		if ($this->bErrorHandler) {			$GLOBALS['xajaxErrorHandlerText'] = "";			set_error_handler("xajaxErrorHandler");		}				if ($this->sPreFunction) {			if (!$this->_isFunctionCallable($this->sPreFunction)) {				$bFoundFunction = false;				$oResponse = new xajaxResponse();				$oResponse->addAlert("Unknown Pre-Function ". $this->sPreFunction);			}		}		//include any external dependencies associated with this function name		if (array_key_exists($sFunctionName,$this->aFunctionIncludeFiles))		{			ob_start();			include_once($this->aFunctionIncludeFiles[$sFunctionName]);			ob_end_clean();		}				if ($bFoundFunction) {			$sFunctionNameForSpecial = $sFunctionName;			if (!array_key_exists($sFunctionName, $this->aFunctions))			{				if ($this->sCatchAllFunction) {					$sFunctionName = $this->sCatchAllFunction;					$bFunctionIsCatchAll = true;				}				else {					$bFoundFunction = false;					$oResponse = new xajaxResponse();					$oResponse->addAlert("Unknown Function $sFunctionName.");				}			}		}				if ($bFoundFunction)		{			for ($i = 0; $i < sizeof($aArgs); $i++)			{				// If magic quotes is on, then we need to strip the slashes from the args				if (get_magic_quotes_gpc() == 1 && is_string($aArgs[$i])) {									$aArgs[$i] = stripslashes($aArgs[$i]);				}				if (stristr($aArgs[$i],"<xjxobj>") != false)				{					$aArgs[$i] = $this->_xmlToArray("xjxobj",$aArgs[$i]);					}				else if (stristr($aArgs[$i],"<xjxquery>") != false)				{					$aArgs[$i] = $this->_xmlToArray("xjxquery",$aArgs[$i]);					}				else if ($this->bDecodeUTF8Input)				{					$aArgs[$i] = $this->_decodeUTF8Data($aArgs[$i]);					}			}			if ($this->sPreFunction) {				$mPreResponse = $this->_callFunction($this->sPreFunction, array($sFunctionNameForSpecial, $aArgs));				if (is_array($mPreResponse) && $mPreResponse[0] === false) {					$bEndRequest = true;					$sPreResponse = $mPreResponse[1];				}				else {					$sPreResponse = $mPreResponse;				}				if ($bEndRequest) $oResponse = $sPreResponse;			}						if (!$bEndRequest) {				if (!$this->_isFunctionCallable($sFunctionName)) {					$oResponse = new xajaxResponse();					$oResponse->addAlert("The Registered Function $sFunctionName Could Not Be Found.");				}				else {					if ($bFunctionIsCatchAll) {						$aArgs = array($sFunctionNameForSpecial, $aArgs);					}					$oResponse = $this->_callFunction($sFunctionName, $aArgs);				}				if (is_string($sResponse)) {					$oResponse = new xajaxResponse();					$oResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.\n\nOutput: ".$oResponse);				}				else if ($sPreResponse != "") {					$oNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities);					$oNewResponse->loadXML($sPreResponse);					$oNewResponse->loadXML($oResponse);					$oResponse = $sNewResponse;				}			}		}				$sContentHeader = "Content-type: text/xml;";		if ($this->sEncoding && strlen(trim($this->sEncoding)) > 0)			$sContentHeader .= " charset=".$this->sEncoding;		header($sContentHeader);		if ($this->bErrorHandler && !empty( $GLOBALS['xajaxErrorHandlerText'] )) {			$oErrorResponse = new xajaxResponse();			$oErrorResponse->addAlert("** PHP Error Messages: **" . $GLOBALS['xajaxErrorHandlerText']);			if ($this->sLogFile) {				$fH = @fopen($this->sLogFile, "a");				if (!$fH) {					$oErrorResponse->addAlert("** Logging Error **\n\nxajax was unable to write to the error log file:\n" . $this->sLogFile);				}				else {					fwrite($fH, "** xajax Error Log - " . strftime("%b %e %Y %I:%M:%S %p") . " **" . $GLOBALS['xajaxErrorHandlerText'] . "\n\n\n");					fclose($fH);				}			}			$oErrorResponse->loadXML($oResponse);			$oResponse = $oErrorResponse;					}		if ($this->bCleanBuffer) while (@ob_end_clean());		print $oResponse->getOutput();		if ($this->bErrorHandler) restore_error_handler();				if ($this->bExitAllowed)			exit();	}	/**				 * Prints the xajax Javascript header and wrapper code into your page by	 * printing the output of the getJavascript() method. It should only be	 * called between the <pre><head> </head></pre> tags in your HTML page.	 * Remember, if you only want to obtain the result of this function, use	 * {@link xajax::getJavascript()} instead.	 * 	 * <i>Usage:</i>	 * <code>	 *  <head>	 *		...	 *		< ?php $xajax->printJavascript(); ? >	 * </code>	 * 	 * @param string the relative address of the folder where xajax has been	 *               installed. For instance, if your PHP file is	 *               "http://www.myserver.com/myfolder/mypage.php"	 *               and xajax was installed in	 *               "http://www.myserver.com/anotherfolder", then $sJsURI	 *               should be set to "../anotherfolder". Defaults to assuming	 *               xajax is in the same folder as your PHP file.	 * @param string the relative folder/file pair of the xajax Javascript	 *               engine located within the xajax installation folder.	 *               Defaults to xajax_js/xajax.js.	 */	function printJavascript($sJsURI="", $sJsFile=NULL)	{		print $this->getJavascript($sJsURI, $sJsFile);	}		/**	 * Returns the xajax Javascript code that should be added to your HTML page	 * between the <kbd><head> </head></kbd> tags.	 * 	 * <i>Usage:</i>	 * <code>	 *  < ?php $xajaxJSHead = $xajax->getJavascript(); ? >	 *	<head>	 *		...	 *		< ?php echo $xajaxJSHead; ? >	 * </code>	 * 	 * @param string the relative address of the folder where xajax has been	 *               installed. For instance, if your PHP file is	 *               "http://www.myserver.com/myfolder/mypage.php"	 *               and xajax was installed in	 *               "http://www.myserver.com/anotherfolder", then $sJsURI	 *               should be set to "../anotherfolder". Defaults to assuming	 *               xajax is in the same folder as your PHP file.	 * @param string the relative folder/file pair of the xajax Javascript	 *               engine located within the xajax installation folder.	 *               Defaults to xajax_js/xajax.js.	 * @return string	 */	function getJavascript($sJsURI="", $sJsFile=NULL)	{			$html = $this->getJavascriptConfig();		$html .= $this->getJavascriptInclude($sJsURI, $sJsFile);				return $html;	}		/**	 * Returns a string containing inline Javascript that sets up the xajax	 * runtime (typically called internally by xajax from get/printJavascript).	 * 	 * @return string	 */	function getJavascriptConfig()	{		$html  = "\t<script type=\"text/javascript\">\n";		$html .= "var xajaxRequestUri=\"".$this->sRequestURI."\";\n";		$html .= "var xajaxDebug=".($this->bDebug?"true":"false").";\n";		$html .= "var xajaxStatusMessages=".($this->bStatusMessages?"true":"false").";\n";		$html .= "var xajaxWaitCursor=".($this->bWaitCursor?"true":"false").";\n";		$html .= "var xajaxDefinedGet=".XAJAX_GET.";\n";		$html .= "var xajaxDefinedPost=".XAJAX_POST.";\n";		$html .= "var xajaxLoaded=false;\n";		foreach($this->aFunctions as $sFunction => $bExists) {			$html .= $this->_wrap($sFunction,$this->aFunctionRequestTypes[$sFunction]);		}		$html .= "\t</script>\n";		return $html;			}		/**	 * Returns a string containing a Javascript include of the xajax.js file	 * along with a check to see if the file loaded after six seconds	 * (typically called internally by xajax from get/printJavascript).	 * 	 * @param string the relative address of the folder where xajax has been	 *               installed. For instance, if your PHP file is	 *               "http://www.myserver.com/myfolder/mypage.php"	 *               and xajax was installed in	 *               "http://www.myserver.com/anotherfolder", then $sJsURI	 *               should be set to "../anotherfolder". Defaults to assuming	 *               xajax is in the same folder as your PHP file.	 * @param string the relative folder/file pair of the xajax Javascript	 *               engine located within the xajax installation folder.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -