<define-tag dbhost></define-tag>
<define-tag dbport></define-tag>
<define-tag dbname>infocon</define-tag>
<define-tag logbook>logbook</define-tag>

<?
function teaserlink($teaser)
{
  return preg_replace('/[^a-zA-Z0-9-]/', '-', $teaser);
}

  if (isset ($_GET[type]) && $_GET[type] == "rdf") {
    $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
	   or die("Unable to connect to SQL server");

    pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");

    if (isset ($_GET[category])) {
      $query = "SELECT * FROM <logbook> WHERE public = 1 ";
      $query .= sprintf ("AND category = '%s' ", addslashes($_GET[category]));
      $query .= "ORDER BY created DESC LIMIT 5";
    } else {
      $query = "SELECT * FROM <logbook> WHERE public = 1 "
	     . "ORDER BY created DESC LIMIT 5";
    }

    $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");

    echo ("<?xml version='1.0' encoding='iso-8859-1' ?>\n");
    echo ("<rss version='2.0'>\n");
    echo ("<channel>\n");
    printf ("   <lastBuildDate>%s</lastBuildDate>\n", date("D, d M Y H:i:s T"));
?>
  <title>Information & Consulting Logbuch</title>
  <description>Information & Consulting Logbuch</description>
  <link>http://infocon.infodrom.org/logbook/</link>
  <managingEditor>joey@infodrom.org</managingEditor>
  <generator>InfoCon</generator>

<?
    for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
      $row = pg_fetch_array ($sth, $nr);

      $body = str_replace(array('<','>','&',"\\\n","\r"),
			  array('&lt;', '&gt;', '&amp;', '', ''),
			  $row['body']);
      $date = explode (" ", $row['created']);
      $time = explode (":", $date[1]);
      $tz = substr($time[2], 2);
      if (strlen ($tz) == 3) {
	$tz .= "00";
      } else {
        # Something's borked, so add symbolic name instead
        $tz = date ("T", mktime ($time[0], $time[1], $time[2], $date[1], $date[2], $date[0]));
      }
      $date = explode ("-", $date[0]);
      $date = date ("D, d M Y H:i:s ",
	      mktime ($time[0], $time[1], $time[2], $date[1], $date[2], $date[0]))
	      . $tz;

      $url = sprintf('%s-%d.html', teaserlink($row['teaser']), $row['id']);

      echo ("<item>\n");
      printf ("  <title>%s</title>\n", $row['teaser']);
      printf ("  <link>http://infocon.infodrom.org/logbook/%s</link>\n", $url);
      printf ("  <pubDate>%s</pubDate>\n", $date);
      printf ("  <category>%s</category>\n", $row['category']);
      printf ("  <description>%s</description>\n", $body);
      echo ("</item>\n");
    }  
    echo ("\n</channel>\n</rss>\n");

    exit;
  }

<protect>
  $kontaktlink = '<p style="margin-left: -20px;"><strong><a href="../kontaktform.html">Zum Kontakformular</a></strong></p>';
</protect>

?>

#include <infocon.style>

<page title="Logbuch" alternates="logbook.rdf|Logbuch" lang="de">

<?
  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
	 or die("Unable to connect to SQL server");

  pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");

  if (strlen ($_SERVER[QUERY_STRING])> 0 && ($_SERVER[QUERY_STRING] == "all" || strlen($_SERVER[QUERY_STRING]) == 4)) {
    if ($_SERVER[QUERY_STRING] == "all") {
      $query = "SELECT id,teaser,created FROM <logbook> " .
	       "WHERE public = 1 " .
	       "ORDER BY created DESC";
      $title = "Index of Logbook Entries";
    } else {
      $this_year = (int)$_SERVER[QUERY_STRING];
      $next_year = $this_year + 1;
      $query = sprintf ("SELECT id,teaser,created FROM <logbook> "
		       ."WHERE public = 1 "
		       ."AND created >= '%d-01-01' AND created < '%d-01-01' ORDER BY created ASC",
		       $this_year, $next_year);
      $title = sprintf ("Logbuch %d", $this_year);
    }
    echo ("<div id=\"logenv\"><div id=\"logbody\">");
    printf ("<h3 id=\"logtitle\">%s</h3>", $title);
    echo ("<div id=\"logcontent\">");

    echo ("<table class=\"font\" width=\"100%\" summary=\"\">");

    $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");

    for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
      $row = pg_fetch_array ($sth, $nr);

      $date = explode (" ", $row['created']);
      $time = explode (":", $date[1]);
      $date = explode ("-", $date[0]);
      $date = sprintf ("%d.%d.%d", $date[2], $date[1], $date[0]);

      $url = sprintf('%s-%d.html', teaserlink($row['teaser']), $row['id']);

      printf ("<tr><td align=\"right\">%s</td><td width=\"2\"></td><td><a href=\"./%s\">%s</a></td></tr>",
	     $date, $url, $row['teaser']);
    }
    echo ("</table><div style=\"padding-top: 0.5em\"></div></div></div></div>");
    echo $kontaktlink;
  } else {
    if (strlen ($_SERVER[QUERY_STRING]) > 0) {
      $query = sprintf ("SELECT * FROM <logbook> "
		       ."WHERE public = 1 AND id = '%s'",
			addslashes ($_SERVER[QUERY_STRING]));
    } else {
      $query = "SELECT * FROM <logbook> WHERE public = 1 " .
	       "ORDER BY created DESC LIMIT 8";
    }

    $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");

    for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
      $row = pg_fetch_array ($sth, $nr);

      $date = explode (" ", $row['created']);
      $time = explode (":", $date[1]);
      $date = explode ("-", $date[0]);
      $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);

      $url = sprintf('%s-%d.html', teaserlink($row['teaser']), $row['id']);

      echo   ("<div id=\"logenv\"><div id=\"logbody\">");
      printf ("<h3 id=\"logtitle\"><a href=\"%s\">%s</a></h3>", $url, $row['teaser']);
      if (strlen ($_SERVER[QUERY_STRING]) > 0)
	echo $adv_entry;
      printf ("<div id=\"logcontent\">%s</div>", str_replace ("\\\n", "", str_replace ("\r", "", $row['body'])));
      echo   ("\n<div class=\"logfoot\">");
      echo   ("<div class=\"logfootleft\">");
      echo   ("</div>");
      echo   ("<div class=\"logfootright\">");
      printf ("%s | %s | <a href=\"%s\">permanent link</a>", $date, $row['category'], $url);
      echo   ("</div></div>");
      echo   ("</div></div>");
      if ($nr == 0 || $nr == 4 || $nr == 7)
	echo $adv_index;
      if (strlen ($_SERVER[QUERY_STRING]) > 0)
	echo $kontaktlink;
    }
  }
?>

</page>

# Local variables:
# mode: text
# mode: auto-fill
# end:
