aboutsummaryrefslogtreecommitdiff
path: root/scripts/pagelist.php
diff options
context:
space:
mode:
authorpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2021-12-22 22:44:43 +0000
committerpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2021-12-22 22:44:43 +0000
commit2b18ee5d9add1f60137d38c327de844346667ee7 (patch)
treefa610f98721a25094e484b780ff080d41279e112 /scripts/pagelist.php
parentddb3d913d9a8e9b32e2cedd5ae5b48d5a90b941a (diff)
downloadpmwiki.svn-2b18ee5d9add1f60137d38c327de844346667ee7.tar.bz2
Pagelist correct bug with link= negation.
git-svn-id: svn://pmwiki.org/pmwiki/trunk@3859 524c5546-5005-0410-9a3e-e25e191bd360
Diffstat (limited to 'scripts/pagelist.php')
-rw-r--r--scripts/pagelist.php14
1 files changed, 8 insertions, 6 deletions
diff --git a/scripts/pagelist.php b/scripts/pagelist.php
index efa75b36..f7c95d83 100644
--- a/scripts/pagelist.php
+++ b/scripts/pagelist.php
@@ -462,7 +462,8 @@ function PageListTermsTargets(&$list, &$opt, $pn, &$page) {
function PageListMatchTargets($targets, $links) {
$targets = preg_split('/[, ]+/', trim($targets), -1, PREG_SPLIT_NO_EMPTY);
- if (@$links['pat'] && !MatchNames($targets, $links['pat'])) return false;
+ if (@$links['any'] && !MatchNames($targets, $links['any'])) return false;
+ if (@$links['none'] && MatchNames($targets, $links['none'])) return false;
if (@$links['req']) foreach($links['req'] as $pat)
if (!MatchNames($targets, $pat)) return false;
return true;
@@ -476,13 +477,14 @@ function PageListLinkPatterns($pat) {
$pat = preg_quote($pat, '/');
$pat = str_replace(array('\\*', '\\?', '\\[', '\\]', '\\^', '\\-', '\\+', ','),
array('.*', '.', '[', ']', '^', '-', '+', ' '), $pat);
- $patterns = $req = array();
+ $any = $none = false; $req = array();
+ $patterns = array('req'=>array());
$args = ParseArgs($pat);
- if (@$args['']) $patterns[] = '/^('.implode('|', $args['']).')$/';
- if (@$args['-']) $patterns[] = '!^('.implode('|', $args['-']).')$!';
- if (@$args['+']) foreach($args['+'] as $p) $req[] = "/^$p$/";
+ if (@$args['']) $patterns['any'] = '/^('.implode('|', $args['']).')$/';
+ if (@$args['-']) $patterns['none'] = '/^('.implode('|', $args['-']).')$/';
+ if (@$args['+']) foreach($args['+'] as $p) $patterns['req'][] = "/^$p$/";
- return array('pat'=>$patterns, 'req'=>$req);
+ return $patterns;
}
function PageListVariables(&$list, &$opt, $pn, &$page) {