Beispiel #1
0
function wiki_link($target, $text, $unknown = FALSE, $version = 'Current', $fullurl = false)
{
    global $WIKI_PAGEDIR, $WIKI_REPOSITORY, $_SERVER;
    if ($fullurl) {
        $prefix = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '/';
    }
    $cur = $version == 'Current';
    if ($cur) {
        $realversion = key(rcs_get_revisions($WIKI_PAGEDIR . $target));
    } else {
        $realversion = $version;
    }
    return ($unknown ? "<span class='wikiwordunknown'>{$text}" : "") . '<a href="' . $prefix . pqurlencode($target) . ($realversion ? ";{$realversion}" : '') . '"' . ($realversion ? ' title="' . $text . " v{$realversion}" . ($cur ? ' (Current)' : '') . '"' : '') . ($unknown ? '' : ' class="wikiword"') . '>' . ($unknown ? '?' : $text) . '</a>' . ($unknown ? '</span>' : '');
}
Beispiel #2
0
 function link_known_wikipage($page, $text)
 {
     #$$e = $this->environment();
     if (is_dir($this->pagedir . $page)) {
         return parent::link_known_wikipage($page, $text);
     }
     $t = rcs_get_revisions($this->pagedir . $page);
     $realversion = key($t);
     return '<a href="' . pqurlencode($page) . ($realversion ? ";{$realversion}" : '') . '"' . ($realversion ? ' title="' . $text . " v{$realversion}" . '"' : '') . '>' . $text . '</a>';
     return $text;
 }
Beispiel #3
0
function wiki_save_page($pagename, $data, $logmessage = 'No message', $headers = array(), $noindex = false)
{
    global $WIKI_REPOSITORY, $_SERVER, $WIKI_PAGEDIR, $PATH_INFO, $currentver, $revisions;
    $blacklist = file(WIKI_BLACKLIST);
    foreach ($blacklist as $b) {
        $b = trim($b);
        if (preg_match('!/!', $b) && ip_in_block($_SERVER['REMOTE_ADDR'], $b) || $_SERVER['REMOTE_ADDR'] == $b) {
            mail('*****@*****.**', "Wiki Spam Post from " . $_SERVER['REMOTE_ADDR'], "Page: {$pagename}\nData:\n{$data}\n\nLog Message: {$logmessage}\n");
            sleep(60);
            return true;
        }
    }
    $headers = array('title' => $pagename);
    if ($noindex) {
        if (!succeeds(robots_exclude("*", $_SERVER['SCRIPT_NAME'] . "/{$WIKI_REPOSITORY}" . $pagename))) {
            die("Robots exclude error: " . errmsg());
        }
        $headers['robots'] = 'NoIndex';
    }
    if ($previous = wiki_load($pagename, 'Current')) {
        $headers = array_merge(mime_parse_header($previous['header']), $headers);
    }
    if (succeeds(rcs_store($WIKI_PAGEDIR . "{$pagename}", mime_make_header($headers) . "\n\n" . str_replace("\r\n", "\n", $data), (is_logged_in() ? "by " . $_SERVER['REMOTE_ADDR'] . "\n" : "") . $logmessage))) {
        $revisions = array_keys(rcs_get_revisions($WIKI_PAGEDIR . "{$pagename}"));
        $currentver = array_shift($revisions);
        //			if($revisions[2] == $srcversion and $srcversion) {
        //FIXME: rcs_version_inc is a hack -- should check to see
        // what revision came up.  Some pages get saved with no
        // changes, see...
        return true;
    } else {
        return false;
    }
}
Beispiel #4
0
function rcs_dereference_version($filename, $version)
{
    $revisions = rcs_get_revisions($filename);
    if ($version == 'Current') {
        if (count($revisions)) {
            return key($revisions);
        } else {
            return '1.1';
        }
    } elseif ($version == 'Last') {
        array_shift($revisions);
        if (key($revisions)) {
            return key($revisions);
        } else {
            return '1.1';
        }
    } else {
        return $version;
    }
}