]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Factoids/Update.pl
really support negative booleans and and return -1 for IsChanConf() when they are...
[infobot.git] / src / Factoids / Update.pl
index 322f501e0a924123db57da745ffd62693ae0a939..400012e52387e126765c803dba173bf3966c8f82 100644 (file)
@@ -52,25 +52,16 @@ sub update {
     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 ( &sqlSelect("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") > 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++;
@@ -79,16 +70,14 @@ sub update {
 
        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.
@@ -132,7 +121,7 @@ sub update {
 
     if ($also) {                       # 'is also'.
        if ($exists =~ /^<REPLY> see /i) {
-           &DEBUG("Update.pl: todo: append to linked factoid.");
+           &TODO("Update.pl: append to linked factoid.");
        }
 
        if ($also_or) {                 # 'is also ||'.
@@ -189,8 +178,12 @@ sub update {
 
        $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.");
@@ -219,11 +212,12 @@ sub update {
        $count{'Update'}++;
        &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
 
-       # todo: use sqlReplace.
-       #&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);
+       &sqlReplace("factoids", {
+               factoid_key     => $lhs,
+               modified_by     => $nuh,
+               modified_time   => time(),
+               factoid_value   => $rhs,
+       } );
 
        if (!defined $rhs or $rhs eq "") {
            &ERROR("Update: rhs1 == NULL.");