webtools/timeline/timeline.php
Matt Housh e78df72edd
timeline: updated to latest live versions after crux.nu server rebuild
* rss generator: minor updates for XML output formatting and PHP log warnings
* cacher: replaced flyspray task caching with gitea issues caching
2024-03-02 14:33:58 -06:00

108 lines
3.0 KiB
PHP
Executable File

<?php
// to obtain a list of wiki profiles:
// $ ls -1 /var/www/htdocs/wiki.d/Profiles.* | cut -d. -f2- | grep -v ,del
$profiles = array(
"AlanMizrahi",
"AnttiNykanen",
"BrettGoulder",
"DanielMueller",
"DannyRawlins",
"FalkHamann",
"Fredrik",
"FredrikRinnestam",
"Frinnst",
"Jaeger",
"JamesMills",
"JasonThomasDolan",
"JohannesWinkelmann",
"JonathanAsghar",
"JoseBeneyto",
"JoseVBeneyto",
"JuergenDaubert",
"JukkaHeino",
"JustinRebelo",
"LucasHazel",
"MattHoush",
"MaximilianDietrich",
"NickSteeves",
"PageIndex",
"PerLiden",
"Profiles",
"RecentChanges",
"SimoneRota",
"ThomasPenteker",
"TillBiedermann",
"TilmanSauerbeck"
);
//Markup("timeline", "directives", "/\\(:timeline(\\s+.*)?\\s*:\\)/e", "'<:block>'.GetEvents()");
Markup("timeline", "directives", "/\\(:timeline(\\s+.*)?\\s*:\\)/", "GetEvents");
function GetEvents() {
global $profiles;
$days = 14;
if (isset($_POST['days'])) $days = intval($_POST['days']);
$dbfile = '/home/crux/timeline/timeline.db';
$db = new SQLite3($dbfile);
$from = time() - ($days * 24 * 60 * 60);
$sql = "select distinct event_date, event_description, event_notes, event_type, event_time from events where event_tstamp >= $from order by event_tstamp desc";
$res = $db->query($sql);
if (!$res) die("Query error: $sql");
$timeline .= '<table cellspacing="0" border="0" cellpadding="0">'."\n";
$currdate = "noway";
while ($evt =& $res->fetchArray()) {
// date header
if ($evt['event_date'] != $currdate) {
$timeline .= '<tr><td class="timeline-head" colspan="3"><span class="timeline-date">'.$evt['event_date']."</span></td></tr>\n";
}
// description
$event_description = "";
if (substr($evt['event_type'], 0, 5) == "task_") {
// flyspray events
$real_name = strstr($evt['event_description'], 'by');
$real_name = substr($real_name, 3, strlen($real_name));
$trim_name = str_replace(' ', '', $real_name);
if (in_array($trim_name, $profiles)) {
$event_description = str_replace($real_name, "[[~".$trim_name."]]", $evt['event_description']);
}
else {
$event_description = $evt['event_description'];
}
}
elseif (substr($evt['event_type'], 0, 5) == "wiki_") {
// wiki events
$event_description = $evt['event_description'];
}
elseif (substr($evt['event_type'], 0, 11) == "git_commit_") {
// git events
$event_description = "Changeset ".substr($evt['event_type'], 11, strlen($evt['event_type'])).".git ".$evt['event_description'];
}
// append notes
if ($evt['event_notes'] != "") $event_description .= ": ".$evt['event_notes'];
// image
$img = '<img src="/images/'.$evt['event_type'].'.png">';
// final string
$timeline .= '<tr><td align="right" valign="top" width="60">'.$evt['event_time'].'</td><td align="center" valign="top" width="30">'.$img.'</td><td valign="top">'.$event_description.'</td></tr>'."\n";
$currdate = $evt['event_date'];
}
$timeline .= "</table>\n";
$timeline .= '<br><form method="post" action="Timeline">Show the latest <input size="4" type="text" name="days" value="'.$days.'"> days <input type="submit" value="Show"></form>'."\n";
return $timeline;
}
?>