From 01b4d34de35ecb3f479d5c10eda68fdd34e127c5 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Tue, 12 Jan 2010 03:44:03 +0000 Subject: [PATCH] somehow forgot to remove old xajax files --- phpgwapi/inc/xajax.inc.php | 1253 ---------------------------- phpgwapi/inc/xajaxResponse.inc.php | 580 ------------- 2 files changed, 1833 deletions(-) delete mode 100644 phpgwapi/inc/xajax.inc.php delete mode 100644 phpgwapi/inc/xajaxResponse.inc.php diff --git a/phpgwapi/inc/xajax.inc.php b/phpgwapi/inc/xajax.inc.php deleted file mode 100644 index 412c694e54..0000000000 --- a/phpgwapi/inc/xajax.inc.php +++ /dev/null @@ -1,1253 +0,0 @@ -aFunctions = array(); - $this->aObjects = array(); - $this->aFunctionIncludeFiles = array(); - $this->sRequestURI = $sRequestURI; - if ($this->sRequestURI == "") - $this->sRequestURI = $this->_detectURI(); - $this->sWrapperPrefix = $sWrapperPrefix; - $this->bDebug = $bDebug; - $this->bStatusMessages = false; - $this->bWaitCursor = true; - $this->bExitAllowed = true; - $this->bErrorHandler = false; - $this->sLogFile = ""; - $this->bCleanBuffer = false; - $this->setCharEncoding($sEncoding); - $this->bDecodeUTF8Input = false; - $this->bOutputEntities = false; - } - - /** - * Sets the URI to which requests will be made. - * Usage: $xajax->setRequestURI("http://www.xajaxproject.org"); - * - * @param string the URI (can be absolute or relative) of the PHP script - * that will be accessed when an xajax request occurs - */ - function setRequestURI($sRequestURI) - { - $this->sRequestURI = $sRequestURI; - } - - /** - * Sets the prefix that will be appended to the Javascript wrapper - * functions (default is "xajax_"). - * - * @param string - */ - // - function setWrapperPrefix($sPrefix) - { - $this->sWrapperPrefix = $sPrefix; - } - - /** - * Enables debug messages for xajax. - * */ - function debugOn() - { - $this->bDebug = true; - } - - /** - * Disables debug messages for xajax (default behavior). - */ - function debugOff() - { - $this->bDebug = false; - } - - /** - * Enables messages in the browser's status bar for xajax. - */ - function statusMessagesOn() - { - $this->bStatusMessages = true; - } - - /** - * Disables messages in the browser's status bar for xajax (default behavior). - */ - function statusMessagesOff() - { - $this->bStatusMessages = false; - } - - /** - * Enables the wait cursor to be displayed in the browser (default behavior). - */ - function waitCursorOn() - { - $this->bWaitCursor = true; - } - - /** - * Disables the wait cursor to be displayed in the browser. - */ - function waitCursorOff() - { - $this->bWaitCursor = false; - } - - /** - * Enables xajax to exit immediately after processing a request and - * sending the response back to the browser (default behavior). - */ - function exitAllowedOn() - { - $this->bExitAllowed = true; - } - - /** - * Disables xajax's default behavior of exiting immediately after - * processing a request and sending the response back to the browser. - */ - function exitAllowedOff() - { - $this->bExitAllowed = false; - } - - /** - * Turns on xajax's error handling system so that PHP errors that occur - * during a request are trapped and pushed to the browser in the form of - * a Javascript alert. - */ - function errorHandlerOn() - { - $this->bErrorHandler = true; - } - - /** - * Turns off xajax's error handling system (default behavior). - */ - function errorHandlerOff() - { - $this->bErrorHandler = false; - } - - /** - * Specifies a log file that will be written to by xajax during a request - * (used only by the error handling system at present). If you don't invoke - * this method, or you pass in "", then no log file will be written to. - * Usage: $xajax->setLogFile("/xajax_logs/errors.log"); - */ - function setLogFile($sFilename) - { - $this->sLogFile = $sFilename; - } - - /** - * Causes xajax to clean out all output buffers before outputting a - * response (default behavior). - */ - function cleanBufferOn() - { - $this->bCleanBuffer = true; - } - /** - * Turns off xajax's output buffer cleaning. - */ - function cleanBufferOff() - { - $this->bCleanBuffer = false; - } - - /** - * Sets the character encoding for the HTTP output based on - * $sEncoding, which is a string containing the character - * encoding to use. You don't need to use this method normally, since the - * character encoding for the response gets set automatically based on the - * XAJAX_DEFAULT_CHAR_ENCODING constant. - * Usage: $xajax->setCharEncoding("utf-8"); - * - * @param string the encoding type to use (utf-8, iso-8859-1, etc.) - */ - function setCharEncoding($sEncoding) - { - $this->sEncoding = $sEncoding; - } - - /** - * Causes xajax to decode the input request args from UTF-8 to the current - * encoding if possible. Either the iconv or mb_string extension must be - * present for optimal functionality. - */ - function decodeUTF8InputOn() - { - $this->bDecodeUTF8Input = true; - } - - /** - * 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: - * array("myFunctionName", "myClass", "myMethod") - * 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. - * - * Usage: $xajax->registerFunction("myFunction"); - * or: $xajax->registerFunction(array("myFunctionName", &$myObject, "myMethod")); - * - * @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_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. - * - * Usage: $xajax->registerExternalFunction("myFunction","myFunction.inc.php",XAJAX_POST); - * - * @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. - * - * Usage: $xajax->registerCatchAllFunction("myCatchAllFunction"); - * - * @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. - * - * Usage: $xajax->registerPreFunction("myPreFunction"); - * - * @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; - } - - /** - * 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; - $sResponse = ""; - - $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; - $objResponse = new xajaxResponse(); - $objResponse->addAlert("Unknown Pre-Function ". $this->sPreFunction); - $sResponse = $objResponse->getXML(); - } - } - //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; - $objResponse = new xajaxResponse(); - $objResponse->addAlert("Unknown Function $sFunctionName."); - $sResponse = $objResponse->getXML(); - } - } - else if ($this->aFunctionRequestTypes[$sFunctionName] != $requestMode) - { - $bFoundFunction = false; - $objResponse = new xajaxResponse(); - $objResponse->addAlert("Incorrect Request Type."); - $sResponse = $objResponse->getXML(); - } - } - - 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 (@stripos($aArgs[$i],"") !== false) - { - $aArgs[$i] = $this->_xmlToArray("xjxobj",$aArgs[$i]); - } - else if (@stripos($aArgs[$i],"") !== 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 (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, "") === FALSE) { - $objResponse = new xajaxResponse(); - $objResponse->addAlert("No XML Response Was Returned By Function $sFunctionName."); - $sResponse = $objResponse->getXML(); - } - else if ($sPreResponse != "") { - $sNewResponse = new xajaxResponse($this->sEncoding, $this->bOutputEntities); - $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(); - } - - /** - * 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
 
