widget: copy doclist and countdown from lijtweg.nl
[minimedit.git] / widget / countdown.php
1 <?php
2 if (empty($Args)) {
3         return;
4 }
5 @list ($target, $interval) = explode('+', ltrim($Args, '/'));
6 $target = new DateTime($target);
7 $now = new DateTime('NOW');
8 $next = $target->diff($now);  # age
9
10 if ($interval) {
11         # recurring
12         $interval = new DateInterval('P'.$interval);
13         for ($attempt = 0; $attempt < 500; $attempt++) {
14                 if ($next->invert) {
15                         break;  # past or today
16                 }
17                 $target->add($interval);
18                 $next = $target->diff($now);
19         }
20 }
21 $next = $target->setTime(0, 0)->diff($now);  # truncate to midnight
22 $eta = $next->invert ? $next->days + 1 : -$next->days;
23
24 if ($eta == 0) {
25         print 'vandaag';
26 }
27 elseif ($eta == 1) {
28         print 'morgen';
29 }
30 elseif ($eta == 2) {
31         print 'overmorgen';
32 }
33 elseif ($eta == -1) {
34         print 'gisteren';
35 }
36 elseif ($eta < 0) {
37         printf('%d dagen geleden', -$eta);
38 }
39 else {
40         printf('over %d dagen', $eta);
41 }
42
43 if ($interval) {
44         print ', ' . showdate(explode('-', $target->format('Y-m-d')));
45 }