Skip to content
This repository
  • 3 commits
  • 287 files changed
  • 0 comments
  • 1 contributor

Showing 287 changed files with 7 additions and 23,456 deletions. Show diff stats Hide diff stats

  1. +1 0  .gitignore
  2. +0 201 CHANGELOG
  3. +0 1  CREDITS
  4. +0 57 INSTALL
  5. +0 68 LICENSE
  6. +0 504 LICENSE.cssQuery
  7. +6 38 README.md
  8. +0 558 classes/Client.class.php
  9. +0 319 classes/Meta.class.php
  10. +0 111 classes/Observable.class.php
  11. +0 94 classes/Observer.class.php
  12. +0 331 classes/Serializer.class.php
  13. +0 855 classes/Server.class.php
  14. +0 423 classes/Utilities.class.php
  15. +0 333 classes/events/Storage.class.php
  16. +0 409 classes/events/storage/File.class.php
  17. +0 468 classes/events/storage/MySQL.class.php
  18. +0 491 classes/events/storage/PearDB.class.php
  19. +0 51 config/extensions.config.php
  20. +0 119 config/xoad.config.php
  21. +0 385 docs/source/XOAD/XOAD_Cache/XOAD_Cache.html
  22. +0 204 docs/source/XOAD/XOAD_Cache/XOAD_Cache_ServerObserver.html
  23. +0 426 docs/source/XOAD/XOAD_Cache/XOAD_Cache_Storage.html
  24. +0 445 docs/source/XOAD/XOAD_Cache/XOAD_Cache_Storage_Files.html
  25. +0 644 docs/source/XOAD/XOAD_Cache/XOAD_Cache_Storage_MySQL.html
  26. +0 161 docs/source/XOAD/XOAD_Cache/_extensions_cache_cache_ext_php.html
  27. +0 151 docs/source/XOAD/XOAD_Cache/_extensions_cache_classes_Cache_class_php.html
  28. +0 146 docs/source/XOAD/XOAD_Cache/_extensions_cache_classes_ServerObserver_class_php.html
  29. +0 146 docs/source/XOAD/XOAD_Cache/_extensions_cache_classes_Storage_class_php.html
  30. +0 146 docs/source/XOAD/XOAD_Cache/_extensions_cache_classes_storage_Files_class_php.html
  31. +0 146 docs/source/XOAD/XOAD_Cache/_extensions_cache_classes_storage_MySQL_class_php.html
  32. +0 531 docs/source/XOAD/XOAD_Client.html
  33. +0 243 docs/source/XOAD/XOAD_Controls/XOAD_Controls.html
  34. +0 147 docs/source/XOAD/XOAD_Controls/_extensions_controls_classes_Controls_class_php.html
  35. +0 145 docs/source/XOAD/XOAD_Controls/_extensions_controls_controls_ext_php.html
  36. +0 577 docs/source/XOAD/XOAD_Events/XOAD_Events_Storage.html
  37. +0 573 docs/source/XOAD/XOAD_Events/XOAD_Events_Storage_File.html
  38. +0 708 docs/source/XOAD/XOAD_Events/XOAD_Events_Storage_MySQL.html
  39. +0 737 docs/source/XOAD/XOAD_Events/XOAD_Events_Storage_PearDB.html
  40. +0 155 docs/source/XOAD/XOAD_Events/_classes_events_Storage_class_php.html
  41. +0 157 docs/source/XOAD/XOAD_Events/_classes_events_storage_File_class_php.html
  42. +0 157 docs/source/XOAD/XOAD_Events/_classes_events_storage_MySQL_class_php.html
  43. +0 158 docs/source/XOAD/XOAD_Events/_classes_events_storage_PearDB_class_php.html
  44. +0 468 docs/source/XOAD/XOAD_HTML/XOAD_HTML.html
  45. +0 549 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_BaseElement.html
  46. +0 323 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_CssQuery.html
  47. +0 400 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_ElementById.html
  48. +0 323 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_ElementsByName.html
  49. +0 323 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_ElementsByTagName.html
  50. +0 290 docs/source/XOAD/XOAD_HTML/XOAD_HTML_DOM_ScriptBlock.html
  51. +0 204 docs/source/XOAD/XOAD_HTML/XOAD_HTML_ServerObserver.html
  52. +0 146 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_BaseElement_class_php.html
  53. +0 175 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_CssQuery_class_php.html
  54. +0 175 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_ElementById_class_php.html
  55. +0 175 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_ElementsByName_class_php.html
  56. +0 175 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_ElementsByTagName_class_php.html
  57. +0 146 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_DOM_ScriptBlock_class_php.html
  58. +0 234 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_HTML_class_php.html
  59. +0 146 docs/source/XOAD/XOAD_HTML/_extensions_html_classes_ServerObserver_class_php.html
  60. +0 161 docs/source/XOAD/XOAD_HTML/_extensions_html_html_ext_php.html
  61. +0 667 docs/source/XOAD/XOAD_Meta.html
  62. +0 342 docs/source/XOAD/XOAD_Observable.html
  63. +0 263 docs/source/XOAD/XOAD_Observer.html
  64. +0 307 docs/source/XOAD/XOAD_Serializer.html
  65. +0 734 docs/source/XOAD/XOAD_Server.html
  66. +0 600 docs/source/XOAD/XOAD_Utilities.html
  67. +0 170 docs/source/XOAD/_classes_Client_class_php.html
  68. +0 146 docs/source/XOAD/_classes_Meta_class_php.html
  69. +0 146 docs/source/XOAD/_classes_Observable_class_php.html
  70. +0 163 docs/source/XOAD/_classes_Observer_class_php.html
  71. +0 158 docs/source/XOAD/_classes_Serializer_class_php.html
  72. +0 168 docs/source/XOAD/_classes_Server_class_php.html
  73. +0 146 docs/source/XOAD/_classes_Utilities_class_php.html
  74. +0 165 docs/source/XOAD/_config_extensions_config_php.html
  75. +0 240 docs/source/XOAD/_config_xoad_config_php.html
  76. +0 334 docs/source/XOAD/_xoad_php.html
  77. +0 52 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscachecache.ext.php.html
  78. +0 379 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscacheclassesCache.class.php.html
  79. +0 88 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscacheclassesServerObserver.class.php.html
  80. +0 152 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscacheclassesStorage.class.php.html
  81. +0 269 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscacheclassesstorageFiles.class.php.html
  82. +0 310 docs/source/__filesource/fsource_XOAD_XOAD_Cache_extensionscacheclassesstorageMySQL.class.php.html
  83. +0 276 docs/source/__filesource/fsource_XOAD_XOAD_Controls_extensionscontrolsclassesControls.class.php.html
  84. +0 49 docs/source/__filesource/fsource_XOAD_XOAD_Controls_extensionscontrolscontrols.ext.php.html
Sorry, we could not display the entire diff because it was too big.
1  .gitignore
... ... @@ -0,0 +1 @@
  1 +*.kpf
