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