From 27d2ae17be194c39b563d134988e5ff96e531fdb Mon Sep 17 00:00:00 2001
From: Richard Mansfield <richardm@catalyst.net.nz>
Date: Wed, 12 Aug 2009 11:27:14 +1200
Subject: [PATCH] Loop over mod, auth, enrol dirs when searching for rpc functions

---
 admin/mnet/adminlib.php |   61 ++++++++++++----------------------------------
 1 files changed, 16 insertions(+), 45 deletions(-)

diff --git a/admin/mnet/adminlib.php b/admin/mnet/adminlib.php
index e4da39e..731f37c 100644
--- a/admin/mnet/adminlib.php
+++ b/admin/mnet/adminlib.php
@@ -130,52 +130,23 @@ function mnet_get_functions($type, $parentname) {
 function upgrade_RPC_functions($returnurl) {
     global $CFG;
 
-    $basedir = $CFG->dirroot.'/mod';
-    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;
+    $parenttypes = array('mod', 'auth', 'enrol');
+
+    foreach ($parenttypes as $parenttype) {
+        $basedir = $CFG->dirroot . '/' . $parenttype;
+        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($parenttype, $dir);
             }
-            if (filetype($basedir .'/'. $dir) != 'dir') {
-                continue;
-            }
-
-            mnet_get_functions('mod', $dir);
-
-        }
-    }
-
-    $basedir = $CFG->dirroot.'/auth';
-    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('auth', $dir);
-        }
-    }
-
-    $basedir = $CFG->dirroot.'/enrol';
-    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('enrol', $dir);
         }
     }
 }
-- 
1.5.4.3

