/** * Load the list of drivers. * * @return array */ public static function getDrivers() { if (isset(self::$_driverlist)) { return self::$_driverlist; } $fi = new FilesystemIterator(__DIR__ . '/Autoconfig/Driver'); $class_prefix = __CLASS__ . '_Driver_'; $drivers = array(); foreach ($fi as $val) { if ($val->isFile()) { $cname = $class_prefix . $val->getBasename('.php'); if (class_exists($cname)) { $ob = new $cname(); if ($ob instanceof Horde_Mail_Autoconfig_Driver) { $drivers[$ob->priority][] = $ob; } } } } ksort($drivers, SORT_NUMERIC); $flatten = array(); array_walk_recursive($drivers, function ($a) use(&$flatten) { $flatten[] = $a; }); self::$_driverlist = $flatten; return $flatten; }