4 abstract class UserInterface
11 $this->config = new Config();
12 $this->config->load();
13 $this->config->date = date('Y-m-d');
14 setlocale(LC_TIME, $this->config->locale);
15 $source = $this->config->loadSource();
17 $parser = $this->loadParameters();
18 $this->parseParameters($parser);
20 $arEvents = $source->getEvents(
22 $this->config->daysPrev, $this->config->daysNext
24 usort($arEvents, '\\bdrem\\Event::compare');
25 $this->render($arEvents);
26 } catch (\Exception $e) {
27 $this->preRenderParameterError();
28 echo 'Exception: ' . $e->getCode() . ' ' . $e->getMessage() . "\n";
33 protected function loadParameters()
35 $parser = new \Console_CommandLine();
36 $parser->description = 'Birthday reminder';
37 $parser->version = '0.1.0';
43 'long_name' => '--days-next',
44 'description' => 'Show NUM days after date',
46 'action' => 'StoreInt',
47 'default' => $this->config->daysNext,
54 'long_name' => '--previous',
55 'description' => 'Show NUM days before date',
57 'action' => 'StoreInt',
58 'default' => $this->config->daysPrev,
65 'long_name' => '--renderer',
66 'description' => 'Output mode',
67 'action' => 'StoreString',
74 'default' => 'console',
75 'add_list_option' => true,
82 'long_name' => '--quiet',
83 'description' => "Don't print status messages to stdout",
84 'action' => 'StoreTrue'
90 protected function parseParameters($parser)
93 $result = $parser->parse();
94 // do something with the result object
95 $this->config->daysNext = $result->options['daysNext'];
96 $this->config->daysPrev = $result->options['daysPrev'];
97 $this->config->renderer = $result->options['renderer'];
98 $this->config->quiet = $result->options['quiet'];
99 } catch (\Exception $exc) {
100 $this->preRenderParameterError();
101 $parser->displayError($exc->getMessage());
105 protected function render($arEvents)
107 $r = $this->getRenderer();
108 $r->config = $this->config;
109 $r->renderAndOutput($arEvents);
112 protected function getRenderer()
114 $renderer = ucfirst($this->config->renderer);
115 if ($renderer == 'Htmltable') {
116 $renderer = 'HtmlTable';
118 $class = '\\bdrem\\Renderer_' . $renderer;
122 protected function preRenderParameterError()