# Created: 1997
#
-if (&IsParam("useStrict")) { use strict; }
+# use strict; # TODO
sub update {
my($lhs, $mhs, $rhs) = @_;
return if (&IsLocked($lhs) == 1);
# profanity.
- if (&IsParam("profanityCheck") and &hasProfanity($rhs)) {
+ if (&IsParam('profanityCheck') and &hasProfanity($rhs)) {
&performReply("please, watch your language.");
return 1;
}
# 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=".&dbQuote($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') > 0 and $lhs =~ /^[^\$]+.*\$/) {
&status("Update: Factoid Arguments found.");
&status("Update: orig lhs => '$lhs'.");
&status("Update: orig rhs => '$rhs'.");
my @list;
my $count = 0;
- $lhs =~ s/^/CMD: /;
+ $lhs =~ s/^/cmd: /;
while ($lhs =~ s/\$(\S+)/(.*?)/) {
push(@list, "\$$1");
$count++;
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.
# nice 'are' hack (or work-around).
if ($mhs =~ /^are$/i and $rhs !~ /<\S+>/) {
&status("Update: 'are' hack detected.");
- $mhs = "is";
+ $mhs = 'is';
$rhs = "<REPLY> are ". $rhs;
}
&status("enter: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
$count{'Update'}++;
- &performAddressedReply("okay");
+ &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", (
+ &sqlInsert('factoids', {
+ created_by => $nuh,
+ created_time => time(), # modified time.
factoid_key => $lhs,
- created_by => time(),
factoid_value => $rhs,
- ) );
- }
+ } );
- if (!defined $rhs or $rhs eq "") {
+ 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 ||'.
}
}
- &performAddressedReply("okay");
+ &performAddressedReply('okay');
$count{'Update'}++;
&status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
- &AddModified($lhs,$nuh);
- &setFactInfo($lhs, "factoid_value", $rhs);
+ &sqlSet('factoids', {'factoid_key' => $lhs}, {
+ modified_by => $nuh,
+ modified_time => time(),
+ factoid_value => $rhs,
+ } );
- if (!defined $rhs or $rhs eq "") {
+ if (!defined $rhs or $rhs eq '') {
&ERROR("Update: rhs1 == NULL.");
}
- } else { # not "also"
+ } else { # not 'also'
if (!$correction_plausible) { # "no, blah is ..."
if ($addressed) {
return 1;
}
- my $author = &getFactInfo($lhs, "created_by") || "";
+ 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;
}
- &performAddressedReply("okay");
+ &performAddressedReply('okay');
$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);
+ &sqlSet('factoids', {'factoid_key' => $lhs}, {
+ modified_by => $nuh,
+ modified_time => time(),
+ factoid_value => $rhs,
+ } );
- if (!defined $rhs or $rhs eq "") {
+ if (!defined $rhs or $rhs eq '') {
&ERROR("Update: rhs1 == NULL.");
}
}