tags in your HTML page. - * Remember, if you only want to obtain the result of this function, use - * {@link xajax::getJavascript()} instead. - * - * Usage: - * - * - * ... - * < ?php $xajax->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. - * 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 tags. - * - * Usage: - * - * < ?php $xajaxJSHead = $xajax->getJavascript(); ? > - * - * ... - * < ?php echo $xajaxJSHead; ? > - * - * - * @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\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. - * Defaults to xajax_js/xajax.js. - * @return string - */ - function getJavascriptInclude($sJsURI="", $sJsFile=NULL) - { - if ($sJsFile == NULL) $sJsFile = "xajax_js/xajax.js"; - - if ($sJsURI != "" && substr($sJsURI, -1) != "/") $sJsURI .= "/"; - - $html = "\t\n"; - $html .= "\t\n"; - return $html; - } - - /** - * This method can be used to create a new xajax.js file out of the - * xajax_uncompressed.js file (which will only happen if xajax.js doesn't - * already exist on the filesystem). - * - * @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 " . dirname($realJsFile) . " 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 " . dirname($realJsFile) . " 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.");}\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("","|~|",$sXml); - $sXml = str_replace("","|~|",$sXml); - $sXml = str_replace("","|~|",$sXml); - $sXml = str_replace("","|~|",$sXml); - $sXml = str_replace("","|~||~|",$sXml); - $sXml = str_replace("","|~|",$sXml); - $sXml = str_replace("","|~||~|",$sXml); - $sXml = str_replace("","|~|",$sXml); - $sXml = str_replace("","|~||~|",$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(@stripos($this->aObjArray[$this->iPos],"
") === false) - { - $this->iPos++; - if(@stripos($this->aObjArray[$this->iPos],"") !== false) - { - $key = ""; - $value = null; - - $this->iPos++; - while(@stripos($this->aObjArray[$this->iPos],"") === false) - { - if(@stripos($this->aObjArray[$this->iPos],"") !== false) - { - $this->iPos++; - while(@stripos($this->aObjArray[$this->iPos],"") === false) - { - $key .= $this->aObjArray[$this->iPos]; - $this->iPos++; - } - } - if(@stripos($this->aObjArray[$this->iPos],"") !== false) - { - $this->iPos++; - while(@stripos($this->aObjArray[$this->iPos],"") === false) - { - if(@stripos($this->aObjArray[$this->iPos],"") !== false) - { - $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(@stripos($this->aObjArray[$this->iPos],"") === false) - { - if (@stripos($this->aObjArray[$this->iPos],"") !== false || @stripos($this->aObjArray[$this->iPos],"") !== false) - { - $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"; -} - -if (!function_exists('stripos')) -{ - /** - * stripos for php < 5 - */ - function stripos($str,$needle,$offset=0) - { - return strpos(strtolower($str),strtolower($needle),$offset); - } -} diff --git a/phpgwapi/inc/xajaxResponse.inc.php b/phpgwapi/inc/xajaxResponse.inc.php deleted file mode 100644 index cce2c6a253..0000000000 --- a/phpgwapi/inc/xajaxResponse.inc.php +++ /dev/null @@ -1,580 +0,0 @@ - - *
  • Assign - sets the specified attribute of an element in your page
  • - *
  • Append - appends data to the end of the specified attribute of an - * element in your page
  • - *
  • Prepend - prepends data to the beginning of the specified attribute of - * an element in your page
  • - *
  • Replace - searches for and replaces data in the specified attribute of - * an element in your page
  • - *
  • Script - runs the supplied JavaScript code
  • - *
  • Alert - shows an alert box with the supplied message text
  • - * - * - * Note: elements are identified by their HTML id, so if you don't see - * your browser HTML display changing from the request, make sure you're using - * the right id names in your response. - * - * @package xajax - */ -class xajaxResponse -{ - /**#@+ - * @access protected - */ - /** - * @var string internal XML storage - */ - var $xml; - /** - * @var string the encoding type to use - */ - var $sEncoding; - /** - * @var boolean if special characters in the XML should be converted to - * entities - */ - var $bOutputEntities; - - /**#@-*/ - - /** - * The constructor's main job is to set the character encoding for the - * response. - * - * Note: to change the character encoding for all of the - * responses, set the XAJAX_DEFAULT_ENCODING constant before you - * instantiate xajax. - * - * @param string contains the character encoding string to use - * @param boolean lets you set if you want special characters in the output - * converted to HTML entities - * - */ - function xajaxResponse($sEncoding=XAJAX_DEFAULT_CHAR_ENCODING, $bOutputEntities=false) - { - $this->setCharEncoding($sEncoding); - $this->bOutputEntities = $bOutputEntities; - } - - /** - * Sets the character encoding for the response based on $sEncoding, which - * is a string containing the character encoding to use. You don't need to - * use this method normally, since the character encoding for the response - * gets set automatically based on the XAJAX_DEFAULT_CHAR_ENCODING - * constant. - * - * @param string - */ - function setCharEncoding($sEncoding) - { - $this->sEncoding = $sEncoding; - } - - /** - * 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; - } - - /** - * Adds a confirm commands command message to the XML response. - * - * Usage: $objResponse->addConfirmCommands(1, "Do you want to preview the new data?"); - * - * @param integer the number of commands to skip if the user presses - * Cancel in the browsers's confirm dialog - * @param string the message to show in the browser's confirm dialog - */ - function addConfirmCommands($iCmdNumber, $sMessage) - { - $this->xml .= $this->_cmdXML(array("n"=>"cc","t"=>$iCmdNumber),$sMessage); - } - - /** - * Adds an assign command message to the XML response. - * - * Usage: $objResponse->addAssign("contentDiv", "innerHTML", "Some Text"); - * - * @param string contains the id of an HTML element - * @param string the part of the element you wish to modify ("innerHTML", - * "value", etc.) - * @param string the data you want to set the attribute to - */ - function addAssign($sTarget,$sAttribute,$sData) - { - $this->xml .= $this->_cmdXML(array("n"=>"as","t"=>$sTarget,"p"=>$sAttribute),$sData); - } - - /** - * Adds an append command message to the XML response. - * - * Usage: $objResponse->addAppend("contentDiv", "innerHTML", "Some New Text"); - * - * @param string contains the id of an HTML element - * @param string the part of the element you wish to modify ("innerHTML", - * "value", etc.) - * @param string the data you want to append to the end of the attribute - */ - function addAppend($sTarget,$sAttribute,$sData) - { - $this->xml .= $this->_cmdXML(array("n"=>"ap","t"=>$sTarget,"p"=>$sAttribute),$sData); - } - - /** - * Adds an prepend command message to the XML response. - * - * Usage: $objResponse->addPrepend("contentDiv", "innerHTML", "Some Starting Text"); - * - * @param string contains the id of an HTML element - * @param string the part of the element you wish to modify ("innerHTML", - * "value", etc.) - * @param string the data you want to prepend to the beginning of the - * attribute - */ - function addPrepend($sTarget,$sAttribute,$sData) - { - $this->xml .= $this->_cmdXML(array("n"=>"pp","t"=>$sTarget,"p"=>$sAttribute),$sData); - } - - /** - * Adds a replace command message to the XML response. - * - * Usage: $objResponse->addReplace("contentDiv", "innerHTML", "text", "text"); - * - * @param string contains the id of an HTML element - * @param string the part of the element you wish to modify ("innerHTML", - * "value", etc.) - * @param string the string to search for - * @param string the string to replace the search string when found in the - * attribute - */ - function addReplace($sTarget,$sAttribute,$sSearch,$sData) - { - $sDta = ""; - $this->xml .= $this->_cmdXML(array("n"=>"rp","t"=>$sTarget,"p"=>$sAttribute),$sDta); - } - - /** - * Adds a clear command message to the XML response. - * - * Usage: $objResponse->addClear("contentDiv", "innerHTML"); - * - * @param string contains the id of an HTML element - * @param string the part of the element you wish to clear ("innerHTML", - * "value", etc.) - */ - function addClear($sTarget,$sAttribute) - { - $this->addAssign($sTarget,$sAttribute,''); - } - - /** - * Adds an alert command message to the XML response. - * - * Usage: $objResponse->addAlert("This is important information"); - * - * @param string the text to be displayed in the Javascript alert box - */ - function addAlert($sMsg) - { - $this->xml .= $this->_cmdXML(array("n"=>"al"),$sMsg); - } - - /** - * Uses the addScript() method to add a Javascript redirect to another URL. - * - * Usage: $objResponse->addRedirect("http://www.xajaxproject.org"); - * - * @param string the URL to redirect the client browser to - */ - function addRedirect($sURL) - { - //we need to parse the query part so that the values are rawurlencode()'ed - //can't just use parse_url() cos we could be dealing with a relative URL which - // parse_url() can't deal with. - $queryStart = strpos($sURL, '?', @strrpos($sURL, '/')); - if ($queryStart !== FALSE) - { - $queryStart++; - $queryEnd = strpos($sURL, '#', $queryStart); - if ($queryEnd === FALSE) - $queryEnd = strlen($sURL); - $queryPart = substr($sURL, $queryStart, $queryEnd-$queryStart); - parse_str($queryPart, $queryParts); - $newQueryPart = ""; - foreach($queryParts as $key => $value) - { - $newQueryPart .= rawurlencode($key).'='.rawurlencode($value).ini_get('arg_separator.output'); - } - $sURL = str_replace($queryPart, $newQueryPart, $sURL); - } - $this->addScript('window.location = "'.$sURL.'";'); - } - - /** - * Adds a Javascript command message to the XML response. - * - * Usage: $objResponse->addScript("var x = prompt('get some text');"); - * - * @param string contains Javascript code to be executed - */ - function addScript($sJS) - { - $this->xml .= $this->_cmdXML(array("n"=>"js"),$sJS); - } - - /** - * Adds a Javascript function call command message to the XML response. - * - * Usage: $objResponse->addScriptCall("myJSFunction", "arg 1", "arg 2", 12345); - * - * @param string $sFunc the name of a Javascript function - * @param mixed $args,... optional arguments to pass to the Javascript function - */ - function addScriptCall() { - $arguments = func_get_args(); - $sFunc = array_shift($arguments); - $sData = $this->_buildObjXml($arguments); - $this->xml .= $this->_cmdXML(array("n"=>"jc","t"=>$sFunc),$sData); - } - - /** - * Adds a remove element command message to the XML response. - * - * Usage: $objResponse->addRemove("Div2"); - * - * @param string contains the id of an HTML element to be removed - */ - function addRemove($sTarget) - { - $this->xml .= $this->_cmdXML(array("n"=>"rm","t"=>$sTarget),''); - } - - /** - * Adds a create element command message to the XML response. - * - * Usage: $objResponse->addCreate("parentDiv", "h3", "myid"); - * - * @param string contains the id of an HTML element to to which the new - * element will be appended. - * @param string the tag to be added - * @param string the id to be assigned to the new element - * @param string deprecated, use the addCreateInput() method instead - */ - function addCreate($sParent, $sTag, $sId, $sType="") - { - if ($sType) - { - trigger_error("The \$sType parameter of addCreate has been deprecated. Use the addCreateInput() method instead.", E_USER_WARNING); - return; - } - $this->xml .= $this->_cmdXML(array("n"=>"ce","t"=>$sParent,"p"=>$sId),$sTag); - } - - /** - * Adds a insert element command message to the XML response. - * - * Usage: $objResponse->addInsert("childDiv", "h3", "myid"); - * - * @param string contains the id of the child before which the new element - * will be inserted - * @param string the tag to be added - * @param string the id to be assigned to the new element - */ - function addInsert($sBefore, $sTag, $sId) - { - $this->xml .= $this->_cmdXML(array("n"=>"ie","t"=>$sBefore,"p"=>$sId),$sTag); - } - - /** - * Adds a insert element command message to the XML response. - * - * Usage: $objResponse->addInsertAfter("childDiv", "h3", "myid"); - * - * @param string contains the id of the child after which the new element - * will be inserted - * @param string the tag to be added - * @param string the id to be assigned to the new element - */ - function addInsertAfter($sAfter, $sTag, $sId) - { - $this->xml .= $this->_cmdXML(array("n"=>"ia","t"=>$sAfter,"p"=>$sId),$sTag); - } - - /** - * Adds a create input command message to the XML response. - * - * Usage: $objResponse->addCreateInput("form1", "text", "username", "input1"); - * - * @param string contains the id of an HTML element to which the new input - * will be appended - * @param string the type of input to be created (text, radio, checkbox, - * etc.) - * @param string the name to be assigned to the new input and the variable - * name when it is submitted - * @param string the id to be assigned to the new input - */ - function addCreateInput($sParent, $sType, $sName, $sId) - { - $this->xml .= $this->_cmdXML(array("n"=>"ci","t"=>$sParent,"p"=>$sId,"c"=>$sType),$sName); - } - - /** - * Adds an insert input command message to the XML response. - * - * Usage: $objResponse->addInsertInput("input5", "text", "username", "input1"); - * - * @param string contains the id of the child before which the new element - * will be inserted - * @param string the type of input to be created (text, radio, checkbox, - * etc.) - * @param string the name to be assigned to the new input and the variable - * name when it is submitted - * @param string the id to be assigned to the new input - */ - function addInsertInput($sBefore, $sType, $sName, $sId) - { - $this->xml .= $this->_cmdXML(array("n"=>"ii","t"=>$sBefore,"p"=>$sId,"c"=>$sType),$sName); - } - - /** - * Adds an insert input command message to the XML response. - * - * Usage: $objResponse->addInsertInputAfter("input7", "text", "email", "input2"); - * - * @param string contains the id of the child after which the new element - * will be inserted - * @param string the type of input to be created (text, radio, checkbox, - * etc.) - * @param string the name to be assigned to the new input and the variable - * name when it is submitted - * @param string the id to be assigned to the new input - */ - function addInsertInputAfter($sAfter, $sType, $sName, $sId) - { - $this->xml .= $this->_cmdXML(array("n"=>"iia","t"=>$sAfter,"p"=>$sId,"c"=>$sType),$sName); - } - - /** - * Adds an event command message to the XML response. - * - * Usage: $objResponse->addEvent("contentDiv", "onclick", "alert(\'Hello World\');"); - * - * @param string contains the id of an HTML element - * @param string the event you wish to set ("onclick", "onmouseover", etc.) - * @param string the Javascript string you want the event to invoke - */ - function addEvent($sTarget,$sEvent,$sScript) - { - $this->xml .= $this->_cmdXML(array("n"=>"ev","t"=>$sTarget,"p"=>$sEvent),$sScript); - } - - /** - * Adds a handler command message to the XML response. - * - * Usage: $objResponse->addHandler("contentDiv", "onclick", "content_click"); - * - * @param string contains the id of an HTML element - * @param string the event you wish to set ("onclick", "onmouseover", etc.) - * @param string the name of a Javascript function that will handle the - * event. Multiple handlers can be added for the same event - */ - function addHandler($sTarget,$sEvent,$sHandler) - { - $this->xml .= $this->_cmdXML(array("n"=>"ah","t"=>$sTarget,"p"=>$sEvent),$sHandler); - } - - /** - * Adds a remove handler command message to the XML response. - * - * Usage: $objResponse->addRemoveHandler("contentDiv", "onclick", "content_click"); - * - * @param string contains the id of an HTML element - * @param string the event you wish to remove ("onclick", "onmouseover", - * etc.) - * @param string the name of a Javascript handler function that you want to - * remove - */ - function addRemoveHandler($sTarget,$sEvent,$sHandler) - { - $this->xml .= $this->_cmdXML(array("n"=>"rh","t"=>$sTarget,"p"=>$sEvent),$sHandler); - } - - /** - * Adds an include script command message to the XML response. - * - * Usage: $objResponse->addIncludeScript("functions.js"); - * - * @param string URL of the Javascript file to include - */ - function addIncludeScript($sFileName) - { - $this->xml .= $this->_cmdXML(array("n"=>"in"),$sFileName); - } - - /** - * Returns the XML to be returned from your function to the xajax processor - * on your page. Since xajax 0.2, you can also return an xajaxResponse - * object from your function directly, and xajax will automatically request - * the XML using this method call. - * - * Usage: return $objResponse->getXML(); - * - * @return string response XML data - */ - function getXML() - { - $sXML = "sEncoding && strlen(trim($this->sEncoding)) > 0) - $sXML .= " encoding=\"".$this->sEncoding."\""; - $sXML .= " ?".">" . $this->xml . ""; - - return $sXML; - } - - /** - * Adds the commands of the provided response XML output to this response - * object - * - * Usage: - * $r1 = $objResponse1->getXML(); - * $objResponse2->loadXML($r1); - * return $objResponse2->getXML(); - * - * @param string the response XML (returned from a getXML() method) to add - * to the end of this response object - */ - function loadXML($mXML) - { - if (is_a($mXML, "xajaxResponse")) { - $mXML = $mXML->getXML(); - } - $sNewXML = ""; - $iStartPos = strpos($mXML, "") + 5; - $sNewXML = substr($mXML, $iStartPos); - $iEndPos = strpos($sNewXML, ""); - $sNewXML = substr($sNewXML, 0, $iEndPos); - $this->xml .= $sNewXML; - } - - /** - * Generates XML from command data - * - * @access private - * @param array associative array of attributes - * @param string data - * @return string XML command - */ - function _cmdXML($aAttributes, $sData) - { - if ($this->bOutputEntities) { - if (function_exists('mb_convert_encoding')) { - $sData = call_user_func_array('mb_convert_encoding', array(&$sData, 'HTML-ENTITIES', $this->sEncoding)); - } - else { - trigger_error("The xajax XML response output could not be converted to HTML entities because the mb_convert_encoding function is not available", E_USER_NOTICE); - } - } - $xml = " $sValue) - $xml .= " $sAttribute=\"$sValue\""; - if ($sData !== null && !@stristr($sData,'"; - else if ($sData !== null) - $xml .= ">$sData"; - else - $xml .= ">"; - - return $xml; - } - - /** - * Recursively serializes a data structure in XML so it can be sent to - * the client. It could be thought of as the opposite of - * {@link xajax::_parseObjXml()}. - * - * @access private - * @param mixed data structure to serialize to XML - * @return string serialized XML - */ - function _buildObjXml($var) { - if (gettype($var) == "object") $var = get_object_vars($var); - if (!is_array($var)) { - return ""; - } - else { - $data = ""; - foreach ($var as $key => $value) { - $data .= ""; - $data .= "" . htmlspecialchars($key) . ""; - $data .= "" . $this->_buildObjXml($value) . ""; - $data .= ""; - } - $data .= ""; - return $data; - } - } - -}// end class xajaxResponse -?>