Add Horde_Registry::getAppDrivers()
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 9 Feb 2010 18:49:31 +0000 (11:49 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 9 Feb 2010 19:31:17 +0000 (12:31 -0700)
framework/Core/lib/Horde/Registry.php
framework/LoginTasks/lib/Horde/LoginTasks.php
framework/LoginTasks/package.xml

index 8b4583b..9876e94 100644 (file)
@@ -1301,6 +1301,34 @@ class Horde_Registry
     }
 
     /**
+     * Returns a list of available drivers for a library that are available
+     * in an application.
+     *
+     * @param string $app     The application name.
+     * @param string $prefix  The library prefix.
+     *
+     * @return array  The list of available class names.
+     */
+    public function getAppDrivers($app, $prefix)
+    {
+        $classes = array();
+        $fileprefix = strtr($prefix, '_', '/');
+        $fileroot = $this->get('fileroot', $app);
+
+        if (!is_null($fileroot) &&
+            is_dir($fileroot . '/lib/' . $fileprefix)) {
+            foreach (scandir($fileroot . '/lib/' . $fileprefix) as $file) {
+                $classname = $app . '_' . $prefix . '_' . basename($file, '.php');
+                if (class_exists($classname)) {
+                    $classes[] = $classname;
+                }
+            }
+        }
+
+        return $classes;
+    }
+
+    /**
      * Function to work out an application's graphics URI, optionally taking
      * into account any themes directories that may be set up.
      *
index fabd662..d17a3ea 100644 (file)
@@ -137,18 +137,8 @@ class Horde_LoginTasks
         $tasks = array();
 
         foreach ($app_list as $app) {
-            $fileroot = $GLOBALS['registry']->get('fileroot', $app);
-            if (!is_null($fileroot)) {
-                foreach (array('SystemTask', 'Task') as $val) {
-                    if (is_dir($fileroot . '/lib/LoginTasks/' . $val)) {
-                        foreach (scandir($fileroot . '/lib/LoginTasks/' . $val) as $file) {
-                            $classname = $app . '_LoginTasks_' . $val . '_' . basename($file, '.php');
-                            if (class_exists($classname)) {
-                                $tasks[$classname] = $app;
-                            }
-                        }
-                    }
-                }
+            foreach (array_merge($GLOBALS['registry']->getAppDrivers($app, 'LoginTasks_SystemTask'), $GLOBALS['registry']->getAppDrivers($app, 'LoginTasks_Task')) as $val) {
+                $tasks[$val] = $app;
             }
         }
 
index ce91f47..0228557 100644 (file)
@@ -51,6 +51,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <min>1.5.4</min>
    </pearinstaller>
    <package>
+    <name>Core</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>