From: Christian Weiske Date: Tue, 18 Feb 2014 19:55:43 +0000 (+0100) Subject: add stopOnEmpty and date parameters X-Git-Tag: v0.5.0~32 X-Git-Url: https://git.cweiske.de/bdrem.git/commitdiff_plain/e946d300f1c3c0d5c5805cd73c035fde0a4d0de2?ds=inline add stopOnEmpty and date parameters --- diff --git a/src/bdrem/Config.php b/src/bdrem/Config.php index 04cf888..37c4c64 100644 --- a/src/bdrem/Config.php +++ b/src/bdrem/Config.php @@ -8,6 +8,7 @@ class Config public $daysPrev; public $daysNext; public $locale; + public $stopOnEmpty; public function load() { @@ -40,6 +41,16 @@ class Config return new $class($settings[0]); } + public function setDate($date) + { + if ($date === null) { + $this->date = date('Y-m-d'); + } else { + $dt = new \DateTime($date); + $this->date = $dt->format('Y-m-d'); + } + } + public function get($varname, $default = '') { if (!isset($this->$varname) || $this->$varname == '') { diff --git a/src/bdrem/Renderer.php b/src/bdrem/Renderer.php index a8da7a1..e6f633b 100644 --- a/src/bdrem/Renderer.php +++ b/src/bdrem/Renderer.php @@ -13,6 +13,10 @@ abstract class Renderer echo $this->render($arEvents); } + public function handleStopOnEmpty() + { + } + abstract public function render($arEvents); } ?> diff --git a/src/bdrem/Renderer/Html.php b/src/bdrem/Renderer/Html.php index af48e0e..637a838 100644 --- a/src/bdrem/Renderer/Html.php +++ b/src/bdrem/Renderer/Html.php @@ -5,6 +5,11 @@ class Renderer_Html extends Renderer { protected $httpContentType = 'application/xhtml+xml; charset=utf-8'; + public function handleStopOnEmpty() + { + header('HTTP/1.0 204 No Content'); + } + public function render($arEvents) { $tr = new Renderer_HtmlTable(); diff --git a/src/bdrem/UserInterface.php b/src/bdrem/UserInterface.php index da5e9a3..7e6bf9a 100644 --- a/src/bdrem/UserInterface.php +++ b/src/bdrem/UserInterface.php @@ -10,7 +10,6 @@ abstract class UserInterface try { $this->config = new Config(); $this->config->load(); - $this->config->date = date('Y-m-d'); setlocale(LC_TIME, $this->config->locale); $source = $this->config->loadSource(); @@ -75,6 +74,25 @@ abstract class UserInterface 'add_list_option' => true, ) ); + $parser->addOption( + 'stopOnEmpty', + array( + 'short_name' => '-e', + 'long_name' => '--stoponempty', + 'description' => 'Output nothing when list is empty', + 'action' => 'StoreTrue', + 'default' => false + ) + ); + $parser->addOption( + 'date', + array( + 'short_name' => '-d', + 'long_name' => '--date', + 'description' => 'Date to show events for', + 'action' => 'StoreString' + ) + ); $parser->addOption( 'quiet', array( @@ -92,10 +110,12 @@ abstract class UserInterface try { $result = $parser->parse(); // do something with the result object - $this->config->daysNext = $result->options['daysNext']; - $this->config->daysPrev = $result->options['daysPrev']; - $this->config->renderer = $result->options['renderer']; - $this->config->quiet = $result->options['quiet']; + $this->config->daysNext = $result->options['daysNext']; + $this->config->daysPrev = $result->options['daysPrev']; + $this->config->renderer = $result->options['renderer']; + $this->config->quiet = $result->options['quiet']; + $this->config->stopOnEmpty = $result->options['stopOnEmpty']; + $this->config->setDate($result->options['date']); } catch (\Exception $exc) { $this->preRenderParameterError(); $parser->displayError($exc->getMessage()); @@ -106,6 +126,11 @@ abstract class UserInterface { $r = $this->getRenderer(); $r->config = $this->config; + + if ($this->config->stopOnEmpty && count($arEvents) == 0) { + $r->handleStopOnEmpty(); + return; + } $r->renderAndOutput($arEvents); }