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

📄 xajax.inc.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
				}				else {					$sPreResponse = $mPreResponse;				}				if (is_a($sPreResponse, "xajaxResponse")) {					$sPreResponse = $sPreResponse->getXML();				}				if ($bEndRequest) $sResponse = $sPreResponse;			}			if (!$bEndRequest) {				if (!$this->_isFunctionCallable($sFunctionName)) {					$objResponse = new xajaxResponse();					$objResponse->addAlert("The Registered Function $sFunctionName Could Not Be Found.");					$sResponse = $objResponse->getXML();				}				else {					if ($bFunctionIsCatchAll) {						$aArgs = array($sFunctionNameForSpecial, $aArgs);					}					$sResponse = $this->_callFunction($sFunctionName, $aArgs);				}				if (is_a($sResponse, "xajaxResponse")) {					$sResponse = $sResponse->getXML();				}				if (!is_string($sResponse) || strpos($sResponse, "<xjx>") === FALSE) {					$objResponse = new xajaxResponse();					$objResponse->addAlert("No XML Response Was Returned By Function $sFunctionName.");					$sResponse = $objResponse->getXML();				}				else if ($sPreResponse != "") {					$sNewResponse = new xajaxResponse();					$sNewResponse->loadXML($sPreResponse);					$sNewResponse->loadXML($sResponse);					$sResponse = $sNewResponse->getXML();				}			}		}		$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'] )) {			$sErrorResponse = new xajaxResponse();			$sErrorResponse->addAlert("** PHP Error Messages: **" . $GLOBALS['xajaxErrorHandlerText']);			if ($this->sLogFile) {				$fH = @fopen($this->sLogFile, "a");				if (!$fH) {					$sErrorResponse->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);				}			}			$sErrorResponse->loadXML($sResponse);			$sResponse = $sErrorResponse->getXML();		}		if ($this->bCleanBuffer) while (@ob_end_clean());		print $sResponse;		if ($this->bErrorHandler) restore_error_handler();		if ($this->bExitAllowed)			exit();	}	// printJavascript() prints the xajax javascript code into your page by printing	// the output of the getJavascript() method. It should only be called between the	// <head> </head> tags in your HTML page. Remember, if you only want to obtain the	// result of this function, use getJavascript() instead.	// $sJsURI is 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.	// $sJsFile is the relative folder/file pair of the xajax Javascript engine located	// within the xajax installation folder. Defaults to xajax_js/xajax.js.	// usage:	//	<head>	//		...	//		< ?php $xajax->printJavascript(); ? >	function printJavascript($sJsURI="", $sJsFile=NULL, $sJsFullFilename=NULL)	{		print $this->getJavascript($sJsURI, $sJsFile, $sJsFullFilename);	}	// getJavascript() returns the xajax javascript code that should be added to	// your HTML page between the <head> </head> tags. See printJavascript()	// for information about the function arguments.	// usage:	//  < ?php $xajaxJSHead = $xajax->getJavascript(); ? >	//	<head>	//		...	//		< ?php echo $xajaxJSHead; ? >	function getJavascript($sJsURI="", $sJsFile=NULL, $sJsFullFilename=NULL)	{		if ($sJsFile == NULL) $sJsFile = "xajax_js/xajax.js";		if ($sJsURI != "" && substr($sJsURI, -1) != "/") $sJsURI .= "/";		$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";		foreach($this->aFunctions as $sFunction => $bExists) {			$html .= $this->_wrap($sFunction,$this->aFunctionRequestTypes[$sFunction]);		}		$html .= "</script>\n";		// Create a compressed file if necessary		if ($sJsFullFilename) {			$realJsFile = $sJsFullFilename;		}		else {			$realPath = realpath(dirname(__FILE__));			$realJsFile = $realPath . "/". $sJsFile;		}		$srcFile = str_replace(".js", "_uncompressed.js", $realJsFile);		if (!file_exists($srcFile)) {			trigger_error("The xajax uncompressed Javascript file could not be found in the <b>" . dirname($realJsFile) . "</b> folder. Error ", E_USER_ERROR);		}		if ($this->bDebug) {			if (!@copy($srcFile, $realJsFile)) {				trigger_error("The xajax uncompressed javascript file could not be copied to the <b>" . dirname($realJsFile) . "</b> folder. Error ", E_USER_ERROR);			}		}		else if (!file_exists($realJsFile)) {			require(dirname($realJsFile) . "/xajaxCompress.php");			$javaScript = implode('', file($srcFile));			$compressedScript = xajaxCompressJavascript($javaScript);			$fH = @fopen($realJsFile, "w");			if (!$fH) {				trigger_error("The xajax compressed javascript file could not be written in the <b>" . dirname($realJsFile) . "</b> folder. Error ", E_USER_ERROR);			}			else {				fwrite($fH, $compressedScript);				fclose($fH);			}		}		$html .= "\t<script type=\"text/javascript\" src=\"" . $sJsURI . $sJsFile . "\"></script>\n";		return $html;	}	// _detectURL() returns the current URL based upon the SERVER vars	// used internally	function _detectURI() {		$aURL = array();		// Try to get the request URL		if (!empty($_SERVER['REQUEST_URI'])) {			$aURL = parse_url($_SERVER['REQUEST_URI']);		}		// Fill in the empty values		if (empty($aURL['scheme'])) {			if (!empty($_SERVER['HTTP_SCHEME'])) {				$aURL['scheme'] = $_SERVER['HTTP_SCHEME'];			} else {				$aURL['scheme'] = (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') ? 'https' : 'http';			}		}		if (empty($aURL['host'])) {			if (!empty($_SERVER['HTTP_HOST'])) {				if (strpos($_SERVER['HTTP_HOST'], ':') > 0) {					list($aURL['host'], $aURL['port']) = explode(':', $_SERVER['HTTP_HOST']);				} else {					$aURL['host'] = $_SERVER['HTTP_HOST'];				}			} else if (!empty($_SERVER['SERVER_NAME'])) {				$aURL['host'] = $_SERVER['SERVER_NAME'];			} else {				print "xajax Error: xajax failed to automatically identify your Request URI.";				print "Please set the Request URI explicitly when you instantiate the xajax object.";				exit();			}		}		if (empty($aURL['port']) && !empty($_SERVER['SERVER_PORT'])) {			$aURL['port'] = $_SERVER['SERVER_PORT'];		}		if (empty($aURL['path'])) {			if (!empty($_SERVER['PATH_INFO'])) {				$sPath = parse_url($_SERVER['PATH_INFO']);			} else {				$sPath = parse_url($_SERVER['PHP_SELF']);			}			$aURL['path'] = $sPath['path'];			unset($sPath);		}		if (!empty($aURL['query'])) {			$aURL['query'] = '?'.$aURL['query'];		}		// Build the URL: Start with scheme, user and pass		$sURL = $aURL['scheme'].'://';		if (!empty($aURL['user'])) {			$sURL.= $aURL['user'];			if (!empty($aURL['pass'])) {				$sURL.= ':'.$aURL['pass'];			}			$sURL.= '@';		}		// Add the host		$sURL.= $aURL['host'];		// Add the port if needed		if (!empty($aURL['port']) && (($aURL['scheme'] == 'http' && $aURL['port'] != 80) || ($aURL['scheme'] == 'https' && $aURL['port'] != 443))) {			$sURL.= ':'.$aURL['port'];		}		// Add the path and the query string		$sURL.= $aURL['path'].@$aURL['query'];		// Clean up		unset($aURL);		return $sURL;	}	// returns true if the function name is associated with an object callback,	// false if not.	// user internally	function _isObjectCallback($sFunction)	{		if (array_key_exists($sFunction, $this->aObjects)) return true;		return false;	}	// return true if the function or object callback can be called, false if not	// user internally	function _isFunctionCallable($sFunction)	{		if ($this->_isObjectCallback($sFunction)) {			if (is_object($this->aObjects[$sFunction][0])) {				return method_exists($this->aObjects[$sFunction][0], $this->aObjects[$sFunction][1]);			}			else {				return is_callable($this->aObjects[$sFunction]);			}		}		else {			return function_exists($sFunction);		}	}	// calls the function, class method, or object method with the supplied arguments	// user internally	function _callFunction($sFunction, $aArgs)	{		if ($this->_isObjectCallback($sFunction)) {			$mReturn = call_user_func_array($this->aObjects[$sFunction], $aArgs);		}		else {			$mReturn = call_user_func_array($sFunction, $aArgs);		}		return $mReturn;	}	// generates the javascript wrapper for the specified PHP function	// used internally	function _wrap($sFunction,$sRequestType=XAJAX_POST)	{		$js = "function ".$this->sWrapperPrefix."$sFunction(){return xajax.call(\"$sFunction\", arguments, ".$sRequestType.");}\n";		return $js;	}	// _xmlToArray() takes a string containing xajax xjxobj xml or xjxquery xml	// and builds an array representation of it to pass as an argument to	// the php function being called. Returns an array.	// used internally	function _xmlToArray($rootTag, $sXml)	{		$aArray = array();		$sXml = str_replace("<$rootTag>","<$rootTag>|~|",$sXml);		$sXml = str_replace("</$rootTag>","</$rootTag>|~|",$sXml);		$sXml = str_replace("<e>","<e>|~|",$sXml);		$sXml = str_replace("</e>","</e>|~|",$sXml);		$sXml = str_replace("<k>","<k>|~|",$sXml);		$sXml = str_replace("</k>","|~|</k>|~|",$sXml);		$sXml = str_replace("<v>","<v>|~|",$sXml);		$sXml = str_replace("</v>","|~|</v>|~|",$sXml);		$sXml = str_replace("<q>","<q>|~|",$sXml);		$sXml = str_replace("</q>","|~|</q>|~|",$sXml);		$this->aObjArray = explode("|~|",$sXml);		$this->iPos = 0;		$aArray = $this->_parseObjXml($rootTag);		return $aArray;	}	// _parseObjXml() is a recursive function that generates an array from the	// contents of $this->aObjArray. Returns an array.	// used internally	function _parseObjXml($rootTag)	{		$aArray = array();		if ($rootTag == "xjxobj")		{			while(!stristr($this->aObjArray[$this->iPos],"</xjxobj>"))			{				$this->iPos++;				if(stristr($this->aObjArray[$this->iPos],"<e>"))				{					$key = "";					$value = null;					$this->iPos++;					while(!stristr($this->aObjArray[$this->iPos],"</e>"))					{						if(stristr($this->aObjArray[$this->iPos],"<k>"))						{							$this->iPos++;							while(!stristr($this->aObjArray[$this->iPos],"</k>"))							{								$key .= $this->aObjArray[$this->iPos];								$this->iPos++;							}						}						if(stristr($this->aObjArray[$this->iPos],"<v>"))						{							$this->iPos++;							while(!stristr($this->aObjArray[$this->iPos],"</v>"))							{								if(stristr($this->aObjArray[$this->iPos],"<xjxobj>"))								{									$value = $this->_parseObjXml("xjxobj");									$this->iPos++;								}								else								{									$value .= $this->aObjArray[$this->iPos];								}								$this->iPos++;							}						}						$this->iPos++;					}					$aArray[$key]=$value;				}			}		}		if ($rootTag == "xjxquery")		{			$sQuery = "";			$this->iPos++;			while(!stristr($this->aObjArray[$this->iPos],"</xjxquery>"))			{				if (stristr($this->aObjArray[$this->iPos],"<q>") || stristr($this->aObjArray[$this->iPos],"</q>"))				{					$this->iPos++;					continue;				}				$sQuery	.= $this->aObjArray[$this->iPos];				$this->iPos++;			}			parse_str($sQuery, $aArray);			// If magic quotes is on, then we need to strip the slashes from the			// array values because of the parse_str pass which adds slashes			if (get_magic_quotes_gpc() == 1) {				$newArray = array();				foreach ($aArray as $sKey => $sValue) {					if (is_string($sValue))						$newArray[$sKey] = stripslashes($sValue);					else						$newArray[$sKey] = $sValue;				}				$aArray = $newArray;			}		}		return $aArray;	}}// end class xajax// xajaxErrorHandler() is registered with PHP's set_error_handler() function if// the xajax error handling system is turned on// used by the xajax classfunction xajaxErrorHandler($errno, $errstr, $errfile, $errline){	$errorReporting = error_reporting();	if ($errorReporting == 0) return;	if ($errno == E_NOTICE) {		$errTypeStr = "NOTICE";	}	else if ($errno == E_WARNING) {		$errTypeStr = "WARNING";	}	else if ($errno == E_USER_NOTICE) {		$errTypeStr = "USER NOTICE";	}	else if ($errno == E_USER_WARNING) {		$errTypeStr = "USER WARNING";	}	else if ($errno == E_USER_ERROR) {		$errTypeStr = "USER FATAL ERROR";	}	else if ($errno == E_STRICT) {		return;	}	else {		$errTypeStr = "UNKNOWN: $errno";	}	$GLOBALS['xajaxErrorHandlerText'] .= "\n----\n[$errTypeStr] $errstr\nerror in line $errline of file $errfile";}?>

⌨️ 快捷键说明

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