mnet MDL-21261 large overhaul. This commit changes:
authorPenny Leach <penny@liip.ch>
Thu, 28 Jan 2010 05:25:50 +0000 (05:25 +0000)
committerPenny Leach <penny@liip.ch>
Thu, 28 Jan 2010 05:25:50 +0000 (05:25 +0000)
commitde260e0f7bed431d9584538f3c646db2a5577879
tree7d8019fbe19611a7ae6905d3760595385aca5d0f
parent92a89068c97bf6eaa92fcadd18b339118d9aa23b
mnet MDL-21261  large overhaul. This commit changes:

- The way that mnet rpc functions are registered.  Plugins must now
  create db/mnet.php which is an array, similar to services.php.  This
  *replaces* the old mnet_publishes() functions.  version.php must be
  bumped to trigger this.

- More information about each rpc-available function is stored in the
  database, including the class it belongs to, the file it is found in,
  and whether or not it is static.  Methods that are not static must be
  in a class with a constructor that takes no arguments (this can easily
  be achieved with a small wrapper if necessary)

- The xmlrpc dispatcher has been rewritten to remove all the
  dependencies on hardcoded information about auth,mnet,portfolio and
  repository, and just use the information in the database.

- The old hardcoded hidden mnet/testclient.php has been moved to the
  Admin menu under "Development" and rewritten.

- The xmlrpc introspection method profiling is now using php and zend
  reflection - which is a lot nicer than the old way, which was using a
  php-based php parser.  This fixes some inconsistent handling of
  methods without arguments that were advertising their return value as
  the only method parameter.  While this is a *fix*, it breaks BC
  slightly - the old 1.9 broken mnet/testclient.php will now not work
  properly with 2.0

- Dangerous mode is still supported, but old mod/*/rpclib.php is
  now unsupported, due to the fact that any plugin can export mnet
  functions with db/mnet.php.  This is a slight BC break.

Still TODO:

- TEST TEST TEST
- Document the two small BC breaks in release notes
- Document the contract for db/mnet.php
24 files changed:
admin/mnet/adminlib.php
admin/mnet/mnet_services.html
admin/mnet/mnet_services.php
admin/settings/development.php
auth/mnet/auth.php
auth/mnet/version.php
enrol/mnet/enrol.php
lang/en_utf8/mnet.php
lib/db/install.xml
lib/db/upgrade.php
lib/portfolio/plugin.php
lib/upgradelib.php
lib/zend/readme_moodle.txt
mnet/lib.php
mnet/xmlrpc/server.php
portfolio/mahara/lib.php
portfolio/mahara/preconfig.php
portfolio/mahara/version.php
repository/lib.php
repository/mahara/repository.class.php
repository/mahara/version.php
repository/remotemoodle/repository.class.php
repository/remotemoodle/version.php
version.php