Example #1
0
    $date_parse = strtotime($DATE_AT);
    if ($date_parse) {
        $DATE_AT = $date_parse;
    } else {
        // check for UNIX Timestamp
        $date_parse = @date('Ymd', $DATE_AT);
        if (!$date_parse || $date_parse === '19700101') {
            msg(sprintf($lang['unable_to_parse_date'], $DATE_AT));
            $DATE_AT = null;
        }
    }
}
//check for existing $REV related to $DATE_AT
if ($DATE_AT) {
    $pagelog = new PageChangeLog($ID);
    $rev_t = $pagelog->getLastRevisionAt($DATE_AT);
    if ($rev_t === '') {
        //current revision
        $REV = null;
        $DATE_AT = null;
    } else {
        if ($rev_t === false) {
            //page did not exist
            $rev_n = $pagelog->getRelativeRevision($DATE_AT, +1);
            msg(sprintf($lang['page_nonexist_rev'], strftime($conf['dformat'], $DATE_AT), wl($ID, array('rev' => $rev_n)), strftime($conf['dformat'], $rev_n)));
            $REV = $DATE_AT;
            //will result in a page not exists message
        } else {
            $REV = $rev_t;
        }
    }
Example #2
0
/**
 * Returns a full page id
 *
 * @author Andreas Gohr <*****@*****.**>
 *
 * @param string  $ns     namespace which is context of id
 * @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, $rev = '', $date_at = false)
{
    global $conf;
    global $ID;
    $exists = false;
    //empty address should point to current page
    if ($page === "") {
        $page = $ID;
    }
    //keep hashlink if exists then clean both parts
    if (strpos($page, '#')) {
        list($page, $hash) = explode('#', $page, 2);
    } else {
        $hash = '';
    }
    $hash = cleanID($hash);
    $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, true, $date_at)) {
            // start page inside namespace
            $page = $page . $conf['start'];
            $exists = true;
        } 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, true, $date_at)) {
            // page like namespace exists
            $page = $page;
            $exists = true;
        } else {
            // fall back to default
            $page = $page . $conf['start'];
        }
    } else {
        //check alternative plural/nonplural form
        if (!@file_exists($file)) {
            if ($conf['autoplural']) {
                if (substr($page, -1) == 's') {
                    $try = substr($page, 0, -1);
                } else {
                    $try = $page . 's';
                }
                if (page_exists($try, $rev, true, $date_at)) {
                    $page = $try;
                    $exists = true;
                }
            }
        } else {
            $exists = true;
        }
    }
    // now make sure we have a clean page
    $page = cleanID($page);
    //add hash if any
    if (!empty($hash)) {
        $page .= '#' . $hash;
    }
}
 /**
  * request nonexisting page
  *
  */
 function test_notexistingpage()
 {
     $rev = 1385051947;
     $currentexpected = false;
     $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
     $current = $pagelog->getLastRevisionAt($rev);
     $this->assertEquals($currentexpected, $current);
 }