1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13:
14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
29: class Horde_Kolab_Filter_Factory
30: {
31: 32: 33: 34: 35: 36: 37: 38:
39: public function getLogger(Horde_Injector $injector)
40: {
41: $configuration = $injector->getInstance('Horde_Kolab_Filter_Configuration');
42:
43: $conf = $configuration->getConf();
44: switch ($conf['log']['type']) {
45: case 'file':
46: case 'stream':
47: $append = ($conf['log']['type'] == 'file')
48: ? ($conf['log']['params']['append'] ? 'a+' : 'w+')
49: : null;
50: $format = isset($conf['log']['params']['format'])
51: ? $conf['log']['params']['format']
52: : 'default';
53:
54: switch ($format) {
55: case 'custom':
56: $formatter = new Horde_Log_Formatter_Xml(array('format' => $conf['log']['params']['template']));
57: break;
58:
59: case 'default':
60: default:
61:
62: $formatter = null;
63: break;
64:
65: case 'xml':
66: $formatter = new Horde_Log_Formatter_Xml();
67: break;
68: }
69:
70: try {
71: $handler = new Horde_Log_Handler_Stream($conf['log']['name'], $append, $formatter);
72: } catch (Horde_Log_Exception $e) {
73: return new Horde_Log_Logger(new Horde_Log_Handler_Null());
74: }
75: try {
76: $handler->setOption('ident', $conf['log']['ident']);
77: } catch (Horde_Log_Exception $e) {
78: }
79: break;
80: case 'syslog':
81: try {
82: $handler = new Horde_Log_Handler_Syslog();
83: } catch (Horde_Log_Exception $e) {
84: return new Horde_Log_Logger(new Horde_Log_Handler_Null());
85: }
86: break;
87: case 'mock':
88: $handler = new Horde_Log_Handler_Mock();
89: break;
90: case 'null':
91: default:
92:
93: return new Horde_Log_Logger(new Horde_Log_Handler_Null());
94: break;
95: }
96: if (!defined('Horde_Log::' . $conf['log']['priority'])) {
97: $conf['log']['priority'] = 'NOTICE';
98: }
99: $handler->addFilter(constant('Horde_Log::' . $conf['log']['priority']));
100: return new Horde_Log_Logger($handler);
101: }
102:
103: 104: 105: 106: 107: 108: 109: 110:
111: public function getUserDb(Horde_Injector $injector)
112: {
113: $configuration = $injector->getInstance('Horde_Kolab_Filter_Configuration');
114:
115: $conf = $configuration->getConf();
116:
117: $factory = new Horde_Kolab_Server_Factory();
118:
119: return new Horde_Kolab_Server_Composite(
120: $factory->getServer($conf['server']),
121: new Horde_Kolab_Server_Objects_Base(),
122: new Horde_Kolab_Server_Structure_Kolab(),
123: new Horde_Kolab_Server_Search_Base(),
124: new Horde_Kolab_Server_Schema_Base()
125: );
126: }
127: }
128: