Source for file Utilities.class.php

Documentation is available at Utilities.class.php

  1. <?php
  2. /**
  3. * XOAD Utilities file.
  4. *
  5. * <p>This file defines the {@link XOAD_Utilities} Class.</p>
  6. *
  7. * @author Stanimir Angeloff
  8. *
  9. * @package XOAD
  10. *
  11. * @version 0.6.0.0
  12. *
  13. */
  14.  
  15. /**
  16. * XOAD Utilities Class.
  17. *
  18. * <p>This class defines extended functions that
  19. * the XOAD package uses and overrides some
  20. * deprecated functions, like gettype(...).</p>
  21. *
  22. * @author Stanimir Angeloff
  23. *
  24. * @package XOAD
  25. *
  26. * @version 0.6.0.0
  27. *
  28. */
  29. class XOAD_Utilities extends XOAD_Observable
  30. {
  31. /**
  32. * Checks if an array is an associative array.
  33. *
  34. * @access public
  35. *
  36. * @param mixed $var The array to check.
  37. *
  38. * @return bool true if {@link $var} is an associative array, false
  39. * if {@link $var} is a sequential array.
  40. *
  41. * @static
  42. *
  43. */
  44. function isAssocArray($var)
  45. {
  46. // This code is based on mike-php's
  47. // comment in is_array function documentation.
  48. //
  49. // http://bg.php.net/is_array
  50. //
  51. // Thank you.
  52. //
  53.  
  54. if ( ! is_array($var)) {
  55.  
  56. return false;
  57. }
  58.  
  59. $arrayKeys = array_keys($var);
  60.  
  61. $sequentialKeys = range(0, sizeof($var));
  62.  
  63. if (function_exists('array_diff_assoc')) {
  64.  
  65. if (array_diff_assoc($arrayKeys, $sequentialKeys)) {
  66.  
  67. return true;
  68. }
  69.  
  70. } else {
  71.  
  72. if (
  73. (array_diff($arrayKeys, $sequentialKeys)) &&
  74. (array_diff($sequentialKeys, $arrayKeys))) {
  75.  
  76. return true;
  77. }
  78. }
  79.  
  80. return false;
  81. }
  82.  
  83. /**
  84. * Gets the type of a variable.
  85. *
  86. * @access public
  87. *
  88. * @param mixed $var The source variable.
  89. *
  90. * @return string Possibles values for the returned string are:
  91. * - "bool"
  92. * - "int"
  93. * - "float"
  94. * - "string"
  95. * - "s_array"
  96. * - "a_array"
  97. * - "object"
  98. * - "null"
  99. * - "unknown"
  100. *
  101. * @static
  102. *
  103. */
  104. function getType($var)
  105. {
  106. if (is_bool($var)) {
  107.  
  108. return 'bool';
  109.  
  110. } else if (is_int($var)) {
  111.  
  112. return 'int';
  113.  
  114. } else if (is_float($var)) {
  115.  
  116. return 'float';
  117.  
  118. } else if (is_string($var)) {
  119.  
  120. return 'string';
  121.  
  122. } else if (is_array($var)) {
  123.  
  124. if (XOAD_Utilities::isAssocArray($var)) {
  125.  
  126. return 'a_array';
  127.  
  128. } else {
  129.  
  130. return 's_array';
  131. }
  132.  
  133. } else if (is_object($var)) {
  134.  
  135. return 'object';
  136.  
  137. } else if (is_null($var)) {
  138.  
  139. return 'null';
  140. }
  141.  
  142. return 'unknown';
  143. }
  144.  
  145. /**
  146. * Return current UNIX timestamp with microseconds.
  147. *
  148. * @access public
  149. *
  150. * @return float Returns the float 'sec,msec' where 'sec' is the
  151. * current time measured in the number of seconds since
  152. * the Unix Epoch (0:00:00 January 1, 1970 GMT), and
  153. * 'msec' is the microseconds part.
  154. *
  155. * @static
  156. *
  157. */
  158. function getMicroTime()
  159. {
  160. list($microTime, $time) = explode(" ", microtime());
  161.  
  162. return ((float) $microTime + (float) $time);
  163. }
  164.  
  165. /**
  166. * Returns the URL for the current request (includings
  167. * the query string).
  168. *
  169. * @access public
  170. *
  171. * @return string Current request URL.
  172. *
  173. * @static
  174. *
  175. */
  176. function getRequestUrl()
  177. {
  178. $url = $_SERVER['PHP_SELF'];
  179.  
  180. if ( ! empty($_SERVER['QUERY_STRING'])) {
  181.  
  182. $url .= '?' . $_SERVER['QUERY_STRING'];
  183. }
  184.  
  185. return $url;
  186. }
  187.  
  188. /**
  189. * Registers XOAD client header files.
  190. *
  191. * @access public
  192. *
  193. * @param string $base Base XOAD folder.
  194. *
  195. * @param bool $optimized true to include optimized headers, false otherwise.
  196. *
  197. * @return string HTML code to include XOAD client files.
  198. *
  199. * @static
  200. *
  201. */
  202. function header($base = '.', $optimized = true)
  203. {
  204. $returnValue = '<script type="text/javascript" src="' . $base . '/js/';
  205.  
  206. $returnValue .= 'xoad';
  207.  
  208. if ($optimized) {
  209.  
  210. $returnValue .= '_optimized';
  211. }
  212.  
  213. $returnValue .= '.js"></script>';
  214.  
  215. if (array_key_exists('_XOAD_CUSTOM_HEADERS', $GLOBALS)) {
  216.  
  217. foreach ($GLOBALS['_XOAD_CUSTOM_HEADERS'] as $fileName) {
  218.  
  219. $returnValue .= '<script type="text/javascript" src="' . $base . ($optimized ? $fileName[1] : $fileName[0]) . '"></script>';
  220. }
  221. }
  222.  
  223. if (array_key_exists('_XOAD_EXTENSION_HEADERS', $GLOBALS)) {
  224.  
  225. foreach ($GLOBALS['_XOAD_EXTENSION_HEADERS'] as $extension => $files) {
  226.  
  227. $extensionBase = $base . '/extensions/' . $extension . '/';
  228.  
  229. foreach ($files as $fileName) {
  230.  
  231. $returnValue .= '<script type="text/javascript" src="' . $extensionBase . ($optimized ? $fileName[1] : $fileName[0]) . '"></script>';
  232. }
  233. }
  234. }
  235.  
  236. return $returnValue;
  237. }
  238.  
  239. /**
  240. * Registers XOAD Events header data.
  241. *
  242. * <p>You should call this method after {@link XOAD_Utilities::header}.</p>
  243. * <p>XOAD Events header data includes server time and callback URL.</p>
  244. *
  245. * @access public
  246. *
  247. * @param string $callbackUrl XOAD Events callback URL.
  248. *
  249. * @return string HTML code to initialize XOAD Events.
  250. *
  251. * @static
  252. *
  253. */
  254. function eventsHeader($callbackUrl = null)
  255. {
  256. if ($callbackUrl == null) {
  257.  
  258. $callbackUrl = XOAD_Utilities::getRequestUrl();
  259. }
  260.  
  261. $returnValue = '<script type="text/javascript">';
  262. $returnValue .= 'xoad.events.callbackUrl = ' . XOAD_Client::register($callbackUrl) . ';';
  263. $returnValue .= 'xoad.events.lastRefresh = ' . XOAD_Client::register(XOAD_Utilities::getMicroTime()) . ';';
  264. $returnValue .= '</script>';
  265.  
  266. return $returnValue;
  267. }
  268.  
  269. /**
  270. * Registers XOAD extension client header file.
  271. *
  272. * @access public
  273. *
  274. * @param string $extension The name of the XOAD extension.
  275. *
  276. * @param string $fileName The extension JavaScript file name.
  277. * This file must be located in the
  278. * extension base folder.
  279. *
  280. * @param string $optimizedFileName The optimized extension JavaScript file name.
  281. * This file must be located in the
  282. * extension base folder.
  283. *
  284. *
  285. * @return bool true on success, false otherwise.
  286. *
  287. * @static
  288. *
  289. */
  290. function extensionHeader($extension, $fileName, $optimizedFileName = null)
  291. {
  292. if ( ! array_key_exists('_XOAD_EXTENSION_HEADERS', $GLOBALS)) {
  293.  
  294. $GLOBALS['_XOAD_EXTENSION_HEADERS'] = array();
  295. }
  296.  
  297. if ( ! array_key_exists('_XOAD_HEADERS', $GLOBALS)) {
  298.  
  299. $GLOBALS['_XOAD_HEADERS'] = array();
  300. }
  301.  
  302. $extension = strtolower($extension);
  303.  
  304. if ( ! array_key_exists($extension, $GLOBALS['_XOAD_EXTENSION_HEADERS'])) {
  305.  
  306. $GLOBALS['_XOAD_EXTENSION_HEADERS'][$extension] = array();
  307. }
  308.  
  309. if (empty($optimizedFileName)) {
  310.  
  311. $optimizedFileName = $fileName;
  312. }
  313.  
  314. if (
  315. (in_array($fileName, $GLOBALS['_XOAD_HEADERS'])) &&
  316. (in_array($optimizedFileName, $GLOBALS['_XOAD_HEADERS']))) {
  317.  
  318. return false;
  319. }
  320.  
  321. $GLOBALS['_XOAD_EXTENSION_HEADERS'][$extension][] = array($fileName, $optimizedFileName);
  322. $GLOBALS['_XOAD_HEADERS'][] = $fileName;
  323. $GLOBALS['_XOAD_HEADERS'][] = $optimizedFileName;
  324.  
  325. return true;
  326. }
  327.  
  328. /**
  329. * Registers custom client header file.
  330. *
  331. * @access public
  332. *
  333. * @param string $fileName The JavaScript file name.
  334. * This file must be located in the
  335. * base folder.
  336. *
  337. * @param string $optimizedFileName The optimized JavaScript file name.
  338. * This file must be located in the
  339. * base folder.
  340. *
  341. *
  342. * @return bool true on success, false otherwise.
  343. *
  344. * @static
  345. *
  346. */
  347. function customHeader($fileName, $optimizedFileName = null)
  348. {
  349. if ( ! array_key_exists('_XOAD_CUSTOM_HEADERS', $GLOBALS)) {
  350.  
  351. $GLOBALS['_XOAD_CUSTOM_HEADERS'] = array();
  352. }
  353.  
  354. if ( ! array_key_exists('_XOAD_HEADERS', $GLOBALS)) {
  355.  
  356. $GLOBALS['_XOAD_HEADERS'] = array();
  357. }
  358.  
  359. if (empty($optimizedFileName)) {
  360.  
  361. $optimizedFileName = $fileName;
  362. }
  363.  
  364. if (
  365. (in_array($fileName, $GLOBALS['_XOAD_HEADERS'])) &&
  366. (in_array($optimizedFileName, $GLOBALS['_XOAD_HEADERS']))) {
  367.  
  368. return false;
  369. }
  370.  
  371. $GLOBALS['_XOAD_CUSTOM_HEADERS'][] = array($fileName, $optimizedFileName);
  372. $GLOBALS['_XOAD_HEADERS'][] = $fileName;
  373. $GLOBALS['_XOAD_HEADERS'][] = $optimizedFileName;
  374.  
  375. return true;
  376. }
  377.  
  378. /**
  379. * Returns the input string with all alphabetic characters
  380. * converted to lower or upper case depending on the configuration.
  381. *
  382. * @param string $text The text to convert to lower/upper case.
  383. *
  384. * @return string The converted text.
  385. *
  386. * @static
  387. *
  388. */
  389. function caseConvert($text)
  390. {
  391. return strtolower($text);
  392. }
  393.  
  394. /**
  395. * Adds a {@link XOAD_Utilities} events observer.
  396. *
  397. * @access public
  398. *
  399. * @param mixed $observer The observer object to add (must extend {@link XOAD_Observer}).
  400. *
  401. * @return string true on success, false otherwise.
  402. *
  403. * @static
  404. *
  405. */
  406. function addObserver(&$observer)
  407. {
  408. return parent::addObserver($observer, 'XOAD_Utilities');
  409. }
  410.  
  411. /**
  412. *
  413. * @access public
  414. *
  415. * @return bool
  416. *
  417. */
  418. function notifyObservers($event = 'default', $arg = null)
  419. {
  420. return parent::notifyObservers($event, $arg, 'XOAD_Utilities');
  421. }
  422. }
  423. ?>

Documentation generated on Sat, 12 Nov 2005 20:24:50 +0200 by phpDocumentor 1.3.0RC3