diff options
author | Gerrit Uitslag <klapinklapin@gmail.com> | 2014-12-09 17:26:28 +0100 |
---|---|---|
committer | Gerrit Uitslag <klapinklapin@gmail.com> | 2014-12-09 17:26:28 +0100 |
commit | 8702de7f7e170bddfdb622c393c3cac3446fd1c5 (patch) | |
tree | c7269ea61f5d4230a6f916dbabee4ce412e0a9fb /inc/pageutils.php | |
parent | 1cc82e5c76ae7fcd646e448404afdc0fd458bf55 (diff) | |
parent | 9a0ca2cfd8ac42895af3be2efbd2cab7e6d33578 (diff) | |
download | rpg-8702de7f7e170bddfdb622c393c3cac3446fd1c5.tar.gz rpg-8702de7f7e170bddfdb622c393c3cac3446fd1c5.tar.bz2 |
Merge remote-tracking branch 'origin/master' into scrutinizerissues
Conflicts:
inc/media.php
inc/plugin.php
inc/template.php
lib/plugins/authplain/_test/escaping.test.php
lib/plugins/syntax.php
Diffstat (limited to 'inc/pageutils.php')
-rw-r--r-- | inc/pageutils.php | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/inc/pageutils.php b/inc/pageutils.php index b9c6418e2..2fbcbfd1f 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -256,7 +256,13 @@ function sectionID($title,&$check) { * @param bool $clean flag indicating that $id should be cleaned (see wikiFN as well) * @return bool exists? */ -function page_exists($id,$rev='',$clean=true) { +function page_exists($id,$rev='',$clean=true, $date_at=false) { + if($rev !== '' && $date_at) { + $pagelog = new PageChangeLog($id); + $pagelog_rev = $pagelog->getLastRevisionAt($rev); + if($pagelog_rev !== false) + $rev = $pagelog_rev; + } return @file_exists(wikiFN($id,$rev,$clean)); } @@ -487,9 +493,17 @@ function resolve_id($ns,$id,$clean=true){ * @param string &$page (reference) relative media id, updated to resolved id * @param bool &$exists (reference) updated with existance of media */ -function resolve_mediaid($ns,&$page,&$exists){ +function resolve_mediaid($ns,&$page,&$exists,$rev='',$date_at=false){ $page = resolve_id($ns,$page); - $file = mediaFN($page); + if($rev !== '' && $date_at){ + $medialog = new MediaChangeLog($page); + $medialog_rev = $medialog->getLastRevisionAt($rev); + if($medialog_rev !== false) { + $rev = $medialog_rev; + } + } + + $file = mediaFN($page,$rev); $exists = @file_exists($file); } @@ -502,7 +516,7 @@ function resolve_mediaid($ns,&$page,&$exists){ * @param string &$page (reference) relative page id, updated to resolved id * @param bool &$exists (reference) updated with existance of media */ -function resolve_pageid($ns,&$page,&$exists){ +function resolve_pageid($ns,&$page,&$exists,$rev='',$date_at=false ){ global $conf; global $ID; $exists = false; @@ -522,20 +536,26 @@ function resolve_pageid($ns,&$page,&$exists){ $page = resolve_id($ns,$page,false); // resolve but don't clean, yet // get filename (calls clean itself) - $file = wikiFN($page); + if($rev !== '' && $date_at) { + $pagelog = new PageChangeLog($page); + $pagelog_rev = $pagelog->getLastRevisionAt($rev); + if($pagelog_rev !== false)//something found + $rev = $pagelog_rev; + } + $file = wikiFN($page,$rev); // if ends with colon or slash we have a namespace link if(in_array(substr($page,-1), array(':', ';')) || ($conf['useslash'] && substr($page,-1) == '/')){ - if(page_exists($page.$conf['start'])){ + if(page_exists($page.$conf['start'],$rev,true,$date_at)){ // start page inside namespace $page = $page.$conf['start']; $exists = true; - }elseif(page_exists($page.noNS(cleanID($page)))){ + }elseif(page_exists($page.noNS(cleanID($page)),$rev,true,$date_at)){ // page named like the NS inside the NS $page = $page.noNS(cleanID($page)); $exists = true; - }elseif(page_exists($page)){ + }elseif(page_exists($page,$rev,true,$date_at)){ // page like namespace exists $page = $page; $exists = true; @@ -552,7 +572,7 @@ function resolve_pageid($ns,&$page,&$exists){ }else{ $try = $page.'s'; } - if(page_exists($try)){ + if(page_exists($try,$rev,true,$date_at)){ $page = $try; $exists = true; } |