function HandleRecipeCheck($pagename, $auth = 'admin') { global $RecipeListUrl, $Version, $RecipeInfo, $RecipeCheckFmt, $PageStartFmt, $PageEndFmt; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) { Abort('?admin access required'); } $cvinfo = GetRecipeList($RecipeListUrl); if (!$cvinfo) { $msg = "Unable to retrieve cookbook data from {$RecipeListUrl}\n"; $allow_url_fopen = ini_get('allow_url_fopen'); if (!$allow_url_fopen) { $msg .= "\n <br /><br />It appears that your PHP environment isn't allowing\n the recipelist to be downloaded from pmwiki.org \n (allow_url_fopen = {$allow_url_fopen})."; } Abort($msg); } $rinfo['PmWiki:Upgrades'] = $Version; ScanRecipeInfo('cookbook', $cvinfo); foreach ((array) $RecipeInfo as $r => $v) { if (!@$v['Version']) { continue; } $r = preg_replace('/^(?!PmWiki:)(Cookbook[.:])?/', 'Cookbook:', $r); $rinfo[$r] = $v['Version']; } $markup = "!!Recipe status for {\$PageUrl}\n" . RecipeTable($rinfo, $cvinfo); $html = MarkupToHTML($pagename, $markup); SDV($RecipeCheckFmt, array(&$PageStartFmt, $html, &$PageEndFmt)); PrintFmt($pagename, $RecipeCheckFmt); }
function HandleRename($pagename) { global $HandleRenameFmt, $PageStartFmt, $PageRenameFmt, $PageEndFmt; SDV($HandleRenameFmt, array(&$PageStartFmt, &$PageRenameFmt, &$PageEndFmt)); $PageRenameFmt = str_replace('$UnqualifiedLinks', FmtLinksList($pagename, array('o' => 'fmt=pglist', 'list' => 'unqualified')), str_replace('$RenameGroup', FmtGroupList($pagename, array('o' => 'fmt=pickgroup')), $PageRenameFmt)); PrintFmt($pagename, $HandleRenameFmt); }
function HandleCrypt($pagename, $auth='read') { global $ScriptUrl,$HTMLStartFmt,$HTMLEndFmt; PrintFmt($pagename,$HTMLStartFmt); $passwd = stripmagic(@$_POST["passwd"]); echo FmtPageName( "<form action='{\$ScriptUrl}' method='POST'><p> Enter password to encrypt: <input type='text' name='passwd' value='" . PHSC($passwd, ENT_QUOTES) ."' /> <input type='submit' /> <input type='hidden' name='n' value='{\$FullName}' /> <input type='hidden' name='action' value='crypt' /></p></form>", $pagename); if ($passwd) { $crypt = pmcrypt($passwd); echo "<p class='vspace'>Encrypted password = $crypt</p>"; echo "<p class='vspace'>To set a site-wide password, insert the line below in your <i>config.php</i> file, <br />replacing <tt>'type'</tt> with one of <tt>'admin'</tt>, <tt>'read'</tt>, <tt>'edit'</tt>, or <tt>'attr'</tt>. <br />See <a href='$ScriptUrl?n=PmWiki.PasswordsAdmin'>PasswordsAdmin</a> for more details.</p> <pre class='vspace'> \$DefaultPasswords['type']='$crypt';</pre>"; } PrintFmt($pagename,$HTMLEndFmt); }
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; }
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; }
function HandleCrypt($pagename) { global $ScriptUrl, $HTMLStartFmt, $HTMLEndFmt; PrintFmt($pagename, $HTMLStartFmt); $passwd = @$_POST["passwd"]; echo "<form action='{$ScriptUrl}' method='POST'><p>\n Enter password to encrypt: <input type='text' name='passwd' value='{$passwd}' />\n <input type='submit' />\n <input type='hidden' name='action' value='crypt' /></p></form>"; if ($passwd) { $crypt = crypt($passwd); echo "<p class='vspace'>Encrypted password = {$crypt}</p>"; echo "<p class='vspace'>To set a site-wide password, insert the line below\n in your <i>config.php</i> file, <br />replacing <tt>'type'</tt> with\n one of <tt>'admin'</tt>, <tt>'read'</tt>, <tt>'edit'</tt>,\n or <tt>'attr'</tt>. <br />See <a \n href='{$ScriptUrl}?pagename=PmWiki.PasswordsAdmin'>PasswordsAdmin</a> for more\n details.</p>\n <pre class='vspace'> \$DefaultPasswords['type']='{$crypt}';</pre>"; } PrintFmt($pagename, $HTMLEndFmt); }
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); }
function HandleThumbShoeRename($pagename, $auth = 'edit') { global $WikiLibDirs, $LastModFile; global $ThumbShoeImgExt; global $TSHandleRenameFmt, $PageStartFmt, $ThumbShoeRenameFmt, $PageEndFmt; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) { Abort("?cannot rename {$pagename}; not authorized"); return; } $imgRx = '(' . implode('|', $ThumbShoeImgExt) . ')'; if (!preg_match("/(.*)_{$imgRx}\$/i", $pagename, $m1)) { if (function_exists('HandleRename')) { // use the normal Rename return HandleRename($pagename); } else { Abort("Cannot rename {$pagename}; is not an Image page"); return; } } $tsdir = ''; foreach ((array) $WikiLibDirs as $dir) { if ($dir->exists($pagename) and $dir->iswrite) { $tsdir = $dir; break; } } if (!$tsdir) { Abort("Cannot rename {$pagename}; cannot find page"); return; } // Okay, should be able to rename this page now. $img_name = PageVar($pagename, '$TSPageImage'); SDV($TSHandleRenameFmt, array(&$PageStartFmt, &$ThumbShoeRenameFmt, &$PageEndFmt)); $ThumbShoeRenameFmt = str_replace('$FullName', $pagename, $ThumbShoeRenameFmt); $ThumbShoeRenameFmt = str_replace('$ImgName', $img_name, $ThumbShoeRenameFmt); $ThumbShoeRenameFmt = str_replace('$RenamePage', TSFmtPageList($pagename, $tsdir->galleryGroup, array('o' => 'fmt=pickpage')), $ThumbShoeRenameFmt); PrintFmt($pagename, $TSHandleRenameFmt); }
function HandleRefCount($pagename) { global $HandleRefCountFmt, $PageStartFmt, $PageEndFmt; SDV($HandleRefCountFmt, array(&$PageStartFmt, 'function:PrintRefCount', &$PageEndFmt)); PrintFmt($pagename, $HandleRefCountFmt); }
function HandleSearchA($pagename, $level = 'read') { global $PageSearchForm, $FmtV, $HandleSearchFmt, $PageStartFmt, $PageEndFmt; SDV($HandleSearchFmt,array(&$PageStartFmt, '$PageText', &$PageEndFmt)); SDV($PageSearchForm, '$[{$SiteGroup}/Search]'); $form = RetrieveAuthPage($pagename, $level, true, READPAGE_CURRENT); if (!$form) Abort("?unable to read $pagename"); PCache($pagename, $form); $text = preg_replace('/\\[([=@])(.*?)\\1\\]/s', ' ', @$form['text']); if (!preg_match('/\\(:searchresults(\\s.*?)?:\\)/', $text)) foreach((array)$PageSearchForm as $formfmt) { $form = ReadPage(FmtPageName($formfmt, $pagename), READPAGE_CURRENT); if ($form['text']) break; } $text = @$form['text']; if (!$text) $text = '(:searchresults:)'; $FmtV['$PageText'] = MarkupToHTML($pagename,$text); PrintFmt($pagename, $HandleSearchFmt); }
function HandleFastCacheBrowse($pagename, $auth = 'read') { # handle display of a page global $DefaultPageTextFmt, $PageNotFoundHeaderFmt, $HTTPHeaders, $EnableHTMLCache, $NoHTMLCache, $PageCacheFile, $LastModTime, $IsHTMLCached, $FmtV, $HandleBrowseFmt, $PageStartFmt, $PageEndFmt, $PageRedirectFmt; ## begin added global $FastCachePage, $FastCacheDir, $FastCacheValid, $FastCacheSuffix; if (!$FastCacheValid || !$FastCacheDir) { HandleBrowse($pagename, $auth); return; } SDV($FastCacheSuffix, '.html'); $fcfile = "{$FastCacheDir}/{$pagename}{$FastCacheSuffix}"; if (@filemtime($fcfile) > $LastModTime) { if ($FastCachePage = file_get_contents($fcfile)) { StopWatch("HandleFastCacheBrowse: using FastCached copy of {$pagename}"); echo $FastCachePage; } else { $FastCacheValid = FALSE; StopWatch("HandleFastCacheBrowse: read error on {$fcfile}"); HandleBrowse($pagename, $auth); } return; } ## end added $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) { Abort("?cannot read {$pagename}"); } PCache($pagename, $page); if (PageExists($pagename)) { $text = @$page['text']; } else { $FastCacheValid = FALSE; ## added SDV($DefaultPageTextFmt, '(:include $[{$SiteGroup}.PageNotFound]:)'); $text = FmtPageName($DefaultPageTextFmt, $pagename); SDV($PageNotFoundHeaderFmt, 'HTTP/1.1 404 Not Found'); SDV($HTTPHeaders['status'], $PageNotFoundHeaderFmt); } $opt = array(); SDV($PageRedirectFmt, "<p><i>(\$[redirected from] <a rel='nofollow'\n href='{\$PageUrl}?action=edit'>{\$FullName}</a>)</i></p>\$HTMLVSpace\n"); if (@(!$_GET['from'])) { $opt['redirect'] = 1; $PageRedirectFmt = ''; } else { $PageRedirectFmt = FmtPageName($PageRedirectFmt, $_GET['from']); } if (@$EnableHTMLCache && !$NoHTMLCache && $PageCacheFile && @filemtime($PageCacheFile) > $LastModTime) { list($ctext) = unserialize(file_get_contents($PageCacheFile)); $FmtV['$PageText'] = "<!--cached-->{$ctext}"; $IsHTMLCached = 1; StopWatch("HandleFastCacheBrowse: using HTMLCached copy"); ## modified } else { $IsHTMLCached = 0; $text = '(:groupheader:)' . @$text . '(:groupfooter:)'; $t1 = time(); $FmtV['$PageText'] = MarkupToHTML($pagename, $text, $opt); if (@$EnableHTMLCache > 0 && !$NoHTMLCache && $PageCacheFile && time() - $t1 + 1 >= $EnableHTMLCache) { $fp = @fopen("{$PageCacheFile},new", "x"); if ($fp) { StopWatch("HandleFastCacheBrowse: HTMLCaching page"); ## modified fwrite($fp, serialize(array($FmtV['$PageText']))); fclose($fp); rename("{$PageCacheFile},new", $PageCacheFile); } } } SDV($HandleBrowseFmt, array(&$PageStartFmt, &$PageRedirectFmt, '$PageText', &$PageEndFmt)); ## begin modified if ($FastCacheValid) { ob_start(); PrintFmt($pagename, $HandleBrowseFmt); $FastCachePage = ob_get_contents(); ob_end_flush(); mkdirp(dirname($fcfile)); if ($FastCacheValid && ($fc = fopen("{$fcfile},new", 'x'))) { StopWatch("HandleFastCacheBrowse: FastCaching {$pagename}"); fwrite($fc, $FastCachePage); fclose($fc); rename("{$fcfile},new", $fcfile); } else { StopWatch("HandleFastCacheBrowse: error writing cache to {$fcfile},new"); } } else { PrintFmt($pagename, $HandleBrowseFmt); } ## end modified }
function HandleUpload($pagename, $auth = 'upload') { global $FmtV,$UploadExtMax, $HandleUploadFmt,$PageStartFmt,$PageEndFmt,$PageUploadFmt; UploadAuth($pagename, $auth, 1); $FmtV['$UploadName'] = MakeUploadName($pagename,@$_REQUEST['upname']); $upresult = htmlspecialchars(@$_REQUEST['upresult']); $uprname = htmlspecialchars(@$_REQUEST['uprname']); $FmtV['$upext'] = htmlspecialchars(@$_REQUEST['upext']); $FmtV['$upmax'] = htmlspecialchars(@$_REQUEST['upmax']); $FmtV['$UploadResult'] = ($upresult) ? FmtPageName("<i>$uprname</i>: $[UL$upresult]",$pagename) : ''; SDV($HandleUploadFmt,array(&$PageStartFmt,&$PageUploadFmt,&$PageEndFmt)); PrintFmt($pagename,$HandleUploadFmt); }
function HandleUpload($pagename, $auth = 'upload') { global $FmtV,$UploadExtMax, $EnableReadOnly, $HandleUploadFmt,$PageStartFmt,$PageEndFmt,$PageUploadFmt; UploadAuth($pagename, $auth, 1); $FmtV['$UploadName'] = MakeUploadName($pagename,@$_REQUEST['upname']); $upresult = PHSC(@$_REQUEST['upresult']); $uprname = PHSC(@$_REQUEST['uprname']); $FmtV['$upext'] = PHSC(@$_REQUEST['upext']); $FmtV['$upmax'] = PHSC(@$_REQUEST['upmax']); $FmtV['$UploadResult'] = ($upresult) ? FmtPageName("<i>$uprname</i>: $[UL$upresult]",$pagename) : (@$EnableReadOnly ? XL('Cannot modify site -- $EnableReadOnly is set'): ''); SDV($HandleUploadFmt,array(&$PageStartFmt,&$PageUploadFmt,&$PageEndFmt)); PrintFmt($pagename,$HandleUploadFmt); }
function HandleTotalCounter($pagename, $auth = 'read') { global $Action, $TotalCounter, $TotalCounterMaxItems, $TotalCounterBarColor, $TotalCounterShowNumbers, $TotalCount, $TotalCounterDownloads, $TotalCounterTimeBins, $TotalCounterBinsFmt; global $PageStartFmt, $PageEndFmt; //$page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); $page = RetrieveAuthPage($pagename, $auth); if (!$page) { Abort("?you are not permited to perform this action"); } $alllocations = array('localhost' => 'localhost', 'Unknown' => 'Unknown', 'com' => 'Commercial', 'net' => 'Networks', 'org' => 'Organizations', 'aero' => 'Aviation', 'biz' => 'Business organizations', 'coop' => 'Co-operative organizations', 'edu' => 'Educational', 'gov' => 'US Government', 'info' => 'Info', 'int' => 'International organizations', 'mil' => 'US Dept of Defense', 'museum' => 'Museums', 'name' => 'Personal', 'travel' => 'Travelling', 'ac' => 'Ascension Island', 'ad' => 'Andorra', 'ae' => 'United Arab Emirates', 'af' => 'Afghanistan', 'ag' => 'Antigua & Barbuda', 'ai' => 'Anguilla', 'al' => 'Albania', 'am' => 'Armenia', 'an' => 'Netherlands Antilles', 'ao' => 'Angola', 'aq' => 'Antarctica', 'ar' => 'Argentina', 'as' => 'American Samoa', 'at' => 'Austria', 'au' => 'Australia', 'aw' => 'Aruba', 'az' => 'Azerbaijan', 'ba' => 'Bosnia & Herzegovina', 'bb' => 'Barbados', 'bd' => 'Bangladesh', 'be' => 'Belgium', 'bf' => 'Burkina Faso', 'bg' => 'Bulgaria', 'bh' => 'Bahrain', 'bi' => 'Burundi', 'bj' => 'Benin', 'bm' => 'Bermuda', 'bn' => 'Brunei Darussalam', 'bo' => 'Bolivia', 'br' => 'Brazil', 'bs' => 'Bahamas', 'bt' => 'Bhutan', 'bv' => 'Bouvet Island', 'bw' => 'Botswana', 'by' => 'Belarus', 'bz' => 'Belize', 'ca' => 'Canada', 'cc' => 'Cocos (Keeling) Islands', 'cd' => 'Democratic republic of Congo', 'cf' => 'Central African Republic', 'cg' => 'Congo', 'ch' => 'Switzerland', 'ci' => 'Ivory Coast', 'ck' => 'Cook Islands', 'cl' => 'Chile', 'cm' => 'Cameroon', 'cn' => 'China', 'co' => 'Colombia', 'cr' => 'Costa Rica', 'cs' => 'Czechoslovakia', 'cu' => 'Cuba', 'cv' => 'Cape Verde', 'cx' => 'Christmas Island', 'cy' => 'Cyprus', 'cz' => 'Czech Republic', 'de' => 'Germany', 'dj' => 'Djibouti', 'dk' => 'Denmark', 'dm' => 'Dominica', 'do' => 'Dominican Republic', 'dz' => 'Algeria', 'ec' => 'Ecuador', 'ee' => 'Estonia', 'eg' => 'Egypt', 'eh' => 'Western Sahara', 'er' => 'Eritrea', 'es' => 'Spain', 'et' => 'Ethiopia', 'eu' => 'European Union', 'fi' => 'Finland', 'fj' => 'Fiji', 'fk' => 'Falkland Islands', 'fm' => 'Micronesia', 'fo' => 'Faroe Islands', 'fr' => 'France', 'ga' => 'Gabon', 'gb' => 'United Kingdom', 'gd' => 'Grenada', 'ge' => 'Georgia', 'gf' => 'French Guiana', 'gg' => 'Guernsey', 'gh' => 'Ghana', 'gi' => 'Gibraltar', 'gl' => 'Greenland', 'gm' => 'Gambia', 'gn' => 'Guinea', 'gp' => 'Guadeloupe', 'gq' => 'Equatorial Guinea', 'gr' => 'Greece', 'gs' => 'South Georgia & South Sandwich Islands', 'gt' => 'Guatemala', 'gu' => 'Guam', 'gw' => 'Guinea-Bissau', 'gy' => 'Guyana', 'hk' => 'Hong Kong', 'hm' => 'Heard & McDonald Islands', 'hn' => 'Honduras', 'hr' => 'Croatia', 'ht' => 'Haiti', 'hu' => 'Hungary', 'id' => 'Indonesia', 'ie' => 'Ireland', 'il' => 'Israel', 'im' => 'Isle of Man', 'in' => 'India', 'io' => 'British Indian Ocean Territory', 'iq' => 'Iraq', 'ir' => 'Iran', 'is' => 'Iceland', 'it' => 'Italy', 'je' => 'Jersey', 'jm' => 'Jamaica', 'jo' => 'Jordan', 'jp' => 'Japan', 'ke' => 'Kenya', 'kg' => 'Kyrgyzstan', 'kh' => 'Cambodia', 'ki' => 'Kiribati', 'km' => 'Comoros', 'kn' => 'Saint Kitts & Nevis', 'kp', 'North Korea', 'kr' => 'South Korea', 'kw' => 'Kuwait', 'ky' => 'Cayman Islands', 'kz' => 'Kazakhstan', 'la' => 'Laos', 'lb' => 'Lebanon', 'lc' => 'Saint Lucia', 'li' => 'Liechtenstein', 'lk' => 'Sri Lanka', 'lr' => 'Liberia', 'ls' => 'Lesotho', 'lt' => 'Lithuania', 'lu' => 'Luxembourg', 'lv' => 'Latvia', 'ly' => 'Libyan Arab Jamahiriya', 'ma' => 'Morocco', 'mc' => 'Monaco', 'md' => 'Moldova', 'mg' => 'Madagascar', 'mh' => 'Marshall Islands', 'mk' => 'Macedonia', 'ml' => 'Mali', 'mm' => 'Myanmar', 'mn' => 'Mongolia', 'mo' => 'Macau', 'mp' => 'Northern Mariana Islands', 'mq' => 'Martinique', 'mr' => 'Mauritania', 'ms' => 'Montserrat', 'mt' => 'Malta', 'mu' => 'Mauritius', 'mv' => 'Maldives', 'mw' => 'Malawi', 'mx' => 'Mexico', 'my' => 'Malaysia', 'mz' => 'Mozambique', 'na' => 'Namibia', 'nc' => 'New Caledonia', 'ne' => 'Niger', 'nf' => 'Norfolk Island', 'ng' => 'Nigeria', 'ni' => 'Nicaragua', 'nl' => 'The Netherlands', 'no' => 'Norway', 'np' => 'Nepal', 'nr' => 'Nauru', 'nu' => 'Niue', 'nz' => 'New Zealand', 'om' => 'Oman', 'pa' => 'Panama', 'pe' => 'Peru', 'pf' => 'French Polynesia', 'pg' => 'Papua New Guinea', 'ph' => 'Philippines', 'pk' => 'Pakistan', 'pl' => 'Poland', 'pm' => 'St. Pierre & Miquelon', 'pn' => 'Pitcairn', 'pr' => 'Puerto Rico', 'ps' => 'Palestine', 'pt' => 'Portugal', 'pw' => 'Palau', 'py' => 'Paraguay', 'qa' => 'Qatar', 're' => 'Reunion', 'ro' => 'Romania', 'ru' => 'Russia', 'rw' => 'Rwanda', 'sa' => 'Saudi Arabia', 'sb' => 'Solomon Islands', 'sc' => 'Seychelles', 'sd' => 'Sudan', 'se' => 'Sweden', 'sg' => 'Singapore', 'sh' => 'St. Helena', 'si' => 'Slovenia', 'sj' => 'Svalbard & Jan Mayen Islands', 'sk' => 'Slovakia', 'sl' => 'Sierra Leone', 'sm' => 'San Marino', 'sn' => 'Senegal', 'so' => 'Somalia', 'sr' => 'Surinam', 'st' => 'Sao Tome & Principe', 'su' => 'USSR', 'sv' => 'El Salvador', 'sy' => 'Syrian Arab Republic', 'sz' => 'Swaziland', 'tc' => 'The Turks & Caicos Islands', 'td' => 'Chad', 'tf' => 'French Southern Territories', 'tg' => 'Togo', 'th' => 'Thailand', 'tj' => 'Tajikistan', 'tk' => 'Tokelau', 'tm' => 'Turkmenistan', 'tn' => 'Tunisia', 'to' => 'Tonga', 'tp' => 'East Timor', 'tr' => 'Turkey', 'tt' => 'Trinidad & Tobago', 'tv' => 'Tuvalu', 'tw' => 'Taiwan', 'tz' => 'Tanzania', 'ua' => 'Ukraine', 'ug' => 'Uganda', 'uk' => 'United Kingdom', 'um' => 'United States Minor Outlying Islands', 'us' => 'United States', 'uy' => 'Uruguay', 'uz' => 'Uzbekistan', 'va' => 'Vatican City', 'vc' => 'Saint Vincent & the Grenadines', 've' => 'Venezuela', 'vg' => 'British Virgin Islands', 'vi' => 'US Virgin Islands', 'vn' => 'Vietnam', 'vu' => 'Vanuatu', 'wf' => 'Wallis & Futuna Islands', 'ws' => 'Samoa', 'ye' => 'Yemen', 'yt' => 'Mayotte', 'yu' => 'Yugoslavia', 'za' => 'South Africa', 'zm' => 'Zambia', 'zr' => 'Zaire', 'zw' => 'Zimbabwe'); $Action = 'TotalCounter statistics'; ## by Schlaefer ## sets the max items if provided by the form if ($_REQUEST['TotalCounterMaxItems']) { $TotalCounterMaxItems = $_REQUEST['TotalCounterMaxItems']; } //------------------------------------------------------------------------------------------------------------ // PAGES $html = '<h1>Total Counter $[statistics]</h1>' . '<br /><hr />' . '<h2>$[Page views]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Pages] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Pages']); $tar = @array_slice($TotalCounter['Pages'], 0, $TotalCounterMaxItems); $tot = $TotalCount; $max = @current($tar); $i = 0; if (is_array($tar) && $tot) { // by Florian Xaver foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td><a href='\$ScriptUrl/{$pn}'>{$pn}</a> </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } ## by Schlaefer //------------------------------------------------------------------------------------------------------------ ## PAGES daily $html .= '</table>' . '<br /><hr />' . '<h2>$[Page views] $[today]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Pages] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; $tar = array(); foreach ($TotalCounter['PagesTodayCounter'] as $pn => $cnt) { if ($TotalCounter['PagesTodayDay'][$pn] === date("%y%m%d")) { $tar[$pn] = $cnt; } } @arsort($tar); $tot = @array_sum($tar); $tar = @array_slice($tar, 0, $TotalCounterMaxItems); $max = @current($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td><a href='\$ScriptUrl/{$pn}'>{$pn}</a> </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; if ($i == $TotalCounterMaxItems) { break; } } } //------------------------------------------------------------------------------------------------------------ // USERS $html .= '</table>' . '<br /><hr />' . '<h2>$[Users]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Users] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Users']); $tar = @array_slice($TotalCounter['Users'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . '<td>' . ($pn != 'Guest (not authenticated)' ? "<a href='\$ScriptUrl/\$AuthorGroup/{$pn}'>{$pn}</a>" : $pn) . " </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // LANGUAGES if (defined('MULTILANGUAGE')) { $html .= '</table>' . '<br /><hr />' . '<h2>$[Languages]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Languages] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Languages']); $tar = @array_slice($TotalCounter['Languages'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td>{$pn} </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } } //------------------------------------------------------------------------------------------------------------ // BROWSERS $html .= '</table>' . '<br /><hr />' . '<h2>$[Browsers]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Browsers] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Browsers']); $tar = @array_slice($TotalCounter['Browsers'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td>{$pn} </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // OPERATING SYSTEMS $html .= '</table>' . '<br /><hr />' . '<h2>$[Operating systems]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Operating systems] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['OSes']); $tar = @array_slice($TotalCounter['OSes'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td>{$pn} </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // REFERERS $html .= '</table>' . '<br /><hr />' . '<h2>$[Referers]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Referers] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Referers']); $tar = @array_slice($TotalCounter['Referers'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td>{$pn} </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // LOCATIONS $html .= '</table>' . '<br /><hr />' . '<h2>$[Locations]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Locations] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Locations']); $tar = @array_slice($TotalCounter['Locations'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . '<td>' . ($alllocations[$pn] == '' ? 'Unknown' : $alllocations[$pn]) . ' ' . ($pn == 'Unknown' || $pn == 'localhost' ? '' : "(.{$pn})") . ' </td>' . '<td>' . Round(100 * $cnt / $tot) . '%</td>' . '<td><div style=\'background-color:$TotalCounterBarColor;height:13px;width:' . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // WEB BOTS $html .= '</table>' . '<br /><hr />' . '<h2>$[Web bots]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Web bots] </b></td><td colspan=\'2\'><b>$[Percent]</b></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounter['Bots']); $tar = @array_slice($TotalCounter['Bots'], 0, $TotalCounterMaxItems); $max = @current($tar); $tot = @array_sum($tar); $i = 0; if (is_array($tar)) { foreach ($tar as $pn => $cnt) { $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . "<td>{$pn} </td><td>" . Round(100 * $cnt / $tot) . "%</td><td><div style='background-color:{$TotalCounterBarColor};height:13px;width:" . Round(200 * $cnt / $max) . "px;color:#fff'></div></td><td align='right'> {$cnt}</td>" . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // Downloads $html .= '</table>' . '<br /><hr />' . '<h2>$[File Downloads]</h2>' . '<table border=\'0\'>' . '<tr><td' . ($TotalCounterShowNumbers ? ' colspan=\'2\'' : '') . '><b>$[Downloads] </b></td><td colspan=\'2\'></td><td align=\'right\'><b>$[Count]</b></td></tr>'; @arsort($TotalCounterDownloads); $max = count($TotalCounterDownloads); $tot = @array_sum($TotalCounterDownloads); $i = 0; if (is_array($TotalCounterDownloads)) { for ($row = 0; $row < $max; $row++) { $tablerow = each($TotalCounterDownloads); $value = $tablerow['value']; $html .= '<tr>' . ($TotalCounterShowNumbers ? '<td align=\'right\' valign=\'bottom\'><small>' . ++$i . '.</small></td>' : '') . '<td>' . $tablerow['key'] . '</td>' . '<td></td>' . '<td></td><td align="right"> ' . $value . '</td>' . '</tr>'; } } //------------------------------------------------------------------------------------------------------------ // Time statistics ## by MateuszCzaplinski foreach ($TotalCounterTimeBins as $n => $a) { $html .= '</table>' . '<br /><hr />' . "<h2>\$[{$n}]</h2><table border='0' class='TC-{$n} TotalCounter'>"; SDVA($TotalCounterBinsFmt, array('"$count"', '"<div class=\\"TCprogress\\" style=\\"$direction:".Round(1+200*$count/$maxcount)."px;\\"></div>"', 'date("G",$now-$atom*($maxnr-1-$nr))')); $fmt = $a['fmt']; if (is_string($fmt)) { $tmp = $fmt; $fmt = $TotalCounterBinsFmt; $fmt[2] = $tmp; } if (is_array($fmt)) { $rows = array(); ## Variables used in 'fmt' $maxcount = @max($TotalCounter[$n]); $direction = 'height'; $maxnr = $a['max']; $atom = $a['atom']; $now = time(); for ($nr = 0; $nr < $a['max']; $nr++) { for ($j = 0; $j < count($fmt); $j++) { $count = $TotalCounter[$n][$nr]; $rows[$j] = (string) @$rows[$j] . "<td valign='bottom' class='seq{$j}'>" . (string) eval("global \$TotalCounterMonthsShort; return ({$fmt[$j]});") . "</td>\n"; } } } $html .= '<tr>' . implode('</tr><tr>', $rows) . '</tr>'; } $html .= '</table><hr /><p align=\'right\'>TotalCounter v' . TOTALCOUNTER . '</p>'; PrintFmt($pagename, array(&$PageStartFmt, $html, &$PageEndFmt)); }
function HandleDiff($pagename) { global $HandleDiffFmt, $PageStartFmt, $PageDiffFmt, $PageEndFmt; Lock(1); $page = ReadPage($pagename, ''); if (!$page) { Abort("?cannot diff {$pagename}"); } SDV($HandleDiffFmt, array(&$PageStartFmt, &$PageDiffFmt, 'function:PrintDiff', &$PageEndFmt)); PrintFmt($pagename, $HandleDiffFmt); }
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; }
function HandleSearchA($pagename, $level = 'read') { global $PageSearchForm, $FmtV, $HandleSearchFmt, $PageStartFmt, $PageEndFmt; SDV($HandleSearchFmt, array(&$PageStartFmt, '$PageText', &$PageEndFmt)); SDV($PageSearchForm, '$[$SiteGroup/Search]'); PCache($pagename, RetrieveAuthPage($pagename, 'read')); $form = ReadPage(FmtPageName($PageSearchForm, $pagename), READPAGE_CURRENT); $text = @$form['text']; if (!$text) { $text = '(:searchresults:)'; } $FmtV['$PageText'] = MarkupToHTML($pagename, $text); PrintFmt($pagename, $HandleSearchFmt); }
function HandleAttr($pagename) { global $PageAttrFmt, $PageStartFmt, $PageEndFmt; $page = RetrieveAuthPage($pagename, 'attr'); if (!$page) { Abort("?unable to read {$pagename}"); } PCache($pagename, $page); SDV($PageAttrFmt, "<h1 class='wikiaction'>\$[\$FullName Attributes]</h1>\n <p>Enter new attributes for this page below. Leaving a field blank\n will leave the attribute unchanged. To clear an attribute, enter\n 'clear'.</p>"); SDV($HandleAttrFmt, array(&$PageStartFmt, &$PageAttrFmt, 'function:PrintAttrForm', &$PageEndFmt)); PrintFmt($pagename, $HandleAttrFmt); }
function HandleDiff($pagename, $auth = 'read') { global $HandleDiffFmt, $PageStartFmt, $PageDiffFmt, $PageEndFmt; $page = RetrieveAuthPage($pagename, $auth, true); if (!$page) { Abort("?cannot diff {$pagename}"); } PCache($pagename, $page); SDV($HandleDiffFmt, array(&$PageStartFmt, &$PageDiffFmt, "<div id='wikidiff'>", 'function:PrintDiff', '</div>', &$PageEndFmt)); PrintFmt($pagename, $HandleDiffFmt); }
function HandleImageHistory($pagename) { global $HandleDiffFmt, $PageStartFmt, $PageDiffFmt, $PageEndFmt; Lock(1); if (isset($_GET['image'])) { $imageToSeeHistory = $_GET['image']; } $page = ReadPage($pagename, ''); if (!$page) { Abort("?cannot diff {$pagename}"); } // SDV($HandleDiffFmt,array(&$PageStartFmt, // &$PageDiffFmt,'function:PrintDiff', // &$PageEndFmt)); SDV($HandleDiffFmt, array(&$PageStartFmt, &$PageDiffFmt, "image history of {$imageToSeeHistory}", &$PageEndFmt)); PrintFmt($pagename, $HandleDiffFmt); }
function HandleUpload($pagename, $auth = 'upload') { global $FmtV, $UploadExtMax, $HandleUploadFmt, $PageStartFmt, $PageEndFmt, $PageUploadFmt; UploadAuth($pagename, $auth, 1); $FmtV['$UploadName'] = MakeUploadName($pagename, @$_REQUEST['upname']); $upresult = PHSC(@$_REQUEST['upresult']); $uprname = PHSC(@$_REQUEST['uprname']); $FmtV['$upext'] = PHSC(@$_REQUEST['upext']); $FmtV['$upmax'] = PHSC(@$_REQUEST['upmax']); $FmtV['$UploadResult'] = $upresult ? FmtPageName("<i>{$uprname}</i>: \$[UL{$upresult}]", $pagename) : ''; SDV($HandleUploadFmt, array(&$PageStartFmt, &$PageUploadFmt, &$PageEndFmt)); PrintFmt($pagename, $HandleUploadFmt); }
function HandleRss($pagename) { global $RssMaxItems, $RssSourceSize, $RssDescSize, $RssChannelFmt, $RssChannelDesc, $RssTimeFmt, $RssChannelBuildDate, $RssItemsRDFList, $RssItemsRDFListFmt, $RssItems, $RssItemFmt, $HandleRssFmt, $FmtV; $t = ReadTrail($pagename, $pagename); $page = RetrieveAuthPage($pagename, 'read', false); if (!$page) { Abort("?cannot read {$pagename}"); } $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'], 'read', false); Lock(0); if (!$page) { continue; } $text = MarkupToHTML($t[$i]['pagename'], substr($page['text'], 0, $RssSourceSize)); $text = entityencode(preg_replace("/<.*?>/s", "", $text)); preg_match("/^(.{0,{$RssDescSize}}\\s)/s", $text, $match); $r[] = array('name' => $t[$i]['pagename'], 'time' => $page['time'], 'desc' => $match[1] . " ...", 'author' => $page['author']); if ($page['time'] > $cbgmt) { $cbgmt = $page['time']; } } SDV($RssChannelBuildDate, entityencode(gmdate('D, d M Y H:i:s \\G\\M\\T', $cbgmt))); SDV($RssChannelDesc, entityencode(FmtPageName('$Group.$Title', $pagename))); foreach ($r as $page) { $FmtV['$RssItemPubDate'] = gmstrftime($RssTimeFmt, $page['time']); $FmtV['$RssItemDesc'] = $page['desc']; $FmtV['$RssItemAuthor'] = $page['author']; $RssItemsRDFList[] = entityencode(FmtPageName($RssItemsRDFListFmt, $page['name'])); $RssItems[] = entityencode(FmtPageName($RssItemFmt, $page['name'])); } header("Content-type: text/xml"); PrintFmt($pagename, $HandleRssFmt); exit; }
function HandleSearchA($pagename, $level = 'read') { global $PageSearchForm, $FmtV, $HandleSearchFmt, $PageStartFmt, $PageEndFmt; SDV($HandleSearchFmt, array(&$PageStartFmt, '$PageText', &$PageEndFmt)); SDV($PageSearchForm, '$[$SiteGroup/Search]'); $form = RetrieveAuthPage($pagename, 'read', true, READPAGE_CURRENT); PCache($pagename, $form); if (!preg_match('/\\(:searchresults(\\s.*?)?:\\)/', $form['text'])) { foreach ((array) $PageSearchForm as $formfmt) { $form = ReadPage(FmtPageName($formfmt, $pagename), READPAGE_CURRENT); if ($form['text']) { break; } } } $text = @$form['text']; if (!$text) { $text = '(:searchresults:)'; } $FmtV['$PageText'] = MarkupToHTML($pagename, $text); PrintFmt($pagename, $HandleSearchFmt); }
function HandleAttr($pagename, $auth = 'attr') { global $PageAttrFmt,$PageStartFmt,$PageEndFmt; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) { Abort("?unable to read $pagename"); } PCache($pagename,$page); XLSDV('en', array('EnterAttributes' => "Enter new attributes for this page below. Leaving a field blank will leave the attribute unchanged. To clear an attribute, enter 'clear'.")); SDV($PageAttrFmt,"<div class='wikiattr'> <h2 class='wikiaction'>$[{\$FullName} Attributes]</h2> <p>$[EnterAttributes]</p></div>"); SDV($HandleAttrFmt,array(&$PageStartFmt,&$PageAttrFmt, 'function:PrintAttrForm',&$PageEndFmt)); PrintFmt($pagename,$HandleAttrFmt); }
function PrintSkin($pagename, $arg) { global $TmplFmt, $TmplDisplay; foreach ($TmplFmt[$arg] as $k => $v) { if (!isset($TmplDisplay[$k]) || $TmplDisplay[$k]) { PrintFmt($pagename, $v); } } }
function HandleUpload($pagename, $auth = 'upload') { global $FmtV,$UploadExtMax, $HandleUploadFmt,$PageStartFmt,$PageEndFmt,$PageUploadFmt; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) Abort("?cannot upload to $pagename"); PCache($pagename,$page); $FmtV['$UploadName'] = MakeUploadName($pagename,@$_REQUEST['upname']); $upresult = htmlspecialchars(@$_REQUEST['upresult']); $uprname = htmlspecialchars(@$_REQUEST['uprname']); $FmtV['$upext'] = htmlspecialchars(@$_REQUEST['upext']); $FmtV['$upmax'] = htmlspecialchars(@$_REQUEST['upmax']); $FmtV['$UploadResult'] = ($upresult) ? FmtPageName("<i>$uprname</i>: $[UL$upresult]",$pagename) : ''; SDV($HandleUploadFmt,array(&$PageStartFmt,&$PageUploadFmt,&$PageEndFmt)); PrintFmt($pagename,$HandleUploadFmt); }
function HandleRefCount($pagename, $auth='read') { global $HandleRefCountFmt,$PageStartFmt,$PageEndFmt; $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) Abort('?unauthorized'); PCache($pagename, $page); SDV($HandleRefCountFmt,array(&$PageStartFmt, 'function:PrintRefCount',&$PageEndFmt)); PrintFmt($pagename,$HandleRefCountFmt); }