作者:BogusCurr
项目:pmwik
function MakeUTF8PageName($basepage, $x)
{
global $PagePathFmt;
$PageNameChars = '-\\w\\x80-\\xff';
if (!preg_match('/(?:([^.\\/]+)[.\\/])?([^.\\/]+)$/', $x, $m)) {
return '';
}
$name = preg_replace("/[^{$PageNameChars}]+/", ' ', $m[2]);
$name = preg_replace('/(?<=^| )(.)/eu', "mb_strtoupper('\$1','UTF-8')", $name);
$name = str_replace(' ', '', $name);
if ($m[1]) {
$group = preg_replace("/[^{$PageNameChars}]+/", ' ', $m[1]);
$group = preg_replace('/(?<=^| )(.)/eu', "mb_strtoupper('\$1','UTF-8')", $group);
$group = str_replace(' ', '', $group);
return "{$group}.{$name}";
}
foreach ((array) $PagePathFmt as $pg) {
$pn = FmtPageName(str_replace('$1', $name, $pg), $basepage);
if (PageExists($pn)) {
return $pn;
}
}
$group = preg_replace('/[\\/.].*$/', '', $basepage);
return "{$group}.{$name}";
}
作者:BogusCurr
项目:pmwik
function MergeSimulEdits($pagename,&$page,&$new) {
global $Now, $EnablePost, $MessagesFmt, $WorkDir;
if (@!$_POST['basetime'] || !PageExists($pagename)
|| $page['time'] >= $Now
|| $_POST['basetime']>=$page['time']
|| $page['text'] == $new['text']) return;
$EnablePost = 0;
$old = array();
RestorePage($pagename,$page,$old,"diff:{$_POST['basetime']}");
$text = Merge($new['text'],$old['text'],$page['text']);
if ($text > '') { $new['text'] = $text; $ec = '$[EditConflict]'; }
else $ec = '$[EditWarning]';
XLSDV('en', array(
'EditConflict' => "The page you are
editing has been modified since you started editing it.
The modifications have been merged into the text below,
you may want to verify the results of the merge before
pressing save. Conflicts the system couldn't resolve are
bracketed by <<<<<<< and
>>>>>>>.",
'EditWarning' => "The page you are editing has been modified
since you started editing it. If you continue, your
changes will overwrite any changes that others have made."));
$MessagesFmt[] = "<p class='editconflict'>$ec
(<a target='_blank' href='\$PageUrl?action=diff'>$[View changes]</a>)
</p>\n";
}
作者:BogusCurr
项目:pmwik
function EditDraft(&$pagename, &$page, &$new)
{
global $WikiDir, $DraftSuffix, $DeleteKeyPattern, $EnableDraftAtomicDiff, $DraftRecentChangesFmt, $RecentChangesFmt, $Now;
SDV($DeleteKeyPattern, "^\\s*delete\\s*\$");
$basename = preg_replace("/{$DraftSuffix}\$/", '', $pagename);
$draftname = $basename . $DraftSuffix;
if ($_POST['postdraft'] || $_POST['postedit']) {
$pagename = $draftname;
} else {
if ($_POST['post'] && !preg_match("/{$DeleteKeyPattern}/", $new['text'])) {
$pagename = $basename;
if (IsEnabled($EnableDraftAtomicDiff, 0)) {
$page = ReadPage($basename);
foreach ($new as $k => $v) {
# delete draft history
if (preg_match('/:\\d+(:\\d+:)?$/', $k) && !preg_match("/:{$Now}(:\\d+:)?\$/", $k)) {
unset($new[$k]);
}
}
unset($new['rev']);
SDVA($new, $page);
}
$WikiDir->delete($draftname);
} else {
if (PageExists($draftname) && $pagename != $draftname) {
Redirect($draftname, '$PageUrl?action=edit');
exit;
}
}
}
if ($pagename == $draftname && isset($DraftRecentChangesFmt)) {
$RecentChangesFmt = $DraftRecentChangesFmt;
}
}
作者:anomen-
项目:pmwiki-recipe
function RetrievePageMarkup($pagelist)
{
foreach ($pagelist as $p) {
if (PageExists($p)) {
$page = RetrieveAuthPage($p, 'read', false, READPAGE_CURRENT);
return array($page['text'], $page['title']);
break;
}
}
return null;
}
作者:BogusCurr
项目:pmwik
function MergeSimulEdits($pagename, &$page, &$new)
{
global $MessagesFmt, $WorkDir, $SysMergeCmd;
SDV($SysMergeCmd, "/usr/bin/diff3 -L '' -L '' -L '' -m -E");
if (@(!$_POST['basetime']) || !PageExists($pagename) || $_POST['basetime'] >= $page['time']) {
return;
}
unset($_POST['post']);
$MessagesFmt[] = "<p class='editconflict'>The page you are \n editing has been modified since you started editing it. \n The modifications have been merged into the text below,\n you may want to verify the results of the merge before\n pressing save. Conflicts the system couldn't resolve are\n bracketed by <<<<<<< and \n >>>>>>>. (<a target='_blank' \n href='\$PageUrl?action=diff'>View changes</a>)</p>\n";
$old = array();
RestorePage($pagename, $page, $old, "diff:{$_POST['basetime']}");
$new['text'] = Merge($new['text'], $old['text'], $page['text']);
}
作者:BogusCurr
项目:pmwik
function EditDraft(&$pagename, &$page, &$new) {
global $WikiDir, $DraftSuffix, $DeleteKeyPattern,
$DraftRecentChangesFmt, $RecentChangesFmt;
SDV($DeleteKeyPattern, "^\\s*delete\\s*$");
$basename = preg_replace("/$DraftSuffix\$/", '', $pagename);
$draftname = $basename . $DraftSuffix;
if ($_POST['postdraft'] || $_POST['postedit']) $pagename = $draftname;
else if ($_POST['post'] && !preg_match("/$DeleteKeyPattern/", $new['text'])) {
$pagename = $basename;
# $page = ReadPage($basename); # breaks restores, PITS:01007, Test:DraftRestore
$WikiDir->delete($draftname);
}
else if (PageExists($draftname) && $pagename != $draftname)
{ Redirect($draftname, '$PageUrl?action=edit'); exit(); }
if ($pagename == $draftname && isset($DraftRecentChangesFmt))
$RecentChangesFmt = $DraftRecentChangesFmt;
}
作者:BogusCurr
项目:pmwik
function EditDraft(&$pagename, &$page, &$new)
{
global $WikiDir, $DraftSuffix, $DeleteKeyPattern;
SDV($DeleteKeyPattern, "^\\s*delete\\s*\$");
$basename = preg_replace("/{$DraftSuffix}\$/", '', $pagename);
$draftname = $basename . $DraftSuffix;
if ($_POST['postdraft']) {
$pagename = $draftname;
return;
}
if ($_POST['post'] && !preg_match("/{$DeleteKeyPattern}/", $new['text'])) {
$pagename = $basename;
$page = ReadPage($basename);
$WikiDir->delete($draftname);
return;
}
if (PageExists($draftname) && $pagename != $draftname) {
Redirect($draftname, '$PageUrl?action=edit');
exit;
}
}
作者:gregorklari
项目:wikigaller
function WikiGallerySlideshow($pagename, $auth = 'read')
{
global $WikiGallery_DefaultSlideshowDelay, $HTMLHeaderFmt, $WikiGallery_Register;
// get delay from url
if (isset($_GET["delay"])) {
$delay = intval($_GET["delay"]);
} else {
$delay = $WikiGallery_DefaultSlideshowDelay;
}
// find following picture
$group = PageVar($pagename, '$Group');
$next = $WikiGallery_Register[$group]->neighbourPicturePage(PageVar($pagename, '$Name'), 1);
$nextpage = "{$group}.{$next}";
// exists?
if ($next && PageExists($nextpage)) {
// add refresh header
$url = MakeLink($nextpage, $nextpage, NULL, NULL, "\$LinkUrl");
array_unshift($HTMLHeaderFmt, "<meta http-equiv=\"refresh\" content=\"{$delay}; URL={$url}?action=slideshow&delay={$delay}\" />");
}
return HandleBrowse($pagename, $auth);
}
作者:LOZOR
项目:UPL-Website-Revam
function EditDraft(&$pagename, &$page, &$new)
{
global $WikiDir, $DraftSuffix, $DeleteKeyPattern, $DraftRecentChangesFmt, $RecentChangesFmt;
SDV($DeleteKeyPattern, "^\\s*delete\\s*\$");
$basename = preg_replace("/{$DraftSuffix}\$/", '', $pagename);
$draftname = $basename . $DraftSuffix;
if ($_POST['postdraft'] || $_POST['postedit']) {
$pagename = $draftname;
} else {
if ($_POST['post'] && !preg_match("/{$DeleteKeyPattern}/", $new['text'])) {
$pagename = $basename;
$page = ReadPage($basename);
$WikiDir->delete($draftname);
} else {
if (PageExists($draftname) && $pagename != $draftname) {
Redirect($draftname, '$PageUrl?action=edit');
exit;
}
}
}
if ($pagename == $draftname && isset($DraftRecentChangesFmt)) {
$RecentChangesFmt = $DraftRecentChangesFmt;
}
}
作者:BogusCurr
项目:pmwik
function PrintRefCount($pagename)
{
global $GroupPattern, $NamePattern, $PageRefCountFmt, $RefCountTimeFmt;
$pagelist = ListPages();
$grouplist = array();
foreach ($pagelist as $pname) {
if (!preg_match("/^({$GroupPattern})[\\/.]({$NamePattern})\$/", $pname, $m)) {
continue;
}
$grouplist[$m[1]] = $m[1];
}
asort($grouplist);
$grouplist = array_merge(array('all' => 'all groups'), $grouplist);
$wlist = array('all', 'missing', 'existing', 'orphaned');
$tlist = isset($_REQUEST['tlist']) ? $_REQUEST['tlist'] : array('all');
$flist = isset($_REQUEST['flist']) ? $_REQUEST['flist'] : array('all');
$whichrefs = @$_REQUEST['whichrefs'];
$showrefs = @$_REQUEST['showrefs'];
$submit = @$_REQUEST['submit'];
echo FmtPageName($PageRefCountFmt, $pagename);
echo "<form method='post'><input type='hidden' action='refcount'>\n <table cellspacing='10'><tr><td valign='top'>Show\n <br><select name='whichrefs'>";
foreach ($wlist as $w) {
echo "<option ", $whichrefs == $w ? 'selected' : '', " value='{$w}'>{$w}\n";
}
echo "</select></td><td valign='top'> page names in group<br>\n <select name='tlist[]' multiple size='4'>";
foreach ($grouplist as $g => $t) {
echo "<option ", in_array($g, $tlist) ? 'selected' : '', " value='{$g}'>{$t}\n";
}
echo "</select></td><td valign='top'> referenced from pages in<br>\n <select name='flist[]' multiple size='4'>";
foreach ($grouplist as $g => $t) {
echo "<option ", in_array($g, $flist) ? 'selected' : '', " value='{$g}'>{$t}\n";
}
echo "</select></td></tr></table>\n <p><input type='checkbox' name='showrefs' value='checked' {$showrefs}>\n Display referencing pages\n <p><input type='submit' name='submit' value='Search'></form><p><hr>";
if ($submit) {
foreach ($pagelist as $pname) {
$ref = array();
$page = ReadPage($pname, READPAGE_CURRENT);
if (!$page) {
continue;
}
$tref[$pname]['time'] = $page['time'];
if (!in_array('all', $flist) && !in_array(FmtPageName('$Group', $pname), $flist)) {
continue;
}
$rc = preg_match('/RecentChanges$/', $pname);
foreach (explode(',', @$page['targets']) as $r) {
if ($r == '') {
continue;
}
if ($rc) {
@$tref[$r]['rc']++;
} else {
@$tref[$r]['page']++;
@$pref[$r][$pname]++;
}
}
}
uasort($tref, 'RefCountCmp');
echo "<table >\n <tr><th></th><th colspan='2'>Referring pages</th></tr>\n <tr><th>Name / Time</th><th>All</th><th>R.C.</th></tr>";
reset($tref);
foreach ($tref as $p => $c) {
if (!in_array('all', $tlist) && !in_array(FmtPageName('$Group', $p), $tlist)) {
continue;
}
if ($whichrefs == 'missing' && PageExists($p)) {
continue;
} elseif ($whichrefs == 'existing' && !PageExists($p)) {
continue;
} elseif ($whichrefs == 'orphaned' && (@$tref[$p]['page'] > 0 || !PageExists($p))) {
continue;
}
echo "<tr><td valign='top'>", LinkPage($pagename, '', $p, '', $p);
if (@$tref[$p]['time']) {
echo strftime($RefCountTimeFmt, $tref[$p]['time']);
}
if ($showrefs && is_array(@$pref[$p])) {
foreach ($pref[$p] as $pr => $pc) {
echo "<dd>", LinkPage($pagename, '', $pr, '', $pr);
}
}
echo "</td>";
echo "<td align='center' valign='top'>", @$tref[$p]['page'] + 0, "</td>";
echo "<td align='center' valign='top'>", @$tref[$p]['rc'] + 0, "</td>";
echo "</tr>";
}
echo "</table>";
}
}
作者:jefmu
项目:pmwiki-kit-bootstrap-compas
function bi_IsPage($pn)
{
global $bi_Pagename;
$mp = MakePageName($bi_Pagename, $pn);
if (empty($mp)) {
return true;
}
if ($mp == $bi_Pagename) {
return false;
}
return PageExists($mp);
}
作者:BogusCurr
项目:pmwik
function FPLTemplate($pagename, &$matches, $opt)
{
global $Cursor, $FPLFormatOpt, $FPLTemplatePageFmt;
SDV($FPLTemplatePageFmt, array('{$FullName}', '{$SiteGroup}.LocalTemplates', '{$SiteGroup}.PageListTemplates'));
$template = @$opt['template'];
if (!$template) {
$template = @$opt['fmt'];
}
list($tname, $qf) = explode('#', $template, 2);
if ($tname) {
$tname = array(MakePageName($pagename, $tname));
} else {
$tname = (array) $FPLTemplatePageFmt;
}
foreach ($tname as $t) {
$t = FmtPageName($t, $pagename);
if (!PageExists($t)) {
continue;
}
if ($qf) {
$t .= "#{$qf}";
}
$ttext = IncludeText($pagename, $t, true);
if (!$qf || strpos($ttext, "[[#{$qf}]]") !== false) {
break;
}
}
## remove any anchor markups to avoid duplications
$ttext = preg_replace('/\\[\\[#[A-Za-z][-.:\\w]*\\]\\]/', '', $ttext);
if (!@$opt['order'] && !@$opt['trail']) {
$opt['order'] = 'name';
}
$matches = array_values(MakePageList($pagename, $opt, 0));
if (@$opt['count']) {
array_splice($matches, $opt['count']);
}
$savecursor = $Cursor;
$pagecount = 0;
$groupcount = 0;
$grouppagecount = 0;
$vk = array('{$PageCount}', '{$GroupCount}', '{$GroupPageCount}');
$vv = array(&$pagecount, &$groupcount, &$grouppagecount);
$lgroup = '';
$out = '';
foreach ($matches as $i => $pn) {
$prev = (string) @$matches[$i - 1];
$next = (string) @$matches[$i + 1];
$Cursor['<'] = $Cursor['<'] = $prev;
$Cursor['='] = $pn;
$Cursor['>'] = $Cursor['>'] = $next;
$group = PageVar($pn, '$Group');
if ($group != $lgroup) {
$groupcount++;
$grouppagecount = 0;
}
$grouppagecount++;
$pagecount++;
$item = str_replace($vk, $vv, $ttext);
$item = preg_replace('/\\{(=|&[lg]t;)(\\$:?\\w+)\\}/e', "PageVar(\$pn, '\$2', '\$1')", $item);
$out .= $item;
$lgroup = $group;
}
$class = preg_replace('/[^-a-zA-Z0-9\\x80-\\xff]/', ' ', @$opt['class']);
$div = $class ? "<div class='{$class}'>" : '<div>';
return $div . MarkupToHTML($pagename, $out, array('escape' => 0)) . '</div>';
}
作者:BogusCurr
项目:pmwik
function HandleBrowse($pagename)
{
# handle display of a page
global $DefaultPageTextFmt, $FmtV, $HandleBrowseFmt, $PageStartFmt, $PageEndFmt, $PageRedirectFmt;
Lock(1);
$page = RetrieveAuthPage($pagename, 'read');
if (!$page) {
Abort('?cannot read $pagename');
}
PCache($pagename, $page);
SDV($PageRedirectFmt, "<p><i>(\$[redirected from] \n <a href='\$PageUrl?action=edit'>\$FullName</a>)</i></p>\$HTMLVSpace\n");
if (isset($page['text'])) {
$text = $page['text'];
} else {
$text = FmtPageName($DefaultPageTextFmt, $pagename);
}
if (@(!$_GET['from'])) {
$PageRedirectFmt = '';
if (preg_match('/\\(:redirect\\s+(.+?):\\)/', $text, $match)) {
$rname = MakePageName($pagename, $match[1]);
if (PageExists($rname)) {
Redirect($rname, "\$PageUrl?from={$pagename}");
}
}
} else {
$PageRedirectFmt = FmtPageName($PageRedirectFmt, $_GET['from']);
}
$text = '(:groupheader:)' . @$text . '(:groupfooter:)';
$FmtV['$PageText'] = MarkupToHTML($pagename, $text);
SDV($HandleBrowseFmt, array(&$PageStartFmt, &$PageRedirectFmt, '$PageText', &$PageEndFmt));
PrintFmt($pagename, $HandleBrowseFmt);
}
作者:BogusCurr
项目:pmwik
function HandleFeed($pagename, $auth = 'read')
{
global $FeedFmt, $action, $PCache, $FmtV, $ISOTimeFmt, $RSSTimeFmt, $FeedOpt, $FeedDescPatterns, $CategoryGroup, $EntitiesTable;
SDV($ISOTimeFmt, '%Y-%m-%dT%H:%M:%SZ');
SDV($RSSTimeFmt, 'D, d M Y H:i:s \\G\\M\\T');
SDV($FeedDescPatterns, array('/<[^>]*$/' => ' ', '/\\w+$/' => '', '/<[^>]+>/' => ''));
SDVA($FeedCategoryOpt, array('link' => $pagename, 'readf' => 1));
SDVA($FeedTrailOpt, array('trail' => $pagename, 'count' => 10, 'readf' => 1));
$f = $FeedFmt[$action];
$page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
if (!$page) {
Abort("?cannot generate feed");
}
$feedtime = $page['time'];
# determine list of pages to display
if (@($_REQUEST['trail'] || $_REQUEST['group'] || $_REQUEST['link'])) {
$opt['readf'] = 1;
} else {
if ($action == 'dc') {
$opt = array();
} else {
if (preg_match("/^{$CategoryGroup}\\./", $pagename)) {
$opt = $FeedCategoryOpt;
} else {
$opt = $FeedTrailOpt;
}
}
}
if (!$opt) {
PCache($pagename, $page);
$pagelist = array(&$PCache[$pagename]);
} else {
$opt = array_merge($opt, @$_REQUEST);
$pagelist = MakePageList($pagename, $opt);
}
# process list of pages in feed
$rdfseq = '';
foreach ($pagelist as $page) {
$pn = $page['name'];
if (!PageExists($pn)) {
continue;
}
$pl[] = $pn;
if (@$opt['count'] && count($pl) >= $opt['count']) {
break;
}
$rdfseq .= FmtPageName("<rdf:li resource=\"\$PageUrl\" />\n", $pn);
if ($page['time'] > $feedtime) {
$feedtime = $page['time'];
}
}
$pagelist = $pl;
$FmtV['$FeedRDFSeq'] = $rdfseq;
$FmtV['$FeedISOTime'] = gmstrftime($ISOTimeFmt, $feedtime);
$FmtV['$FeedRSSTime'] = gmdate($RSSTimeFmt, $feedtime);
# format start of feed
$out = FmtPageName($f['feed']['_start'], $pagename);
# format feed elements
foreach ($f['feed'] as $k => $v) {
if ($k[0] == '_' || !$v) {
continue;
}
$x = FmtPageName($v, $pagename);
if (!$x) {
continue;
}
$out .= $v[0] == '<' ? $x : "<{$k}>{$x}</{$k}>\n";
}
# format items in feed
if (@$f['feed']['_items']) {
$out .= FmtPageName($f['feed']['_items'], $pagename);
}
foreach ($pagelist as $pn) {
$page =& $PCache[$pn];
$FmtV['$ItemDesc'] = @$page['description'] ? $page['description'] : trim(preg_replace(array_keys($FeedDescPatterns), array_values($FeedDescPatterns), @$page['excerpt']));
$FmtV['$ItemISOTime'] = gmstrftime($ISOTimeFmt, $page['time']);
$out .= FmtPageName($f['item']['_start'], $pn);
foreach ((array) @$f['item'] as $k => $v) {
if ($k[0] == '_' || !$v) {
continue;
}
if (is_callable($v)) {
$out .= $v($pn, $page, $k);
continue;
}
if (strpos($v, '$LastModifiedBy') !== false && !@$page['author']) {
continue;
}
if (strpos($v, '$Category') !== false) {
if (preg_match_all("/(?<=^|,){$CategoryGroup}\\.([^,]+)/", @$page['targets'], $match)) {
foreach ($match[1] as $c) {
$FmtV['$Category'] = $c;
$out .= FmtPageName($v, $pn);
}
}
continue;
}
$x = FmtPageName($v, $pn);
if (!$x) {
continue;
//.........这里部分代码省略.........
作者:BogusCurr
项目:pmwik
function AutoCreateTargets($pagename, &$page, &$new) {
global $IsPagePosted, $AutoCreate, $LinkTargets;
if (!$IsPagePosted) return;
foreach((array)@$AutoCreate as $pat => $init) {
if (is_null($init)) continue;
foreach(preg_grep($pat, array_keys((array)@$LinkTargets)) as $aname) {
if (PageExists($aname)) continue;
$x = RetrieveAuthPage($aname, 'edit', false, READPAGE_CURRENT);
if (!$x) continue;
WritePage($aname, $init);
}
}
}
作者:libcrac
项目:pmwik
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. See pmwiki.php for full details.
This script handles per-browser preferences. Preference settings
are stored in wiki pages as XLPage translations, and a cookie on
the browser tells PmWiki where to find the browser's preferred
settings.
This script looks for a ?setprefs= request parameter (e.g., in
a url); when it finds one it sets a 'setprefs' cookie on the browser
identifying the page to be used to load browser preferences,
and loads the associated preferences.
If there is no ?setprefs= request, then the script uses the
'setprefs' cookie from the browser to load the preference settings.
*/
SDV($PrefsCookie, $CookiePrefix . 'setprefs');
SDV($PrefsCookieExpires, $Now + 60 * 60 * 24 * 365);
$LogoutCookies[] = $PrefsCookie;
$sp = '';
if (@$_COOKIE[$PrefsCookie]) {
$sp = $_COOKIE[$PrefsCookie];
}
if (isset($_GET['setprefs'])) {
$sp = $_GET['setprefs'];
setcookie($PrefsCookie, $sp, $PrefsCookieExpires, '/');
}
if ($sp && PageExists($sp)) {
XLPage('prefs', $sp);
}
XLSDV('en', array('ak_view' => '', 'ak_edit' => 'e', 'ak_history' => 'h', 'ak_print' => '', 'ak_recentchanges' => 'c', 'ak_save' => 's', 'ak_saveedit' => 'u', 'ak_savedraft' => 'd', 'ak_preview' => 'p', 'ak_em' => '', 'ak_strong' => ''));
作者:BogusCurr
项目:pmwik
function HandleRss($pagename)
{
global $RssMaxItems, $RssSourceSize, $RssDescSize, $RssChannelFmt, $RssChannelDesc, $RssTimeFmt, $RssChannelBuildDate, $RssItemsRDFList, $RssItemsRDFListFmt, $RssItems, $RssItemFmt, $RssItemDesc, $RssItemPubDate, $GCount, $HandleRssFmt;
$t = ReadTrail($pagename, $pagename);
$page = RetrieveAuthPage($pagename, false);
$cbgmt = $page['time'];
$r = array();
for ($i = 0; $i < count($t) && count($r) < $RssMaxItems; $i++) {
if (!PageExists($t[$i]['pagename'])) {
continue;
}
$page = RetrieveAuthPage($t[$i]['pagename'], false);
$text = MarkupToHTML($t[$i]['pagename'], substr($page['text'], 0, $RssSourceSize));
$text = rssencode(preg_replace("/<.*?>/s", "", $text));
preg_match("/^(.{0,{$RssDescSize}}\\s)/s", $text, $match);
$r[] = array('name' => $t[$i]['pagename'], 'time' => $page['time'], 'desc' => $match[1] . " ...");
if ($page['time'] > $cbgmt) {
$cbgmt = $page['time'];
}
}
SDV($RssChannelBuildDate, rssencode(gmstrftime($RssTimeFmt, $cbgmt)));
SDV($RssChannelDesc, rssencode(FmtPageName('$Group.$Title', $pagename)));
foreach ($r as $page) {
$RssItemPubDate = gmstrftime($RssTimeFmt, $page['time']);
$RssItemDesc = $page['desc'];
$GCount = 0;
$RssItemsRDFList[] = rssencode(FmtPageName($RssItemsRDFListFmt, $page['name']));
$RssItems[] = rssencode(FmtPageName($RssItemFmt, $page['name']));
}
header("Content-type: text/xml");
PrintFmt($pagename, $HandleRssFmt);
exit;
}
作者:BogusCurr
项目:pmwik
'setprefs' cookie from the browser to load the preference settings.
Script maintained by Petko YOTOV www.pmwiki.org/petko
*/
SDV($PrefsCookie, $CookiePrefix.'setprefs');
SDV($PrefsCookieExpires, $Now + 60 * 60 * 24 * 365);
$LogoutCookies[] = $PrefsCookie;
$sp = '';
if (@$_COOKIE[$PrefsCookie]) $sp = $_COOKIE[$PrefsCookie];
if (isset($_GET['setprefs'])) {
$sp = MakePageName($pagename, $_GET['setprefs']);
setcookie($PrefsCookie, $sp, $PrefsCookieExpires, '/');
}
if ($sp && PageExists($sp)) XLPage('prefs', $sp, true);
if(is_array($XL['prefs'])) {
foreach($XL['prefs'] as $k=>$v) {
if(! preg_match('/^(e_rows|e_cols|TimeFmt|Locale|Site\\.EditForm)$|^ak_/', $k))
unset($XL['prefs'][$k]);
}
}
XLSDV('en', array(
'ak_view' => '',
'ak_edit' => 'e',
'ak_history' => 'h',
'ak_attach' => '',
'ak_backlinks' => '',
'ak_logout' => '',
作者:BogusCurr
项目:pmwik
## $MetaRobots provides the value for the <meta name='robots' ...> tag.
SDV($MetaRobots, $action != 'browse' || !PageExists($pagename) || preg_match('#^PmWiki[./](?!PmWiki$)|^Site[./]#', $pagename) ? 'noindex,nofollow' : 'index,follow');
if ($MetaRobots) {
$HTMLHeaderFmt['robots'] = " <meta name='robots' content='\$MetaRobots' />\n";
}
## $RobotPattern is used to identify robots.
SDV($RobotPattern, 'Googlebot|Slurp|msnbot|Teoma|ia_archiver|BecomeBot|HTTrack|MJ12bot|XML Sitemaps');
SDV($IsRobotAgent, $RobotPattern && preg_match("!{$RobotPattern}!", @$_SERVER['HTTP_USER_AGENT']));
if (!$IsRobotAgent) {
return;
}
## $RobotActions indicates which actions a robot is allowed to perform.
SDVA($RobotActions, array('browse' => 1, 'rss' => 1, 'dc' => 1));
if (!@$RobotActions[$action]) {
$pagename = ResolvePageName($pagename);
if (!PageExists($pagename)) {
header("HTTP/1.1 404 Not Found");
print "<h1>Not Found</h1>";
exit;
}
header("HTTP/1.1 403 Forbidden");
print "<h1>Forbidden</h1>";
exit;
}
## The following removes any ?action= parameters that robots aren't
## allowed to access.
if (IsEnabled($EnableRobotCloakActions, 0)) {
$p = create_function('$a', 'return (boolean)$a;');
$p = join('|', array_keys(array_filter($RobotActions, $p)));
$FmtPV['$PageUrl'] = 'PUE(($EnablePathInfo)
? "\\$ScriptUrl/$group/$name"
作者:BogusCurr
项目:pmwik
function Redirect($pagename,$urlfmt='$PageUrl') {
# redirect the browser to $pagename
global $RedirectDelay;
clearstatcache();
if (!PageExists($pagename)) $pagename=$DefaultPage;
$pageurl = FmtPageName($urlfmt,$pagename);
#header("Location: $pageurl");
#header("Content-type: text/html");
#echo "<html><head>
# <meta http-equiv='Refresh' Content='$RedirectDelay; URL=$pageurl' />
# <title>Redirect</title></head><body></body></html>";
echo "<a href='$pageurl'>Redirect to $pageurl</a>";
exit;
}