![]() |
|---|
| [ Index ] |
Source Code Reference for V1.00 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 File: xajaxFunctionPlugin.inc.php 4 5 Contains the xajaxFunctionPlugin class 6 7 Title: xajaxFunctionPlugin class 8 9 Please see <copyright.inc.php> for a detailed description, copyright 10 and license information. 11 */ 12 13 /* 14 @package xajax 15 @version $Id: xajaxFunctionPlugin.inc.php 362 2007-05-29 15:32:24Z calltoconstruct $ 16 @copyright Copyright (c) 2005-2006 by Jared White & J. Max Wilson 17 @license http://www.xajaxproject.org/bsd_license.txt BSD License 18 */ 19 20 /* 21 Constant: XAJAX_FUNCTION 22 Specifies that the item being registered via the <xajax->register> function 23 is a php function available at global scope, or a specific function from 24 an instance of an object. 25 */ 26 if (!defined ('XAJAX_FUNCTION')) define ('XAJAX_FUNCTION', 'function'); 27 28 // require_once is necessary here as the xajaxEvent class will include this also 29 //SkipAIO 30 require_once dirname(__FILE__) . '/support/xajaxUserFunction.inc.php'; 31 //EndSkipAIO 32 33 /* 34 Class: xajaxFunctionPlugin 35 */ 36 class xajaxFunctionPlugin extends xajaxRequestPlugin 37 { 38 /* 39 Array: aFunctions 40 41 An array of <xajaxUserFunction> object that are registered and 42 available via a <xajax.request> call. 43 */ 44 var $aFunctions; 45 46 /* 47 String: sXajaxPrefix 48 49 A configuration setting that is stored locally and used during 50 the client script generation phase. 51 */ 52 var $sXajaxPrefix; 53 54 /* 55 String: sDefer 56 57 Configuration option that can be used to request that the 58 javascript file is loaded after the page has been fully loaded. 59 */ 60 var $sDefer; 61 62 var $bDeferScriptGeneration; 63 64 /* 65 String: sRequestedFunction 66 67 This string is used to temporarily hold the name of the function 68 that is being requested (during the request processing phase). 69 70 Since canProcessRequest loads this value from the get or post 71 data, it is unnecessary to load it again. 72 */ 73 var $sRequestedFunction; 74 75 /* 76 Function: xajaxFunctionPlugin 77 78 Constructs and initializes the <xajaxFunctionPlugin>. The GET and POST 79 data is searched for xajax function call parameters. This will later 80 be used to determine if the request is for a registered function in 81 <xajaxFunctionPlugin->canProcessRequest> 82 */ 83 function xajaxFunctionPlugin() 84 { 85 $this->aFunctions = array(); 86 87 $this->sXajaxPrefix = 'xajax_'; 88 $this->sDefer = ''; 89 $this->bDeferScriptGeneration = false; 90 91 $this->sRequestedFunction = NULL; 92 93 if (isset($_GET['xjxfun'])) $this->sRequestedFunction = $_GET['xjxfun']; 94 if (isset($_POST['xjxfun'])) $this->sRequestedFunction = $_POST['xjxfun']; 95 } 96 97 /* 98 Function: configure 99 100 Sets/stores configuration options used by this plugin. 101 */ 102 function configure($sName, $mValue) 103 { 104 if ('wrapperPrefix' == $sName) { 105 $this->sXajaxPrefix = $mValue; 106 } else if ('scriptDefferal' == $sName) { 107 if (true === $mValue) $this->sDefer = 'defer '; 108 else $this->sDefer = ''; 109 } else if ('deferScriptGeneration' == $sName) { 110 if (true === $mValue || false === $mValue) 111 $this->bDeferScriptGeneration = $mValue; 112 else if ('deferred' === $mValue) 113 $this->bDeferScriptGeneration = $mValue; 114 } 115 } 116 117 /* 118 Function: register 119 120 Provides a mechanism for functions to be registered and made available to 121 the page via the javascript <xajax.request> call. 122 */ 123 function register($aArgs) 124 { 125 if (1 < count($aArgs)) 126 { 127 $sType = $aArgs[0]; 128 129 if (XAJAX_FUNCTION == $sType) 130 { 131 $xuf =& $aArgs[1]; 132 133 if (false === is_a($xuf, 'xajaxUserFunction')) 134 $xuf =& new xajaxUserFunction($xuf); 135 136 if (2 < count($aArgs)) 137 if (is_array($aArgs[2])) 138 foreach ($aArgs[2] as $sName => $sValue) 139 $xuf->configure($sName, $sValue); 140 141 $this->aFunctions[] =& $xuf; 142 143 return $xuf->generateRequest($this->sXajaxPrefix); 144 } 145 } 146 147 return false; 148 } 149 150 /* 151 Function: generateClientScript 152 153 Called by the <xajaxPluginManager> during the client script generation 154 phase. This is used to generate a block of javascript code that will 155 contain function declarations that can be used on the browser through 156 javascript to initiate xajax requests. 157 */ 158 function generateClientScript() 159 { 160 if (false === $this->bDeferScriptGeneration || 'deferred' === $this->bDeferScriptGeneration) 161 { 162 if (0 < count($this->aFunctions)) 163 { 164 echo "\n<script type='text/javascript' " . $this->sDefer . "charset='UTF-8'>\n"; 165 echo "/* <![CDATA[ */\n"; 166 167 foreach (array_keys($this->aFunctions) as $sKey) 168 $this->aFunctions[$sKey]->generateClientScript($this->sXajaxPrefix); 169 170 echo "/* ]]> */\n"; 171 echo "</script>\n"; 172 } 173 } 174 } 175 176 /* 177 Function: canProcessRequest 178 179 Determines whether or not the current request can be processed 180 by this plugin. 181 182 Returns: 183 184 boolean - True if the current request can be handled by this plugin; 185 false otherwise. 186 */ 187 function canProcessRequest() 188 { 189 if (NULL == $this->sRequestedFunction) 190 return false; 191 192 return true; 193 } 194 195 /* 196 Function: processRequest 197 198 Called by the <xajaxPluginManager> when a request needs to be 199 processed. 200 201 Returns: 202 203 mixed - True when the request has been processed successfully. 204 An error message when an error has occurred. 205 */ 206 function processRequest() 207 { 208 if (NULL == $this->sRequestedFunction) 209 return false; 210 211 $objArgumentManager =& xajaxArgumentManager::getInstance(); 212 $aArgs = $objArgumentManager->process(); 213 214 foreach (array_keys($this->aFunctions) as $sKey) 215 { 216 $xuf =& $this->aFunctions[$sKey]; 217 218 if ($xuf->getName() == $this->sRequestedFunction) 219 { 220 $xuf->call($aArgs); 221 return true; 222 } 223 } 224 225 return 'Invalid function request received; no request processor found with this name.'; 226 } 227 } 228 229 $objPluginManager =& xajaxPluginManager::getInstance(); 230 $objPluginManager->registerPlugin(new xajaxFunctionPlugin(), 100);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Jan 8 03:00:03 2009 | Cross-referenced by PHPXref 0.7 |