diff --git a/doku.php b/doku.php index 17ec824a9100f668b2b92c94711fc598229153b5..e90f8bea2af0ffd60389749f8be17eb38488f039 100644 --- a/doku.php +++ b/doku.php @@ -49,7 +49,8 @@ $SUF = cleanText($INPUT->post->str('suffix')); $SUM = $INPUT->post->str('summary'); if($DATE_AT) { - $rev_t = getProperRevision($ID,$DATE_AT); + $pagelog = new PageChangeLog($ID); + $rev_t = $pagelog->getLastRevisionAt($DATE_AT); if($rev_t === '') { $REV = ''; } else if ($rev_t === false) { diff --git a/inc/changelog.php b/inc/changelog.php index 75fe29e5b8452fbcd7a035284fd3d4bcb8a14d63..ccb5f7a3e9f598effdba2d1df7120372d1e9acea 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -771,6 +771,25 @@ abstract class ChangeLog { public function isCurrentRevision($rev) { return $rev == @filemtime($this->getFilename()); } + + /** + * Return an existing revision for a specific date which is + * the current one or younger or equal then the date + * + * @param string $id + * @param number $date_at timestamp + * @return string revision ('' for current) + */ + function getLastRevisionAt($date_at){ + //requested date_at(timestamp) younger or equal then modified_time($this->id) => load current + if($date_at >= @filemtime($this->getFilename())) { + return ''; + } else if ($rev = $this->getRelativeRevision($date_at+1, -1)) { //+1 to get also the requested date revision + return $rev; + } else { + return false; + } + } } class PageChangelog extends ChangeLog { @@ -870,25 +889,3 @@ function getRevisions($id, $first, $num, $chunk_size=8192, $media=false) { return $changelog->getRevisions($first, $num); } -/** -* Return an existing revision for a specific date which is -* the current one or less or equal then the date -* -* @param string $id -* @param number $date_at -* @param boolean $media -* @return string revision ('' for current) -*/ -function getProperRevision($id,$date_at,$media = false){ - $modified_time = @filemtime($media?mediaFN($id):wikiFN($id)); - if(((int)$date_at) >= $modified_time) { //requestet REV younger or equal then time($id) => load current - return ''; - } else { - $log = new PageRevisionLog($id); - if($rev = $log->getRelativeRevision($date_at+1, -1,$media)) { - return $rev; - } else { - return false; - } - } -} diff --git a/inc/common.php b/inc/common.php index 106bf7c1570cfd27dbc5ac22471f9d5d84e34aff..5dcf58e39a705aad9b595121740f623945ec62bf 100644 --- a/inc/common.php +++ b/inc/common.php @@ -484,6 +484,7 @@ function ml($id = '', $more = '', $direct = true, $sep = '&', $abs = false) if(empty($more['w'])) unset($more['w']); if(empty($more['h'])) unset($more['h']); if(isset($more['id']) && $direct) unset($more['id']); + if(isset($more['rev']) && !$more['rev']) unset($more['rev']); $more = buildURLparams($more, $sep); } else { $matches = array(); diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index f6e186cdb9b7dd4b481a9f40ab0b63a4742c8c4b..76aecac1077b2a82d8b0ee41292fe0980e18b6b2 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -1060,7 +1060,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $height=null, $cache=null, $render = true) { $ret = ''; - $intern = !is_externalmedia($src); + $intern = !media_isexternal($src); list($ext,$mime,$dl) = mimetype($src); if(substr($mime,0,5) == 'image'){ // first get the $title @@ -1248,7 +1248,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer { * @return string revision ('' for current) */ function _getProperMediaRevision($media_id){ - return getProperRevision($media_id,$this->date_at,true); + $pagelog = new MediaChangeLog($media_id); + return $pagelog->getLastRevisionAt($this->date_at); }