aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2014-02-18 20:55:43 +0100
committerChristian Weiske <cweiske@cweiske.de>2014-02-18 20:55:43 +0100
commite946d300f1c3c0d5c5805cd73c035fde0a4d0de2 (patch)
tree09e83b73e9f9a97952badf371a6d50edcc39b55d /src
parent00bd8739a246c157bfc97221156799590e8811af (diff)
downloadbdrem-e946d300f1c3c0d5c5805cd73c035fde0a4d0de2.tar.gz
bdrem-e946d300f1c3c0d5c5805cd73c035fde0a4d0de2.zip
add stopOnEmpty and date parameters
Diffstat (limited to 'src')
-rw-r--r--src/bdrem/Config.php11
-rw-r--r--src/bdrem/Renderer.php4
-rw-r--r--src/bdrem/Renderer/Html.php5
-rw-r--r--src/bdrem/UserInterface.php35
4 files changed, 50 insertions, 5 deletions
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();
@@ -76,6 +75,25 @@ abstract class UserInterface
)
);
$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(
'short_name' => '-q',
@@ -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);
}