0
+ − 1
<?php
73
0a74676a2f2f
Made the move to Loch Ness, and got some basic page grouping functionality working. TODO: fix some UI issues in Javascript ACL editor and change non-JS ACL editor to work with page groups too
Dan
diff
changeset
+ − 2
165
+ − 3
/*
0
+ − 4
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
167
+ − 5
* Version 1.0.2 (Coblynau)
0
+ − 6
* Copyright (C) 2006-2007 Dan Fuhry
+ − 7
*
+ − 8
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ − 9
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ − 10
*
+ − 11
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − 12
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ − 13
*
202
+ − 14
* @package Enano
+ − 15
* @subpackage Frontend
+ − 16
*
0
+ − 17
*/
202
+ − 18
81
d7fc25acd3f3
Replaced the menu in the admin theme with something much more visually pleasureable; minor fix in Special:UploadFile; finished patching a couple of XSS problems from Banshee; finished Admin:PageGroups; removed unneeded code in flyin.js; finished tag system (except tag cloud); 1.0.1 release candidate
Dan
diff
changeset
+ − 19
// Set up gzip encoding before any output is sent
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 20
173
91127e62f38f
Fixed some regular expressions in HTML optimization algorithm; regex page groups can be edited now (oops)
Dan
diff
changeset
+ − 21
$aggressive_optimize_html = true;
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 22
0
+ − 23
global $do_gzip;
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 24
$do_gzip = true;
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 25
0
+ − 26
if(isset($_SERVER['PATH_INFO'])) $v = $_SERVER['PATH_INFO'];
+ − 27
elseif(isset($_GET['title'])) $v = $_GET['title'];
+ − 28
else $v = '';
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 29
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 30
if ( isset($_GET['nocompress']) )
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 31
$aggressive_optimize_html = false;
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 32
0
+ − 33
error_reporting(E_ALL);
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 34
0
+ − 35
// if(!strstr($v, 'CSS') && !strstr($v, 'UploadFile') && !strstr($v, 'DownloadFile')) // These pages are blacklisted because we can't have debugConsole's HTML output disrupting the flow of header() calls and whatnot
+ − 36
// {
+ − 37
// $do_gzip = ( function_exists('gzcompress') && ( isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') ) ) ? true : false;
+ − 38
// // Uncomment the following line to enable debugConsole (requires PHP 5 or later)
+ − 39
// // define('ENANO_DEBUG', '');
+ − 40
// }
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 41
0
+ − 42
if(defined('ENANO_DEBUG')) $do_gzip = false;
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 43
0
+ − 44
if($aggressive_optimize_html || $do_gzip)
+ − 45
{
+ − 46
ob_start();
+ − 47
}
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 48
0
+ − 49
require('includes/common.php');
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 50
0
+ − 51
global $db, $session, $paths, $template, $plugins; // Common objects
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 52
0
+ − 53
if(!isset($_GET['do'])) $_GET['do'] = 'view';
+ − 54
switch($_GET['do'])
+ − 55
{
+ − 56
default:
228
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 57
die_friendly('Invalid action', '<p>The action "'.htmlspecialchars($_GET['do']).'" is not defined. Return to <a href="'.makeUrl($paths->page).'">viewing this page\'s text</a>.</p>');
0
+ − 58
break;
+ − 59
case 'view':
+ − 60
// echo PageUtils::getpage($paths->page, true, ( (isset($_GET['oldid'])) ? $_GET['oldid'] : false ));
21
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
diff
changeset
+ − 61
$rev_id = ( (isset($_GET['oldid'])) ? intval($_GET['oldid']) : 0 );
663fcf528726
Updated all version numbers back to Banshee; a few preliminary steps towards full UTF-8 support in page URLs
Dan
diff
changeset
+ − 62
$page = new PageProcessor( $paths->cpage['urlname_nons'], $paths->namespace, $rev_id );
0
+ − 63
$page->send_headers = true;
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
diff
changeset
+ − 64
$pagepass = ( isset($_REQUEST['pagepass']) ) ? sha1($_REQUEST['pagepass']) : '';
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
diff
changeset
+ − 65
$page->password = $pagepass;
61
+ − 66
$page->send(true);
0
+ − 67
break;
+ − 68
case 'comments':
+ − 69
$template->header();
+ − 70
$sub = ( isset ($_GET['sub']) ) ? $_GET['sub'] : false;
+ − 71
switch($sub)
+ − 72
{
+ − 73
case 'admin':
+ − 74
default:
+ − 75
$act = ( isset ($_GET['action']) ) ? $_GET['action'] : false;
+ − 76
$id = ( isset ($_GET['id']) ) ? intval($_GET['id']) : -1;
+ − 77
echo PageUtils::comments_html($paths->cpage['urlname_nons'], $paths->namespace, $act, Array('id'=>$id));
+ − 78
break;
+ − 79
case 'postcomment':
+ − 80
if(empty($_POST['name']) ||
+ − 81
empty($_POST['subj']) ||
+ − 82
empty($_POST['text'])
+ − 83
) { echo 'Invalid request'; break; }
+ − 84
$cid = ( isset($_POST['captcha_id']) ) ? $_POST['captcha_id'] : false;
+ − 85
$cin = ( isset($_POST['captcha_input']) ) ? $_POST['captcha_input'] : false;
+ − 86
PageUtils::addcomment($paths->cpage['urlname_nons'], $paths->namespace, $_POST['name'], $_POST['subj'], $_POST['text'], $cin, $cid); // All filtering, etc. is handled inside this method
+ − 87
echo PageUtils::comments_html($paths->cpage['urlname_nons'], $paths->namespace);
+ − 88
break;
+ − 89
case 'editcomment':
+ − 90
if(!isset($_GET['id']) || ( isset($_GET['id']) && !preg_match('#^([0-9]+)$#', $_GET['id']) )) { echo '<p>Invalid comment ID</p>'; break; }
+ − 91
$q = $db->sql_query('SELECT subject,comment_data,comment_id FROM '.table_prefix.'comments WHERE comment_id='.$_GET['id']);
+ − 92
if(!$q) $db->_die('The comment data could not be selected.');
+ − 93
$row = $db->fetchrow();
+ − 94
$db->free_result();
+ − 95
echo '<form action="'.makeUrl($paths->page, 'do=comments&sub=savecomment').'" method="post">';
+ − 96
echo "<br /><div class='tblholder'><table border='0' width='100%' cellspacing='1' cellpadding='4'>
+ − 97
<tr><td class='row1'>Subject:</td><td class='row1'><input type='text' name='subj' value='{$row['subject']}' /></td></tr>
+ − 98
<tr><td class='row2'>Comment:</td><td class='row2'><textarea rows='10' cols='40' style='width: 98%;' name='text'>{$row['comment_data']}</textarea></td></tr>
+ − 99
<tr><td class='row1' colspan='2' class='row1' style='text-align: center;'><input type='hidden' name='id' value='{$row['comment_id']}' /><input type='submit' value='Save Changes' /></td></tr>
+ − 100
</table></div>";
+ − 101
echo '</form>';
+ − 102
break;
+ − 103
case 'savecomment':
+ − 104
if(empty($_POST['subj']) || empty($_POST['text'])) { echo '<p>Invalid request</p>'; break; }
+ − 105
$r = PageUtils::savecomment_neater($paths->cpage['urlname_nons'], $paths->namespace, $_POST['subj'], $_POST['text'], (int)$_POST['id']);
+ − 106
if($r != 'good') { echo "<pre>$r</pre>"; break; }
+ − 107
echo PageUtils::comments_html($paths->cpage['urlname_nons'], $paths->namespace);
+ − 108
break;
+ − 109
case 'deletecomment':
+ − 110
if(!empty($_GET['id']))
+ − 111
{
+ − 112
PageUtils::deletecomment_neater($paths->cpage['urlname_nons'], $paths->namespace, (int)$_GET['id']);
+ − 113
}
+ − 114
echo PageUtils::comments_html($paths->cpage['urlname_nons'], $paths->namespace);
+ − 115
break;
+ − 116
}
+ − 117
$template->footer();
+ − 118
break;
+ − 119
case 'edit':
228
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 120
if(isset($_POST['_cancel']))
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 121
{
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 122
redirect(makeUrl($paths->page), '', '', 0);
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 123
break;
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 124
}
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 125
if(isset($_POST['_save']))
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 126
{
0
+ − 127
$e = PageUtils::savepage($paths->cpage['urlname_nons'], $paths->namespace, $_POST['page_text'], $_POST['edit_summary'], isset($_POST['minor']));
228
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 128
if ( $e == 'good' )
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 129
{
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 130
redirect(makeUrl($paths->page), 'Changes saved', 'Your changes to this page have been saved. Redirecting...', 3);
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 131
}
0
+ − 132
}
+ − 133
$template->header();
+ − 134
if(isset($_POST['_preview']))
+ − 135
{
+ − 136
$text = $_POST['page_text'];
+ − 137
echo PageUtils::genPreview($_POST['page_text']);
+ − 138
}
+ − 139
else $text = RenderMan::getPage($paths->cpage['urlname_nons'], $paths->namespace, 0, false, false, false, false);
+ − 140
echo '
+ − 141
<form action="'.makeUrl($paths->page, 'do=edit').'" method="post" enctype="multipart/form-data">
+ − 142
<br />
+ − 143
<textarea name="page_text" rows="20" cols="60" style="width: 97%;">'.$text.'</textarea><br />
+ − 144
<br />
+ − 145
';
+ − 146
if($paths->wiki_mode)
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 147
echo 'Edit summary: <input name="edit_summary" type="text" size="40" /><br /><label><input type="checkbox" name="minor" /> This is a minor edit</label><br />';
0
+ − 148
echo '<br />
+ − 149
<input type="submit" name="_save" value="Save changes" style="font-weight: bold;" />
+ − 150
<input type="submit" name="_preview" value="Preview changes" />
+ − 151
<input type="submit" name="_revert" value="Revert changes" />
+ − 152
<input type="submit" name="_cancel" value="Cancel" />
+ − 153
</form>
+ − 154
';
159
+ − 155
if ( getConfig('wiki_edit_notice') == '1' )
+ − 156
{
+ − 157
$notice = getConfig('wiki_edit_notice_text');
+ − 158
echo RenderMan::render($notice);
+ − 159
}
0
+ − 160
$template->footer();
+ − 161
break;
+ − 162
case 'viewsource':
+ − 163
$template->header();
+ − 164
$text = RenderMan::getPage($paths->cpage['urlname_nons'], $paths->namespace, 0, false, false, false, false);
+ − 165
echo '
+ − 166
<form action="'.makeUrl($paths->page, 'do=edit').'" method="post">
+ − 167
<br />
+ − 168
<textarea readonly="readonly" name="page_text" rows="20" cols="60" style="width: 97%;">'.$text.'</textarea>';
+ − 169
echo '<br />
+ − 170
<input type="submit" name="_cancel" value="Close viewer" />
+ − 171
</form>
+ − 172
';
+ − 173
$template->footer();
+ − 174
break;
+ − 175
case 'history':
+ − 176
$hist = PageUtils::histlist($paths->cpage['urlname_nons'], $paths->namespace);
+ − 177
$template->header();
+ − 178
echo $hist;
+ − 179
$template->footer();
+ − 180
break;
+ − 181
case 'rollback':
+ − 182
$id = (isset($_GET['id'])) ? $_GET['id'] : false;
+ − 183
if(!$id || !preg_match('#^([0-9]+)$#', $id)) die_friendly('Invalid action ID', '<p>The URL parameter "id" is not an integer. Exiting to prevent nasties like SQL injection, etc.</p>');
+ − 184
$rb = PageUtils::rollback( (int) $id );
+ − 185
$template->header();
+ − 186
echo '<p>'.$rb.' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>';
+ − 187
$template->footer();
+ − 188
break;
+ − 189
case 'catedit':
+ − 190
if(isset($_POST['__enanoSaveButton']))
+ − 191
{
+ − 192
unset($_POST['__enanoSaveButton']);
+ − 193
$val = PageUtils::catsave($paths->cpage['urlname_nons'], $paths->namespace, $_POST);
+ − 194
if($val == 'GOOD')
+ − 195
{
+ − 196
header('Location: '.makeUrl($paths->page)); echo '<html><head><title>Redirecting...</title></head><body>If you haven\'t been redirected yet, <a href="'.makeUrl($paths->page).'">click here</a>.'; break;
+ − 197
} else {
+ − 198
die_friendly('Error saving category information', '<p>'.$val.'</p>');
+ − 199
}
+ − 200
}
+ − 201
elseif(isset($_POST['__enanoCatCancel']))
+ − 202
{
+ − 203
header('Location: '.makeUrl($paths->page)); echo '<html><head><title>Redirecting...</title></head><body>If you haven\'t been redirected yet, <a href="'.makeUrl($paths->page).'">click here</a>.'; break;
+ − 204
}
+ − 205
$template->header();
+ − 206
$c = PageUtils::catedit_raw($paths->cpage['urlname_nons'], $paths->namespace);
+ − 207
echo $c[1];
+ − 208
$template->footer();
+ − 209
break;
+ − 210
case 'moreoptions':
+ − 211
$template->header();
32
4d87aad3c4c0
Finished everything on the TODO list (yay!); several CSS cleanups; tons more changes in this commit - see the patch for details
Dan
diff
changeset
+ − 212
echo '<div class="menu_nojs" style="width: 150px; padding: 0;"><ul style="display: block;"><li><div class="label">More options for this page</div><div style="clear: both;"></div></li>'.$template->tpl_strings['TOOLBAR_EXTRAS'].'</ul></div>';
0
+ − 213
$template->footer();
+ − 214
break;
+ − 215
case 'protect':
+ − 216
if (!isset($_REQUEST['level'])) die_friendly('Invalid request', '<p>No protection level specified</p>');
+ − 217
if(!empty($_POST['reason']))
+ − 218
{
+ − 219
if(!preg_match('#^([0-2]*){1}$#', $_POST['level'])) die_friendly('Error protecting page', '<p>Request validation failed</p>');
+ − 220
PageUtils::protect($paths->cpage['urlname_nons'], $paths->namespace, intval($_POST['level']), $_POST['reason']);
+ − 221
die_friendly('Page protected', '<p>The protection setting has been applied. <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>');
+ − 222
}
+ − 223
$template->header();
+ − 224
?>
+ − 225
<form action="<?php echo makeUrl($paths->page, 'do=protect'); ?>" method="post">
+ − 226
<input type="hidden" name="level" value="<?php echo $_REQUEST['level']; ?>" />
+ − 227
<?php if(isset($_POST['reason'])) echo '<p style="color: red;">Error: you must enter a reason for protecting this page.</p>'; ?>
+ − 228
<p>Reason for protecting the page:</p>
+ − 229
<p><input type="text" name="reason" size="40" /><br />
+ − 230
Protecion level to be applied: <b><?php
+ − 231
switch($_REQUEST['level'])
+ − 232
{
+ − 233
case '0':
+ − 234
echo 'No protection';
+ − 235
break;
+ − 236
case '1':
+ − 237
echo 'Full protection';
+ − 238
break;
+ − 239
case '2':
+ − 240
echo 'Semi-protection';
+ − 241
break;
+ − 242
default:
+ − 243
echo 'None;</b> Warning: request validation will fail after clicking submit<b>';
+ − 244
}
+ − 245
?></b></p>
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 246
<p><input type="submit" value="Protect page" style="font-weight: bold;" /></p>
0
+ − 247
</form>
+ − 248
<?php
+ − 249
$template->footer();
+ − 250
break;
+ − 251
case 'rename':
+ − 252
if(!empty($_POST['newname']))
+ − 253
{
+ − 254
$r = PageUtils::rename($paths->cpage['urlname_nons'], $paths->namespace, $_POST['newname']);
+ − 255
die_friendly('Page renamed', '<p>'.nl2br($r).' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>');
+ − 256
}
+ − 257
$template->header();
+ − 258
?>
+ − 259
<form action="<?php echo makeUrl($paths->page, 'do=rename'); ?>" method="post">
+ − 260
<?php if(isset($_POST['newname'])) echo '<p style="color: red;">Error: you must enter a new name for this page.</p>'; ?>
+ − 261
<p>Please enter a new name for this page:</p>
+ − 262
<p><input type="text" name="newname" size="40" /></p>
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 263
<p><input type="submit" value="Rename page" style="font-weight: bold;" /></p>
0
+ − 264
</form>
+ − 265
<?php
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 266
$template->footer();
0
+ − 267
break;
+ − 268
case 'flushlogs':
+ − 269
if(!$session->get_permissions('clear_logs')) die_friendly('Access denied', '<p>Flushing the logs for a page <u>requires</u> administrative rights.</p>');
+ − 270
if(isset($_POST['_downthejohn']))
+ − 271
{
+ − 272
$template->header();
+ − 273
$result = PageUtils::flushlogs($paths->cpage['urlname_nons'], $paths->namespace);
+ − 274
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>';
+ − 275
$template->footer();
+ − 276
break;
+ − 277
}
+ − 278
$template->header();
+ − 279
?>
+ − 280
<form action="<?php echo makeUrl($paths->page, 'do=flushlogs'); ?>" method="post">
+ − 281
<h3>You are about to <span style="color: red;">destroy</span> all logged edits and actions on this page.</h3>
116
77c75179bb95
Made most special pages "visible"; fixup for non-existent special page redirect in paths.php; rewrote Special:AllPages to have pagination (WiP, Special:SpecialPages is possibly next, depending on whether paginate_array works or not)
Dan
diff
changeset
+ − 282
<p>Unlike deleting or editing this page, this action is <u>not reversible</u>! You should only do this if you are desparate for
0
+ − 283
database space.</p>
+ − 284
<p>Do you really want to continue?</p>
+ − 285
<p><input type="submit" name="_downthejohn" value="Flush logs" style="color: red; font-weight: bold;" /></p>
+ − 286
</form>
+ − 287
<?php
+ − 288
$template->footer();
+ − 289
break;
+ − 290
case 'delvote':
+ − 291
if(isset($_POST['_ballotbox']))
+ − 292
{
+ − 293
$template->header();
+ − 294
$result = PageUtils::delvote($paths->cpage['urlname_nons'], $paths->namespace);
+ − 295
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>';
+ − 296
$template->footer();
+ − 297
break;
+ − 298
}
+ − 299
$template->header();
+ − 300
?>
+ − 301
<form action="<?php echo makeUrl($paths->page, 'do=delvote'); ?>" method="post">
+ − 302
<h3>Your vote counts.</h3>
+ − 303
<p>If you think that this page is not relavent to the content on this site, or if it looks like this page was only created in
+ − 304
an attempt to spam the site, you can request that this page be deleted by an administrator.</p>
+ − 305
<p>After you vote, you should leave a comment explaining the reason for your vote, especially if you are the first person to
+ − 306
vote against this page.</p>
+ − 307
<p>So far, <?php echo ( $paths->cpage['delvotes'] == 1 ) ? $paths->cpage['delvotes'] . ' person has' : $paths->cpage['delvotes'] . ' people have'; ?> voted to delete this page.</p>
+ − 308
<p><input type="submit" name="_ballotbox" value="Vote to delete this page" /></p>
+ − 309
</form>
+ − 310
<?php
+ − 311
$template->footer();
+ − 312
break;
+ − 313
case 'resetvotes':
+ − 314
if(!$session->get_permissions('vote_reset')) die_friendly('Access denied', '<p>Resetting the deletion votes against this page <u>requires</u> admin rights.</p>');
+ − 315
if(isset($_POST['_youmaylivealittlelonger']))
+ − 316
{
+ − 317
$template->header();
+ − 318
$result = PageUtils::resetdelvotes($paths->cpage['urlname_nons'], $paths->namespace);
+ − 319
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>';
+ − 320
$template->footer();
+ − 321
break;
+ − 322
}
+ − 323
$template->header();
+ − 324
?>
+ − 325
<form action="<?php echo makeUrl($paths->page, 'do=resetvotes'); ?>" method="post">
+ − 326
<p>This action will reset the number of votes against this page to zero. Are you sure you want to do this?</p>
+ − 327
<p><input type="submit" name="_youmaylivealittlelonger" value="Reset votes" /></p>
+ − 328
</form>
+ − 329
<?php
+ − 330
$template->footer();
+ − 331
break;
+ − 332
case 'deletepage':
+ − 333
if(!$session->get_permissions('delete_page')) die_friendly('Access denied', '<p>Deleting pages <u>requires</u> admin rights.</p>');
+ − 334
if(isset($_POST['_adiossucker']))
+ − 335
{
28
+ − 336
$reason = ( isset($_POST['reason']) ) ? $_POST['reason'] : false;
+ − 337
if ( empty($reason) )
+ − 338
$error = 'Please enter a reason for deleting this page.';
+ − 339
else
+ − 340
{
+ − 341
$template->header();
+ − 342
$result = PageUtils::deletepage($paths->cpage['urlname_nons'], $paths->namespace, $reason);
+ − 343
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">Return to the page</a>.</p>';
+ − 344
$template->footer();
+ − 345
break;
+ − 346
}
0
+ − 347
}
+ − 348
$template->header();
+ − 349
?>
+ − 350
<form action="<?php echo makeUrl($paths->page, 'do=deletepage'); ?>" method="post">
+ − 351
<h3>You are about to <span style="color: red;">destroy</span> this page.</h3>
+ − 352
<p>While the deletion of the page itself is completely reversible, it is impossible to recover any comments or category information on this page. If this is a file page, the file along with all older revisions of it will be permanently deleted. Also, any custom information that this page is tagged with, such as a custom name, protection status, or additional settings such as whether to allow comments, will be permanently lost.</p>
+ − 353
<p>Are you <u>absolutely sure</u> that you want to continue?<br />
+ − 354
You will not be asked again.</p>
28
+ − 355
<?php if ( isset($error) ) echo "<p>$error</p>"; ?>
+ − 356
<p>Reason for deleting: <input type="text" name="reason" size="50" /></p>
0
+ − 357
<p><input type="submit" name="_adiossucker" value="Delete this page" style="color: red; font-weight: bold;" /></p>
+ − 358
</form>
+ − 359
<?php
+ − 360
$template->footer();
+ − 361
break;
+ − 362
case 'setwikimode':
+ − 363
if(!$session->get_permissions('set_wiki_mode')) die_friendly('Access denied', '<p>Changing the wiki mode setting <u>requires</u> admin rights.</p>');
97
+ − 364
if ( isset($_POST['finish']) )
+ − 365
{
+ − 366
$level = intval($_POST['level']);
+ − 367
if ( !in_array($level, array(0, 1, 2) ) )
+ − 368
{
+ − 369
die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 370
}
+ − 371
$q = $db->sql_query('UPDATE '.table_prefix.'pages SET wiki_mode=' . $level . ' WHERE urlname=\'' . $db->escape($paths->cpage['urlname_nons']) . '\' AND namespace=\'' . $paths->namespace . '\';');
+ − 372
if ( !$q )
+ − 373
$db->_die();
+ − 374
redirect(makeUrl($paths->page), htmlspecialchars($paths->cpage['name']), 'Wiki mode for this page has been set. Redirecting you to the page...', 2);
+ − 375
}
+ − 376
else
+ − 377
{
+ − 378
$template->header();
+ − 379
if(!isset($_GET['level']) || ( isset($_GET['level']) && !preg_match('#^([0-9])$#', $_GET['level']))) die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 380
$level = intval($_GET['level']);
+ − 381
if ( !in_array($level, array(0, 1, 2) ) )
+ − 382
{
+ − 383
die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 384
}
+ − 385
echo '<form action="' . makeUrl($paths->page, 'do=setwikimode', true) . '" method="post">';
+ − 386
echo '<input type="hidden" name="finish" value="foo" />';
+ − 387
echo '<input type="hidden" name="level" value="' . $level . '" />';
+ − 388
$level_txt = ( $level == 0 ) ? 'disabled' : ( ( $level == 1 ) ? 'enabled' : 'use the global setting' );
+ − 389
$blurb = ( $level == 0 || ( $level == 2 && getConfig('wiki_mode') != '1' ) ) ? 'Because this will disable the wiki behavior on this page, several features, most
+ − 390
notably the ability for users to vote to have this page deleted, will be disabled as they are not relevant to non-wiki pages. In addition, users will not be able
+ − 391
to edit this page unless an ACL rule specifically permits them.' : 'Because this will enable the wiki behavior on this page, users will gain the ability to
+ − 392
freely edit this page unless an ACL rule specifically denies them. If your site is public and gets good traffic, you should be aware of the possiblity of vandalism, and you need to be ready to revert
+ − 393
malicious edits to this page.';
+ − 394
?>
+ − 395
<h3>You are changing wiki mode for this page.</h3>
+ − 396
<p>Wiki features will be set to <?php echo $level_txt; ?>. <?php echo $blurb; ?></p>
+ − 397
<p>If you want to continue, please click the button below.</p>
+ − 398
<p><input type="submit" value="Set wiki mode" /></p>
+ − 399
<?php
+ − 400
echo '</form>';
+ − 401
$template->footer();
+ − 402
}
0
+ − 403
break;
+ − 404
case 'diff':
+ − 405
$template->header();
+ − 406
$id1 = ( isset($_GET['diff1']) ) ? (int)$_GET['diff1'] : false;
+ − 407
$id2 = ( isset($_GET['diff2']) ) ? (int)$_GET['diff2'] : false;
+ − 408
if(!$id1 || !$id2) { echo '<p>Invalid request.</p>'; $template->footer(); break; }
+ − 409
if(!preg_match('#^([0-9]+)$#', (string)$_GET['diff1']) ||
+ − 410
!preg_match('#^([0-9]+)$#', (string)$_GET['diff2'] )) { echo '<p>SQL injection attempt</p>'; $template->footer(); break; }
+ − 411
echo PageUtils::pagediff($paths->cpage['urlname_nons'], $paths->namespace, $id1, $id2);
+ − 412
$template->footer();
+ − 413
break;
91
+ − 414
case 'detag':
+ − 415
if ( $session->user_level < USER_LEVEL_ADMIN )
+ − 416
{
+ − 417
die_friendly('Access denied', '<p>You need to be an administrator to detag pages.</p>');
+ − 418
}
+ − 419
if ( $paths->page_exists )
+ − 420
{
+ − 421
die_friendly('Invalid request', '<p>The detag action is only valid for pages that have been deleted in the past.</p>');
+ − 422
}
+ − 423
$q = $db->sql_query('DELETE FROM '.table_prefix.'tags WHERE page_id=\'' . $db->escape($paths->cpage['urlname_nons']) . '\' AND namespace=\'' . $paths->namespace . '\';');
+ − 424
if ( !$q )
+ − 425
$db->_die('Detag query, index.php:'.__LINE__);
+ − 426
die_friendly('Page detagged', '<p>All stale tags have been removed from this page.</p>');
+ − 427
break;
0
+ − 428
case 'aclmanager':
+ − 429
$data = ( isset($_POST['data']) ) ? $_POST['data'] : Array('mode' => 'listgroups');
+ − 430
PageUtils::aclmanager($data);
+ − 431
break;
229
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 432
case 'sql_report':
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 433
$rev_id = ( (isset($_GET['oldid'])) ? intval($_GET['oldid']) : 0 );
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 434
$page = new PageProcessor( $paths->cpage['urlname_nons'], $paths->namespace, $rev_id );
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 435
$page->send_headers = true;
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 436
$pagepass = ( isset($_REQUEST['pagepass']) ) ? sha1($_REQUEST['pagepass']) : '';
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 437
$page->password = $pagepass;
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 438
$page->send(true);
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 439
ob_end_clean();
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 440
ob_start();
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 441
$db->sql_report();
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 442
break;
0
+ − 443
}
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 444
0
+ − 445
//
+ − 446
// Optimize HTML by replacing newlines with spaces (excludes <pre>, <script>, and <style> blocks)
+ − 447
//
+ − 448
if ($aggressive_optimize_html)
+ − 449
{
+ − 450
// Load up the HTML
+ − 451
$html = ob_get_contents();
229
b2f985e4cef3
Fixed a number of issues with SQL query readability and some undefined index-ish errors; consequently the SQL report feature was added
Dan
diff
changeset
+ − 452
@ob_end_clean();
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 453
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 454
$html = aggressive_optimize_html($html);
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 455
0
+ − 456
// Re-enable output buffering to allow the Gzip function (below) to work
+ − 457
ob_start();
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 458
0
+ − 459
// Done, send it to the user
+ − 460
echo( $html );
+ − 461
}
80
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 462
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 463
$db->close();
cb7dde69c301
Improved and enabled HTML optimization algorithm; enabled gzip compression; added but did not test at all the tag cloud class in includes/tagcloud.php, this is still very preliminary and not ready for any type of production use
Dan
diff
changeset
+ − 464
gzip_output();
42
45ebe475ff75
I dunno how many times I'm gonna have to fix the "problem seems to be the hex conversion" bug, but this is at least the fourth try.
Dan
diff
changeset
+ − 465
0
+ − 466
?>