# Created: 1997
#
-if (&IsParam("useStrict")) { use strict; }
+# use strict; # TODO
sub update {
my($lhs, $mhs, $rhs) = @_;
}
# teaching.
- if (&IsFlag("t") ne "t") {
+ if (&IsFlag("t") ne "t" && &IsFlag("o") ne "o") {
&msg($who, "permission denied.");
&status("alert: $who wanted to teach me.");
return 1;
&performAddressedReply("okay");
- if (1) { # old
- &setFactInfo($lhs,"factoid_value", $rhs);
- &setFactInfo($lhs,"created_by", $nuh);
- &setFactInfo($lhs,"created_time", time());
- } else {
- ### BROKEN!!!
- # I'd prefer to use dbReplace but it don't work.
- &dbReplace("factoids", "factoid_key", (
+ &dbReplace("factoids", "factoid_key", (
+ created_by => $nuh,
+ created_time => time(), # modified time.
factoid_key => $lhs,
- created_by => time(),
factoid_value => $rhs,
- ) );
- }
+ ) );
if (!defined $rhs or $rhs eq "") {
&ERROR("Update: rhs1 == NULL.");
# factoid exists.
if ($exists eq $rhs) {
+ # this catches the following situation: (right or wrong?)
+ # "test is test"
+ # "test is also test"
&performAddressedReply("i already had it that way");
return 1;
}
if ($also) { # 'is also'.
if ($exists =~ /^<REPLY> see /i) {
- &DEBUG("todo: append to linked factoid.");
+ &DEBUG("Update.pl: todo: append to linked factoid.");
}
if ($also_or) { # 'is also ||'.
my $author = &getFactInfo($lhs, "created_by") || "";
- if (IsFlag("m") ne "m" and $author !~ /^\Q$who\E\!/i) {
+ if (IsFlag("m") ne "m" && IsFlag("o") ne "o" &&
+ $author !~ /^\Q$who\E\!/i
+ ) {
&msg($who, "you can't change that factoid.");
return 1;
}
$count{'Update'}++;
&status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
- &delFactoid($lhs);
- &setFactInfo($lhs,"created_by", $nuh);
- &setFactInfo($lhs,"created_time", time());
+ # should dbReplace be used here?
+ #&delFactoid($lhs); # breaks dbm. leave it and use modified_* - Tim Riker <Tim@Rikers.org>
+ &setFactInfo($lhs,"modified_by", $nuh);
+ &setFactInfo($lhs,"modified_time", time());
&setFactInfo($lhs,"factoid_value", $rhs);
if (!defined $rhs or $rhs eq "") {