--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<table width=100% class=font border=0 cellspacing=3 bgcolor="#<cold>">\
+<tr bgcolor=#<colh>>\
+<th width=15%><font face="Helvetica,Arial">Datum</font></th>\
+<th width=85%><font face="Helvetica,Arial">Titel</font></th></tr>
+
+<?
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+ $query = "SELECT id,teaser,created FROM logbook ORDER BY created DESC";
+ $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]);
+
+ printf ("<tr><td align=\"right\">%s</td><td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+ $date, $row['id'], $row['teaser']);
+ }
+?>
+
+</table>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<?
+ $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 ($_GET['id'] > 0) {
+ $query = sprintf ("SELECT oid,* FROM logbook WHERE id = '%s'", $_GET['id']);
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage! ".$query);
+
+ if (pg_NumRows ($sth) > 0) {
+ $row = pg_fetch_array ($sth, 0);
+
+ $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]);
+ }
+ } else {
+ $row['category'] = 'misc';
+ }
+?>
+
+<form method=post action="update.php">
+<input type=hidden name=oid value="<? echo $row['oid']; ?>">
+<b>Category:</b> <select name=category><?
+ $sth = pg_exec ($dbh, "SELECT DISTINCT category FROM logbook ORDER BY category") or die("Datenbank-Abfrage!");
+ for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+ $srow = pg_fetch_array ($sth, $nr);
+ printf ("<option value=\"%s\"%s>%s\n", $srow['category'],
+ $row['category'] == $srow['category']?" selected":¨, $srow['category']);
+ }
+?></select><br>
+<b>Teaser:</b> <input name=teaser size=60 maxlength=120 value="<? echo $row['teaser']; ?>"><br>
+<b>Text:</b> <br><textarea name=body rows=16 cols=79><? echo str_replace ("&", "&", $row['body']); ?></textarea><p>
+<b>Public:</b> <input name=public type=checkbox value="1" <? if ($row['public']==1) { echo "checked";} ?>><br>
+
+<? if ($_GET['id'] > 0) { ?>
+<b>Created:</b> <? echo $date; ?><br>
+<? } ?>
+
+<p><center><input type=submit value="<? echo $_GET['id']>0?"Update":"Insert"; ?>">\
+
+<input type=reset value="Reset"></center><p>
+</form>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# mode: iso-accents
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<p>Public Logbook</p>
+
+<?
+ $parms = array ("keyword","category","public","teaser","text");
+ $urlbase = "";
+
+ foreach ($parms as $arg) {
+ if (isset($_REQUEST[$arg])) {
+ if (strlen($urlbase) == 0)
+ $urlbase = "find.php?";
+ else
+ $urlbase .= "&";
+ $urlbase .= $arg . '=' . urlencode($_REQUEST[$arg]);
+ }
+ }
+
+ if (strlen($urlbase) == 0) {
+ echo "<p><b>No search restriction provided.</b></p>";
+ exit;
+ }
+
+ if (isset($_REQUEST["offset"]))
+ $linkbase = sprintf ("%s&offset=%d", $urlbase, $_REQUEST["offset"]);
+ else
+ $linkbase = $urlbase;
+
+ $link_date = sprintf ('<a href="%s&sort=date">Date</a>', $linkbase);
+ $link_category = sprintf ('<a href="%s&sort=category">Category</a>', $linkbase);
+ $link_title = sprintf ('<a href="%s&sort=title">Title</a>', $linkbase);
+?>
+
+<table width=100% class=font border=0 cellspacing=3 bgcolor="#<cold>">\
+<tr bgcolor=#<colh>>\
+<th width=15%><? echo $link_date; ?></th>\
+<th width=15%><? echo $link_category; ?></th>
+<th width=70%><? echo $link_title; ?></th>
+</tr>
+
+<?
+ $limit = 50;
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+ $query = "SELECT id,category,teaser,created,public FROM logbook WHERE ";
+ $where = array();
+ if (strlen($_REQUEST[keyword])) {
+ if (isset($_REQUEST['text'])) {
+ $where[] = sprintf ("( teaser ~* '%s' OR body ~* '%s')",
+ addslashes ($_REQUEST[keyword]),
+ addslashes ($_REQUEST[keyword]));
+ } else {
+ $where[] = sprintf ("teaser ~* '%s'",
+ addslashes ($_REQUEST[keyword]));
+ }
+ }
+
+ if (strlen($_REQUEST[category])) {
+ $where[] = sprintf ("category = '%s'", addslashes ($_REQUEST[category]));
+ }
+
+ if (strlen($_REQUEST['public'])) {
+ $where[] = "public = 1";
+ }
+
+ $query .= implode (" AND ", $where);
+
+ if (isset($_REQUEST[sort]) && $_REQUEST[sort] == "title") {
+ $query .= "ORDER BY teaser,created";
+ } elseif (isset($_REQUEST[sort]) && $_REQUEST[sort] == "category") {
+ $query .= "ORDER BY category,created";
+ } else {
+ $query .= "ORDER BY created";
+ }
+ $query .= " LIMIT $limit";
+ if (isset ($_GET["offset"]))
+ $query .= sprintf (" OFFSET %d\n", $_GET["offset"]);
+
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+ $color = "<coln>";
+ 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]);
+
+ $color = $color == "<cold>"?"<coln>" : "<cold>";
+ if ($row['public'] == 0) {
+ printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td>"
+ ."<td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+ $color,
+ $date, $row['category'], $row['id'], $row['teaser']);
+ } else {
+ $pubbase = 'http://infocon.infodrom.org//logbook/';
+ printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td><td><a href=\"show.php?id=%s\">%s</a>"
+ ." (<a href=\"%s?%s\">pub</a>)</td></tr>",
+ $color,
+ $date, $row['category'], $row['id'], $row['teaser'], $pubbase, $row['id']);
+ }
+ }
+
+ echo ("</table>\n");
+
+ if ($nr >= $limit) {
+ if (isset($_REQUEST["sort"]))
+ $url = sprintf ("%s&sort=%s&offset=%d", $urlbase, urlencode($_REQUEST["sort"]), $_GET["offset"]+$limit);
+ else
+ $url = sprintf ("%s&offset=%d", $urlbase, $_GET["offset"]+$limit);
+
+ printf ("<p><a href=\"%s\">next</a></p>\n", $url);
+ }
+
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<table width=100% class="font height border" border=0 cellspacing=0>\
+<tr bgcolor=#<colh>>\
+<th width=15%>Datum</th>\
+<th width=15%>Category</th>\
+<th width=70%>Titel</th></tr>
+
+<?
+ $limit = 50;
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+ $query = sprintf("SELECT id,teaser,category,created FROM logbook ORDER BY created DESC LIMIT %d", $limit+1);
+ if (isset ($_GET["offset"]))
+ $query .= sprintf (" OFFSET %d", $_GET["offset"]);
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+ $color = "<coln>";
+ for ($nr=0; $nr < pg_NumRows ($sth) && $nr < $limit; $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]);
+
+ $color = $color == "<cold>"?"<coln>" : "<cold>";
+ printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td>"
+ ."<td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+ $color,
+ $date, $row['category'], $row['id'], $row['teaser']);
+ }
+
+ echo ("</table>\n");
+
+ if (pg_NumRows ($sth) > $nr) {
+ printf ("<p><a href=\"index.php?offset=%d\">next</a></p>\n", $_GET["offset"]+$limit);
+ }
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<p>Public Logbook</p>
+
+<table width=100% class=font border=0 cellspacing=0>\
+<tr bgcolor=#<colh>>\
+<th width=20%>Datum</th>\
+<th width=150%>Category</th>\
+<th width=65%>Titel</th></tr>
+
+<?
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+ $query = "SELECT id,teaser,category,created FROM logbook WHERE public=1 ORDER BY created DESC";
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+ $color = "<coln>";
+ 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]);
+
+ $color = $color == "<cold>"?"<coln>" : "<cold>";
+ printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td><td><a href=\"show.php?id=%s\">%s</a>"
+ ." (<a href=\"http://infocon.infodrom.org/logbook/?%s\">pub</a>)</td></tr>",
+ $color,
+ $date, $row['category'], $row['id'], $row['teaser'], $row['id']);
+ }
+?>
+
+</table>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<form method=post action=find.php>
+<b>Keyword:</b> <input name=keyword size=30 maxlength=80><br>
+<b>Category:</b> <select name=category><option value="">any<?
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ $sth = pg_exec ($dbh, "SELECT DISTINCT category FROM logbook ORDER BY category") or die("Datenbank-Abfrage!");
+ for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+ $srow = pg_fetch_array ($sth, $nr);
+ printf ("<option value=\"%s\"%s>%s\n", $srow['category'],
+ $row['category'] == $srow['category']?" selected":¨, $srow['category']);
+ }
+?></select><br>
+<b>Text:</b> <input name=text type=checkbox value=1><br>
+<b>Public:</b> <input name=public type=checkbox value=1>
+
+<p><center><input type=submit value="Search">\
+
+<input type=reset value="Reset"></center><p>
+</form>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
--- /dev/null
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<?
+ if ($_GET[id] > 0) {
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+ pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+ $query = "SELECT oid,* FROM logbook WHERE id = '$_GET[id]'";
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+ if (pg_NumRows ($sth) > 0) {
+ $row = pg_fetch_array ($sth, 0);
+
+ $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]);
+ }
+ }
+
+printf ("<h3>%s</h3>", $row['teaser']);
+printf ("<p>Date: %s", $date);
+printf ("<br>Category: %s", $row['category']);
+if ($row['public'] > 0) {
+ printf (' — <a href="http://infocon.infodrom.org//logbook/?%s">public link</a>',
+ $row['id']);
+}
+echo "</p>";
+
+printf ("%s", str_replace ("\\\n", "",
+ str_replace ("\r", "",
+ $row['body'])));
+
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# end:
--- /dev/null
+<Strong>Menu</strong><br>
+
+ <menu-item base=index text=Index href=index.php><br>
+
+<when <string-eq "<get-var WML_SRC_BASENAME>" "show" />>
+<?
+ if ($_GET['id'] > 0)
+ printf(' <a href="edit.php?id=%d">Edit</a><br>', $_GET['id']);
+?>
+</when>
+
+ <menu-item base=edit text="New Entry" href=edit.php><br>
+ <menu-item base=public text=Public href=public.php><br>
+ <menu-item base=search text=Search href=search.php><br>
+ <menu-item base=all text="All" href=all.php><br>
+
+<menu-rule>
+
+#include "../functions.inc" prefix="../"
--- /dev/null
+#include <infocon.style>
+#include <phptools.inc>
+
+<page func="Information & Consulting" title="Logbook">
+
+<sql_prepare>
+<?
+ $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+ or die("Unable to connect to SQL server");
+
+<:
+ for $i (('teaser','body')) {
+ printf " \$o_%s = \$_POST[%s];\n", $i, $i;
+ printf " \$%s = sql_prepare (\$_POST[%s]);\n", $i, $i;
+ }
+:>
+ if ($_POST["public"] != 1) {
+ $_POST["public"] = 0;
+ }
+
+ if ($_POST[oid] > 0) {
+ $query = sprintf ("UPDATE logbook SET category='%s',teaser='%s',public=%d,body='%s' "
+ ."WHERE oid = %d",
+ $_POST[category],
+ $teaser,
+ $_POST["public"],
+ $body,
+ $_POST[oid]);
+ } else {
+ $date = date ("Y-m-d H:i");
+ $id = date ("YmdHi");
+
+ $query = sprintf ("INSERT INTO logbook (id,category,teaser,body,public,created) VALUES "
+ ."('%s','%s','%s','%s',%d,'%s')",
+ $id,
+ $_POST["category"],
+ $teaser,
+ $body,
+ $_POST["public"],
+ $date);
+ }
+ // printf ("<pre>\n%s\n</pre>\n", $query);
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+?>
+
+<h3><? echo $o_teaser; ?></h3>
+
+<?
+ if (! isset($_POST[oid]) || $_POST[oid] == 0) {
+ $oid = pg_getlastoid ($sth);
+ } else {
+ $oid = $_POST[oid];
+ }
+
+ $query = sprintf ("SELECT id,public FROM logbook WHERE oid = %d", $oid);
+ $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+ if (pg_NumRows ($sth) > 0) {
+ $row = pg_fetch_array ($sth, 0);
+
+ printf ('<p><a href="edit.php?oid=%d">edit</a>', $oid);
+ if ($row['public'] > 0) {
+ printf (' — <a href="http://infocon.infodrom.org/logbook/?%s">public link</a>',
+ $row['id']);
+ }
+ echo "</p>";
+ }
+?>
+
+<? echo str_replace ("\\\n", "", str_replace ("\r", "", $o_body)); ?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end: