From e316a396e857589f5f484495eb4df75f7bf5a47a Mon Sep 17 00:00:00 2001 From: Simone Rota Date: Fri, 11 Aug 2006 22:05:56 +0000 Subject: [PATCH] timeline: added url field, added rss feed generator --- timeline/rss.php | 48 +++++++++++++++++++++++++++++++++++++++++++ timeline/timeline.sql | 9 ++++---- timeline/tlcacher.php | 28 ++++++++++++++----------- 3 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 timeline/rss.php diff --git a/timeline/rss.php b/timeline/rss.php new file mode 100644 index 0000000..802d72e --- /dev/null +++ b/timeline/rss.php @@ -0,0 +1,48 @@ +setFetchMode(DB_FETCHMODE_ASSOC); +$from = time() - ($days * 24 * 60 * 60); +$sql = "select * from events where event_tstamp >= $from order by event_tstamp desc"; +$res =& $db->Query($sql); +if (DB::isError($res)) die("Query error"); + +header ("Content-type: text/xml"); +$timeline .= ''."\n"; +$timeline .= 'CRUX timelineCRUX: timeline (commits, tasks, wiki edits)http://crux.nu'; +while ($evt =& $res->fetchRow()) { + $event_description = $evt['event_description']; + if ($evt['event_notes'] != "") { + $event_description .= ": ".$evt['event_notes']; + } + $url = $evt['event_url']; + $url = str_replace("&","&", $url); + # strip diff link + $description = preg_replace('/\(\[\[.*\]\]\)/s','', $evt['event_description']); + # strip wiki link with url + $description = preg_replace('/\[\[(.*)\|(\d+)\]\]/s','$2', $description); + # strip users (svn) + $description = preg_replace('/\[\[~(.*)\|(.*)\]\]/s','$2', $description); + # strip wiki link without url + $description = preg_replace('/\[\[(\w+)\.(\w+)\]\] /s','$1.$2', $description); + # strip wiki user with ~ + $description = preg_replace('/\[\[~(\w+)\]\] /s','$1', $description); + + $evt['event_notes'] = "Notes"; + $timeline .= " + + $description + + $url + \n"; +} +$timeline .= "\n"; +echo $timeline; +?> diff --git a/timeline/timeline.sql b/timeline/timeline.sql index b52e2b6..7bc14c3 100644 --- a/timeline/timeline.sql +++ b/timeline/timeline.sql @@ -2,10 +2,11 @@ create table events ( event_id integer primary key, cache_id integer, event_tstamp integer, - event_type varchar(20), - event_date varchar(10), - event_time varchar(5), - event_user varchar(50), + event_type varchar, + event_date varchar, + event_time varchar, + event_user varchar, + event_url varchar, event_description text, event_notes text ); diff --git a/timeline/tlcacher.php b/timeline/tlcacher.php index d157dd0..f960c38 100755 --- a/timeline/tlcacher.php +++ b/timeline/tlcacher.php @@ -41,7 +41,7 @@ $username_map = array( "sten" => "NickSteeves" ); -// Event: cache_id, tstamp, type(icon), date, time, user, description, notes +// Event: cache_id, tstamp, type(icon), date, time, user, url, description, notes $events = array(); /**************** Last cached events *******************/ @@ -101,15 +101,16 @@ while ($row =& $res->fetchRow()) { $description = ""; $date = date("Y-m-d", $edate); $time = date("H:i", $edate); + $url = sprintf($task_url,$etid); switch ($etype) { case "1": // new task $icon = "task_opened"; - $description = "New task [[ ".sprintf($task_url,$etid)." | $etid ]] opened by $euser"; + $description = "New task [[$url|$etid]] opened by $euser"; $notes = $row['item_summary']; break; case "2": // task closed $icon = "task_closed"; - $description = "Task [[ ".sprintf($task_url,$etid)." | $etid ]] closed by $euser"; + $description = "Task [[$url|$etid]] closed by $euser"; if ($row['closure_comment'] != "" && $row['closure_comment'] != 0) { // weird flyspray! $notes = $row['closure_comment']; } else { @@ -130,13 +131,13 @@ while ($row =& $res->fetchRow()) { case "24": case "25": $icon = "task_changed"; - $description = "Task [[ ".sprintf($task_url,$etid)." | $etid ]] modified by $euser"; + $description = "Task [[$url|$etid]] modified by $euser"; $notes = ""; break; } if ($description !== "") { $events[] = array( 'cache_id' => $cache_id, 'tstamp' => $edate, 'icon' => $icon, 'date' => $date, - 'time' => $time, 'user' => $euser, 'description' => $description, 'notes' => $notes,); + 'time' => $time, 'user' => $euser, 'url'=> $url, 'description' => $description, 'notes' => $notes,); } } @@ -161,14 +162,15 @@ if ($svn_latest != $last_svn) { } $date = substr($revline[2],1,10); $time = substr($revline[2],12,5); - $revurl = "[[ ".sprintf($svn_url, $rev)." | $rev ]]"; + $url = sprintf($svn_url, $rev); + $revurl = "[[$url|$rev]]"; $description = "Revision $revurl committed by $user"; $tstamp = strtotime("$date $time:00"); } else { $icon = "svn_commit"; $notes = trim($line); $events[] = array( 'cache_id' => $rev, 'tstamp' => $tstamp, 'icon' => $icon, 'date' => $date, - 'time' => $time, 'user' => $user, 'description' => $description, 'notes' => $notes); + 'time' => $time, 'user' => $user, 'url'=>$url, 'description' => $description, 'notes' => $notes); } } } @@ -199,19 +201,21 @@ if ($chline != "") { preg_match('/(..\:..)/',$date,$matches); $time = $matches[0]; $date = date("Y-m-d", $tstamp); - - $action = "?action=diff#" . urlencode($date . " " . $time) . "|diff"; - $page_diff = trim(str_replace("]]", $action."]]", $page)) + $action = "?action=diff#" . urlencode($date . " " . $time) . "|diff"; + $page_diff = trim(str_replace("]]", $action."]]", $page)); + preg_match('/\[\[(.*)\|diff\]\]/', $page_diff, $matches); + $url = $matches[1]; + $url = "http://crux.nu/".str_replace(".","/", $url); $description = "Wiki page $page edited $user ($page_diff)"; if ($tstamp > $last_wiki) { $events[] = array( 'cache_id' => $tstamp, 'tstamp' => $tstamp, 'icon' => $icon, 'date' => $date, - 'time' => $time, 'user' => $user, 'description' => $description, 'notes' => $notes); + 'time' => $time, 'user' => $user, 'url' => $url, 'description' => $description, 'notes' => $notes); } } } /*************** Finally, all events *********************/ -$sth = $dbc->prepare("insert into events values (NULL, ?, ?, ?, ?, ?, ?, ?, ?)"); +$sth = $dbc->prepare("insert into events values (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); foreach ($events as $evt) { $res = $dbc->execute($sth, $evt); if (DB::isError($res)) die("Query error");