From 0b91df86ea02147821971b89e534b4e5f5418657 Mon Sep 17 00:00:00 2001
From: Richard Mansfield <richardm@catalyst.net.nz>
Date: Thu, 13 Aug 2009 09:27:20 +1200
Subject: [PATCH] Search assignment types for mnet rpc functions in rpclib.php files

---
 admin/mnet/adminlib.php |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/admin/mnet/adminlib.php b/admin/mnet/adminlib.php
index 66b99f1..8ce13fe 100644
--- a/admin/mnet/adminlib.php
+++ b/admin/mnet/adminlib.php
@@ -15,7 +15,7 @@
  * The path to a file, e.g. auth/mnet/auth.php can be thought of as
  * type/parentname/docname
  *
- * @param  string   $parenttype     mod, auth or enrol
+ * @param  string   $parenttype     mod, auth, enrol, or assignment
  * @param  string   $parentname     Implementation of type, e.g. 'mnet' in the
  *                                  case of auth/mnet/auth.php
  * @param  string   $parenttypedir  path to $parenttype directory, if != $parenttype
@@ -37,7 +37,7 @@ function mnet_get_functions($parenttype, $parentname, $parenttypedir=null) {
             }
         }
     } else {
-        // mod
+        // File is mod/parentname/rpclib.php or mod/assignment/type/parentname/rpclib.php
         $parentdir = (is_null($parenttypedir) ? $parenttype : $parenttypedir) . '/' . $parentname;
         $doc = $parentdir . '/rpclib.php';
         $filename = $CFG->dirroot . '/' . $doc;
@@ -150,5 +150,23 @@ function upgrade_RPC_functions($returnurl) {
             }
         }
     }
+
+    // Search mod/assignment/type
+    $basedir = $CFG->dirroot . '/mod/assignment/type';
+    if (file_exists($basedir) && filetype($basedir) == 'dir') {
+        $dirhandle = opendir($basedir);
+        while (false !== ($dir = readdir($dirhandle))) {
+            $firstchar = substr($dir, 0, 1);
+            if ($firstchar == '.' or $dir == 'CVS' or $dir == '_vti_cnf') {
+                continue;
+            }
+            if (filetype($basedir . '/' . $dir) != 'dir') {
+                continue;
+            }
+
+            mnet_get_functions('assignment', $dir, 'mod/assignment/type');
+        }
+    }
+
 }
 ?>
-- 
1.5.4.3

