# freshmeat
if (&IsChanConf("freshmeatForFactoid")) {
# todo: "name" is invalid for fm ][
- if (&dbGet("freshmeat", "name", $lhs, "name")) {
+ 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 =~ /\$/) {
&status("Update: Factoid Arguments found.");
&status("Update: orig lhs => '$lhs'.");
&status("Update: orig rhs => '$rhs'.");
- $lhs =~ s/^/CMD: /;
+
my @list;
+ my $count = 0;
+ $lhs =~ s/^/CMD: /;
while ($lhs =~ s/\$(\S+)/(.*?)/) {
push(@list, "\$$1");
+ $count++;
+ last if ($count >= 10);
+ }
+
+ if ($count >= 10) {
+ &msg($who, "error: could not SAR properly.");
+ &DEBUG("error: lhs => '$lhs'.");
+ &DEBUG("error: rhs => '$rhs'.");
+ return;
}
+
my $z = join(',',@list);
$rhs =~ s/^/($z): /;
&performAddressedReply("okay");
- &setFactInfo($lhs,"created_by", $nuh);
- &setFactInfo($lhs,"created_time", time());
- &setFactInfo($lhs,"factoid_value", $rhs);
+ if (0) { # old
+ &setFactInfo($lhs, "factoid_value", $rhs);
+ &setFactInfo($lhs, "created_by", $nuh);
+ &setFactInfo($lhs, "created_time", time());
+ } else {
+ &dbReplace("factoids", "factoid_key", (
+ created_by => $nuh,
+ created_time => time(), # modified time.
+ factoid_key => $lhs,
+ 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 ||'.
&performStrictReply("...but \002$lhs\002 is already something else...");
&status("FAILED update: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
}
- return;
+ return 1;
}
my $author = &getFactInfo($lhs, "created_by") || "";
$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 "") {