1: <?php
2: 3: 4: 5:
6: class Horde_Core_Factory_Weather extends Horde_Core_Factory_Injector
7: {
8: 9: 10: 11:
12: public function create(Horde_Injector $injector)
13: {
14: global $conf, $injector;
15:
16: if (empty($conf['weather']['provider'])) {
17: throw new Horde_Exception(_("Weather support not configured."));
18: }
19:
20: $params = array(
21: 'http_client' => $injector->createInstance('Horde_Core_Factory_HttpClient')->create(),
22: 'cache' => $injector->getInstance('Horde_Cache'),
23: 'cache_lifetime' => $conf['weather']['params']['lifetime']
24: );
25:
26: if (!empty($conf['weather']['provider'])) {
27: $driver = $conf['weather']['provider'];
28: } else {
29: throw new Horde_Exception('No Weather configuration found.');
30: }
31:
32: switch ($driver) {
33: case 'WeatherUnderground':
34: case 'Wwo':
35: $params['apikey'] = $conf['weather']['params']['key'];
36: break;
37:
38: case 'Google':
39: $l = explode('_', $GLOBALS['language']);
40: $params['language'] = $l[0];
41: break;
42: }
43:
44: try {
45: $class = 'Horde_Service_Weather_' . $driver;
46: $driver = new $class($params);
47: } catch (InvalidArgumentException $e) {
48: throw new Horde_Exception($e);
49: }
50:
51: return $driver;
52: }
53:
54: }
55: