parent
dcf1a1a5e7
commit
bd2ce7c4e4
1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||||||
|
<?php |
||||||
|
// read vor.txt and generate vor.md, inserting dates if missing |
||||||
|
// Helper function for next Tuesday calculation depending on PHP version |
||||||
|
function getTuesday($ts) { |
||||||
|
// This is for PHP >= 8.1 as the old strftime will be deprecated by then, so use datefmt_format_object if we are running on PHP beyond version 7 |
||||||
|
if (intval(explode(".", phpversion())[0]) >= 7) { |
||||||
|
$date_time = new DateTime(); |
||||||
|
$date_time->setTimestamp(strtotime('fourth tuesday of this month', $ts)); |
||||||
|
$tuesday = datefmt_format_object($date_time, 'cccc, d.M.yyyy ', 'de_DE.utf8'); |
||||||
|
} else { |
||||||
|
$tuesday = strftime('%A, %d.%m.%Y ', strtotime('fourth tuesday of this month', $ts)); |
||||||
|
} |
||||||
|
return $tuesday; |
||||||
|
} |
||||||
|
|
||||||
|
date_default_timezone_set("CET"); |
||||||
|
setlocale(LC_TIME, 'de_DE.utf8'); |
||||||
|
$file_txt = 'vor.txt'; |
||||||
|
$file_md = 'vor.md'; |
||||||
|
$fil = file($file_txt, FILE_IGNORE_NEW_LINES); |
||||||
|
// Insert header |
||||||
|
$arr = ['| | | |', '|:------|:------|:------|']; |
||||||
|
$ts=(new DateTime('first day of this month'))->getTimeStamp(); |
||||||
|
$tues_ts = strtotime('fourth tuesday of this month', $ts); |
||||||
|
|
||||||
|
// Are we past the fourth Tuesday of this month? |
||||||
|
if ((new DateTime())->getTimeStamp() >= $tues_ts) { |
||||||
|
$ts = strtotime('+1 month', $ts); |
||||||
|
} |
||||||
|
|
||||||
|
foreach ($fil as $line) { |
||||||
|
// Skip empty lines |
||||||
|
if (strlen($line)) { |
||||||
|
// Remove empty fields too |
||||||
|
$fields = array_filter(explode('|', $line)); |
||||||
|
// Get next Tuesday independent of PHP version |
||||||
|
$tuesday = getTuesday($ts); |
||||||
|
if (count($fields) == 2) { |
||||||
|
// Date missing, insert |
||||||
|
array_unshift($fields, $tuesday); |
||||||
|
} |
||||||
|
$ts = strtotime('+1 month', $ts); |
||||||
|
$li = implode('|', $fields); |
||||||
|
// Insert leading and trailing spaces if required |
||||||
|
if ($li[0] != ' ') { |
||||||
|
$li = ' ' . $li; |
||||||
|
} |
||||||
|
if (substr($li, -1) != ' ') { |
||||||
|
$li = $li . ' '; |
||||||
|
} |
||||||
|
array_push($arr, '|' . $li . '|'); |
||||||
|
} |
||||||
|
} |
||||||
|
file_put_contents($file_md, implode(PHP_EOL, $arr) . PHP_EOL); |
||||||
|
?> |
||||||
|
|
Loading…
Reference in new issue