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 =~ /^[^\$]+.*\$/) {
}
if ($also) { # 'is also'.
- if ($exists =~ /^<REPLY> see /i) {
+ my $redircount = 5;
+ my $origlhs = $lhs;
+ while ($exists =~ /^<REPLY> ?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 =~ /^<REPLY> ?see (.*)/i) {
&TODO("Update.pl: append to linked factoid.");
}
}
1;
+
+# vim:ts=4:sw=4:expandtab:tw=80