From afd8918d7e6f42334a2d94340736cb3a5492e1a6 Mon Sep 17 00:00:00 2001
From: dms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Date: Fri, 22 Sep 2000 10:49:49 +0000
Subject: [PATCH] added undelete command

git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@122 c11ca15a-4712-0410-83d8-924469b57eb5
---
 blootbot/src/Process.pl | 60 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 57 insertions(+), 3 deletions(-)

diff --git a/blootbot/src/Process.pl b/blootbot/src/Process.pl
index 08dcc57..edf30de 100644
--- a/blootbot/src/Process.pl
+++ b/blootbot/src/Process.pl
@@ -207,7 +207,10 @@ sub process {
     # here's where the external routines get called.
     # if they return anything but null, that's the "answer".
     if ($addressed) {
-	&parseCmdHook();
+	if (&parseCmdHook()) {
+	    return 'DID SOMETHING IN PCH.';
+	}
+
 	my $er = &Modules();
 	if ($er =~ /\S/) {
 	    &performStrictReply($er) if ($er ne $noreply);
@@ -300,8 +303,17 @@ sub FactoidStuff {
 
 	    return 'locked factoid' if (&IsLocked($faqtoid) == 1);
 
-	    &status("forget: <$who> '$faqtoid' =is=> '$result'");
-	    &delFactoid($faqtoid);
+	    if (&IsParam("factoidDeleteDelay")) {
+		&status("forgot (safe delete): <$who> '$faqtoid' =is=> '$result'");
+		&setFactInfo($faqtoid, "factoid_key", $faqtoid." #DEL#");
+
+		### delete info. modified_ isn't really used.
+		&setFactInfo($faqtoid, "modified_by", $who);
+		&setFactInfo($faqtoid, "modified_time", time());
+	    } else {
+		&status("forget: <$who> '$faqtoid' =is=> '$result'");
+		&delFactoid($faqtoid);
+	    }
 
 	    &performReply("i forgot $faqtoid");
 
@@ -313,6 +325,48 @@ sub FactoidStuff {
 	return;
     }
 
+    # factoid unforget/undelete.
+    if ($message =~ s/^un(forget|delete)\s+//i) {
+	return 'unforget: no addr' unless ($addressed);
+
+	if (!&IsParam("factoidDeleteDelay")) {
+	    &performReply("safe delete has been disable so what is there to undelete?");
+	    return;
+	}
+
+	my $faqtoid = $message;
+	if ($faqtoid eq "") {
+	    &help("undelete");
+	    return;
+	}
+
+	$faqtoid =~ tr/A-Z/a-z/;
+	my $result = &getFactoid($faqtoid." #DEL#");
+	my $check  = &getFactoid($faqtoid);
+
+	if (!defined $result) {
+	    &performReply("i didn't have anything ('$faqtoid') to undelete.");
+	    return;
+	}
+
+	if (defined $check) {
+	    &performReply("cannot undeleted '$faqtoid' because it already exists?");
+	    return;
+	}
+
+	&setFactInfo($faqtoid." #DEL#", "factoid_key", $faqtoid);
+
+	### delete info. modified_ isn't really used.
+	&setFactInfo($faqtoid, "modified_by",  "");
+	&setFactInfo($faqtoid, "modified_time", 0);
+
+	&performReply("Successfully recovered '$faqtoid'.  Have fun now.");
+
+	$count{'Undelete'}++;
+
+	return;
+    }
+
     # factoid locking.
     if ($message =~ /^((un)?lock)(\s+(.*))?\s*?$/i) {
 	return 'lock: no addr 2' unless ($addressed);
-- 
2.39.5