widget: copy doclist and countdown from lijtweg.nl
[minimedit.git] / widget / countdown.php
diff --git a/widget/countdown.php b/widget/countdown.php
new file mode 100644 (file)
index 0000000..746e4b6
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+if (empty($Args)) {
+       return;
+}
+@list ($target, $interval) = explode('+', ltrim($Args, '/'));
+$target = new DateTime($target);
+$now = new DateTime('NOW');
+$next = $target->diff($now);  # age
+
+if ($interval) {
+       # recurring
+       $interval = new DateInterval('P'.$interval);
+       for ($attempt = 0; $attempt < 500; $attempt++) {
+               if ($next->invert) {
+                       break;  # past or today
+               }
+               $target->add($interval);
+               $next = $target->diff($now);
+       }
+}
+$next = $target->setTime(0, 0)->diff($now);  # truncate to midnight
+$eta = $next->invert ? $next->days + 1 : -$next->days;
+
+if ($eta == 0) {
+       print 'vandaag';
+}
+elseif ($eta == 1) {
+       print 'morgen';
+}
+elseif ($eta == 2) {
+       print 'overmorgen';
+}
+elseif ($eta == -1) {
+       print 'gisteren';
+}
+elseif ($eta < 0) {
+       printf('%d dagen geleden', -$eta);
+}
+else {
+       printf('over %d dagen', $eta);
+}
+
+if ($interval) {
+       print ', ' . showdate(explode('-', $target->format('Y-m-d')));
+}