作者:BogusCurr
项目:pmwik
function Merge($newtext,$oldtext,$pagetext) {
global $WorkDir,$SysMergeCmd, $SysMergePassthru;
SDV($SysMergeCmd,"/usr/bin/diff3 -L '' -L '' -L '' -m -E");
if (substr($newtext,-1,1)!="\n") $newtext.="\n";
if (substr($oldtext,-1,1)!="\n") $oldtext.="\n";
if (substr($pagetext,-1,1)!="\n") $pagetext.="\n";
$tempnew = tempnam($WorkDir,"new");
$tempold = tempnam($WorkDir,"old");
$temppag = tempnam($WorkDir,"page");
if ($newfp=fopen($tempnew,'w')) { fputs($newfp,$newtext); fclose($newfp); }
if ($oldfp=fopen($tempold,'w')) { fputs($oldfp,$oldtext); fclose($oldfp); }
if ($pagfp=fopen($temppag,'w')) { fputs($pagfp,$pagetext); fclose($pagfp); }
$mergetext = '';
if (IsEnabled($SysMergePassthru, 0)) {
ob_start();
passthru("$SysMergeCmd $tempnew $tempold $temppag");
$mergetext = ob_get_clean();
}
else {
$merge_handle = popen("$SysMergeCmd $tempnew $tempold $temppag",'r');
if ($merge_handle) {
while (!feof($merge_handle)) $mergetext .= fread($merge_handle,4096);
pclose($merge_handle);
}
}
@unlink($tempnew); @unlink($tempold); @unlink($temppag);
return $mergetext;
}
作者:BogusCurr
项目:pmwik
function LoadPageTemplate($pagename, $tfilefmt)
{
global $PageStartFmt, $PageEndFmt, $BasicLayoutVars, $HTMLHeaderFmt;
SDV($BasicLayoutVars, array('HeaderText', 'PageHeaderFmt', 'PageLeftFmt', 'PageTitleFmt', 'PageText', 'PageRightFmt', 'PageFooterFmt'));
$k = implode('', file(FmtPageName($tfilefmt, $pagename)));
$sect = preg_split('#[[<]!--(/?Page[A-Za-z]+Fmt|PageText|HeaderText)--[]>]#', $k, 0, PREG_SPLIT_DELIM_CAPTURE);
$PageStartFmt = array_merge(array('headers:'), preg_split('/[[<]!--((?:wiki|file|function|markup):.*?)--[]>]/s', array_shift($sect), 0, PREG_SPLIT_DELIM_CAPTURE));
$PageEndFmt = array();
$ps = 'PageStartFmt';
while (count($sect) > 0) {
$k = array_shift($sect);
$v = preg_split('/[[<]!--((?:wiki|file|function|markup):.*?)--[]>]/', array_shift($sect), 0, PREG_SPLIT_DELIM_CAPTURE);
if (substr($k, 0, 1) == '/') {
$GLOBALS[$ps][] = "<!--{$k}-->";
$GLOBALS[$ps][] = count($v) > 1 ? $v : $v[0];
continue;
}
$GLOBALS[$k] = count($v) > 1 ? $v : $v[0];
if (in_array($k, $BasicLayoutVars)) {
$GLOBALS[$ps][] = "<!--{$k}-->";
if ($k == 'PageText') {
$ps = 'PageEndFmt';
}
if ($k == 'HeaderText') {
$GLOBALS[$ps][] =& $HTMLHeaderFmt;
}
$GLOBALS[$ps][] =& $GLOBALS[$k];
}
}
array_push($PageStartFmt, "\n<div id='wikitext'>\n");
array_unshift($PageEndFmt, '</div>');
}
作者:BogusCurr
项目:pmwik
function FPLByGroup($pagename, &$matches, $opt)
{
global $FPLByGroupStartFmt, $FPLByGroupEndFmt, $FPLByGroupGFmt, $FPLByGroupIFmt, $FPLByGroupOpt;
SDV($FPLByGroupStartFmt, "<dl class='fplbygroup'>");
SDV($FPLByGroupEndFmt, '</dl>');
SDV($FPLByGroupGFmt, "<dt><a href='\$ScriptUrl/\$Group'>\$Group</a> /</dt>\n");
SDV($FPLByGroupIFmt, "<dd><a href='\$PageUrl'>\$Name</a></dd>\n");
SDVA($FPLByGroupOpt, array('readf' => 0, 'order' => 'name'));
$matches = MakePageList($pagename, array_merge((array) $FPLByGroupOpt, $opt), 0);
if (@$opt['count']) {
array_splice($matches, $opt['count']);
}
if (count($matches) < 1) {
return '';
}
$out = '';
foreach ($matches as $pn) {
$pgroup = FmtPageName($FPLByGroupGFmt, $pn);
if ($pgroup != @$lgroup) {
$out .= $pgroup;
$lgroup = $pgroup;
}
$out .= FmtPageName($FPLByGroupIFmt, $pn);
}
return FmtPageName($FPLByGroupStartFmt, $pagename) . $out . FmtPageName($FPLByGroupEndFmt, $pagename);
}
作者: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;
}
}
作者:BogusCurr
项目:pmwik
function AuthUserId($pagename, $id, $pw = NULL)
{
global $AuthUser, $AuthUserPageFmt, $AuthUserFunctions, $AuthId, $AuthList, $MessagesFmt;
$auth = $AuthUser;
$authid = '';
# load information from Site.AuthUser (or page in $AuthUserPageFmt)
SDV($AuthUserPageFmt, '$SiteGroup.AuthUser');
SDVA($AuthUserFunctions, array('htpasswd' => 'AuthUserHtPasswd', 'ldap' => 'AuthUserLDAP', $id => 'AuthUserConfig'));
$pn = FmtPageName($AuthUserPageFmt, $pagename);
$apage = ReadPage($pn, READPAGE_CURRENT);
if ($apage && preg_match_all("/\n\\s*([@\\w][^\\s:]*):(.*)/", $apage['text'], $matches, PREG_SET_ORDER)) {
foreach ($matches as $m) {
if (!preg_match_all('/\\bldap:\\S+|[^\\s,]+/', $m[2], $v)) {
continue;
}
if ($m[1][0] == '@') {
foreach ($v[0] as $g) {
$auth[$g][] = $m[1];
}
} else {
$auth[$m[1]] = array_merge((array) @$auth[$m[1]], $v[0]);
}
}
}
if (is_null($pw)) {
$authid = $id;
} else {
foreach ($AuthUserFunctions as $k => $fn) {
if ($auth[$k] && $fn($pagename, $id, $pw, $auth[$k])) {
$authid = $id;
break;
}
}
}
if (!$authid) {
$GLOBALS['InvalidLogin'] = 1;
return;
}
if (!isset($AuthId)) {
$AuthId = $authid;
}
@session_start();
$_SESSION['authid'] = $authid;
$_SESSION['authlist']["id:{$authid}"] = 1;
$_SESSION['authlist']["id:-{$authid}"] = -1;
$_SESSION['authlist']["id:*"] = 1;
foreach ((array) @$auth[$authid] as $g) {
if ($g[0] == '@') {
@($_SESSION['authlist'][$g] = 1);
}
}
foreach ((array) @$auth['*'] as $g) {
if ($g[0] == '@') {
@($_SESSION['authlist'][$g] = 1);
}
}
$AuthList = array_merge($AuthList, $_SESSION['authlist']);
}
作者:BogusCurr
项目:pmwik
function HTTPBasicAuth($pagename, $level, $authprompt = true)
{
global $AuthRealmFmt, $AuthDeniedFmt, $DefaultPasswords, $AllowPassword, $GroupAttributesFmt;
SDV($GroupAttributesFmt, '$Group/GroupAttributes');
SDV($AllowPassword, 'nopass');
SDV($AuthRealmFmt, $GLOBALS['WikiTitle']);
SDV($AuthDeniedFmt, 'A valid password is required to access this feature.');
$page = ReadPage($pagename);
if (!$page) {
return false;
}
$passwd = @$page["passwd{$level}"];
if ($passwd == "") {
$grouppg = ReadPage(FmtPageName($GroupAttributesFmt, $pagename));
$passwd = @$grouppg["passwd{$level}"];
if ($passwd == '') {
$passwd = @$DefaultPasswords[$level];
}
if ($passwd == '') {
$passwd = @$page["passwdread"];
}
if ($passwd == '') {
$passwd = @$grouppg["passwdread"];
}
if ($passwd == '') {
$passwd = @$DefaultPasswords['read'];
}
}
if ($passwd == '') {
return $page;
}
if (crypt($AllowPassword, $passwd) == $passwd) {
return $page;
}
@session_start();
if (@$_SERVER['PHP_AUTH_PW']) {
@$_SESSION['authpw'][$_SERVER['PHP_AUTH_PW']]++;
}
$authpw = array_keys((array) @$_SESSION['authpw']);
foreach (array_merge((array) $DefaultPasswords['admin'], (array) $passwd) as $pwchal) {
foreach ($authpw as $pwresp) {
if (@crypt($pwresp, $pwchal) == $pwchal) {
return $page;
}
}
}
if (!$authprompt) {
return false;
}
$realm = FmtPageName($AuthRealmFmt, $pagename);
header("WWW-Authenticate: Basic realm=\"{$realm}\"");
header("Status: 401 Unauthorized");
header("HTTP-Status: 401 Unauthorized");
PrintFmt($pagename, $AuthDeniedFmt);
exit;
}
作者:BogusCurr
项目:pmwik
function AuthUserId($pagename, $id, $pw=NULL) {
global $AuthUser, $AuthUserPageFmt, $AuthUserFunctions,
$AuthId, $MessagesFmt, $AuthUserPat;
$auth = array();
foreach((array)$AuthUser as $k=>$v) $auth[$k] = (array)$v;
$authid = '';
# load information from SiteAdmin.AuthUser (or page in $AuthUserPageFmt)
SDV($AuthUserPageFmt, '$SiteAdminGroup.AuthUser');
SDVA($AuthUserFunctions, array(
'htpasswd' => 'AuthUserHtPasswd',
'ldap' => 'AuthUserLDAP',
# 'mysql' => 'AuthUserMySQL',
$id => 'AuthUserConfig'));
SDV($AuthUserPat, "/^\\s*([@\\w][^\\s:]*):(.*)/m");
$pn = FmtPageName($AuthUserPageFmt, $pagename);
$apage = ReadPage($pn, READPAGE_CURRENT);
if ($apage && preg_match_all($AuthUserPat,
$apage['text'], $matches, PREG_SET_ORDER)) {
foreach($matches as $m) {
if (!preg_match_all('/\\bldaps?:\\S+|[^\\s,]+/', $m[2], $v))
continue;
if ($m[1]{0} == '@')
foreach($v[0] as $g) $auth[$g][] = $m[1];
else $auth[$m[1]] = array_merge((array)@$auth[$m[1]], $v[0]);
}
}
if (func_num_args()==2) $authid = $id;
else
foreach($AuthUserFunctions as $k => $fn)
if (@$auth[$k] && $fn($pagename, $id, $pw, $auth[$k], $authlist))
{ $authid = $id; break; }
if (!$authid) { $GLOBALS['InvalidLogin'] = 1; return; }
if (!isset($AuthId)) $AuthId = $authid;
$authlist["id:$authid"] = 1;
$authlist["id:-$authid"] = -1;
foreach(preg_grep('/^@/', (array)@$auth[$authid]) as $g)
$authlist[$g] = 1;
foreach(preg_grep('/^@/', (array)@$auth['*']) as $g)
$authlist[$g] = 1;
foreach(preg_grep('/^@/', array_keys($auth)) as $g) # useless? PITS:01201
if (in_array($authid, $auth[$g])) $authlist[$g] = 1;
if ($auth['htgroup']) {
foreach(AuthUserHtGroup($pagename, $id, $pw, $auth['htgroup']) as $g)
$authlist["@$g"] = 1;
}
foreach(preg_grep('/^@/', (array)@$auth["-$authid"]) as $g)
unset($authlist[$g]);
SessionAuth($pagename, array('authid' => $authid, 'authlist' => $authlist));
}
作者:BogusCurr
项目:pmwik
function VarLink($pagename,$tgt,$txt) {
global $VarIndex,$FmtV,$VarLinkMissingFmt,$VarLinkExistsFmt;
SDV($VarLinkMissingFmt,'$LinkText');
SDV($VarLinkExistsFmt,"<a class='varlink' href='\$LinkUrl'><code class='varlink'>\$LinkText</code></a>");
VarIndexLoad($pagename);
$FmtV['$LinkText'] = str_replace('$', '$', $txt);
$FmtV['$LinkUrl'] = @$VarIndex[$tgt]['url'];
if (@!$VarIndex[$tgt]['url'])
return FmtPageName($VarLinkMissingFmt,$pagename);
return FmtPageName($VarLinkExistsFmt,$pagename);
}
作者:BogusCurr
项目:pmwik
function HTTPBasicAuthPrompt($pagename)
{
global $AuthRealmFmt, $AuthDeniedFmt;
SDV($AuthRealmFmt, $GLOBALS['WikiTitle']);
SDV($AuthDeniedFmt, 'A valid password is required to access this feature.');
$realm = FmtPageName($AuthRealmFmt, $pagename);
header("WWW-Authenticate: Basic realm=\"{$realm}\"");
header("Status: 401 Unauthorized");
header("HTTP-Status: 401 Unauthorized");
PrintFmt($pagename, $AuthDeniedFmt);
exit;
}
作者: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']);
}
作者:Nepheri
项目:DropShado
function dg_SetLogoHeightWidth($wPad, $hPad = 0)
{
global $PageLogoUrl, $PageLogoUrlHeight, $PageLogoUrlWidth;
if (!isset($PageLogoUrlWidth) || !isset($PageLogoUrlHeight)) {
$size = @getimagesize($PageLogoUrl);
if (!isset($PageLogoUrlWidth)) {
SDV($PageLogoUrlWidth, ($size ? $size[0] + $wPad : 0) . 'px');
}
if (!isset($PageLogoUrlHeight)) {
SDV($PageLogoUrlHeight, ($size ? $size[1] + $hPad : 0) . 'px');
}
}
}
作者:BogusCurr
项目:pmwik
function VarLink($pagename, $tgt, $txt)
{
global $VarIndex, $FmtV, $VarLinkMissingFmt, $VarLinkExistsFmt;
SDV($VarLinkMissingFmt, '$LinkText');
SDV($VarLinkExistsFmt, "<a class='varlink' href='\$LinkUrl'><code class='varlink'>\$LinkText</code></a>");
VarIndexLoad($pagename);
$FmtV = array();
$FmtV['$LinkText'] = $txt;
$FmtV['$LinkUrl'] = @$VarIndex[$tgt]['url'];
if (@(!$VarIndex[$tgt]['url'])) {
return FmtPageName($VarLinkMissingFmt, $pagename);
}
return FmtPageName($VarLinkExistsFmt, $pagename);
}
作者:BogusCurr
项目:pmwik
function HandleUpload($pagename)
{
global $FmtV, $UploadExtMax, $HandleUploadFmt, $PageStartFmt, $PageEndFmt, $PageUploadFmt;
$page = RetrieveAuthPage($pagename, 'upload');
if (!$page) {
Abort("?cannot upload to {$pagename}");
}
SetPage($pagename, $page);
$FmtV['$UploadName'] = MakeUploadName($pagename, @$_REQUEST['upname']);
$upresult = @$_REQUEST['upresult'];
$FmtV['$upext'] = @$_REQUEST['upext'];
$FmtV['$upmax'] = @$_REQUEST['upmax'];
$FmtV['$UploadResult'] = $upresult ? FmtPageName("<i>\$UploadName</i>: \$[UL{$upresult}]", $pagename) : '';
SDV($HandleUploadFmt, array(&$PageStartFmt, &$PageUploadFmt, &$PageEndFmt));
PrintFmt($pagename, $HandleUploadFmt);
}
作者: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;
}
作者:libcrac
项目:pmwik
function Merge($newtext, $oldtext, $pagetext)
{
global $WorkDir, $SysMergeCmd;
SDV($SysMergeCmd, "/usr/bin/diff3 -L '' -L '' -L '' -m -E");
if (substr($newtext, -1, 1) != "\n") {
$newtext .= "\n";
}
if (substr($oldtext, -1, 1) != "\n") {
$oldtext .= "\n";
}
if (substr($pagetext, -1, 1) != "\n") {
$pagetext .= "\n";
}
$tempnew = tempnam($WorkDir, "new");
$tempold = tempnam($WorkDir, "old");
$temppag = tempnam($WorkDir, "page");
if ($newfp = fopen($tempnew, 'w')) {
fputs($newfp, $newtext);
fclose($newfp);
}
if ($oldfp = fopen($tempold, 'w')) {
fputs($oldfp, $oldtext);
fclose($oldfp);
}
if ($pagfp = fopen($temppag, 'w')) {
fputs($pagfp, $pagetext);
fclose($pagfp);
}
$mergetext = '';
$merge_handle = popen("{$SysMergeCmd} {$tempnew} {$tempold} {$temppag}", 'r');
if ($merge_handle) {
while (!feof($merge_handle)) {
$mergetext .= fread($merge_handle, 4096);
}
pclose($merge_handle);
}
@unlink($tempnew);
@unlink($tempold);
@unlink($temppag);
return $mergetext;
}
作者: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;
}
}
作者: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 HandleDownload($pagename, $auth = 'read') {
global $UploadFileFmt, $UploadExts, $DownloadDisposition;
SDV($DownloadDisposition, "inline");
$page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
if (!$page) Abort("?cannot read $pagename");
$upname = MakeUploadName($pagename, @$_REQUEST['upname']);
$filepath = FmtPageName("$UploadFileFmt/$upname", $pagename);
if (!$upname || !file_exists($filepath)) {
header("HTTP/1.0 404 Not Found");
Abort("?requested file not found");
exit();
}
preg_match('/\\.([^.]+)$/',$filepath,$match);
if ($UploadExts[@$match[1]])
header("Content-Type: {$UploadExts[@$match[1]]}");
header("Content-Length: ".filesize($filepath));
header("Content-disposition: $DownloadDisposition; filename=$upname");
$fp = fopen($filepath, "r");
if ($fp) {
while (!feof($fp)) echo fread($fp, 4096);
fclose($fp);
}
exit();
}
作者:BogusCurr
项目:pmwik
function LinkIndexUpdate($pagelist)
{
global $LinkIndexFile, $PCache, $LinkIndexTime;
SDV($LinkIndexTime, 10);
if (!$pagelist || !$LinkIndexFile) {
return;
}
StopWatch('LinkIndexUpdate begin');
$pagelist = (array) $pagelist;
Lock(2);
$ofp = fopen("{$LinkIndexFile},new", 'w');
$timeout = time() + $LinkIndexTime;
foreach ($pagelist as $n) {
if (time() > $timeout) {
break;
}
if (isset($PCache[$n]['targets'])) {
$targets = $PCache[$n]['targets'];
} else {
$page = ReadPage($n, READPAGE_CURRENT);
if (!$page) {
continue;
}
$targets = @$page['targets'];
}
fputs($ofp, "{$n}={$targets}\n");
}
$ifp = @fopen($LinkIndexFile, 'r');
if ($ifp) {
while (!feof($ifp)) {
$line = fgets($ifp, 4096);
while (substr($line, -1, 1) != "\n" && !feof($ifp)) {
$line .= fgets($ifp, 4096);
}
$i = strpos($line, '=');
if ($i === false) {
continue;
}
$n = substr($line, 0, $i);
if (in_array($n, $pagelist)) {
continue;
}
fputs($ofp, $line);
}
fclose($ifp);
}
fclose($ofp);
if (file_exists($LinkIndexFile)) {
unlink($LinkIndexFile);
}
rename("{$LinkIndexFile},new", $LinkIndexFile);
fixperms($LinkIndexFile);
StopWatch('LinkIndexUpdate end');
}
作者:BogusCurr
项目:pmwik
function HandleLogoutA($pagename, $auth = 'read') {
global $LogoutRedirectFmt, $LogoutCookies;
SDV($LogoutRedirectFmt, '$FullName');
SDV($LogoutCookies, array());
@session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
setcookie(session_name(), '', time()-43200, '/');
foreach ($LogoutCookies as $c)
if (isset($_COOKIE[$c])) setcookie($c, '', time()-43200, '/');
session_destroy();
Redirect(FmtPageName($LogoutRedirectFmt, $pagename));
}