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>' : ''); }
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; }
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; } }
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; } }