Skip to content

Commit

Permalink
fix check link existence, have to call getLastRevisionAt for every link
Browse files Browse the repository at this point in the history
  • Loading branch information
lisps committed Feb 22, 2014
1 parent 4cd9f79 commit 90bee60
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 8 deletions.
33 changes: 26 additions & 7 deletions inc/pageutils.php
Expand Up @@ -231,7 +231,13 @@ function sectionID($title,&$check) {
*
* @author Chris Smith <chris@jalakai.co.uk>
*/
function page_exists($id,$rev='',$clean=true) {
function page_exists($id,$rev='',$clean=true, $data_at=false) {
if($rev !== '' && $date_at) {
$pagelog = new PageChangeLog($page);
$pagelog_rev = $pagelog->getLastRevisionAt($rev);
if($pagelog_rev !== false)
$rev = $pagelog_rev;
}
return @file_exists(wikiFN($id,$rev,$clean));
}

Expand Down Expand Up @@ -432,7 +438,14 @@ function resolve_id($ns,$id,$clean=true){
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function resolve_mediaid($ns,&$page,&$exists,$rev='' ){
function resolve_mediaid($ns,&$page,&$exists,$rev='',$date_at=false){
if($rev !== '' && $date_at){
$medialog = new MediaChangeLog($media_id);
$medialog_rev = $medialog->getLastRevisionAt($rev);
if($medialog_rev !== false) {
$rev = $medialog_rev;
}
}
$page = resolve_id($ns,$page);
$file = mediaFN($page,$rev);
$exists = @file_exists($file);
Expand All @@ -443,7 +456,7 @@ function resolve_mediaid($ns,&$page,&$exists,$rev='' ){
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function resolve_pageid($ns,&$page,&$exists,$rev='' ){
function resolve_pageid($ns,&$page,&$exists,$rev='',$date_at=false ){
global $conf;
global $ID;
$exists = false;
Expand All @@ -463,20 +476,26 @@ function resolve_pageid($ns,&$page,&$exists,$rev='' ){
$page = resolve_id($ns,$page,false); // resolve but don't clean, yet

// get filename (calls clean itself)
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'],$rev)){
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),$rev))){
}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,$rev)){
}elseif(page_exists($page,$rev,true,$date_at)){
// page like namespace exists
$page = $page;
$exists = true;
Expand All @@ -493,7 +512,7 @@ function resolve_pageid($ns,&$page,&$exists,$rev='' ){
}else{
$try = $page.'s';
}
if(page_exists($try,$rev)){
if(page_exists($try,$rev,true,$date_at)){
$page = $try;
$exists = true;
}
Expand Down
2 changes: 1 addition & 1 deletion inc/parser/xhtml.php
Expand Up @@ -589,7 +589,7 @@ function internallink($id, $name = null, $search=null,$returnonly=false,$linktyp
$default = $this->_simpleTitle($id);

// now first resolve and clean up the $id
resolve_pageid(getNS($ID),$id,$exists,$this->date_at);
resolve_pageid(getNS($ID),$id,$exists,$this->date_at,true);

$name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
if ( !$isImage ) {
Expand Down

0 comments on commit 90bee60

Please sign in to comment.