From: Michael M Slusarz Date: Tue, 9 Feb 2010 18:49:31 +0000 (-0700) Subject: Add Horde_Registry::getAppDrivers() X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=b36ea34ea75465d9496b2c5ea3ddcae65ef3d650;p=horde.git Add Horde_Registry::getAppDrivers() --- diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index 8b4583b5e..9876e9419 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -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. * diff --git a/framework/LoginTasks/lib/Horde/LoginTasks.php b/framework/LoginTasks/lib/Horde/LoginTasks.php index fabd66202..d17a3ea39 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks.php @@ -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; } } diff --git a/framework/LoginTasks/package.xml b/framework/LoginTasks/package.xml index ce91f472d..02285571f 100644 --- a/framework/LoginTasks/package.xml +++ b/framework/LoginTasks/package.xml @@ -51,6 +51,10 @@ http://pear.php.net/dtd/package-2.0.xsd"> 1.5.4 + Core + pear.horde.org + + Util pear.horde.org