X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FFactoids%2FUpdate.pl;h=9ee8e220399e8cef4517dbcd9f1f995ede0a16ce;hb=cb81fea9939f349b36e3b5a0cdc0343a6b781da1;hp=2a02b24d24e5f4b2c611f1d654fed974cfa19c6e;hpb=73555fc86ddc2021610ab944855b11d1c19816e6;p=infobot.git diff --git a/src/Factoids/Update.pl b/src/Factoids/Update.pl index 2a02b24..9ee8e22 100644 --- a/src/Factoids/Update.pl +++ b/src/Factoids/Update.pl @@ -21,13 +21,13 @@ sub update { 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" && &IsFlag("o") ne "o") { + if (&IsFlag('t') ne 't' && &IsFlag('o') ne 'o') { &msg($who, "permission denied."); &status("alert: $who wanted to teach me."); return 1; @@ -54,14 +54,14 @@ sub update { # factoid arguments handler. # must start with a non-variable - if (&IsChanConf("factoidArguments") and $lhs =~ /^[^\$]+.*\$/) { + 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++; @@ -87,23 +87,23 @@ sub update { # nice 'are' hack (or work-around). if ($mhs =~ /^are$/i and $rhs !~ /<\S+>/) { &status("Update: 'are' hack detected."); - $mhs = "is"; + $mhs = 'is'; $rhs = " are ". $rhs; } &status("enter: <$who> \'$lhs\' =$mhs=> \'$rhs\'"); $count{'Update'}++; - &performAddressedReply("okay"); + &performAddressedReply('okay'); - &sqlReplace("factoids", { + &sqlInsert('factoids', { created_by => $nuh, created_time => time(), # modified time. factoid_key => $lhs, factoid_value => $rhs, } ); - if (!defined $rhs or $rhs eq "") { + if (!defined $rhs or $rhs eq '') { &ERROR("Update: rhs1 == NULL."); } @@ -120,7 +120,23 @@ sub update { } if ($also) { # 'is also'. - if ($exists =~ /^ see /i) { + my $redircount = 5; + my $origlhs = $lhs; + while ($exists =~ /^ ?see (.*)/i) { + $redircount--; + unless ($redircount) { + &msg($who, "$origlhs has too many levels of redirection."); + return 1; + } + + $lhs = $1; + $exists = &getFactoid($lhs); + unless( $exists ) { + &msg($who, "$1 is a dangling redirection."); + return 1; + } + } + if ($exists =~ /^ ?see (.*)/i) { &TODO("Update.pl: append to linked factoid."); } @@ -174,21 +190,20 @@ sub update { } } - &performAddressedReply("okay"); + &performAddressedReply('okay'); $count{'Update'}++; &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'"); - &sqlReplace("factoids", { - factoid_key => $lhs, + &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) { @@ -198,28 +213,27 @@ sub update { return 1; } - my $author = &getFactInfo($lhs, "created_by") || ""; + my $author = &getFactInfo($lhs, 'created_by') || ''; - if (IsFlag("m") ne "m" && IsFlag("o") ne "o" && + 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\'"); - &sqlReplace("factoids", { - factoid_key => $lhs, + &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."); } } @@ -228,3 +242,5 @@ sub update { } 1; + +# vim:ts=4:sw=4:expandtab:tw=80