function action_history()
{
    global $pagestore, $page, $full, $HistMax;
    $history = $pagestore->history($page);
    gen_headers($history[0][0]);
    $text = '';
    $latest_auth = '';
    $previous_ver = 0;
    $is_latest = 1;
    for ($i = 0; $i < count($history); $i++) {
        if ($latest_auth == '') {
            $latest_auth = $history[$i][3] == '' ? $history[$i][1] : $history[$i][3];
            $latest_ver = $history[$i][2];
        }
        if ($previous_ver == 0 && $latest_auth != ($history[$i][3] == '' ? $history[$i][1] : $history[$i][3])) {
            $previous_ver = $history[$i][2];
        }
        if ($i < $HistMax || $full) {
            $text = $text . html_history_entry($page, $history[$i][2], $history[$i][0], $history[$i][1], $history[$i][3], $previous_ver == $history[$i][2] || !$full && $i == count($history) - 1, $is_latest, $history[$i][4]);
        }
        $is_latest = 0;
    }
    if ($i >= $HistMax && !$full) {
        $text = $text . html_fullhistory($page, count($history));
    }
    $p1 = $pagestore->page($page);
    $p1->version = $previous_ver;
    $p2 = $pagestore->page($page);
    $p2->version = $latest_ver;
    $diff = diff_compute($p1->read(), $p2->read());
    template_history(array('page' => $p2->as_array(), 'history' => $text, 'diff' => diff_parse($diff)));
}
Example #2
0
function do_diff($body1, $body2)
{
    global $diff_mode, $DiffModeCookieName, $EnableWordDiff, $HTTP_COOKIE_VARS;
    if ($EnableWordDiff) {
        if (!isset($diff_mode)) {
            if (isset($HTTP_COOKIE_VARS[$DiffModeCookieName])) {
                $diff_mode = $HTTP_COOKIE_VARS[$DiffModeCookieName];
            } else {
                $diff_mode = 0;
            }
        }
        if (!isset($HTTP_COOKIE_VARS[$DiffModeCookieName]) || $diff_mode != $HTTP_COOKIE_VARS[$DiffModeCookieName]) {
            setcookie($DiffModeCookieName, $diff_mode, time() + 157680000, "/", false);
        }
    } else {
        $diff_mode = 0;
    }
    // diff mode: 0 = regular diff, 1 = word diff
    if ($diff_mode == 1) {
        $diff = wdiff_compute($body1, $body2);
        $diff = wdiff_parse($diff);
    } else {
        $diff = diff_compute($body1, $body2);
        $diff = diff_parse($diff);
    }
    return $diff;
}
Example #3
0
function action_diff()
{
    global $pagestore, $page, $ver1, $ver2, $ParseEngine;
    $p1 = $pagestore->page($page);
    $p1->version = $ver1;
    $p2 = $pagestore->page($page);
    $p2->version = $ver2;
    $diff = diff_compute($p1->read(), $p2->read());
    template_diff(array('page' => $p2->as_array(), 'diff_html' => diff_parse($diff), 'html' => parseText($p2->text, $ParseEngine, $page), 'editable' => $p2->acl_check(), 'timestamp' => $p2->time));
}
Example #4
0
function action_diff()
{
    global $page, $pagestore, $ParseEngine, $UserName, $ver1, $ver2;
    $p1 = $pagestore->page($page);
    $p1->version = $ver1;
    $p2 = $pagestore->page($page);
    $p2->version = $ver2;
    $diff = diff_compute($p1->read(), $p2->read());
    template_diff(array('page' => $page, 'diff_html' => diff_parse($diff), 'html' => parseText($p2->text, $ParseEngine, $page), 'editable' => $p2->mutable, 'timestamp' => $p2->time, 'editver' => $UserName && $p2->mutable ? 0 : -1));
}
Example #5
0
function action_rss()
{
    global $days, $min, $page, $pagestore;
    $itemdesc = '';
    if ($min == 0) {
        $min = 10;
    }
    if ($days == 0) {
        $days = 2;
    }
    if (!isset($_GET['page'])) {
        $page = 'RecentChanges';
    }
    if ($page == 'RecentChanges') {
        $pages = $pagestore->allpages();
    } else {
        $pages = $pagestore->givenpages(array($page));
    }
    usort($pages, 'catSort');
    $now = time();
    for ($i = 0; $i < count($pages); $i++) {
        if ($page == 'RecentChanges') {
            if ($days >= 0 && $now - $pages[$i][0] > $days * 24 * 60 * 60 && $i >= $min) {
                break;
            }
        }
        // Gets the diff as it shows by default on History page.
        // See diff_get_history_versions in lib/diff.php.
        $history = $pagestore->history($pages[$i][1]);
        $versions = diff_get_history_versions($history);
        $latest_ver = $versions['latest_ver'];
        $previous_ver = $versions['previous_ver'];
        $p1 = $pagestore->page($pages[$i][1]);
        $p1->version = $previous_ver;
        $p2 = $pagestore->page($pages[$i][1]);
        $p2->version = $latest_ver;
        if ($previous_ver == $latest_ver) {
            $diff = $p1->read();
            $diff = explode("\n", $diff);
            foreach ($diff as $key => $value) {
                $diff[$key] = "+{$value}";
            }
            $diff = implode("\n", $diff);
        } else {
            $diff = diff_compute($p1->read(), $p2->read());
        }
        $diff = diff_parse($diff);
        $diff = str_replace('<td class="diff-added">', '<td style="background-color:#ccffcc;color:#000000;">', $diff);
        $diff = str_replace('<td class="diff-removed">', '<td style="background-color:#ffaaaa;color:#000000;">', $diff);
        #$diff = preg_replace('/\n/', chr(13) . chr(10), $diff);
        #$diff = preg_replace('/\n/', "<br>\n", $diff);
        $itemdesc = $itemdesc . '<item>' . "\n" . '<title>' . $pages[$i][1] . '</title>' . "\n" . '<pubDate>' . date('r', $pages[$i][0]) . '</pubDate>' . "\n" . '<link>' . viewFullURL($pages[$i][1]) . '&amp;' . $pages[$i][7] . '</link>' . "\n" . '<description>' . htmlspecialchars(($pages[$i][5] ? $pages[$i][5] . "<br>\n<br>\n" : '') . $diff) . '</description>' . "\n" . '</item>' . "\n\n";
    }
    template_rss(array('itemdesc' => $itemdesc, 'page' => $page));
}