# 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;
my $also = ($rhs =~ s/^-?also //i);
my $also_or = ($also and $rhs =~ s/\s+(or|\|\|)\s+//);
- # freshmeat
- if (&IsChanConf("freshmeatForFactoid")) {
- # todo: "name" is invalid for fm ][
- if (&dbGet("freshmeat", "name", "name='$lhs'")) {
- &msg($who, "permission denied. (freshmeat)");
- &status("alert: $who wanted to teach me something that freshmeat already has info on.");
- return 1;
- }
- }
-
# factoid arguments handler.
- if (&IsChanConf("factoidArguments") and $lhs =~ /\$/) {
+ # must start with a non-variable
+ if (&IsChanConf("factoidArguments") and $lhs =~ /^[^\$]+.*\$/) {
&status("Update: Factoid Arguments found.");
&status("Update: orig lhs => '$lhs'.");
&status("Update: orig rhs => '$rhs'.");
if ($count >= 10) {
&msg($who, "error: could not SAR properly.");
- &DEBUG("error: lhs => '$lhs'.");
- &DEBUG("error: rhs => '$rhs'.");
+ &DEBUG("error: lhs => '$lhs' rhs => '$rhs'.");
return;
}
my $z = join(',',@list);
$rhs =~ s/^/($z): /;
- &status("Update: new lhs => '$lhs'.");
- &status("Update: new rhs => '$rhs'.");
+ &status("Update: new lhs => '$lhs' rhs => '$rhs'.");
}
# the fun begins.
&performAddressedReply("okay");
- ### BROKEN!!!
- if (1) { # old
- &setFactInfo($lhs,"created_by", $nuh);
- &setFactInfo($lhs,"created_time", time());
- &setFactInfo($lhs,"factoid_value", $rhs);
- } else {
- &dbReplace("factoids", (
+ &sqlReplace("factoids", {
+ 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.");
+ &TODO("Update.pl: append to linked factoid.");
}
if ($also_or) { # 'is also ||'.
$count{'Update'}++;
&status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
- &AddModified($lhs,$nuh);
- &setFactInfo($lhs, "factoid_value", $rhs);
+ &sqlReplace("factoids", {
+ factoid_key => $lhs,
+ modified_by => $nuh,
+ modified_time => time(),
+ factoid_value => $rhs,
+ } );
if (!defined $rhs or $rhs eq "") {
&ERROR("Update: rhs1 == NULL.");
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());
- &setFactInfo($lhs,"factoid_value", $rhs);
+ &sqlReplace("factoids", {
+ factoid_key => $lhs,
+ modified_by => $nuh,
+ modified_time => time(),
+ factoid_value => $rhs,
+ } );
if (!defined $rhs or $rhs eq "") {
&ERROR("Update: rhs1 == NULL.");