?? xajax.inc.php
字號:
* * @param string an optional argument containing the full server file path * of xajax.js. */ function autoCompressJavascript($sJsFullFilename=NULL) { $sJsFile = "xajax_js/xajax.js"; if ($sJsFullFilename) { $realJsFile = $sJsFullFilename; } else { $realPath = realpath(dirname(__FILE__)); $realJsFile = $realPath . "/". $sJsFile; } // Create a compressed file if necessary if (!file_exists($realJsFile)) { $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); } require(dirname(__FILE__)."/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); } } } /** * Returns the current URL based upon the SERVER vars. * * @access private * @return string */ 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. * * @param string the name of the function * @access private * @return boolean */ function _isObjectCallback($sFunction) { if (array_key_exists($sFunction, $this->aObjects)) return true; return false; } /** * Returns true if the function or object callback can be called, false if * not. * * @param string the name of the function * @access private * @return boolean */ 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. * * @param string the name of the function * @param array arguments to pass to the function * @access private * @return mixed the output of the called function or method */ 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. * * @param string the name of the function * @param mixed the request type * @access private * @return string */ function _wrap($sFunction,$sRequestType=XAJAX_POST) { $js = "function ".$this->sWrapperPrefix."$sFunction(){return xajax.call(\"$sFunction\", arguments, ".$sRequestType.",\"".$this->sWrapperPrefix."\");}\n"; return $js; } /** * 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. * * @param string the root tag of the XML * @param string XML to convert * @access private * @return array */ 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; } /** * A recursive function that generates an array from the contents of * $this->aObjArray. * * @param string the root tag of the XML * @access private * @return array */ 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]; if ($this->bDecodeUTF8Input) { $value = $this->_decodeUTF8Data($value); } } $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 ($this->bDecodeUTF8Input) { foreach($aArray as $key => $value) { $aArray[$key] = $this->_decodeUTF8Data($value); } } // 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; } /** * Decodes string data from UTF-8 to the current xajax encoding. * * @param string data to convert * @access private * @return string converted data */ function _decodeUTF8Data($sData) { $sValue = $sData; if ($this->bDecodeUTF8Input) { $sFuncToUse = NULL; if (function_exists('iconv')) { $sFuncToUse = "iconv"; } else if (function_exists('mb_convert_encoding')) { $sFuncToUse = "mb_convert_encoding"; } else if ($this->sEncoding == "ISO-8859-1") { $sFuncToUse = "utf8_decode"; } else { trigger_error("The incoming xajax data could not be converted from UTF-8", E_USER_NOTICE); } if ($sFuncToUse) { if (is_string($sValue)) { if ($sFuncToUse == "iconv") { $sValue = iconv("UTF-8", $this->sEncoding.'//TRANSLIT', $sValue); } else if ($sFuncToUse == "mb_convert_encoding") { $sValue = mb_convert_encoding($sValue, $this->sEncoding, "UTF-8"); } else { $sValue = utf8_decode($sValue); } } } } return $sValue; } }// end class xajax /** * This function is registered with PHP's set_error_handler() function if * the xajax error handling system is turned on. */function xajaxErrorHandler($errno, $errstr, $errfile, $errline){ $errorReporting = error_reporting(); if (($errno & $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 + -