]> git.donarmstrong.com Git - infobot.git/commitdiff
* Correction to factoid updates to treat appending as a modification
authordjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Wed, 16 Apr 2008 03:12:54 +0000 (03:12 +0000)
committerdjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Wed, 16 Apr 2008 03:12:54 +0000 (03:12 +0000)
git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1662 c11ca15a-4712-0410-83d8-924469b57eb5

src/Factoids/Update.pl

index 9ee8e220399e8cef4517dbcd9f1f995ede0a16ce..75714dad450beb74c2a8a12b3c4ebd17d945fb72 100644 (file)
@@ -52,6 +52,26 @@ sub update {
     my $also    = ($rhs =~ s/^-?also //i);
     my $also_or = ($also and $rhs =~ s/\s+(or|\|\|)\s+//);
 
+    if ($also or $also_or) {
+        my $author  = &getFactInfo($from, 'created_by');
+        $author =~ /^(.*)!/;
+        my $created_by = $1;
+
+        # Can they even modify factoids?
+        if (&IsFlag('m') ne 'm' and &IsFlag('M') ne 'M' and &IsFlag('o') ne 'o') {
+            &performReply("You do not have permission to modify factoids");
+            return 1;
+
+        # If they have +M but they didnt create the factoid
+        } elsif (&IsFlag('M') eq 'M' and
+                 $who !~ /^\Q$created_by\E$/i
+                 &IsFlag('m') ne 'm'
+                 &IsFlag('o') ne 'o') {
+            &performReply("factoid '$lhs' is not yours to modify.");
+            return 1;
+        }
+    }
+
     # factoid arguments handler.
     # must start with a non-variable
     if (&IsChanConf('factoidArguments') > 0 and $lhs =~ /^[^\$]+.*\$/) {