201 CHANGELOG
... ... @@ -1,201 +0,0 @@
1   -0.6.0.0 (major)
2   ------------------------------------------------------
3   -
4   - fixed: XOAD_HTML is included when XOAD is loaded;
5   - in previous version XOAD_HTML was included
6   - only on callback;
7   -
8   - fixed: XOAD_Client::register(...); nested objects
9   - were not serialized as objects, but as the
10   - string "object";
11   -
12   - added: XOAD_HTML::cssQuery; Example:
13   -
14   - $a =& XOAD_HTML::cssQuery('div + div + div');
15   - $a->style['color'] = 'red';
16   -
17   - added: Prototype support; Big thanks to Ronald Nikel;
18   -
19   -
20   -0.5.5.0 (major, 0.6.0.0 preview)
21   ------------------------------------------------------
22   -
23   - note: please read the INSTALL file; there are some
24   - security notes;
25   -
26   - note: extensions are turned off by default; you
27   - should manually edit
28   - 'config/extensions.config.php' to enable only
29   - the extension you'll use;
30   -
31   - added: XOAD_Controls extension; this extension
32   - allows you to register custom client
33   - controls;
34   -
35   - added: XOAD Controls Library initial version;
36   -
37   - added: after a lot of thinking, I've decided to add
38   - support for Internet Explorer 5.
39   -
40   - fixed: the Cache extension directory was renamed to
41   - cache (all lower-case); extensions should not
42   - include upper-case letters.
43   -
44   - fixed: several JS warnings under Firefox (thanks
45   - humeniuc);
46   -
47   -
48   -0.5.0.0 (major)
49   ------------------------------------------------------
50   -
51   - major: NAJAX has been renamed to XOAD - XmlHttp
52   - Object oriented Application Development;
53   -
54   - added: XOAD_Cache extension; you can cache callback
55   - requests to the server so the next time you
56   - execute them again they will be loaded from
57   - the cache;
58   -
59   - fixed: GET parameters were not exported to the
60   - client;
61   -
62   -0.4.1.0 (minor) 09/20/2005
63   ------------------------------------------------------
64   -
65   - fixed: small bug-fixes in the chatAdvanced example -
66   - the error dialog was removed;
67   -
68   - added: xoad.html.importForm (imports an associative
69   - array to the corresponding form elements)
70   - and xoad.html.exportForm (exports form values
71   - to an associative array);
72   -
73   - added: support for asynchronous calls canceling;
74   -
75   -
76   -0.4.0.0 (major) 09/18/2005
77   ------------------------------------------------------
78   -
79   - fixed: serious bug in XOAD Events; some events were
80   - posted more than once in case of a slow
81   - connection to the server;
82   -
83   - added: support for Server Extensions and
84   - Client observers; you can extend XOAD
85   - as much as you want;
86   -
87   - added: XOAD_HTML extension - tutorial coming
88   - soon;
89   -
90   - added: new example scripts - Exam and HTML;
91   - new tutorial - XOAD Page Skeleton;
92   -
93   - added: XOAD Events providers now support the 'port'
94   - parameter; big thanks to Jurriën Stutterheim;
95   -
96   - fixed: the new client error handling introduced in
97   - 0.3.0.0 RC1 - instead of 'onMethodName' it
98   - was calling 'OnmethodName';
99   -
100   -
101   -0.3.0.0 RC1 (major) 08/29/2005
102   ------------------------------------------------------
103   -
104   - added: XOAD Client Event System (XOAD Events);
105   -
106   - added: MySQL provider for XOAD Events; you can configure
107   - it from xoad.config.php;
108   -
109   - added: XOAD_Server::allowClasses(...);
110   -
111   - added: XOAD_Server::denyClasses(...);
112   -
113   - added: xoad.asyncCall in xoad.js (xoad_optimized.js);
114   - pass it as last argument to function calls and
115   - they'll be called asynchronously:
116   -
117   - client.Test(); // Synchronous
118   - client.Test(xoad.asyncCall); // Asynchronous
119   -
120   - added: better client error handling; you can create
121   - custom method error handlers, like this:
122   -
123   - client.onTestError = function(error) {
124   - alert(error.message);
125   - return true;
126   - };
127   -
128   - client.setTimeout(2500);
129   - client.Test(xoad.asyncCall);
130   -
131   - Note that you must return true to suppress
132   - exception bubbling;
133   -
134   - fixed: when a class performs a callback,
135   - XOAD_Server::runServer(...) validates the
136   - callback - checks if the class is allowed
137   - and if the called method is public;
138   -
139   -
140   -0.2.1.2 (minor) 08/08/2005
141   ------------------------------------------------------
142   -
143   - comment: JavaScript functions have been renamed to
144   - xoad.functionName(...);
145   -
146   - fixed: XOAD_Server::initializeCallback(...) now
147   - checks if the called method is public;
148   -
149   - comment: XOAD_SERIALIZER_SKIP_STRING and
150   - XOAD_CLIENT_METADATA_METHOD_NAME have
151   - been moved to xoad.config.php;
152   -
153   - comment: publicMethods(...), privateMethods(...),
154   - publicVariables(...), privateVariables(...)
155   - and mapMethods(...) have been moved from
156   - XOAD_Utilities to XOAD_Client;
157   -
158   -
159   -0.2.1.0 (minor) 08/04/2005
160   ------------------------------------------------------
161   -
162   - added: XOAD_Server support for server side events;
163   -
164   - fixed: xoad_optimized.js has been compressed using
165   - http://dean.edwards.name/packer/;
166   -
167   - fixed: Package documentation has been updated;
168   -
169   - comment: XOAD_Server::initialize(...) has been renamed
170   - to XOAD_Server::runServer(...);
171   -
172   -
173   -0.2.0.2 (minor) 08/01/2005
174   ------------------------------------------------------
175   -
176   - added: XOAD_Server::mapClass(...); use this method
177   - to map class names to the files where they are
178   - defined; only the class that is the source of the
179   - callback will be loaded;
180   -
181   - added: The Chat example now supports emoticons and
182   - hyperlinks;
183   -
184   - fixed: __clone is now using xoadClone(...) to merge
185   - two objects; when a method deletes a member
186   - it's value will be null; when a method adds
187   - a new member it will be available immediately
188   - after the call ends;
189   -
190   -
191   -0.2.0.1 (minor) 07/31/2005
192   ------------------------------------------------------
193   -
194   - fixed: The Chat example; the class name is 'Explorer',
195   - but the script was using 'explorer';
196   -
197   -
198   -0.2.0.0 (initial) 07/31/2005
199   ------------------------------------------------------
200   -
201   - comment: First public release;
1  CREDITS
... ... @@ -1 +0,0 @@
1   -The PHP 5 Strict release is made and maintained by Jurri�n Stutterheim (j.stutterheim at hccnet.nl).
57 INSTALL
... ... @@ -1,57 +0,0 @@
1   -INSTALL
2   ---------
3   -
4   -1) Make sure XOAD has both read and write access to
5   - the /var directory. You should chmod it to 777.
6   -
7   -2) For security reasons, please edit the XOAD_SERIALIZER_SKIP_STRING
8   - constant (in 'config/xoad.config.php', line 43). Append
9   - '<![xoadSerializer:skipString[' with some random string (at least
10   - 10 characters long). Example:
11   -
12   - define('XOAD_SERIALIZER_SKIP_STRING', '<![xoadSerializer:skipString[-envLOOPwHaT-[');
13   -
14   -3) If you would like to use the MySQL provider for the
15   - Client Event System (XOAD Events) you should run the
16   - following SQL code in your database:
17   -
18   - CREATE TABLE `xoad_events`
19   - (
20   -
21   - `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
22   - `event` VARCHAR(100) NOT NULL,
23   - `className` VARCHAR(100) NOT NULL,
24   - `filter` VARCHAR(100) NULL,
25   - `sender` TEXT NULL,
26   - `data` TEXT NULL,
27   - `time` DOUBLE UNSIGNED NOT NULL,
28   - `endTime` DOUBLE UNSIGNED NOT NULL,
29   -
30   - PRIMARY KEY(`id`),
31   -
32   - INDEX(`event`, `className`, `filter`, `time`, `endTime`)
33   -
34   - );
35   -
36   - If you're going to use another provider (not MySQL) please refer to
37   - the README or INSTALL file included in it. Note, that some providers
38   - do not require installation.
39   -
40   -4) If you would like to use the MySQL provider for XOAD_Cache
41   - you should run the following SQL code in your database:
42   -
43   - CREATE TABLE `xoad_cache` (
44   -
45   - `id` VARCHAR(32) NOT NULL,
46   - `expire` INT UNSIGNED NOT NULL,
47   - `data` TEXT NOT NULL,
48   -
49   - PRIMARY KEY(`id`),
50   -
51   - INDEX(`expire`)
52   -
53   - );
54   -
55   - If you're going to use another provider (not MySQL) please refer to
56   - the README or INSTALL file included in it. Note, that some providers
57   - do not require installation.
68 LICENSE
... ... @@ -1,68 +0,0 @@
1   ---------------------------------------------------------------------
2   - The PHP License, version 3.0
3   -Copyright (c) 1999 - 2005 The PHP Group. All rights reserved.
4   ---------------------------------------------------------------------
5   -
6   -Redistribution and use in source and binary forms, with or without
7   -modification, is permitted provided that the following conditions
8   -are met:
9   -
10   - 1. Redistributions of source code must retain the above copyright
11   - notice, this list of conditions and the following disclaimer.
12   -
13   - 2. Redistributions in binary form must reproduce the above copyright
14   - notice, this list of conditions and the following disclaimer in
15   - the documentation and/or other materials provided with the
16   - distribution.
17   -
18   - 3. The name "PHP" must not be used to endorse or promote products
19   - derived from this software without prior written permission. For
20   - written permission, please contact group@php.net.
21   -
22   - 4. Products derived from this software may not be called "PHP", nor
23   - may "PHP" appear in their name, without prior written permission
24   - from group@php.net. You may indicate that your software works in
25   - conjunction with PHP by saying "Foo for PHP" instead of calling
26   - it "PHP Foo" or "phpfoo"
27   -
28   - 5. The PHP Group may publish revised and/or new versions of the
29   - license from time to time. Each version will be given a
30   - distinguishing version number.
31   - Once covered code has been published under a particular version
32   - of the license, you may always continue to use it under the terms
33   - of that version. You may also choose to use such covered code
34   - under the terms of any subsequent version of the license
35   - published by the PHP Group. No one other than the PHP Group has
36   - the right to modify the terms applicable to covered code created
37   - under this License.
38   -
39   - 6. Redistributions of any form whatsoever must retain the following
40   - acknowledgment:
41   - "This product includes PHP, freely available from
42   - <http://www.php.net/>".
43   -
44   -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
45   -ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
46   -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
47   -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
48   -DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
49   -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50   -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
51   -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
52   -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
53   -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
54   -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
55   -OF THE POSSIBILITY OF SUCH DAMAGE.
56   -
57   ---------------------------------------------------------------------
58   -
59   -This software consists of voluntary contributions made by many
60   -individuals on behalf of the PHP Group.
61   -
62   -The PHP Group can be contacted via Email at group@php.net.
63   -
64   -For more information on the PHP Group and the PHP project,
65   -please see <http://www.php.net>.
66   -
67   -This product includes the Zend Engine, freely available at
68   -<http://www.zend.com>.
504 LICENSE.cssQuery
... ... @@ -1,504 +0,0 @@
1   - GNU LESSER GENERAL PUBLIC LICENSE
2   - Version 2.1, February 1999
3   -
4   - Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5   - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6   - Everyone is permitted to copy and distribute verbatim copies
7   - of this license document, but changing it is not allowed.
8   -
9   -[This is the first released version of the Lesser GPL. It also counts
10   - as the successor of the GNU Library Public License, version 2, hence
11   - the version number 2.1.]
12   -
13   - Preamble
14   -
15   - The licenses for most software are designed to take away your
16   -freedom to share and change it. By contrast, the GNU General Public
17   -Licenses are intended to guarantee your freedom to share and change
18   -free software--to make sure the software is free for all its users.
19   -
20   - This license, the Lesser General Public License, applies to some
21   -specially designated software packages--typically libraries--of the
22   -Free Software Foundation and other authors who decide to use it. You
23   -can use it too, but we suggest you first think carefully about whether
24   -this license or the ordinary General Public License is the better
25   -strategy to use in any particular case, based on the explanations below.
26   -
27   - When we speak of free software, we are referring to freedom of use,
28   -not price. Our General Public Licenses are designed to make sure that
29   -you have the freedom to distribute copies of free software (and charge
30   -for this service if you wish); that you receive source code or can get
31   -it if you want it; that you can change the software and use pieces of
32   -it in new free programs; and that you are informed that you can do
33   -these things.
34   -
35   - To protect your rights, we need to make restrictions that forbid
36   -distributors to deny you these rights or to ask you to surrender these
37   -rights. These restrictions translate to certain responsibilities for
38   -you if you distribute copies of the library or if you modify it.
39   -
40   - For example, if you distribute copies of the library, whether gratis
41   -or for a fee, you must give the recipients all the rights that we gave
42   -you. You must make sure that they, too, receive or can get the source
43   -code. If you link other code with the library, you must provide
44   -complete object files to the recipients, so that they can relink them
45   -with the library after making changes to the library and recompiling
46   -it. And you must show them these terms so they know their rights.
47   -
48   - We protect your rights with a two-step method: (1) we copyright the
49   -library, and (2) we offer you this license, which gives you legal
50   -permission to copy, distribute and/or modify the library.
51   -
52   - To protect each distributor, we want to make it very clear that
53   -there is no warranty for the free library. Also, if the library is
54   -modified by someone else and passed on, the recipients should know
55   -that what they have is not the original version, so that the original
56   -author's reputation will not be affected by problems that might be
57   -introduced by others.
58   -
59   - Finally, software patents pose a constant threat to the existence of
60   -any free program. We wish to make sure that a company cannot
61   -effectively restrict the users of a free program by obtaining a
62   -restrictive license from a patent holder. Therefore, we insist that
63   -any patent license obtained for a version of the library must be
64   -consistent with the full freedom of use specified in this license.
65   -
66   - Most GNU software, including some libraries, is covered by the
67   -ordinary GNU General Public License. This license, the GNU Lesser
68   -General Public License, applies to certain designated libraries, and
69   -is quite different from the ordinary General Public License. We use
70   -this license for certain libraries in order to permit linking those
71   -libraries into non-free programs.
72   -
73   - When a program is linked with a library, whether statically or using
74   -a shared library, the combination of the two is legally speaking a
75   -combined work, a derivative of the original library. The ordinary
76   -General Public License therefore permits such linking only if the
77   -entire combination fits its criteria of freedom. The Lesser General
78   -Public License permits more lax criteria for linking other code with
79   -the library.
80   -
81   - We call this license the "Lesser" General Public License because it
82   -does Less to protect the user's freedom than the ordinary General
83   -Public License. It also provides other free software developers Less
84   -of an advantage over competing non-free programs. These disadvantages
85   -are the reason we use the ordinary General Public License for many
86   -libraries. However, the Lesser license provides advantages in certain
87   -special circumstances.
88   -
89   - For example, on rare occasions, there may be a special need to
90   -encourage the widest possible use of a certain library, so that it becomes
91   -a de-facto standard. To achieve this, non-free programs must be
92   -allowed to use the library. A more frequent case is that a free
93   -library does the same job as widely used non-free libraries. In this
94   -case, there is little to gain by limiting the free library to free
95   -software only, so we use the Lesser General Public License.
96   -
97   - In other cases, permission to use a particular library in non-free
98   -programs enables a greater number of people to use a large body of
99   -free software. For example, permission to use the GNU C Library in
100   -non-free programs enables many more people to use the whole GNU
101   -operating system, as well as its variant, the GNU/Linux operating
102   -system.
103   -
104   - Although the Lesser General Public License is Less protective of the
105   -users' freedom, it does ensure that the user of a program that is
106   -linked with the Library has the freedom and the wherewithal to run
107   -that program using a modified version of the Library.
108   -
109   - The precise terms and conditions for copying, distribution and
110   -modification follow. Pay close attention to the difference between a
111   -"work based on the library" and a "work that uses the library". The
112   -former contains code derived from the library, whereas the latter must
113   -be combined with the library in order to run.
114   -
115   - GNU LESSER GENERAL PUBLIC LICENSE
116   - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117   -
118   - 0. This License Agreement applies to any software library or other
119   -program which contains a notice placed by the copyright holder or
120   -other authorized party saying it may be distributed under the terms of
121   -this Lesser General Public License (also called "this License").
122   -Each licensee is addressed as "you".
123   -
124   - A "library" means a collection of software functions and/or data
125   -prepared so as to be conveniently linked with application programs
126   -(which use some of those functions and data) to form executables.
127   -
128   - The "Library", below, refers to any such software library or work
129   -which has been distributed under these terms. A "work based on the
130   -Library" means either the Library or any derivative work under
131   -copyright law: that is to say, a work containing the Library or a
132   -portion of it, either verbatim or with modifications and/or translated
133   -straightforwardly into another language. (Hereinafter, translation is
134   -included without limitation in the term "modification".)
135   -
136   - "Source code" for a work means the preferred form of the work for
137   -making modifications to it. For a library, complete source code means
138   -all the source code for all modules it contains, plus any associated
139   -interface definition files, plus the scripts used to control compilation
140   -and installation of the library.
141   -
142   - Activities other than copying, distribution and modification are not
143   -covered by this License; they are outside its scope. The act of
144   -running a program using the Library is not restricted, and output from
145   -such a program is covered only if its contents constitute a work based
146   -on the Library (independent of the use of the Library in a tool for
147   -writing it). Whether that is true depends on what the Library does
148   -and what the program that uses the Library does.
149   -
150   - 1. You may copy and distribute verbatim copies of the Library's
151   -complete source code as you receive it, in any medium, provided that
152   -you conspicuously and appropriately publish on each copy an
153   -appropriate copyright notice and disclaimer of warranty; keep intact
154   -all the notices that refer to this License and to the absence of any
155   -warranty; and distribute a copy of this License along with the
156   -Library.
157   -
158   - You may charge a fee for the physical act of transferring a copy,
159   -and you may at your option offer warranty protection in exchange for a
160   -fee.
161   -
162   - 2. You may modify your copy or copies of the Library or any portion
163   -of it, thus forming a work based on the Library, and copy and
164   -distribute such modifications or work under the terms of Section 1
165   -above, provided that you also meet all of these conditions:
166   -
167   - a) The modified work must itself be a software library.
168   -
169   - b) You must cause the files modified to carry prominent notices
170   - stating that you changed the files and the date of any change.
171   -
172   - c) You must cause the whole of the work to be licensed at no
173   - charge to all third parties under the terms of this License.
174   -
175   - d) If a facility in the modified Library refers to a function or a
176   - table of data to be supplied by an application program that uses
177   - the facility, other than as an argument passed when the facility
178   - is invoked, then you must make a good faith effort to ensure that,
179   - in the event an application does not supply such function or
180   - table, the facility still operates, and performs whatever part of
181   - its purpose remains meaningful.
182   -
183   - (For example, a function in a library to compute square roots has
184   - a purpose that is entirely well-defined independent of the
185   - application. Therefore, Subsection 2d requires that any
186   - application-supplied function or table used by this function must
187   - be optional: if the application does not supply it, the square
188   - root function must still compute square roots.)
189   -
190   -These requirements apply to the modified work as a whole. If
191   -identifiable sections of that work are not derived from the Library,
192   -and can be reasonably considered independent and separate works in
193   -themselves, then this License, and its terms, do not apply to those
194   -sections when you distribute them as separate works. But when you
195   -distribute the same sections as part of a whole which is a work based
196   -on the Library, the distribution of the whole must be on the terms of
197   -this License, whose permissions for other licensees extend to the
198   -entire whole, and thus to each and every part regardless of who wrote
199   -it.
200   -
201   -Thus, it is not the intent of this section to claim rights or contest
202   -your rights to work written entirely by you; rather, the intent is to
203   -exercise the right to control the distribution of derivative or
204   -collective works based on the Library.
205   -
206   -In addition, mere aggregation of another work not based on the Library
207   -with the Library (or with a work based on the Library) on a volume of
208   -a storage or distribution medium does not bring the other work under
209   -the scope of this License.
210   -
211   - 3. You may opt to apply the terms of the ordinary GNU General Public
212   -License instead of this License to a given copy of the Library. To do
213   -this, you must alter all the notices that refer to this License, so
214   -that they refer to the ordinary GNU General Public License, version 2,
215   -instead of to this License. (If a newer version than version 2 of the
216   -ordinary GNU General Public License has appeared, then you can specify
217   -that version instead if you wish.) Do not make any other change in
218   -these notices.
219   -
220   - Once this change is made in a given copy, it is irreversible for
221   -that copy, so the ordinary GNU General Public License applies to all
222   -subsequent copies and derivative works made from that copy.
223   -
224   - This option is useful when you wish to copy part of the code of
225   -the Library into a program that is not a library.
226   -
227   - 4. You may copy and distribute the Library (or a portion or
228   -derivative of it, under Section 2) in object code or executable form
229   -under the terms of Sections 1 and 2 above provided that you accompany
230   -it with the complete corresponding machine-readable source code, which
231   -must be distributed under the terms of Sections 1 and 2 above on a
232   -medium customarily used for software interchange.
233   -
234   - If distribution of object code is made by offering access to copy
235   -from a designated place, then offering equivalent access to copy the
236   -source code from the same place satisfies the requirement to
237   -distribute the source code, even though third parties are not
238   -compelled to copy the source along with the object code.
239   -
240   - 5. A program that contains no derivative of any portion of the
241   -Library, but is designed to work with the Library by being compiled or
242   -linked with it, is called a "work that uses the Library". Such a
243   -work, in isolation, is not a derivative work of the Library, and
244   -therefore falls outside the scope of this License.
245   -
246   - However, linking a "work that uses the Library" with the Library
247   -creates an executable that is a derivative of the Library (because it
248   -contains portions of the Library), rather than a "work that uses the
249   -library". The executable is therefore covered by this License.
250   -Section 6 states terms for distribution of such executables.
251   -
252   - When a "work that uses the Library" uses material from a header file
253   -that is part of the Library, the object code for the work may be a
254   -derivative work of the Library even though the source code is not.
255   -Whether this is true is especially significant if the work can be
256   -linked without the Library, or if the work is itself a library. The
257   -threshold for this to be true is not precisely defined by law.
258   -
259   - If such an object file uses only numerical parameters, data
260   -structure layouts and accessors, and small macros and small inline
261   -functions (ten lines or less in length), then the use of the object
262   -file is unrestricted, regardless of whether it is legally a derivative
263   -work. (Executables containing this object code plus portions of the
264   -Library will still fall under Section 6.)
265   -
266   - Otherwise, if the work is a derivative of the Library, you may
267   -distribute the object code for the work under the terms of Section 6.
268   -Any executables containing that work also fall under Section 6,
269   -whether or not they are linked directly with the Library itself.
270   -
271   - 6. As an exception to the Sections above, you may also combine or
272   -link a "work that uses the Library" with the Library to produce a
273   -work containing portions of the Library, and distribute that work
274   -under terms of your choice, provided that the terms permit
275   -modification of the work for the customer's own use and reverse
276   -engineering for debugging such modifications.
277   -
278   - You must give prominent notice with each copy of the work that the
279   -Library is used in it and that the Library and its use are covered by
280   -this License. You must supply a copy of this License. If the work
281   -during execution displays copyright notices, you must include the
282   -copyright notice for the Library among them, as well as a reference
283   -directing the user to the copy of this License. Also, you must do one
284   -of these things:
285   -
286   - a) Accompany the work with the complete corresponding
287   - machine-readable source code for the Library including whatever
288   - changes were used in the work (which must be distributed under
289   - Sections 1 and 2 above); and, if the work is an executable linked
290   - with the Library, with the complete machine-readable "work that
291   - uses the Library", as object code and/or source code, so that the
292   - user can modify the Library and then relink to produce a modified
293   - executable containing the modified Library. (It is understood
294   - that the user who changes the contents of definitions files in the
295   - Library will not necessarily be able to recompile the application
296   - to use the modified definitions.)
297   -
298   - b) Use a suitable shared library mechanism for linking with the
299   - Library. A suitable mechanism is one that (1) uses at run time a
300   - copy of the library already present on the user's computer system,
301   - rather than copying library functions into the executable, and (2)
302   - will operate properly with a modified version of the library, if
303   - the user installs one, as long as the modified version is
304   - interface-compatible with the version that the work was made with.
305   -
306   - c) Accompany the work with a written offer, valid for at
307   - least three years, to give the same user the materials
308   - specified in Subsection 6a, above, for a charge no more
309   - than the cost of performing this distribution.
310   -
311   - d) If distribution of the work is made by offering access to copy
312   - from a designated place, offer equivalent access to copy the above
313   - specified materials from the same place.
314   -
315   - e) Verify that the user has already received a copy of these
316   - materials or that you have already sent this user a copy.
317   -
318   - For an executable, the required form of the "work that uses the
319   -Library" must include any data and utility programs needed for
320   -reproducing the executable from it. However, as a special exception,
321   -the materials to be distributed need not include anything that is
322   -normally distributed (in either source or binary form) with the major
323   -components (compiler, kernel, and so on) of the operating system on
324   -which the executable runs, unless that component itself accompanies
325   -the executable.
326   -
327   - It may happen that this requirement contradicts the license
328   -restrictions of other proprietary libraries that do not normally
329   -accompany the operating system. Such a contradiction means you cannot
330   -use both them and the Library together in an executable that you
331   -distribute.
332   -
333   - 7. You may place library facilities that are a work based on the
334   -Library side-by-side in a single library together with other library
335   -facilities not covered by this License, and distribute such a combined
336   -library, provided that the separate distribution of the work based on
337   -the Library and of the other library facilities is otherwise
338   -permitted, and provided that you do these two things:
339   -
340   - a) Accompany the combined library with a copy of the same work
341   - based on the Library, uncombined with any other library
342   - facilities. This must be distributed under the terms of the
343   - Sections above.
344   -
345   - b) Give prominent notice with the combined library of the fact
346   - that part of it is a work based on the Library, and explaining
347   - where to find the accompanying uncombined form of the same work.
348   -
349   - 8. You may not copy, modify, sublicense, link with, or distribute
350   -the Library except as expressly provided under this License. Any
351   -attempt otherwise to copy, modify, sublicense, link with, or
352   -distribute the Library is void, and will automatically terminate your
353   -rights under this License. However, parties who have received copies,
354   -or rights, from you under this License will not have their licenses
355   -terminated so long as such parties remain in full compliance.
356   -
357   - 9. You are not required to accept this License, since you have not
358   -signed it. However, nothing else grants you permission to modify or
359   -distribute the Library or its derivative works. These actions are
360   -prohibited by law if you do not accept this License. Therefore, by
361   -modifying or distributing the Library (or any work based on the
362   -Library), you indicate your acceptance of this License to do so, and
363   -all its terms and conditions for copying, distributing or modifying
364   -the Library or works based on it.
365   -
366   - 10. Each time you redistribute the Library (or any work based on the
367   -Library), the recipient automatically receives a license from the
368   -original licensor to copy, distribute, link with or modify the Library
369   -subject to these terms and conditions. You may not impose any further
370   -restrictions on the recipients' exercise of the rights granted herein.
371   -You are not responsible for enforcing compliance by third parties with
372   -this License.
373   -
374   - 11. If, as a consequence of a court judgment or allegation of patent
375   -infringement or for any other reason (not limited to patent issues),
376   -conditions are imposed on you (whether by court order, agreement or
377   -otherwise) that contradict the conditions of this License, they do not
378   -excuse you from the conditions of this License. If you cannot
379   -distribute so as to satisfy simultaneously your obligations under this
380   -License and any other pertinent obligations, then as a consequence you
381   -may not distribute the Library at all. For example, if a patent
382   -license would not permit royalty-free redistribution of the Library by
383   -all those who receive copies directly or indirectly through you, then
384   -the only way you could satisfy both it and this License would be to
385   -refrain entirely from distribution of the Library.
386   -
387   -If any portion of this section is held invalid or unenforceable under any
388   -particular circumstance, the balance of the section is intended to apply,
389   -and the section as a whole is intended to apply in other circumstances.
390   -
391   -It is not the purpose of this section to induce you to infringe any
392   -patents or other property right claims or to contest validity of any
393   -such claims; this section has the sole purpose of protecting the
394   -integrity of the free software distribution system which is
395   -implemented by public license practices. Many people have made
396   -generous contributions to the wide range of software distributed
397   -through that system in reliance on consistent application of that
398   -system; it is up to the author/donor to decide if he or she is willing
399   -to distribute software through any other system and a licensee cannot
400   -impose that choice.
401   -
402   -This section is intended to make thoroughly clear what is believed to
403   -be a consequence of the rest of this License.
404   -
405   - 12. If the distribution and/or use of the Library is restricted in
406   -certain countries either by patents or by copyrighted interfaces, the
407   -original copyright holder who places the Library under this License may add
408   -an explicit geographical distribution limitation excluding those countries,
409   -so that distribution is permitted only in or among countries not thus
410   -excluded. In such case, this License incorporates the limitation as if
411   -written in the body of this License.
412   -
413   - 13. The Free Software Foundation may publish revised and/or new
414   -versions of the Lesser General Public License from time to time.
415   -Such new versions will be similar in spirit to the present version,
416   -but may differ in detail to address new problems or concerns.
417   -
418   -Each version is given a distinguishing version number. If the Library
419   -specifies a version number of this License which applies to it and
420   -"any later version", you have the option of following the terms and
421   -conditions either of that version or of any later version published by
422   -the Free Software Foundation. If the Library does not specify a
423   -license version number, you may choose any version ever published by
424   -the Free Software Foundation.
425   -
426   - 14. If you wish to incorporate parts of the Library into other free
427   -programs whose distribution conditions are incompatible with these,
428   -write to the author to ask for permission. For software which is
429   -copyrighted by the Free Software Foundation, write to the Free
430   -Software Foundation; we sometimes make exceptions for this. Our
431   -decision will be guided by the two goals of preserving the free status
432   -of all derivatives of our free software and of promoting the sharing
433   -and reuse of software generally.
434   -
435   - NO WARRANTY
436   -
437   - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438   -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439   -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440   -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441   -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442   -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443   -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444   -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445   -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446   -
447   - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448   -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449   -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450   -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451   -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452   -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453   -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454   -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455   -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456   -DAMAGES.
457   -
458   - END OF TERMS AND CONDITIONS
459   -
460   - How to Apply These Terms to Your New Libraries
461   -
462   - If you develop a new library, and you want it to be of the greatest
463   -possible use to the public, we recommend making it free software that
464   -everyone can redistribute and change. You can do so by permitting
465   -redistribution under these terms (or, alternatively, under the terms of the
466   -ordinary General Public License).
467   -
468   - To apply these terms, attach the following notices to the library. It is
469   -safest to attach them to the start of each source file to most effectively
470   -convey the exclusion of warranty; and each file should have at least the
471   -"copyright" line and a pointer to where the full notice is found.
472   -
473   - <one line to give the library's name and a brief idea of what it does.>
474   - Copyright (C) <year> <name of author>
475   -
476   - This library is free software; you can redistribute it and/or
477   - modify it under the terms of the GNU Lesser General Public
478   - License as published by the Free Software Foundation; either
479   - version 2.1 of the License, or (at your option) any later version.
480   -
481   - This library is distributed in the hope that it will be useful,
482   - but WITHOUT ANY WARRANTY; without even the implied warranty of
483   - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
484   - Lesser General Public License for more details.
485   -
486   - You should have received a copy of the GNU Lesser General Public
487   - License along with this library; if not, write to the Free Software
488   - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
489   -
490   -Also add information on how to contact you by electronic and paper mail.
491   -
492   -You should also get your employer (if you work as a programmer) or your
493   -school, if any, to sign a "copyright disclaimer" for the library, if
494   -necessary. Here is a sample; alter the names:
495   -
496   - Yoyodyne, Inc., hereby disclaims all copyright interest in the
497   - library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498   -
499   - <signature of Ty Coon>, 1 April 1990
500   - Ty Coon, President of Vice
501   -
502   -That's all there is to it!
503   -
504   -
44 README.md
Source Rendered
... ... @@ -1,41 +1,9 @@
1   -XOAD is a PHP based AJAX/XAP object oriented framework that allows you to create richer web applications.
2   -
3   -XOAD, formerly known as NAJAX, has many benefits:
  1 +XOAD
  2 +====
4 3
5   - - it uses JSON and native PHP serialized objects to communicate,
6   - - special attention has been paid to security,
7   - - supports server side events (observation),
8   - - client side events (XOAD Events),
9   - - server and client extensions,
10   - - HTML manipulation (extension),
11   - - Caching (extension).
12   -
13   -And more:
  4 +PHP + AJAX = **Love**
14 5
15   - - each class, method and variable is documented,
16   - - easy tutorials to get started using XOAD.
17   -
18   -Tutorial
19   ---------
20   -
21   -XOAD's tutorial (as seen in `docs/tutorials/`) is [available online](http://stanangeloff.github.com/XOAD/). Note the class reference is not available online and is part of the download only.
22   -
23   -NOTE on XOAD's license:
24   -----------------------
25   -
26   -Essentially, the license gives you the right to use, distribute and modify
27   -XOAD as much as you want, for both COMMERCIAL and NON-COMMERCIAL use. You
28   -just have to make it clear to the user that what you have distributed
29   -contains XOAD.
30   -
31   -For more information take a look at the LICENSE file or visit:
32   -http://www.php.net/license/3_0.txt
33   -
34   -
35   -XOAD comes with cssQuery:
36   -
37   -- [dean.edwards.name/my/cssQuery/](http://dean.edwards.name/my/cssQuery/)
38   -- [creativecommons.org/licenses/LGPL/2.1/](http://creativecommons.org/licenses/LGPL/2.1/)
39   - or
40   - [LICENSE.cssQuery](http://github.com/StanAngeloff/XOAD/blob/master/LICENSE.cssQuery)
  6 +Work in Progress
  7 +----------------
41 8
  9 +There are no working client-side examples at this time.
558 classes/Client.class.php
... ... @@ -1,558 +0,0 @@
1   -<?php
2   -/**
3   - * XOAD Client file.
4   - *
5   - * <p>This file defines the {@link XOAD_Client} Class.</p>
6   - * <p>Example:</p>
7   - * <code>
8   - * <script type="text/javascript">
9   - * <?php
10   - *
11   - * class Calculator
12   - * {
13   - * var $result;
14   - *
15   - * function Calculator()
16   - * {
17   - * $this->result = 0;
18   - * }
19   - *
20   - * function Add($arg)
21   - * {
22   - * $this->result += $arg;
23   - * }
24   - * }
25   - *
26   - * require_once('xoad.php');
27   - *
28   - * print XOAD_Client::register('Calculator', 'server.php');
29   - *
30   - * ?>
31   - * </script>
32   - * </code>
33   - *
34   - * @author Stanimir Angeloff
35   - *
36   - * @package XOAD
37   - *
38   - * @version 0.6.0.0
39   - *
40   - */
41   -
42   -/**
43   - * XOAD Client Class.
44   - *
45   - * <p>This class is used to register a PHP variable/class
46   - * in JavaScript.</p>
47   - * <p>This class is also used to assign meta data
48   - * to the classes. See
49   - * {@link XOAD_Client::publicMethods},
50   - * {@link XOAD_Client::privateMethods},
51   - * {@link XOAD_Client::publicVariables},
52   - * {@link XOAD_Client::privateVariables} and
53   - * {@link XOAD_Client::mapMethods} for more information.</p>
54   - * <p>Example:</p>
55   - * <code>
56   - * <?php
57   - *
58   - * class Calculator
59   - * {
60   - * var $result;
61   - *
62   - * function Calculator()
63   - * {
64   - * $this->result = 0;
65   - * }
66   - *
67   - * function Add($arg)
68   - * {
69   - * $this->result += $arg;
70   - * }
71   - * }
72   - *
73   - * define('XOAD_AUTOHANDLE', true);
74   - *
75   - * require_once('xoad.php');
76   - *
77   - * ?>
78   - * <?= XOAD_Utilities::header() ?>
79   - * <script type="text/javascript">
80   - *
81   - * var calc = <?= XOAD_Client::register(new Calculator()) ?>;
82   - *
83   - * calc.add(10);
84   - * calc.add(20);
85   - *
86   - * alert(calc.result);
87   - *
88   - * </script>
89   - * </code>
90   - *
91   - * @author Stanimir Angeloff
92   - *
93   - * @package XOAD
94   - *
95   - * @version 0.6.0.0
96   - *
97   - */
98   -class XOAD_Client extends XOAD_Observable
99   -{
100   - /**
101   - * Registers a PHP variable/class in JavaScript.
102   - *
103   - * <p>Example:</p>
104   - * <code>
105   - * <script type="text/javascript">
106   - * <?php require_once('xoad.php'); ?>
107   - *
108   - * var arr = <?= XOAD_Client::register(array(1, 2, "string", array("Nested"))) ?>;
109   - *
110   - * alert(arr);
111   - *
112   - * </script>
113   - * </code>
114   - *
115   - * @access public
116   - *
117   - * @param mixed $var Variable/Class name to register.
118   - *
119   - * @param mixed $params When registering a variable/class you can
120   - * provide extended parameters, like class name
121   - * and callback URL.
122   - *
123   - * @return string JavaString code that represents the variable/class.
124   - *
125   - * @static
126   - *
127   - */
128   - public static function register($var, $params = null)
129   - {
130   - $type = XOAD_Utilities::getType($var);
131   -
132   - if ($type == 'object') {
133   -
134   - $paramsType = XOAD_Utilities::getType($params);
135   -
136   - if ($paramsType != 'string') {
137   -
138   - $callbackUrl = XOAD_Utilities::getRequestUrl();
139   -
140   - if ($paramsType == 'a_array') {
141   -
142   - if ( ! empty($params['class'])) {
143   -
144   - $className = $params['class'];
145   - }
146   -
147   - if ( ! empty($params['url'])) {
148   -
149   - $callbackUrl = $params['url'];
150   - }
151   - }
152   -
153   - } else {
154   -
155   - $callbackUrl = $params;
156   - }
157   -
158   - if (method_exists($var, XOAD_CLIENT_METADATA_METHOD_NAME)) {
159   -
160   - call_user_func_array(array(&$var, XOAD_CLIENT_METADATA_METHOD_NAME), null);
161   - }
162   -
163   - $objectCode = array();
164   -
165   - if (empty($className)) {
166   -
167   - $className = XOAD_Utilities::caseConvert(get_class($var));
168   - }
169   -
170   - $meta = get_object_vars($var);
171   -
172   - $objectMeta = null;
173   -
174   - if (isset($meta['xoadMeta'])) {
175   -
176   - if (XOAD_Utilities::getType($meta['xoadMeta']) == 'object') {
177   -
178   - if (strcasecmp(get_class($meta['xoadMeta']), 'XOAD_Meta') == 0) {
179   -
180   - $objectMeta = $meta['xoadMeta'];
181   -
182   - unset($meta['xoadMeta']);
183   -
184   - unset($var->xoadMeta);
185   - }
186   - }
187   - }
188   -
189   - if (sizeof($meta) > 0) {
190   -
191   - $attachMeta = array();
192   -
193   - foreach ($meta as $key => $value) {
194   -
195   - if ( ! empty($objectMeta)) {
196   -
197   - if ( ! $objectMeta->isPublicVariable($key)) {
198   -
199   - unset($meta[$key]);
200   -
201   - unset($var->$key);
202   -
203   - continue;
204   - }
205   - }
206   -
207   - $valueType = XOAD_Utilities::getType($value);
208   -
209   - if (
210   - ($valueType == 'object') ||
211   - ($valueType == 's_array') ||
212   - ($valueType == 'a_array')) {
213   -
214   - $var->$key = XOAD_SERIALIZER_SKIP_STRING . XOAD_Client::register($var->$key, $callbackUrl);
215   - }
216   -
217   - $attachMeta[$key] = $valueType;
218   - }
219   -
220   - $var->__meta = $attachMeta;
221   -
222   - $var->__size = sizeof($attachMeta);
223   -
224   - } else {
225   -
226   - $var->__meta = null;
227   -
228   - $var->__size = 0;
229   - }
230   -
231   - $var->__class = $className;
232   -
233   - $var->__url = $callbackUrl;
234   -
235   - $var->__uid = md5(uniqid(rand(), true));
236   -
237   - $var->__output = null;
238   -
239   - $var->__timeout = null;
240   -
241   - $serialized = XOAD_Serializer::serialize($var);
242   -
243   - $objectCode[] = substr($serialized, 1, strlen($serialized) - 2);
244   -
245   - $objectCode[] = '"__clone":function(obj){xoad.clone(this,obj)}';
246   -
247   - $objectCode[] = '"__serialize":function(){return xoad.serialize(this)}';
248   -
249   - $objectCode[] = '"catchEvent":function(){return xoad.catchEvent(this,arguments)}';
250   -
251   - $objectCode[] = '"ignoreEvent":function(){return xoad.ignoreEvent(this,arguments)}';
252   -
253   - $objectCode[] = '"postEvent":function(){return xoad.postEvent(this,arguments)}';
254   -
255   - $objectCode[] = '"fetchOutput":function(){return this.__output}';
256   -
257   - $objectCode[] = '"setTimeout":function(miliseconds){this.__timeout=miliseconds}';
258   -
259   - $objectCode[] = '"getTimeout":function(){return this.__timeout}';
260   -
261   - $objectCode[] = '"clearTimeout":function(){this.__timeout=null}';
262   -
263   - $classMethods = get_class_methods($var);
264   -
265   - for ($iterator = sizeof($classMethods) - 1; $iterator >= 0; $iterator --) {
266   -
267   - if (strcasecmp($className, $classMethods[$iterator]) == 0) {
268   -
269   - unset($classMethods[$iterator]);
270   -
271   - continue;
272   - }
273   -
274   - if (strcasecmp($classMethods[$iterator], XOAD_CLIENT_METADATA_METHOD_NAME) == 0) {
275   -
276   - unset($classMethods[$iterator]);
277   -
278   - continue;
279   - }
280   -
281   - if ( ! empty($objectMeta)) {
282   -
283   - if ( ! $objectMeta->isPublicMethod($classMethods[$iterator])) {
284   -
285   - unset($classMethods[$iterator]);
286   -
287   - continue;
288   - }
289   - }
290   - }
291   -
292   - if (sizeof($classMethods) > 0) {
293   -
294   - $index = 0;
295   -
296   - $length = sizeof($classMethods);
297   -
298   - $returnValue = '';
299   -
300   - foreach ($classMethods as $method) {
301   -
302   - $methodName = XOAD_Utilities::caseConvert($method);
303   -
304   - if ( ! empty($objectMeta)) {
305   -
306   - $mapMethodName = $objectMeta->findMethodName($methodName);
307   -
308   - if (strcmp($mapMethodName, $methodName) != 0) {
309   -
310   - $methodName = $mapMethodName;
311   - }
312   - }
313   -
314   - $serialized = XOAD_Serializer::serialize($methodName);
315   -
316   - $returnValue .= $serialized;
317   -
318   - $returnValue .= ':';
319   -
320   - $returnValue .= 'function(){return xoad.call(this,' . $serialized .',arguments)}';
321   -
322   - if ($index < $length - 1) {
323   -
324   - $returnValue .= ',';
325   - }
326   -
327   - $index ++;
328   - }
329   -
330   - $objectCode[] = $returnValue;
331   - }
332   -
333   - $returnValue = '{' . join(',', $objectCode) . '}';
334   -
335   - return $returnValue;
336   -
337   - } else if (($type == 's_array') || ($type == 'a_array')) {
338   -
339   - foreach ($var as $key => $value) {
340   -
341   - $valueType = XOAD_Utilities::getType($value);
342   -
343   - if (
344   - ($valueType == 'object') ||
345   - ($valueType == 's_array') ||
346   - ($valueType == 'a_array')) {
347   -
348   - $var[$key] = XOAD_SERIALIZER_SKIP_STRING . XOAD_Client::register($var[$key], $params);
349   - }
350   - }
351   -
352   - } else if ($type == 'string') {
353   -
354   - $paramsType = XOAD_Utilities::getType($params);
355   -
356   - if ($paramsType == 'string') {
357   -
358   - if (class_exists($var)) {
359   -
360   - $classObject = new $var;
361   -
362   - $classCode = XOAD_Client::register($classObject, array('class' => $var, 'url' => $params));
363   -
364   - $classCode = $var . '=function(){return ' . $classCode . '}';
365   -
366   - return $classCode;
367   - }
368   - }
369   - }
370   -
371   - return XOAD_Serializer::serialize($var);
372   - }
373   -
374   - /**
375   - * Assigns public methods to the class meta data.
376   - *
377   - * @param object $var The object where the meta data is stored.
378   - *
379   - * @param array $methods The class public methods.
380   - *
381   - * @return void
382   - *
383   - * @static
384   - *
385   - */
386   - public static function publicMethods(&$var, $methods)
387   - {
388   - if (XOAD_Utilities::getType($var) != 'object') {
389   -
390   - return false;
391   - }
392   -
393   - if ( ! isset($var->xoadMeta)) {
394   -
395   - require_once(XOAD_BASE . '/classes/Meta.class.php');
396   -
397   - $var->xoadMeta = new XOAD_Meta();
398   - }
399   -
400   - $var->xoadMeta->setPublicMethods($methods);
401   -
402   - return true;
403   - }
404   -
405   - /**
406   - * Assigns private methods to the class meta data.
407   - *
408   - * @param object $var The object where the meta data is stored.
409   - *
410   - * @param array $methods The class private methods.
411   - *
412   - * @return void
413   - *
414   - * @static
415   - *
416   - */
417   - public static function privateMethods(&$var, $methods)
418   - {
419   - if (XOAD_Utilities::getType($var) != 'object') {
420   -
421   - return false;
422   - }
423   -
424   - if ( ! isset($var->xoadMeta)) {
425   -
426   - require_once(XOAD_BASE . '/classes/Meta.class.php');
427   -
428   - $var->xoadMeta = new XOAD_Meta();
429   - }
430   -
431   - $var->xoadMeta->setPrivateMethods($methods);
432   -
433   - return true;
434   - }
435   -
436   - /**
437   - * Assigns public variables to the class meta data.
438   - *
439   - * @param object $var The object where the meta data is stored.
440   - *
441   - * @param array $variables The class public variables.
442   - *
443   - * @return void
444   - *
445   - * @static
446   - *
447   - */
448   - public static function publicVariables(&$var, $variables)
449   - {
450   - if (XOAD_Utilities::getType($var) != 'object') {
451   -
452   - return false;
453   - }
454   -
455   - if ( ! isset($var->xoadMeta)) {
456   -
457   - require_once(XOAD_BASE . '/classes/Meta.class.php');
458   -
459   - $var->xoadMeta = new XOAD_Meta();
460   - }
461   -
462   - $var->xoadMeta->setPublicVariables($variables);
463   -
464   - return true;
465   - }
466   -
467   - /**
468   - * Assigns private variables to the class meta data.
469   - *
470   - * @param object $var The object where the meta data is stored.
471   - *
472   - * @param array $variables The class private variables.
473   - *
474   - * @return void
475   - *
476   - * @static
477   - *
478   - */
479   - public static function privateVariables(&$var, $variables)
480   - {
481   - if (XOAD_Utilities::getType($var) != 'object') {
482   -
483   - return false;
484   - }
485   -
486   - if ( ! isset($var->xoadMeta)) {
487   -
488   - require_once(XOAD_BASE . '/classes/Meta.class.php');
489   -
490   - $var->xoadMeta = new XOAD_Meta();
491   - }
492   -
493   - $var->xoadMeta->setPrivateVariables($variables);
494   -
495   - return true;
496   - }
497   -
498   - /**
499   - * Assigns methods map to the class meta data.
500   - *
501   - * @param object $var The object where the meta data is stored.
502   - *
503   - * @param array $methodsMap The class methods map.
504   - *
505   - * @return void
506   - *
507   - * @static
508   - *
509   - */
510   - public static function mapMethods(&$var, $methodsMap)
511   - {
512   - if (XOAD_Utilities::getType($var) != 'object') {
513   -
514   - return false;
515   - }
516   -
517   - if ( ! isset($var->xoadMeta)) {
518   -
519   - require_once(XOAD_BASE . '/classes/Meta.class.php');
520   -
521   - $var->xoadMeta = new XOAD_Meta();
522   - }
523   -
524   - $var->xoadMeta->setMethodsMap($methodsMap);
525   -
526   - return true;
527   - }
528   -
529   - /**
530   - * Adds a {@link XOAD_Client} events observer.
531   - *
532   - * @access public
533   - *
534   - * @param mixed $observer The observer object to add (must extend {@link XOAD_Observer}).
535   - *
536   - * @return string true on success, false otherwise.
537   - *
538   - * @static
539   - *
540   - */
541   - public static function addObserver(&$observer, $className = 'XOAD_Client')
542   - {
543   - return parent::addObserver($observer, $className);
544   - }
545   -
546   - /**
547   - *
548   - * @access public
549   - *
550   - * @return bool
551   - *
552   - */
553   - public static function notifyObservers($event = 'default', $arg = null, $className = 'XOAD_Client')
554   - {
555   - return parent::notifyObservers($event, $arg, $className);
556   - }
557   -}
558   -?>
319 classes/Meta.class.php
... ... @@ -1,319 +0,0 @@
1   -<?php
2   -/**
3   - * XOAD Meta file.
4   - *
5   - * <p>This file defines the {@link XOAD_Meta} Class.</p>
6   - * <p>This class is used internally only.</p>
7   - *
8   - * @author Stanimir Angeloff
9   - *
10   - * @package XOAD
11   - *
12   - * @version 0.6.0.0
13   - *
14   - */
15   -
16   -/**
17   - * XOAD Meta Class.
18   - *
19   - * <p>This class is used to extend classes with meta
20   - * data, such as private methods and/or variables.</p>
21   - * <p>You should never use this class directly.
22   - * Rather, use the {@link XOAD_Utilities} class.</p>
23   - *
24   - * @access public
25   - *
26   - * @author Stanimir Angeloff
27   - *
28   - * @package XOAD
29   - *
30   - * @version 0.6.0.0
31   - *
32   - */
33   -class XOAD_Meta extends XOAD_Observable
34   -{
35   - /**
36   - *
37   - * @access private
38   - *
39   - * @var array
40   - *
41   - */
42   - public $publicMethods;
43   -
44   - /**
45   - *
46   - * @access private
47   - *
48   - * @var array
49   - *
50   - */
51   - public $privateMethods;
52   -
53   - /**
54   - *
55   - * @access private
56   - *
57   - * @var array
58   - *
59   - */
60   - public $publicVariables;
61   -
62   - /**
63   - *
64   - * @access private
65   - *
66   - * @var array
67   - *
68   - */
69   - public $privateVariables;
70   -
71   - /**
72   - *
73   - * @access private
74   - *
75   - * @var array
76   - *
77   - */
78   - public $methodsMap;
79   -
80   - /**
81   - *
82   - * @access public
83   - *
84   - * @return void
85   - *
86   - */
87   - public function setPublicMethods($methods)
88   - {
89   - $methodsType = XOAD_Utilities::getType($methods);
90   -
91   - if ($methodsType == 'string') {
92   -
93   - $this->publicMethods = array(XOAD_Utilities::caseConvert($methods));
94   -
95   - } else if (($methodsType == 's_array') || ($methodsType == 'a_array')) {
96   -
97   - $this->publicMethods = array_map(array('XOAD_Utilities', 'caseConvert'), $methods);
98   -
99   - } else {
100   -
101   - $this->publicMethods = null;
102   - }
103   - }
104   -
105   - /**
106   - *
107   - * @access public
108   - *
109   - * @return void
110   - *
111   - */
112   - public function setPrivateMethods($methods)
113   - {
114   - $methodsType = XOAD_Utilities::getType($methods);
115   -
116   - if ($methodsType == 'string') {
117   -
118   - $this->privateMethods = array(XOAD_Utilities::caseConvert($methods));
119   -
120   - } else if (($methodsType == 's_array') || ($methodsType == 'a_array')) {
121   -
122   - $this->privateMethods = array_map(array('XOAD_Utilities', 'caseConvert'), $methods);
123   -
124   - } else {
125   -
126   - $this->privateMethods = null;
127   - }
128   - }
129   -
130   - /**