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
166
+ − 3
/*
0
+ − 4
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
685
17ebe24cdf85
Rebranded as 1.1.5 (Caoineag alpha 5) and fixed a couple bugs related to CDN support in template_nodb and installerUI. Updated readme.
Dan
diff
changeset
+ − 5
* Version 1.1.5 (Caoineag alpha 5)
536
+ − 6
* Copyright (C) 2006-2008 Dan Fuhry
0
+ − 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
*
246
+ − 14
* @package Enano
+ − 15
* @subpackage Frontend
+ − 16
*
0
+ − 17
*/
246
+ − 18
311
a007145a0ff6
Deprecated debugConsole and removed all calls to it. Added a lot of comments to common.php. Added support for "anonymous pages" that are created when the Enano API is loaded from an external script. Fixed missing border-bottom on Type 2 sidebar blocks in Oxygen.
Dan
diff
changeset
+ − 19
define('ENANO_INTERFACE_INDEX', '');
372
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
diff
changeset
+ − 20
5bd429428101
A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
diff
changeset
+ − 21
// For the mighty and brave.
605
+ − 22
// define('ENANO_DEBUG', '');
311
a007145a0ff6
Deprecated debugConsole and removed all calls to it. Added a lot of comments to common.php. Added support for "anonymous pages" that are created when the Enano API is loaded from an external script. Fixed missing border-bottom on Type 2 sidebar blocks in Oxygen.
Dan
diff
changeset
+ − 23
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
+ − 24
// 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
+ − 25
637
+ − 26
$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
+ − 27
0
+ − 28
global $do_gzip;
637
+ − 29
$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
+ − 30
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
+ − 31
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
+ − 32
$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
+ − 33
0
+ − 34
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
+ − 35
0
+ − 36
if($aggressive_optimize_html || $do_gzip)
+ − 37
{
+ − 38
ob_start();
+ − 39
}
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
+ − 40
564
a1c450a911a6
Updated version number metadata in system plugin files; added some comments and removed unused code from index.php and includes/graphs.php
Dan
diff
changeset
+ − 41
// start up Enano
0
+ − 42
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
+ − 43
0
+ − 44
global $db, $session, $paths, $template, $plugins; // Common objects
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 45
$page_timestamp = time();
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
+ − 46
307
+ − 47
if ( !isset($_GET['do']) )
+ − 48
{
+ − 49
$_GET['do'] = 'view';
+ − 50
}
0
+ − 51
switch($_GET['do'])
+ − 52
{
+ − 53
default:
285
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 54
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
+ − 55
break;
+ − 56
case 'view':
+ − 57
// 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
+ − 58
$rev_id = ( (isset($_GET['oldid'])) ? intval($_GET['oldid']) : 0 );
322
+ − 59
$page = new PageProcessor( $paths->page_id, $paths->namespace, $rev_id );
0
+ − 60
$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
+ − 61
$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
+ − 62
$page->password = $pagepass;
61
+ − 63
$page->send(true);
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 64
$page_timestamp = $page->revision_time;
0
+ − 65
break;
+ − 66
case 'comments':
+ − 67
$template->header();
592
+ − 68
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 69
$sub = ( isset ($_GET['sub']) ) ? $_GET['sub'] : false;
+ − 70
switch($sub)
+ − 71
{
+ − 72
case 'admin':
+ − 73
default:
+ − 74
$act = ( isset ($_GET['action']) ) ? $_GET['action'] : false;
+ − 75
$id = ( isset ($_GET['id']) ) ? intval($_GET['id']) : -1;
322
+ − 76
echo PageUtils::comments_html($paths->page_id, $paths->namespace, $act, Array('id'=>$id));
0
+ − 77
break;
+ − 78
case 'postcomment':
+ − 79
if(empty($_POST['name']) ||
+ − 80
empty($_POST['subj']) ||
+ − 81
empty($_POST['text'])
+ − 82
) { echo 'Invalid request'; break; }
+ − 83
$cid = ( isset($_POST['captcha_id']) ) ? $_POST['captcha_id'] : false;
+ − 84
$cin = ( isset($_POST['captcha_input']) ) ? $_POST['captcha_input'] : false;
322
+ − 85
PageUtils::addcomment($paths->page_id, $paths->namespace, $_POST['name'], $_POST['subj'], $_POST['text'], $cin, $cid); // All filtering, etc. is handled inside this method
+ − 86
echo PageUtils::comments_html($paths->page_id, $paths->namespace);
0
+ − 87
break;
+ − 88
case 'editcomment':
+ − 89
if(!isset($_GET['id']) || ( isset($_GET['id']) && !preg_match('#^([0-9]+)$#', $_GET['id']) )) { echo '<p>Invalid comment ID</p>'; break; }
+ − 90
$q = $db->sql_query('SELECT subject,comment_data,comment_id FROM '.table_prefix.'comments WHERE comment_id='.$_GET['id']);
+ − 91
if(!$q) $db->_die('The comment data could not be selected.');
+ − 92
$row = $db->fetchrow();
+ − 93
$db->free_result();
213
+ − 94
$row['subject'] = str_replace('\'', ''', $row['subject']);
0
+ − 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'>
213
+ − 97
<tr><td class='row1'>" . $lang->get('comment_postform_field_subject') . "</td><td class='row1'><input type='text' name='subj' value='{$row['subject']}' /></td></tr>
+ − 98
<tr><td class='row2'>" . $lang->get('comment_postform_field_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='" . $lang->get('etc_save_changes') . "' /></td></tr>
0
+ − 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; }
322
+ − 105
$r = PageUtils::savecomment_neater($paths->page_id, $paths->namespace, $_POST['subj'], $_POST['text'], (int)$_POST['id']);
0
+ − 106
if($r != 'good') { echo "<pre>$r</pre>"; break; }
322
+ − 107
echo PageUtils::comments_html($paths->page_id, $paths->namespace);
0
+ − 108
break;
+ − 109
case 'deletecomment':
+ − 110
if(!empty($_GET['id']))
+ − 111
{
322
+ − 112
PageUtils::deletecomment_neater($paths->page_id, $paths->namespace, (int)$_GET['id']);
0
+ − 113
}
322
+ − 114
echo PageUtils::comments_html($paths->page_id, $paths->namespace);
0
+ − 115
break;
+ − 116
}
+ − 117
$template->footer();
+ − 118
break;
+ − 119
case 'edit':
285
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
}
592
+ − 125
require_once(ENANO_ROOT.'/includes/pageutils.php');
285
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 126
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
+ − 127
{
337
+ − 128
$captcha_valid = true;
+ − 129
if ( !$session->user_logged_in && getConfig('guest_edit_require_captcha') == '1' )
285
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 130
{
337
+ − 131
$captcha_valid = false;
+ − 132
if ( isset($_POST['captcha_id']) && isset($_POST['captcha_code']) )
+ − 133
{
+ − 134
$hash_correct = strtolower($session->get_captcha($_POST['captcha_id']));
+ − 135
$hash_input = strtolower($_POST['captcha_code']);
+ − 136
if ( $hash_input === $hash_correct )
+ − 137
$captcha_valid = true;
+ − 138
}
+ − 139
}
+ − 140
if ( $captcha_valid )
+ − 141
{
+ − 142
$e = PageUtils::savepage($paths->page_id, $paths->namespace, $_POST['page_text'], $_POST['edit_summary'], isset($_POST['minor']));
+ − 143
if ( $e == 'good' )
+ − 144
{
+ − 145
redirect(makeUrl($paths->page), $lang->get('editor_msg_save_success_title'), $lang->get('editor_msg_save_success_body'), 3);
+ − 146
}
285
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 147
}
0
+ − 148
}
+ − 149
$template->header();
337
+ − 150
if ( isset($captcha_valid) )
+ − 151
{
+ − 152
echo '<div class="usermessage">' . $lang->get('editor_err_captcha_wrong') . '</div>';
+ − 153
}
0
+ − 154
if(isset($_POST['_preview']))
+ − 155
{
+ − 156
$text = $_POST['page_text'];
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 157
$edsumm = $_POST['edit_summary'];
0
+ − 158
echo PageUtils::genPreview($_POST['page_text']);
220
+ − 159
$text = htmlspecialchars($text);
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 160
$revid = 0;
0
+ − 161
}
220
+ − 162
else
+ − 163
{
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 164
$revid = ( isset($_GET['revid']) ) ? intval($_GET['revid']) : 0;
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 165
$page = new PageProcessor($paths->page_id, $paths->namespace, $revid);
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 166
$text = $page->fetch_source();
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 167
$edsumm = '';
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 168
// $text = RenderMan::getPage($paths->cpage['urlname_nons'], $paths->namespace, 0, false, false, false, false);
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 169
}
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 170
if ( $revid > 0 )
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 171
{
468
+ − 172
$time = $page->revision_time;
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 173
// Retrieve information about this revision and the current one
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 174
$q = $db->sql_query('SELECT l1.author AS currentrev_author, l2.author AS oldrev_author FROM ' . table_prefix . 'logs AS l1
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 175
LEFT JOIN ' . table_prefix . 'logs AS l2
468
+ − 176
ON ( l2.log_id = ' . $revid . '
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 177
AND l2.log_type = \'page\'
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 178
AND l2.action = \'edit\'
468
+ − 179
AND l2.page_id = \'' . $db->escape($paths->page_id) . '\'
+ − 180
AND l2.namespace = \'' . $db->escape($paths->namespace) . '\'
+ − 181
AND l1.is_draft != 1
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 182
)
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 183
WHERE l1.log_type = \'page\'
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 184
AND l1.action = \'edit\'
468
+ − 185
AND l1.page_id = \'' . $db->escape($paths->page_id) . '\'
+ − 186
AND l1.namespace = \'' . $db->escape($paths->namespace) . '\'
+ − 187
AND l1.time_id > ' . $time . '
+ − 188
AND l1.is_draft != 1
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 189
ORDER BY l1.time_id DESC;');
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 190
if ( !$q )
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 191
$db->die_json();
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 192
468
+ − 193
if ( $db->numrows() > 0 )
+ − 194
{
+ − 195
echo '<div class="usermessage">' . $lang->get('editor_msg_editing_old_revision') . '</div>';
+ − 196
+ − 197
$rev_count = $db->numrows() - 2;
+ − 198
$row = $db->fetchrow();
+ − 199
$undo_info = array(
+ − 200
'old_author' => $row['oldrev_author'],
+ − 201
'current_author' => $row['currentrev_author'],
+ − 202
'undo_count' => max($rev_count, 1),
+ − 203
'last_rev_id' => $revid
+ − 204
);
+ − 205
}
+ − 206
else
+ − 207
{
+ − 208
$revid = 0;
+ − 209
}
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 210
$db->free_result();
220
+ − 211
}
0
+ − 212
echo '
+ − 213
<form action="'.makeUrl($paths->page, 'do=edit').'" method="post" enctype="multipart/form-data">
+ − 214
<br />
+ − 215
<textarea name="page_text" rows="20" cols="60" style="width: 97%;">'.$text.'</textarea><br />
+ − 216
<br />
+ − 217
';
408
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 218
$edsumm = ( $revid > 0 ) ? $lang->get('editor_reversion_edit_summary', $undo_info) : $edsumm;
7ecbe721217c
Modified editor and rename functions to go through the API when rolling back. This causes rollbacks to be logged.
Dan
diff
changeset
+ − 219
echo $lang->get('editor_lbl_edit_summary') . ' <input name="edit_summary" type="text" size="40" value="' . htmlspecialchars($edsumm) . '" /><br /><label><input type="checkbox" name="minor" /> ' . $lang->get('editor_lbl_minor_edit_field') . '</label><br />';
337
+ − 220
if ( !$session->user_logged_in && getConfig('guest_edit_require_captcha') == '1' )
+ − 221
{
+ − 222
echo '<br /><table border="0"><tr><td>';
+ − 223
echo '<b>' . $lang->get('editor_lbl_field_captcha') . '</b><br />'
+ − 224
. '<br />'
+ − 225
. $lang->get('editor_msg_captcha_pleaseenter') . '<br /><br />'
+ − 226
. $lang->get('editor_msg_captcha_blind');
+ − 227
echo '</td><td>';
+ − 228
$hash = $session->make_captcha();
+ − 229
echo '<img src="' . makeUrlNS('Special', "Captcha/$hash") . '" onclick="this.src+=\'/a\'" style="cursor: pointer;" /><br />';
+ − 230
echo '<input type="hidden" name="captcha_id" value="' . $hash . '" />';
+ − 231
echo $lang->get('editor_lbl_field_captcha_code') . ' <input type="text" name="captcha_code" value="" size="9" />';
+ − 232
echo '</td></tr></table>';
+ − 233
}
0
+ − 234
echo '<br />
220
+ − 235
<input type="submit" name="_save" value="' . $lang->get('editor_btn_save') . '" style="font-weight: bold;" />
+ − 236
<input type="submit" name="_preview" value="' . $lang->get('editor_btn_preview') . '" />
+ − 237
<input type="submit" name="_revert" value="' . $lang->get('editor_btn_revert') . '" />
+ − 238
<input type="submit" name="_cancel" value="' . $lang->get('editor_btn_cancel') . '" />
0
+ − 239
</form>
+ − 240
';
160
+ − 241
if ( getConfig('wiki_edit_notice') == '1' )
+ − 242
{
+ − 243
$notice = getConfig('wiki_edit_notice_text');
+ − 244
echo RenderMan::render($notice);
+ − 245
}
0
+ − 246
$template->footer();
+ − 247
break;
+ − 248
case 'viewsource':
+ − 249
$template->header();
322
+ − 250
$text = RenderMan::getPage($paths->page_id, $paths->namespace, 0, false, false, false, false);
391
85f91037cd4f
Localization is FINISHED, DAMN IT HELLAH YEAH! OVER WITH! Man, it feels to get that off my chest. Release is in under 48 hours, folks. And we're ready for it.
Dan
diff
changeset
+ − 251
$text = htmlspecialchars($text);
0
+ − 252
echo '
+ − 253
<form action="'.makeUrl($paths->page, 'do=edit').'" method="post">
+ − 254
<br />
+ − 255
<textarea readonly="readonly" name="page_text" rows="20" cols="60" style="width: 97%;">'.$text.'</textarea>';
+ − 256
echo '<br />
220
+ − 257
<input type="submit" name="_cancel" value="' . $lang->get('editor_btn_closeviewer') . '" />
0
+ − 258
</form>
+ − 259
';
+ − 260
$template->footer();
+ − 261
break;
+ − 262
case 'history':
592
+ − 263
require_once(ENANO_ROOT.'/includes/pageutils.php');
322
+ − 264
$hist = PageUtils::histlist($paths->page_id, $paths->namespace);
0
+ − 265
$template->header();
+ − 266
echo $hist;
+ − 267
$template->footer();
+ − 268
break;
+ − 269
case 'rollback':
+ − 270
$id = (isset($_GET['id'])) ? $_GET['id'] : false;
+ − 271
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>');
481
+ − 272
+ − 273
$id = intval($id);
+ − 274
+ − 275
$page = new PageProcessor($paths->page_id, $paths->namespace);
+ − 276
$result = $page->rollback_log_entry($id);
+ − 277
+ − 278
if ( $result['success'] )
+ − 279
{
+ − 280
$result = $lang->get("page_msg_rb_success_{$result['action']}", array('dateline' => $result['dateline']));
+ − 281
}
+ − 282
else
+ − 283
{
+ − 284
$result = $lang->get("page_err_{$result['error']}", array('action' => @$result['action']));
+ − 285
}
+ − 286
0
+ − 287
$template->header();
481
+ − 288
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a></p>';
0
+ − 289
$template->footer();
+ − 290
break;
+ − 291
case 'catedit':
592
+ − 292
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 293
if(isset($_POST['__enanoSaveButton']))
+ − 294
{
+ − 295
unset($_POST['__enanoSaveButton']);
322
+ − 296
$val = PageUtils::catsave($paths->page_id, $paths->namespace, $_POST);
0
+ − 297
if($val == 'GOOD')
+ − 298
{
+ − 299
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;
+ − 300
} else {
+ − 301
die_friendly('Error saving category information', '<p>'.$val.'</p>');
+ − 302
}
+ − 303
}
+ − 304
elseif(isset($_POST['__enanoCatCancel']))
+ − 305
{
+ − 306
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;
+ − 307
}
+ − 308
$template->header();
322
+ − 309
$c = PageUtils::catedit_raw($paths->page_id, $paths->namespace);
0
+ − 310
echo $c[1];
+ − 311
$template->footer();
+ − 312
break;
+ − 313
case 'moreoptions':
+ − 314
$template->header();
220
+ − 315
echo '<div class="menu_nojs" style="width: 150px; padding: 0;"><ul style="display: block;"><li><div class="label">' . $lang->get('ajax_lbl_moreoptions_nojs') . '</div><div style="clear: both;"></div></li>'.$template->toolbar_menu.'</ul></div>';
0
+ − 316
$template->footer();
+ − 317
break;
+ − 318
case 'protect':
+ − 319
if (!isset($_REQUEST['level'])) die_friendly('Invalid request', '<p>No protection level specified</p>');
592
+ − 320
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 321
if(!empty($_POST['reason']))
+ − 322
{
+ − 323
if(!preg_match('#^([0-2]*){1}$#', $_POST['level'])) die_friendly('Error protecting page', '<p>Request validation failed</p>');
322
+ − 324
PageUtils::protect($paths->page_id, $paths->namespace, intval($_POST['level']), $_POST['reason']);
220
+ − 325
+ − 326
die_friendly($lang->get('page_protect_lbl_success_title'), '<p>' . $lang->get('page_protect_lbl_success_body', array( 'page_link' => makeUrl($paths->page) )) . '</p>');
0
+ − 327
}
+ − 328
$template->header();
+ − 329
?>
+ − 330
<form action="<?php echo makeUrl($paths->page, 'do=protect'); ?>" method="post">
+ − 331
<input type="hidden" name="level" value="<?php echo $_REQUEST['level']; ?>" />
220
+ − 332
<?php if(isset($_POST['reason'])) echo '<p style="color: red;">' . $lang->get('page_protect_err_need_reason') . '</p>'; ?>
+ − 333
<p><?php echo $lang->get('page_protect_lbl_reason'); ?></p>
0
+ − 334
<p><input type="text" name="reason" size="40" /><br />
220
+ − 335
<?php echo $lang->get('page_protect_lbl_level'); ?> <b><?php
0
+ − 336
switch($_REQUEST['level'])
+ − 337
{
+ − 338
case '0':
220
+ − 339
echo $lang->get('page_protect_lbl_level_none');
0
+ − 340
break;
+ − 341
case '1':
220
+ − 342
echo $lang->get('page_protect_lbl_level_full');
0
+ − 343
break;
+ − 344
case '2':
220
+ − 345
echo $lang->get('page_protect_lbl_level_semi');
0
+ − 346
break;
+ − 347
default:
+ − 348
echo 'None;</b> Warning: request validation will fail after clicking submit<b>';
+ − 349
}
+ − 350
?></b></p>
220
+ − 351
<p><input type="submit" value="<?php echo htmlspecialchars($lang->get('page_protect_btn_submit')) ?>" style="font-weight: bold;" /></p>
0
+ − 352
</form>
+ − 353
<?php
+ − 354
$template->footer();
+ − 355
break;
+ − 356
case 'rename':
592
+ − 357
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 358
if(!empty($_POST['newname']))
+ − 359
{
322
+ − 360
$r = PageUtils::rename($paths->page_id, $paths->namespace, $_POST['newname']);
304
+ − 361
die_friendly($lang->get('page_rename_success_title'), '<p>'.nl2br($r).' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a>.</p>');
0
+ − 362
}
+ − 363
$template->header();
+ − 364
?>
+ − 365
<form action="<?php echo makeUrl($paths->page, 'do=rename'); ?>" method="post">
220
+ − 366
<?php if(isset($_POST['newname'])) echo '<p style="color: red;">' . $lang->get('page_rename_err_need_name') . '</p>'; ?>
+ − 367
<p><?php echo $lang->get('page_rename_lbl'); ?></p>
0
+ − 368
<p><input type="text" name="newname" size="40" /></p>
220
+ − 369
<p><input type="submit" value="<?php echo htmlspecialchars($lang->get('page_rename_btn_submit')); ?>" style="font-weight: bold;" /></p>
0
+ − 370
</form>
+ − 371
<?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
+ − 372
$template->footer();
0
+ − 373
break;
+ − 374
case 'flushlogs':
220
+ − 375
if(!$session->get_permissions('clear_logs'))
+ − 376
{
+ − 377
die_friendly($lang->get('etc_access_denied_short'), '<p>' . $lang->get('etc_access_denied') . '</p>');
+ − 378
}
592
+ − 379
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 380
if(isset($_POST['_downthejohn']))
+ − 381
{
+ − 382
$template->header();
322
+ − 383
$result = PageUtils::flushlogs($paths->page_id, $paths->namespace);
220
+ − 384
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a>.</p>';
0
+ − 385
$template->footer();
+ − 386
break;
+ − 387
}
+ − 388
$template->header();
+ − 389
?>
+ − 390
<form action="<?php echo makeUrl($paths->page, 'do=flushlogs'); ?>" method="post">
220
+ − 391
<?php echo $lang->get('page_flushlogs_warning_stern'); ?>
+ − 392
<p><input type="submit" name="_downthejohn" value="<?php echo htmlspecialchars($lang->get('page_flushlogs_btn_submit')); ?>" style="color: red; font-weight: bold;" /></p>
0
+ − 393
</form>
+ − 394
<?php
+ − 395
$template->footer();
+ − 396
break;
+ − 397
case 'delvote':
592
+ − 398
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 399
if(isset($_POST['_ballotbox']))
+ − 400
{
+ − 401
$template->header();
322
+ − 402
$result = PageUtils::delvote($paths->page_id, $paths->namespace);
220
+ − 403
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a>.</p>';
0
+ − 404
$template->footer();
+ − 405
break;
+ − 406
}
+ − 407
$template->header();
+ − 408
?>
+ − 409
<form action="<?php echo makeUrl($paths->page, 'do=delvote'); ?>" method="post">
220
+ − 410
<?php
+ − 411
echo $lang->get('page_delvote_warning_stern');
+ − 412
echo '<p>';
+ − 413
switch($paths->cpage['delvotes'])
+ − 414
{
+ − 415
case 0: echo $lang->get('page_delvote_count_zero'); break;
+ − 416
case 1: echo $lang->get('page_delvote_count_one'); break;
+ − 417
default: echo $lang->get('page_delvote_count_plural', array('delvotes' => $paths->cpage['delvotes'])); break;
+ − 418
}
+ − 419
echo '</p>';
+ − 420
?>
+ − 421
<p><input type="submit" name="_ballotbox" value="<?php echo htmlspecialchars($lang->get('page_delvote_btn_submit')); ?>" /></p>
0
+ − 422
</form>
+ − 423
<?php
+ − 424
$template->footer();
+ − 425
break;
+ − 426
case 'resetvotes':
592
+ − 427
require_once(ENANO_ROOT.'/includes/pageutils.php');
220
+ − 428
if(!$session->get_permissions('vote_reset'))
+ − 429
{
+ − 430
die_friendly($lang->get('etc_access_denied_short'), '<p>' . $lang->get('etc_access_denied') . '</p>');
+ − 431
}
0
+ − 432
if(isset($_POST['_youmaylivealittlelonger']))
+ − 433
{
+ − 434
$template->header();
322
+ − 435
$result = PageUtils::resetdelvotes($paths->page_id, $paths->namespace);
220
+ − 436
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a>.</p>';
0
+ − 437
$template->footer();
+ − 438
break;
+ − 439
}
+ − 440
$template->header();
+ − 441
?>
+ − 442
<form action="<?php echo makeUrl($paths->page, 'do=resetvotes'); ?>" method="post">
220
+ − 443
<p><?php echo $lang->get('ajax_delvote_reset_confirm'); ?></p>
+ − 444
<p><input type="submit" name="_youmaylivealittlelonger" value="<?php echo htmlspecialchars($lang->get('page_delvote_reset_btn_submit')); ?>" /></p>
0
+ − 445
</form>
+ − 446
<?php
+ − 447
$template->footer();
+ − 448
break;
+ − 449
case 'deletepage':
220
+ − 450
if(!$session->get_permissions('delete_page'))
+ − 451
{
+ − 452
die_friendly($lang->get('etc_access_denied_short'), '<p>' . $lang->get('etc_access_denied') . '</p>');
+ − 453
}
592
+ − 454
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 455
if(isset($_POST['_adiossucker']))
+ − 456
{
28
+ − 457
$reason = ( isset($_POST['reason']) ) ? $_POST['reason'] : false;
+ − 458
if ( empty($reason) )
220
+ − 459
$error = $lang->get('ajax_delete_prompt_reason');
28
+ − 460
else
+ − 461
{
+ − 462
$template->header();
322
+ − 463
$result = PageUtils::deletepage($paths->page_id, $paths->namespace, $reason);
220
+ − 464
echo '<p>'.$result.' <a href="'.makeUrl($paths->page).'">' . $lang->get('etc_return_to_page') . '</a>.</p>';
28
+ − 465
$template->footer();
+ − 466
break;
+ − 467
}
0
+ − 468
}
+ − 469
$template->header();
+ − 470
?>
+ − 471
<form action="<?php echo makeUrl($paths->page, 'do=deletepage'); ?>" method="post">
220
+ − 472
<?php echo $lang->get('page_delete_warning_stern'); ?>
28
+ − 473
<?php if ( isset($error) ) echo "<p>$error</p>"; ?>
220
+ − 474
<p><?php echo $lang->get('page_delete_lbl_reason'); ?> <input type="text" name="reason" size="50" /></p>
+ − 475
<p><input type="submit" name="_adiossucker" value="<?php echo htmlspecialchars($lang->get('page_delete_btn_submit')); ?>" style="color: red; font-weight: bold;" /></p>
0
+ − 476
</form>
+ − 477
<?php
+ − 478
$template->footer();
+ − 479
break;
+ − 480
case 'setwikimode':
220
+ − 481
if(!$session->get_permissions('set_wiki_mode'))
+ − 482
{
+ − 483
die_friendly($lang->get('etc_access_denied_short'), '<p>' . $lang->get('etc_access_denied') . '</p>');
+ − 484
}
97
+ − 485
if ( isset($_POST['finish']) )
+ − 486
{
+ − 487
$level = intval($_POST['level']);
+ − 488
if ( !in_array($level, array(0, 1, 2) ) )
+ − 489
{
+ − 490
die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 491
}
322
+ − 492
$q = $db->sql_query('UPDATE '.table_prefix.'pages SET wiki_mode=' . $level . ' WHERE urlname=\'' . $db->escape($paths->page_id) . '\' AND namespace=\'' . $paths->namespace . '\';');
97
+ − 493
if ( !$q )
+ − 494
$db->_die();
220
+ − 495
redirect(makeUrl($paths->page), htmlspecialchars($paths->cpage['name']), $lang->get('page_wikimode_success_redirect'), 2);
97
+ − 496
}
+ − 497
else
+ − 498
{
+ − 499
$template->header();
+ − 500
if(!isset($_GET['level']) || ( isset($_GET['level']) && !preg_match('#^([0-9])$#', $_GET['level']))) die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 501
$level = intval($_GET['level']);
+ − 502
if ( !in_array($level, array(0, 1, 2) ) )
+ − 503
{
+ − 504
die_friendly('Invalid request', '<p>Level not specified</p>');
+ − 505
}
+ − 506
echo '<form action="' . makeUrl($paths->page, 'do=setwikimode', true) . '" method="post">';
+ − 507
echo '<input type="hidden" name="finish" value="foo" />';
+ − 508
echo '<input type="hidden" name="level" value="' . $level . '" />';
220
+ − 509
$level_txt = ( $level == 0 ) ? 'page_wikimode_level_off' : ( ( $level == 1 ) ? 'page_wikimode_level_on' : 'page_wikimode_level_global' );
+ − 510
$blurb = ( $level == 0 || ( $level == 2 && getConfig('wiki_mode') != '1' ) ) ? 'page_wikimode_blurb_disable' : 'page_wikimode_blurb_enable';
97
+ − 511
?>
220
+ − 512
<h3><?php echo $lang->get('page_wikimode_heading'); ?></h3>
+ − 513
<p><?php echo $lang->get($level_txt) . ' ' . $lang->get($blurb); ?></p>
+ − 514
<p><?php echo $lang->get('page_wikimode_warning'); ?></p>
+ − 515
<p><input type="submit" value="<?php echo htmlspecialchars($lang->get('page_wikimode_btn_submit')); ?>" /></p>
97
+ − 516
<?php
+ − 517
echo '</form>';
+ − 518
$template->footer();
+ − 519
}
0
+ − 520
break;
+ − 521
case 'diff':
592
+ − 522
require_once(ENANO_ROOT.'/includes/pageutils.php');
+ − 523
require_once(ENANO_ROOT.'/includes/diff.php');
0
+ − 524
$template->header();
+ − 525
$id1 = ( isset($_GET['diff1']) ) ? (int)$_GET['diff1'] : false;
+ − 526
$id2 = ( isset($_GET['diff2']) ) ? (int)$_GET['diff2'] : false;
+ − 527
if(!$id1 || !$id2) { echo '<p>Invalid request.</p>'; $template->footer(); break; }
+ − 528
if(!preg_match('#^([0-9]+)$#', (string)$_GET['diff1']) ||
+ − 529
!preg_match('#^([0-9]+)$#', (string)$_GET['diff2'] )) { echo '<p>SQL injection attempt</p>'; $template->footer(); break; }
322
+ − 530
echo PageUtils::pagediff($paths->page_id, $paths->namespace, $id1, $id2);
0
+ − 531
$template->footer();
+ − 532
break;
91
+ − 533
case 'detag':
+ − 534
if ( $session->user_level < USER_LEVEL_ADMIN )
+ − 535
{
220
+ − 536
die_friendly($lang->get('etc_access_denied_short'), '<p>' . $lang->get('etc_access_denied') . '</p>');
91
+ − 537
}
+ − 538
if ( $paths->page_exists )
+ − 539
{
220
+ − 540
die_friendly($lang->get('etc_invalid_request_short'), '<p>' . $lang->get('page_detag_err_page_exists') . '</p>');
91
+ − 541
}
322
+ − 542
$q = $db->sql_query('DELETE FROM '.table_prefix.'tags WHERE page_id=\'' . $db->escape($paths->page_id) . '\' AND namespace=\'' . $paths->namespace . '\';');
91
+ − 543
if ( !$q )
+ − 544
$db->_die('Detag query, index.php:'.__LINE__);
220
+ − 545
die_friendly($lang->get('page_detag_success_title'), '<p>' . $lang->get('page_detag_success_body') . '</p>');
91
+ − 546
break;
0
+ − 547
case 'aclmanager':
592
+ − 548
require_once(ENANO_ROOT.'/includes/pageutils.php');
0
+ − 549
$data = ( isset($_POST['data']) ) ? $_POST['data'] : Array('mode' => 'listgroups');
+ − 550
PageUtils::aclmanager($data);
+ − 551
break;
286
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
+ − 552
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
+ − 553
$rev_id = ( (isset($_GET['oldid'])) ? intval($_GET['oldid']) : 0 );
322
+ − 554
$page = new PageProcessor( $paths->page_id, $paths->namespace, $rev_id );
286
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
+ − 555
$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
+ − 556
$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
+ − 557
$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
+ − 558
$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
+ − 559
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
+ − 560
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
+ − 561
$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
+ − 562
break;
0
+ − 563
}
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
+ − 564
0
+ − 565
//
+ − 566
// Optimize HTML by replacing newlines with spaces (excludes <pre>, <script>, and <style> blocks)
+ − 567
//
+ − 568
if ($aggressive_optimize_html)
+ − 569
{
+ − 570
// Load up the HTML
+ − 571
$html = ob_get_contents();
286
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
+ − 572
@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
+ − 573
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
+ − 574
$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
+ − 575
0
+ − 576
// Re-enable output buffering to allow the Gzip function (below) to work
+ − 577
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
+ − 578
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 579
// Generate an ETag
547
0a2c1ce32d91
Added ETag on TinyMCE gzip; changed ETag format for standard pages so as to include user and login info to control caching when logged in or out
Dan
diff
changeset
+ − 580
// format: first 10 digits of SHA1 of page name, user id in hex, user and auth levels, page timestamp in hex
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 581
$etag = substr(sha1($paths->namespace . ':' . $paths->page_id), 0, 10) . '-' .
547
0a2c1ce32d91
Added ETag on TinyMCE gzip; changed ETag format for standard pages so as to include user and login info to control caching when logged in or out
Dan
diff
changeset
+ − 582
"u{$session->user_id}l{$session->user_level}a{$session->auth_level}-" .
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 583
dechex($page_timestamp);
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 584
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 585
if ( isset($_SERVER['HTTP_IF_NONE_MATCH']) )
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 586
{
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 587
if ( "\"$etag\"" == $_SERVER['HTTP_IF_NONE_MATCH'] )
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 588
{
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 589
header('HTTP/1.1 304 Not Modified');
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 590
exit();
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 591
}
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 592
}
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 593
582
+ − 594
// header("ETag: \"$etag\"");
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 595
0
+ − 596
// Done, send it to the user
+ − 597
echo( $html );
+ − 598
}
564
a1c450a911a6
Updated version number metadata in system plugin files; added some comments and removed unused code from index.php and includes/graphs.php
Dan
diff
changeset
+ − 599
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
+ − 600
$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
+ − 601
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
+ − 602
542
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 603
@ob_end_flush();
5841df0ab575
Added ETag support and increased caching settings to try and speed the system up. Result of a YSlow audit.
Dan
diff
changeset
+ − 604
0
+ − 605
?>