| Üye
Üyelik Tarihi: 01/2008
Mesaj: 99
| PHP Kodu: <?php if (!defined ('XAJAX_DEFAULT_CHAR_ENCODING')) define ('XAJAX_DEFAULT_CHAR_ENCODING', 'utf-8'); if (!defined ('XAJAX_PROCESSING_EVENT')) define ('XAJAX_PROCESSING_EVENT', 'xajax processing event'); if (!defined ('XAJAX_PROCESSING_EVENT_BEFORE')) define ('XAJAX_PROCESSING_EVENT_BEFORE', 'beforeProcessing'); if (!defined ('XAJAX_PROCESSING_EVENT_AFTER')) define ('XAJAX_PROCESSING_EVENT_AFTER', 'afterProcessing'); if (!defined ('XAJAX_PROCESSING_EVENT_INVALID')) define ('XAJAX_PROCESSING_EVENT_INVALID', 'invalidRequest'); class xajax { var $aSettings; var $bErrorHandler; var $aProcessingEvents; var $bExitAllowed; var $bCleanBuffer; var $sLogFile; var $sCoreIncludeOutput; var $objPluginManager; var $objArgumentManager; var $objResponseManager; var $objLanguageManager; function xajax($sRequestURI=null, $sLanguage=null) { $this->bErrorHandler = false; $this->aProcessingEvents = array(); $this->bExitAllowed = true; $this->bCleanBuffer = true; $this->sLogFile = ''; $this->__wakeup(); $this->configureMany( array( 'characterEncoding' => XAJAX_DEFAULT_CHAR_ENCODING, 'decodeUTF8Input' => false, 'outputEntities' => false, 'defaultMode' => 'asynchronous', 'defaultMethod' => 'POST', 'wrapperPrefix' => 'xajax_', 'debug' => false, 'verbose' => false, 'useUncompressedScripts' => false, 'statusMessages' => false, 'waitCursor' => true, 'scriptDeferral' => false, 'exitAllowed' => true, 'errorHandler' => false, 'cleanBuffer' => false, 'allowBlankResponse' => false, 'allowAllResponseTypes' => false, 'generateStubs' => true, 'logFile' => '', 'timeout' => 6000, 'version' => $this->getVersion() ) ); if (null !== $sRequestURI) $this->configure('requestURI', $sRequestURI); else $this->configure('requestURI', $this->_detectURI()); if (null !== $sLanguage) $this->configure('language', $sLanguage); } function __sleep() { $aMembers = get_class_vars(get_class($this)); if (isset($aMembers['objLanguageManager'])) unset($aMembers['objLanguageManager']); if (isset($aMembers['objPluginManager'])) unset($aMembers['objPluginManager']); if (isset($aMembers['objArgumentManager'])) unset($aMembers['objArgumentManager']); if (isset($aMembers['objResponseManager'])) unset($aMembers['objResponseManager']); if (isset($aMembers['sCoreIncludeOutput'])) unset($aMembers['sCoreIncludeOutput']); return array_keys($aMembers); } function __wakeup() { ob_start(); $sLocalFolder = dirname(__FILE__); require $sLocalFolder . '/xajaxPluginManager.inc.php'; require $sLocalFolder . '/xajaxLanguageManager.inc.php'; require $sLocalFolder . '/xajaxArgumentManager.inc.php'; require $sLocalFolder . '/xajaxResponseManager.inc.php'; require $sLocalFolder . '/xajaxRequest.inc.php'; require $sLocalFolder . '/xajaxResponse.inc.php'; $aPluginFolders = array(); $aPluginFolders[] = dirname($sLocalFolder) . '/xajax_plugins'; $aPluginFolders[] = $sLocalFolder . '/plugin_layer'; $this->objPluginManager =& xajaxPluginManager::getInstance(); $this->objPluginManager->loadPlugins($aPluginFolders); $this->objLanguageManager =& xajaxLanguageManager::getInstance(); $this->objArgumentManager =& xajaxArgumentManager::getInstance(); $this->objResponseManager =& xajaxResponseManager::getInstance(); $this->sCoreIncludeOutput = ob_get_clean(); } function &getGlobalResponse() { static $obj; if (!$obj) { $obj = new xajaxResponse(); } return $obj; } function getVersion() { return 'xajax 0.5 Beta 4'; } function register($sType, $mArg) { $aArgs = func_get_args(); $nArgs = func_num_args(); if (2 < $nArgs) { if (XAJAX_PROCESSING_EVENT == $aArgs[0]) { $sEvent = $aArgs[1]; $xuf =& $aArgs[2]; if (false == is_a($xuf, 'xajaxUserFunction')) $xuf =& new xajaxUserFunction($xuf); $this->aProcessingEvents[$sEvent] =& $xuf; return true; } } if (1 < $nArgs) { $aArgs[1] =& $mArg; } return $this->objPluginManager->register($aArgs); } function configure($sName, $mValue) { if ('errorHandler' == $sName) { if (true === $mValue || false === $mValue) $this->bErrorHandler = $mValue; } else if ('exitAllowed' == $sName) { if (true === $mValue || false === $mValue) $this->bExitAllowed = $mValue; } else if ('cleanBuffer' == $sName) { if (true === $mValue || false === $mValue) $this->bCleanBuffer = $mValue; } else if ('logFile' == $sName) { $this->sLogFile = $mValue; } $this->objLanguageManager->configure($sName, $mValue); $this->objArgumentManager->configure($sName, $mValue); $this->objPluginManager->configure($sName, $mValue); $this->objResponseManager->configure($sName, $mValue); $this->aSettings[$sName] = $mValue; } function configureMany($aOptions) { foreach ($aOptions as $sName => $mValue) $this->configure($sName, $mValue); } function getConfiguration($sName) { if (isset($this->aSettings[$sName])) return $this->aSettings[$sName]; return NULL; } function canProcessRequest() { return $this->objPluginManager->canProcessRequest(); } function processRequest() { if (headers_sent($filename, $linenumber)) { echo "Output has already been sent to the browser at {$filename}:{$linenumber}.\n"; echo 'Please make sure the command $xajax->processRequest() is placed before this.'; exit(); } if ($this->canProcessRequest()) { if ($this->bErrorHandler) { $GLOBALS['xajaxErrorHandlerText'] = ""; set_error_handler("xajaxErrorHandler"); } $mResult = true; if (isset($this->aProcessingEvents[XAJAX_PROCESSING_EVENT_BEFORE])) { $bEndRequest = false; $this->aProcessingEvents[XAJAX_PROCESSING_EVENT_BEFORE]->call(array(&$bEndRequest)); $mResult = (false === $bEndRequest); } if (true === $mResult) $mResult = $this->objPluginManager->processRequest(); if (true === $mResult) { if ($this->bCleanBuffer) { $er = error_reporting(0); while (ob_get_level() > 0) ob_end_clean(); error_reporting($er); } if (isset($this->aProcessingEvents[XAJAX_PROCESSING_EVENT_AFTER])) { $bEndRequest = false; $this->aProcessingEvents[XAJAX_PROCESSING_EVENT_AFTER]->call(array(&$bEndRequest)); if (true === $bEndRequest) { $this->objResponseManager->clear(); $this->objResponseManager->append($aResult[1]); } } } else if (is_string($mResult)) { if ($this->bCleanBuffer) { $er = error_reporting(0); while (ob_get_level() > 0) ob_end_clean(); error_reporting($er); } $this->objResponseManager->clear(); $this->objResponseManager->append(new xajaxResponse()); if (isset($this->aProcessingEvents[XAJAX_PROCESSING_EVENT_INVALID])) $this->aProcessingEvents[XAJAX_PROCESSING_EVENT_INVALID]->call(); else $this->objResponseManager->debug($mResult); } if ($this->bErrorHandler) { $sErrorMessage = $GLOBALS['xajaxErrorHandlerText']; if (!empty($sErrorMessage)) { if (0 < strlen($this->sLogFile)) { $fH = @fopen($this->sLogFile, "a"); if (NULL != $fH) { fwrite( $fH, $this->objLanguageManager->getText('LOGHDR:01') . strftime("%b %e %Y %I:%M:%S %p") . $this->objLanguageManager->getText('LOGHDR:02') . $sErrorMessage . $this->objLanguageManager->getText('LOGHDR:03') ); fclose($fH); } else { $this->objResponseManager->debug( $this->objLanguageManager->getText('LOGERR:01') . $this->sLogFile ); } } $this->objResponseManager->debug( $this->objLanguageManager->getText('LOGMSG:01') . $sErrorMessage ); } }
$this->objResponseManager->send();
if ($this->bErrorHandler) restore_error_handler();
if ($this->bExitAllowed) exit(); } } function printJavascript($sJsURI="", $aJsFiles=array()) { if (0 < strlen($sJsURI)) $this->configure("javascript URI", $sJsURI);
if (0 < count($aJsFiles)) $this->configure("javascript files", $aJsFiles);
$this->objPluginManager->generateClientScript(); } function getJavascript($sJsURI='', $aJsFiles=array()) { ob_start(); $this->printJavascript($sJsURI, $aJsFiles); return ob_get_clean(); } function autoCompressJavascript($sJsFullFilename=NULL, $bAlways=false) { $sJsFile = 'xajax_js/xajax_core.js';
if ($sJsFullFilename) { $realJsFile = $sJsFullFilename; } else { $realPath = realpath(dirname(dirname(__FILE__))); $realJsFile = $realPath . '/'. $sJsFile; } if (!file_exists($realJsFile) || true == $bAlways) { $srcFile = str_replace('.js', '_uncompressed.js', $realJsFile); if (!file_exists($srcFile)) { trigger_error( $this->objLanguageManager->getText('CMPRSJS:RDERR:01') . dirname($realJsFile) . $this->objLanguageManager->getText('CMPRSJS:RDERR:02') , E_USER_ERROR ); } require_once(dirname(__FILE__) . '/xajaxCompress.inc.php'); $javaScript = implode('', file($srcFile)); $compressedScript = xajaxCompressFile($javaScript); $fH = @fopen($realJsFile, 'w'); if (!$fH) { trigger_error( $this->objLanguageManager->getText('CMPRSJS:WTERR:01') . dirname($realJsFile) . $this->objLanguageManager->getText('CMPRSJS:WTERR:02') , E_USER_ERROR ); } else { fwrite($fH, $compressedScript); fclose($fH); } } } function _compressSelf($sFolder=null) { if (null == $sFolder) $sFolder = dirname(dirname(__FILE__)); require_once(dirname(__FILE__) . '/xajaxCompress.inc.php');
if ($handle = opendir($sFolder)) { while (!(false === ($sName = readdir($handle)))) { if ('.' != $sName && '..' != $sName && is_dir($sFolder . '/' . $sName)) { $this->_compressSelf($sFolder . '/' . $sName); } else if (8 < strlen($sName) && 0 == strpos($sName, '.compressed')) { if ('.inc.php' == substr($sName, strlen($sName) - 8, 8)) { $sName = substr($sName, 0, strlen($sName) - 8); $sPath = $sFolder . '/' . $sName . '.inc.php'; if (file_exists($sPath)) { $aParsed = array(); $aFile = file($sPath); $nSkip = 0; foreach (array_keys($aFile) as $sKey) if ('//SkipDebug' == $aFile[$sKey]) ++$nSkip; else if ('//EndSkipDebug' == $aFile[$sKey]) --$nSkip; else if (0 == $nSkip) $aParsed[] = $aFile[$sKey]; unset($aFile); $compressedScript = xajaxCompressFile(implode('', $aParsed)); $sNewPath = $sPath; $fH = @fopen($sNewPath, 'w'); if (!$fH) { trigger_error( $this->objLanguageManager->getText('CMPRSPHP:WTERR:01') . $sNewPath . $this->objLanguageManager->getText('CMPRSPHP:WTERR:02') , E_USER_ERROR ); } else { fwrite($fH, $compressedScript); fclose($fH); } } } } } closedir($handle); } } function _compile($sFolder=null, $bWriteFile=true) { if (null == $sFolder) $sFolder = dirname(__FILE__); require_once(dirname(__FILE__) . '/xajaxCompress.inc.php'); $aOutput = array();
if ($handle = opendir($sFolder)) { while (!(false === ($sName |