Author: Michael Slusarz (slusarz@horde.org)
示例#1
0
 /**
  * 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;
 }
示例#2
0
 /**
  * Return the mail autoconfig instance.
  *
  * @return Horde_Mail_Autoconfig  The singleton instance.
  */
 public function create(Horde_Injector $injector)
 {
     /* Need to manually set the drivers, since we should be using Horde
      * objects for Http_Client and Net_DNS2_Resolver. The return from
      * getDrivers() is already in priority order, so we don't need to
      * worry about that. */
     $drivers = array();
     foreach (Horde_Mail_Autoconfig::getDrivers() as $val) {
         $val = clone $val;
         if ($val instanceof Horde_Mail_Autoconfig_Driver_Guess || $val instanceof Horde_Mail_Autoconfig_Driver_Srv) {
             $val->dns = $injector->getInstance('Net_DNS2_Resolver');
         } elseif ($val instanceof Horde_Mail_Autoconfig_Driver_Thunderbird) {
             $val->http = $injector->getInstance('Horde_Http_Client');
         }
         $drivers[] = $val;
     }
     return new Horde_Mail_Autoconfig(array('drivers' => $drivers));
 }