commit:1de127d25dae264a85d53c16a715193acc0f12f4
author:Chip Black
committer:Chip Black
date:Fri Aug 11 02:59:11 2017 -0500
parents:b87364fe0831813beaee8f5731135fd75d6c2880
Add guestbooks
diff --git a/cgi-bin/guestbook.lib b/cgi-bin/guestbook.lib
line changes: +46/-0
index 0000000..0fcb1f5
--- /dev/null
+++ b/cgi-bin/guestbook.lib
@@ -0,0 +1,46 @@
+require "data.lib";
+
+sub guestbook_add {
+    ($to, $from, $post) = @_;
+
+    $guestbook_dir = "$datadir/guestbook/$to";
+    print STDERR "$guestbook_dir\n";
+    mkdir $guestbook_dir unless -d $guestbook_dir;
+
+    # move the old ones out of the way
+    if ("$guestbook_dir/5") {
+        open ARCHIVE, ">$guestbook_dir/archive.new";
+        open F, "$guestbook_dir/5";
+        print ARCHIVE <F>;
+        close F;
+        if (-f "$guestbook_dir/archive") {
+            open F, "$guestbook_dir/archive";
+            print ARCHIVE <F>;
+            close F;
+        }
+        rename "$guestbook_dir/archive.new", "$guestbook_dir/archive";
+    }
+    for $p (4,3,2,1) {
+        if (-f "$guestbook_dir/$p") {
+            rename "$guestbook_dir/$p", "$guestbook_dir/" . ($p + 1);
+        }
+    }
+    open POST, ">$guestbook_dir/1";
+    print POST "<div><b>Posted by $from at " . (scalar localtime) . "</b>\n";
+    print POST "<p>", $post;
+    print POST "</div>\n";
+    close POST;
+}
+
+sub guestbook_feed {
+    ($user) = @_;
+
+    $guestbook_dir = "$datadir/guestbook/$user";
+    for $post (1..5) {
+        open POST, "$guestbook_dir/$post";
+        print <POST>;
+        close POST;
+    }
+}
+
+1;

diff --git a/cgi-bin/guestbook.pl b/cgi-bin/guestbook.pl
line changes: +35/-0
index 0000000..669d2d2
--- /dev/null
+++ b/cgi-bin/guestbook.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+require "html.lib";
+require "form.lib";
+require "cookies.lib";
+require "guestbook.lib";
+
+print "Content-type: text/html\r\n\r\n";
+&html_head;
+print h1(&friendnet);
+
+if (!$cookies{loggedin}) {
+    print "<p>You must be logged in to sign the guestbook!\n";
+}
+
+if ($formdata{submit}) {
+    &guestbook_add($formdata{u}, $cookies{loggedin}, $formdata{post});
+    print <<EOD;
+<p>You posted this to $formdata{u}'s guestbook:
+<p><table cellpadding=8><tr><td><font face=courier,fixed>$formdata{post}</font></td></tr></table>
+<p>You can <a href=/cgi-bin/profile.pl?u=$formdata{u}#guestbook>view it on their profile</a> or <a href=/cgi-bin/profile.pl?u=$cookies{loggedin}>go back to your profile</a>.
+EOD
+} else {
+    print <<EOD;
+<h2>$formdata{u}'s Guestbook</h2>
+
+<form method=post>
+<input type=hidden name=u value=$formdata{u}>
+<textarea name=post rows=20 cols=80>
+</textarea>
+<p><input type=submit name=submit value=Post>
+</form>
+EOD
+}
+
+&html_foot;

diff --git a/cgi-bin/html.lib b/cgi-bin/html.lib
line changes: +4/-0
index e09976a..820ede8
--- a/cgi-bin/html.lib
+++ b/cgi-bin/html.lib
@@ -27,6 +27,10 @@ sub h2 {
     "<h2>@_</h2>";
 }
 
+sub h3 {
+    "<h3>@_</h3>";
+}
+
 sub img {
     $src = shift;
     "<img src=$src" . attr_expando(@_) . ">";

diff --git a/cgi-bin/profile.pl b/cgi-bin/profile.pl
line changes: +15/-2
index 88acf95..4500ed9
--- a/cgi-bin/profile.pl
+++ b/cgi-bin/profile.pl
@@ -3,6 +3,7 @@ require "html.lib";
 require "form.lib";
 require "data.lib";
 require "cookies.lib";
+require "guestbook.lib";
 
 $logged_in = $cookies{loggedin} eq $formdata{u};
 
@@ -19,6 +20,12 @@ if ($profile{photo}) {
 print h2($formdata{u});
 
 
+print &h3("About $formdata{u}");
+
+if ($logged_in) {
+    print "<a href=/cgi-bin/edit_profile.pl?u=$formdata{u}>Edit profile</a>\n";
+}
+
 print <<EOD;
 <table bgcolor=purple border=2 cellpadding=4>
   <tr>
@@ -33,8 +40,14 @@ print <<EOD;
 </table>
 EOD
 
-if ($logged_in) {
-    print "<p><a href=/cgi-bin/edit_profile.pl?u=$formdata{u}>Edit profile</a>\n";
+print "<a name=guestbook><h3>Guestbook</h3>\n";
+print "<p><a href=/cgi-bin/guestbook.pl?u=$formdata{u}>Sign my guestbook!</a>\n";
+print "<p><table bgcolor=pink border=2 cellpadding=4 width=100%><tr><td>\n";
+if (-e "$datadir/guestbook/$formdata{u}") {
+    &guestbook_feed($formdata{u});
+} else {
+    print "No one has posted yet. Be the first!\n";
 }
+print "</td></tr></table>\n";
 
 &html_foot;