diff options
author | petko <petko@524c5546-5005-0410-9a3e-e25e191bd360> | 2021-12-22 22:44:43 +0000 |
---|---|---|
committer | petko <petko@524c5546-5005-0410-9a3e-e25e191bd360> | 2021-12-22 22:44:43 +0000 |
commit | 2b18ee5d9add1f60137d38c327de844346667ee7 (patch) | |
tree | fa610f98721a25094e484b780ff080d41279e112 /scripts/pagelist.php | |
parent | ddb3d913d9a8e9b32e2cedd5ae5b48d5a90b941a (diff) | |
download | pmwiki.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.php | 14 |
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) { |