0
+ − 1
<?php
+ − 2
/*
+ − 3
Plugin Name: Special page-related pages
+ − 4
Plugin URI: http://enanocms.org/
+ − 5
Description: Provides the page Special:CreatePage, which can be used to create new pages. Also adds the About Enano and GNU General Public License pages.
+ − 6
Author: Dan Fuhry
285
+ − 7
Version: 1.0.4
0
+ − 8
Author URI: http://enanocms.org/
+ − 9
*/
+ − 10
+ − 11
/*
+ − 12
* Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
285
+ − 13
* Version 1.0.4
0
+ − 14
* Copyright (C) 2006-2007 Dan Fuhry
+ − 15
*
+ − 16
* This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ − 17
* as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ − 18
*
+ − 19
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − 20
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ − 21
*/
+ − 22
+ − 23
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 24
+ − 25
$plugins->attachHook('base_classes_initted', '
+ − 26
global $paths;
+ − 27
$paths->add_page(Array(
+ − 28
\'name\'=>\'Create page\',
+ − 29
\'urlname\'=>\'CreatePage\',
+ − 30
\'namespace\'=>\'Special\',
+ − 31
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 32
));
+ − 33
+ − 34
$paths->add_page(Array(
+ − 35
\'name\'=>\'All pages\',
+ − 36
\'urlname\'=>\'AllPages\',
+ − 37
\'namespace\'=>\'Special\',
+ − 38
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 39
));
+ − 40
+ − 41
$paths->add_page(Array(
+ − 42
\'name\'=>\'List of special pages\',
+ − 43
\'urlname\'=>\'SpecialPages\',
+ − 44
\'namespace\'=>\'Special\',
+ − 45
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 46
));
+ − 47
+ − 48
$paths->add_page(Array(
+ − 49
\'name\'=>\'About Enano\',
+ − 50
\'urlname\'=>\'About_Enano\',
+ − 51
\'namespace\'=>\'Special\',
+ − 52
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 53
));
+ − 54
+ − 55
$paths->add_page(Array(
+ − 56
\'name\'=>\'GNU General Public License\',
+ − 57
\'urlname\'=>\'GNU_General_Public_License\',
+ − 58
\'namespace\'=>\'Special\',
+ − 59
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 60
));
83
+ − 61
+ − 62
$paths->add_page(Array(
+ − 63
\'name\'=>\'Tag cloud\',
+ − 64
\'urlname\'=>\'TagCloud\',
+ − 65
\'namespace\'=>\'Special\',
+ − 66
\'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+ − 67
));
0
+ − 68
');
+ − 69
+ − 70
// function names are IMPORTANT!!! The name pattern is: page_<namespace ID>_<page URLname, without namespace>
+ − 71
22
+ − 72
function page_Special_CreatePage()
+ − 73
{
0
+ − 74
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 75
if ( isset($_POST['do']) )
+ − 76
{
+ − 77
$p = $_POST['pagename'];
+ − 78
$k = array_keys($paths->nslist);
+ − 79
for ( $i = 0; $i < sizeof( $paths->nslist ); $i++ )
+ − 80
{
+ − 81
$ln = strlen( $paths->nslist[$k[$i]] );
+ − 82
if ( substr($p, 0, $ln) == $paths->nslist[$k[$i]] )
+ − 83
{
+ − 84
$namespace = $k[$i];
+ − 85
}
+ − 86
}
+ − 87
if ( $namespace == 'Special' || ( $namespace == 'System' && $session->user_level < USER_LEVEL_ADMIN ) || $namespace == 'Admin')
+ − 88
{
+ − 89
$template->header();
+ − 90
+ − 91
echo '<h3>The page could not be created.</h3><p>The name "'.$p.'" is invalid.</p>';
+ − 92
+ − 93
$template->footer();
+ − 94
$db->close();
+ − 95
+ − 96
exit;
+ − 97
}
+ − 98
$name = $db->escape(str_replace('_', ' ', $p));
22
+ − 99
$urlname = str_replace(' ', '_', $p);
0
+ − 100
$namespace = $_POST['namespace'];
+ − 101
if ( $namespace == 'Special' || ( $namespace == 'System' && $session->user_level < USER_LEVEL_ADMIN ) || $namespace == 'Admin')
+ − 102
{
+ − 103
$template->header();
+ − 104
+ − 105
echo '<h3>The page could not be created.</h3><p>The name "'.$paths->nslist[$namespace].$p.'" is invalid.</p>';
+ − 106
+ − 107
$template->footer();
+ − 108
$db->close();
+ − 109
+ − 110
exit;
+ − 111
}
254
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
diff
changeset
+ − 112
$code = $plugins->setHook('page_create_request');
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
diff
changeset
+ − 113
foreach ( $code as $cmd )
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
diff
changeset
+ − 114
{
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
diff
changeset
+ − 115
eval($cmd);
f49e3c8b638c
Fixed focus of AJAX login form fields in IE; removed stale/unused call to $template->makeParserText() in paginate_array(); added hook page_create_request to possibly help control creation of pages of certain namespaces from plugins; fixed critical bug in user CP that prevented plugins from adding custom CP modules
Dan
diff
changeset
+ − 116
}
182
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 117
if ( substr($urlname, 0, 8) == 'Project:' )
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 118
{
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 119
$template->header();
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 120
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 121
echo '<h3>The page could not be created.</h3><p>The page title can\'t start with "Project:" because this prefix is reserved for a parser shortcut.</p>';
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 122
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 123
$template->footer();
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 124
$db->close();
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 125
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 126
exit;
bf0fdec102e9
SECURITY: Fixed possible SQL injection in PageUtils page protection; general cleanup of PageUtils; blocked using Project: prefix for page URL strings
Dan
diff
changeset
+ − 127
}
0
+ − 128
+ − 129
$tn = $paths->nslist[$_POST['namespace']] . $urlname;
+ − 130
if ( isset($paths->pages[$tn]) )
+ − 131
{
+ − 132
die_friendly('Error creating page', '<p>The page already exists.</p>');
+ − 133
}
+ − 134
+ − 135
if ( $paths->nslist[$namespace] == substr($urlname, 0, strlen($paths->nslist[$namespace]) ) )
+ − 136
{
+ − 137
$urlname = substr($urlname, strlen($paths->nslist[$namespace]), strlen($urlname));
+ − 138
}
+ − 139
+ − 140
$k = array_keys( $paths->nslist );
+ − 141
if(!in_array($_POST['namespace'], $k))
+ − 142
{
+ − 143
$db->_die('An SQL injection attempt was caught at '.dirname(__FILE__).':'.__LINE__.'.');
+ − 144
}
+ − 145
112
+ − 146
$ips = array(
+ − 147
'ip' => array(),
+ − 148
'u' => array()
+ − 149
);
+ − 150
$ips = $db->escape(serialize($ips));
+ − 151
22
+ − 152
$urlname = sanitize_page_id($urlname);
+ − 153
$urlname = $db->escape($urlname);
+ − 154
0
+ − 155
$perms = $session->fetch_page_acl($urlname, $namespace);
+ − 156
if ( !$perms->get_permissions('create_page') )
+ − 157
die_friendly('Error creating page', '<p>An access control rule is preventing you from creating pages.</p>');
+ − 158
+ − 159
$q = $db->sql_query('INSERT INTO '.table_prefix.'logs(time_id,date_string,log_type,action,author,page_id,namespace) VALUES('.time().', \''.date('d M Y h:i a').'\', \'page\', \'create\', \''.$session->username.'\', \''.$urlname.'\', \''.$_POST['namespace'].'\');');
+ − 160
if ( !$q )
+ − 161
{
+ − 162
$db->_die('The page log could not be updated.');
+ − 163
}
+ − 164
112
+ − 165
$q = $db->sql_query('INSERT INTO '.table_prefix.'pages(name,urlname,namespace,delvote_ips) VALUES(\''.$name.'\', \''.$urlname.'\', \''.$_POST['namespace'].'\',\'' . $ips . '\');');
0
+ − 166
if ( !$q )
+ − 167
{
+ − 168
$db->_die('The page entry could not be inserted.');
+ − 169
}
156
+ − 170
$q = $db->sql_query('INSERT INTO '.table_prefix.'page_text(page_id,namespace,page_text) VALUES(\''.$urlname.'\', \''.$_POST['namespace'].'\', \''.'\');');
0
+ − 171
if ( !$q )
+ − 172
{
+ − 173
$db->_die('The page text entry could not be inserted.');
+ − 174
}
+ − 175
156
+ − 176
header('Location: '.makeUrlNS($_POST['namespace'], sanitize_page_id($p)) . '#do:edit');
0
+ − 177
exit;
+ − 178
}
+ − 179
$template->header();
228
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 180
/*
0
+ − 181
if ( !$session->get_permissions('create_page') )
+ − 182
{
+ − 183
echo 'Wiki mode is disabled, only admins can create pages.';
+ − 184
+ − 185
$template->footer();
+ − 186
$db->close();
+ − 187
+ − 188
exit;
+ − 189
}
228
7846d45bd250
Changed all urlname/page_id columns to varchar(255) because 63 characters just isn't long enough
Dan
diff
changeset
+ − 190
*/
0
+ − 191
echo RenderMan::render('Using the form below you can create a page.');
+ − 192
?>
+ − 193
<form action="" method="post">
+ − 194
<p>
+ − 195
<select name="namespace">
+ − 196
<?php
+ − 197
$k = array_keys($paths->nslist);
+ − 198
for ( $i = 0; $i < sizeof($k); $i++ )
+ − 199
{
+ − 200
if ( $paths->nslist[$k[$i]] == '' )
+ − 201
{
+ − 202
$s = '[No prefix]';
+ − 203
}
+ − 204
else
+ − 205
{
+ − 206
$s = $paths->nslist[$k[$i]];
+ − 207
}
+ − 208
if ( ( $k[$i] != 'System' || $session->user_level >= USER_LEVEL_ADMIN ) && $k[$i] != 'Admin' && $k[$i] != 'Special')
+ − 209
{
+ − 210
echo '<option value="'.$k[$i].'">'.$s.'</option>';
+ − 211
}
+ − 212
}
+ − 213
?>
+ − 214
</select> <input type="text" name="pagename" /></p>
+ − 215
<p><input type="submit" name="do" value="Create Page" /></p>
+ − 216
</form>
+ − 217
<?php
+ − 218
$template->footer();
+ − 219
}
+ − 220
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
+ − 221
function PagelistingFormatter($id, $row)
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
+ − 222
{
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
+ − 223
global $db, $session, $paths, $template, $plugins; // Common objects
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
+ − 224
static $rowtracker = 0;
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
+ − 225
static $tdclass = 'row2';
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
+ − 226
static $per_row = 2;
117
+ − 227
static $first = true;
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
+ − 228
$return = '';
117
+ − 229
if ( $id === false && $row === false )
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
+ − 230
{
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
+ − 231
$rowtracker = 0;
117
+ − 232
$first = true;
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
+ − 233
return false;
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
+ − 234
}
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
+ − 235
$rowtracker++;
117
+ − 236
if ( $rowtracker == $per_row || $first )
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
+ − 237
{
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
+ − 238
$rowtracker = 0;
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
+ − 239
$tdclass = ( $tdclass == 'row2' ) ? 'row1' : 'row2';
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
+ − 240
}
117
+ − 241
if ( $rowtracker == 0 && !$first )
+ − 242
$return .= "</tr>\n<tr>";
+ − 243
+ − 244
$first = false;
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
+ − 245
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
+ − 246
preg_match('/^ns=(' . implode('|', array_keys($paths->nslist)) . ');pid=(.*?)$/i', $id, $match);
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
+ − 247
$namespace =& $match[1];
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
+ − 248
$page_id =& $match[2];
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
+ − 249
$page_id = sanitize_page_id($page_id);
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
+ − 250
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
+ − 251
$url = makeUrlNS($namespace, $page_id);
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
+ − 252
$url = htmlspecialchars($url);
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
+ − 253
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
+ − 254
$link = '<a href="' . $url . '">' . htmlspecialchars($row['name']) . '</a>';
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
+ − 255
$td = '<td class="' . $tdclass . '" style="width: 50%;">' . $link . '</td>';
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
+ − 256
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
+ − 257
$return .= $td;
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
+ − 258
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
+ − 259
return $return;
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
+ − 260
}
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
+ − 261
0
+ − 262
function page_Special_AllPages()
+ − 263
{
+ − 264
// This should be an easy one
+ − 265
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 266
$template->header();
+ − 267
$sz = sizeof( $paths->pages ) / 2;
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
+ − 268
echo '<p>Below is a list of all of the pages on this website.</p>';
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
+ − 269
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
+ − 270
$q = $db->sql_query('SELECT COUNT(urlname) FROM '.table_prefix.'pages WHERE visible!=0;');
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
+ − 271
if ( !$q )
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
+ − 272
$db->_die();
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
+ − 273
$row = $db->fetchrow_num();
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
+ − 274
$count = $row[0];
117
+ − 275
+ − 276
switch($count % 4)
+ − 277
{
+ − 278
case 0:
+ − 279
case 2:
+ − 280
// even number of results; do nothing
+ − 281
$last_cell = '';
+ − 282
break;
+ − 283
case 1:
+ − 284
// odd number of results and odd number of rows, use row1
+ − 285
$last_cell = '<td class="row1"></td>';
+ − 286
break;
+ − 287
case 3:
+ − 288
// odd number of results and even number of rows, use row2
+ − 289
$last_cell = '<td class="row2"></td>';
+ − 290
break;
+ − 291
}
+ − 292
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
+ − 293
$db->free_result();
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
+ − 294
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
+ − 295
$q = $db->sql_unbuffered_query('SELECT CONCAT("ns=",namespace,";pid=",urlname) AS identifier, name FROM '.table_prefix.'pages WHERE visible!=0 ORDER BY name ASC;');
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
+ − 296
if ( !$q )
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
+ − 297
$db->_die();
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
+ − 298
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
+ − 299
$offset = ( isset($_GET['offset']) ) ? intval($_GET['offset']) : 0;
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
+ − 300
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
+ − 301
// reset formatter
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
+ − 302
PagelistingFormatter(false, false);
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
+ − 303
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
+ − 304
$result = paginate(
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
+ − 305
$q, // result resource
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
+ − 306
'{identifier}', // formatting template
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
+ − 307
$count, // # of results
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
+ − 308
makeUrlNS('Special', 'AllPages', 'offset=%s'), // result URL
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
+ − 309
$offset, // start offset
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
+ − 310
40, // results per page
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
+ − 311
array( 'identifier' => 'PagelistingFormatter' ), // hooks
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
+ − 312
'<div class="tblholder">
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
+ − 313
<table border="0" cellspacing="1" cellpadding="4">
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
+ − 314
<tr>', // print at start
117
+ − 315
' ' . $last_cell . '</tr>
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
+ − 316
</table>
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
+ − 317
</div>' // print at end
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
+ − 318
);
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
+ − 319
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
+ − 320
echo $result;
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
+ − 321
0
+ − 322
$template->footer();
+ − 323
}
+ − 324
+ − 325
function page_Special_SpecialPages()
+ − 326
{
+ − 327
// This should be an easy one
+ − 328
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 329
$template->header();
+ − 330
$sz = sizeof($paths->pages) / 2;
+ − 331
echo '<p>Below is a list of all of the special pages on this website.</p><div class="tblholder"><table border="0" width="100%" cellspacing="1" cellpadding="4">';
+ − 332
$cclass='row1';
+ − 333
for ( $i = 0; $i < $sz; $i = $i)
+ − 334
{
+ − 335
if ( $cclass == 'row1' )
+ − 336
{
+ − 337
$cclass = 'row3';
+ − 338
}
+ − 339
else if ( $cclass == 'row3')
+ − 340
{
+ − 341
$cclass='row1';
+ − 342
}
+ − 343
echo '<tr>';
+ − 344
for ( $j = 0; $j < 2; $j = $j )
+ − 345
{
+ − 346
if ( $i < $sz && $paths->pages[$i]['namespace'] == 'Special' && $paths->pages[$i]['visible'] == 1)
+ − 347
{
+ − 348
echo '<td style="width: 50%" class="'.$cclass.'"><a href="'.makeUrl($paths->pages[$i]['urlname']).'">';
+ − 349
echo $paths->pages[$i]['name'].'</a></td>';
+ − 350
$j++;
+ − 351
}
+ − 352
else if ( $i >= $sz )
+ − 353
{
+ − 354
echo '<td style="width: 50%" class="row2"></td>';
+ − 355
$j++;
+ − 356
}
+ − 357
$i++;
+ − 358
}
+ − 359
echo '</tr>';
+ − 360
}
+ − 361
echo '</table></div>';
+ − 362
$template->footer();
+ − 363
}
+ − 364
+ − 365
function page_Special_About_Enano()
+ − 366
{
+ − 367
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 368
$platform = 'Unknown';
+ − 369
$uname = @file_get_contents('/proc/sys/kernel/ostype');
+ − 370
if($uname == "Linux\n")
+ − 371
$platform = 'Linux';
+ − 372
else if(file_exists('/hurd/pfinet')) // I have a little experience with GNU/Hurd :-) http://hurdvm.enanocms.org/
+ − 373
$platform = 'GNU/Hurd';
+ − 374
else if(file_exists('C:\Windows\system32\ntoskrnl.exe'))
+ − 375
$platform = 'Windows NT';
+ − 376
else if(file_exists('C:\Windows\system\krnl386.exe'))
+ − 377
$platform = 'Windows 9x/DOS';
+ − 378
else if(file_exists('/bin/bash'))
+ − 379
$platform = 'Other GNU/Mac OS X';
+ − 380
else if(is_dir('/bin'))
+ − 381
$platform = 'Other POSIX';
+ − 382
$template->header();
+ − 383
?>
+ − 384
<br />
+ − 385
<div class="tblholder">
+ − 386
<table border="0" cellspacing="1" cellpadding="4">
+ − 387
<tr><th colspan="2" style="text-align: left;">About the Enano Content Management System</th></tr>
23
+ − 388
<tr><td colspan="2" class="row3"><p>This website is powered by <a href="http://enanocms.org/">Enano</a>, the lightweight and open source
38
+ − 389
CMS that everyone can use. Enano is copyright © 2006-2007 Dan Fuhry. For legal information, along with a list of libraries that Enano
23
+ − 390
uses, please see <a href="http://enanocms.org/Legal_information">Legal Information</a>.</p>
0
+ − 391
<p>The developers and maintainers of Enano strongly believe that software should not only be free to use, but free to be modified,
+ − 392
distributed, and used to create derivative works. For more information about Free Software, check out the
+ − 393
<a href="http://en.wikipedia.org/wiki/Free_Software" onclick="window.open(this.href); return false;">Wikipedia page</a> or
+ − 394
the <a href="http://www.fsf.org/" onclick="window.open(this.href); return false;">Free Software Foundation's</a> homepage.</p>
+ − 395
<p>This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU General Public License
+ − 396
as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</p>
+ − 397
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ − 398
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.</p>
+ − 399
<p>You should have received <a href="<?php echo makeUrlNS('Special', 'GNU_General_Public_License'); ?>">a copy of
+ − 400
the GNU General Public License</a> along with this program; if not, write to:</p>
+ − 401
<p style="margin-left 2em;">Free Software Foundation, Inc.,<br />
+ − 402
51 Franklin Street, Fifth Floor<br />
+ − 403
Boston, MA 02110-1301, USA</p>
129
0b5244001799
Rebranded as 1.0.1.1; fixed category page drawing bug; updated link to GPL in the about page to the GPLv2
Dan
diff
changeset
+ − 404
<p>Alternatively, you can <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">read it online</a>.</p>
0
+ − 405
</td></tr>
+ − 406
<tr>
+ − 407
<td class="row2" colspan="2">
53
+ − 408
<table border="0" style="margin: 0 auto; background: none; width: 100%;" cellpadding="5">
0
+ − 409
<tr>
53
+ − 410
<td style="text-align: center;">
87
570f68c3fe36
Redid stupid fading button code and fixed several RC2 bugs in the upgrade schema; 1.0.1 release candidate
Dan
diff
changeset
+ − 411
<?php echo $template->fading_button; ?>
0
+ − 412
</td>
+ − 413
<td style="text-align: center;">
+ − 414
<a href="http://www.php.net/" onclick="window.open(this.href); return false;" style="background: none; padding: 0;">
+ − 415
<img alt="Written in PHP" src="<?php echo scriptPath; ?>/images/about-powered-php.png" style="border-width: 0px;" width="88" height="31" />
+ − 416
</a>
+ − 417
</td>
+ − 418
<td style="text-align: center;">
261
+ − 419
<?php
+ − 420
switch(ENANO_DBLAYER)
+ − 421
{
+ − 422
case 'MYSQL':
+ − 423
?>
+ − 424
<a href="http://www.mysql.com/" onclick="window.open(this.href); return false;" style="background: none; padding: 0;">
+ − 425
<img alt="Database engine powered by MySQL" src="<?php echo scriptPath; ?>/images/about-powered-mysql.png" style="border-width: 0px;" width="88" height="31" />
+ − 426
</a>
+ − 427
<?php
+ − 428
break;
+ − 429
case 'PGSQL':
+ − 430
?>
+ − 431
<a href="http://www.postgresql.org/" onclick="window.open(this.href); return false;" style="background: none; padding: 0;">
+ − 432
<img alt="Database engine powered by PostgreSQL" src="<?php echo scriptPath; ?>/images/about-powered-pgsql.png" style="border-width: 0px;" width="90" height="30" />
+ − 433
</a>
+ − 434
<?php
+ − 435
break;
+ − 436
}
+ − 437
?>
0
+ − 438
</td>
+ − 439
</tr>
+ − 440
</table>
+ − 441
</td>
+ − 442
</tr>
132
0ae1b281a884
[sync only] Minor display change in Special:About_Enano; added initial PHP function for password strength testing
Dan
diff
changeset
+ − 443
<tr><td style="width: 100px;" class="row1"><a href="http://enanocms.org">Enano</a> version:</td><td class="row1"><?php echo enano_version(true) . ' (' . enano_codename() . ')'; ?></td></tr>
0
+ − 444
<tr><td style="width: 100px;" class="row2">Web server:</td><td class="row2"><?php if(isset($_SERVER['SERVER_SOFTWARE'])) echo $_SERVER['SERVER_SOFTWARE']; else echo 'Unable to determine web server software.'; ?></td></tr>
+ − 445
<tr><td style="width: 100px;" class="row1">Server platform:</td><td class="row1"><?php echo $platform; ?></td></tr>
+ − 446
<tr><td style="width: 100px;" class="row2"><a href="http://www.php.net/">PHP</a> version:</td><td class="row2"><?php echo PHP_VERSION; ?></td></tr>
261
+ − 447
<?php
+ − 448
switch(ENANO_DBLAYER)
+ − 449
{
+ − 450
case 'MYSQL':
+ − 451
?>
+ − 452
<tr><td style="width: 100px;" class="row1"><a href="http://www.mysql.com/">MySQL</a> version:</td><td class="row1"><?php echo mysql_get_server_info($db->_conn); ?></td></tr>
+ − 453
<?php
+ − 454
break;
+ − 455
case 'PGSQL':
+ − 456
$pg_serverdata = pg_version($db->_conn);
+ − 457
$pg_version = $pg_serverdata['server'];
+ − 458
?>
+ − 459
<tr><td style="width: 100px;" class="row1"><a href="http://www.postgresql.org/">PostgreSQL</a> version:</td><td class="row1"><?php echo $pg_version; ?></td></tr>
+ − 460
<?php
+ − 461
break;
+ − 462
}
+ − 463
?>
0
+ − 464
</table>
+ − 465
</div>
+ − 466
<?php
+ − 467
$template->footer();
+ − 468
}
+ − 469
+ − 470
function page_Special_GNU_General_Public_License()
+ − 471
{
+ − 472
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 473
$template->header();
+ − 474
if(file_exists(ENANO_ROOT.'/GPL'))
+ − 475
{
+ − 476
echo '<p>The following text represents the license that the <a href="'.makeUrlNS('Special', 'About_Enano').'">Enano</a> content management system is under. To make it easier to read, the text has been wiki-formatted; in no other way has it been changed.</p>';
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
+ − 477
echo RenderMan::render( file_get_contents ( ENANO_ROOT . '/GPL' ) );
0
+ − 478
}
+ − 479
else
+ − 480
{
36
+ − 481
echo '<p>It appears that the file "GPL" is missing from your Enano installation. You may find a wiki-formatted copy of the GPL at: <a href="http://enanocms.org/GPL">http://enanocms.org/GPL</a>.</p>';
0
+ − 482
}
+ − 483
$template->footer();
+ − 484
}
+ − 485
83
+ − 486
function page_Special_TagCloud()
+ − 487
{
+ − 488
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 489
+ − 490
$template->header();
+ − 491
+ − 492
if ( $tag = $paths->getParam(0) )
+ − 493
{
+ − 494
$tag = sanitize_tag($tag);
+ − 495
$q = $db->sql_query('SELECT page_id, namespace FROM '.table_prefix.'tags WHERE tag_name=\'' . $db->escape($tag) . '\';');
+ − 496
if ( !$q )
+ − 497
$db->_die();
+ − 498
if ( $row = $db->fetchrow() )
+ − 499
{
+ − 500
echo '<div class="tblholder">
+ − 501
<table border="0" cellspacing="1" cellpadding="4">';
+ − 502
echo '<tr><th colspan="2">Pages tagged "' . htmlspecialchars($tag) . '"</th></tr>';
+ − 503
echo '<tr>';
+ − 504
$i = 0;
+ − 505
$td_class = 'row1';
+ − 506
do
+ − 507
{
+ − 508
if ( $i % 2 == 0 && $i > 1 )
+ − 509
{
+ − 510
$td_class = ( $td_class == 'row2' ) ? 'row1' : 'row2';
+ − 511
echo '</tr><tr>';
+ − 512
}
+ − 513
$i++;
+ − 514
$title = get_page_title_ns($row['page_id'], $row['namespace']);
+ − 515
if ( $row['namespace'] != 'Article' && isset($paths->nslist[$row['namespace']]) )
+ − 516
$title = $paths->nslist[$row['namespace']] . $title;
+ − 517
$url = makeUrlNS($row['namespace'], $row['page_id']);
+ − 518
$class = ( isPage( $paths->nslist[$row['namespace']] . $row['page_id'] ) ) ? '' : ' class="wikilink-nonexistent"';
+ − 519
$link = '<a href="' . htmlspecialchars($url) . '"' . $class . '>' . htmlspecialchars($title) . '</a>';
+ − 520
echo "<td class=\"$td_class\" style=\"width: 50%;\">$link</td>";
+ − 521
// " workaround for jEdit highlighting bug
+ − 522
}
+ − 523
while ( $row = $db->fetchrow() );
+ − 524
while ( $i % 2 > 0 )
+ − 525
{
+ − 526
$i++;
+ − 527
echo "<td class=\"$td_class\" style=\"width: 50%;\"></td>";
+ − 528
}
+ − 529
// " workaround for jEdit highlighting bug
+ − 530
echo '<tr>
+ − 531
<th colspan="2" class="subhead"><a href="' . makeUrlNS('Special', 'TagCloud') . '" style="color: white;">« Return to tag cloud</a></th>
+ − 532
</tr>';
+ − 533
echo '</table>';
+ − 534
echo '</div>';
+ − 535
}
+ − 536
}
+ − 537
else
+ − 538
{
+ − 539
$cloud = new TagCloud();
+ − 540
+ − 541
$q = $db->sql_query('SELECT tag_name FROM '.table_prefix.'tags;');
+ − 542
if ( !$q )
+ − 543
$db->_die();
+ − 544
if ( $db->numrows() < 1 )
+ − 545
{
+ − 546
echo '<p>No pages are tagged yet.</p>';
+ − 547
}
+ − 548
else
+ − 549
{
+ − 550
echo '<h3>Summary of page tagging</h3>';
+ − 551
while ( $row = $db->fetchrow() )
+ − 552
{
+ − 553
$cloud->add_word($row['tag_name']);
+ − 554
}
+ − 555
echo $cloud->make_html('normal');
+ − 556
echo '<p>Hover your mouse over a tag to see how many pages have the tag. Click on a tag to see a list of the pages that have it.</p>';
+ − 557
}
+ − 558
}
+ − 559
+ − 560
$template->footer();
+ − 561
}
+ − 562
+ − 563
// tag cloud sidebar block
+ − 564
function sidebar_add_tag_cloud()
+ − 565
{
+ − 566
global $db, $session, $paths, $template, $plugins; // Common objects
+ − 567
$cloud = new TagCloud();
+ − 568
+ − 569
$q = $db->sql_query('SELECT tag_name FROM '.table_prefix.'tags;');
+ − 570
if ( !$q )
+ − 571
$db->_die();
+ − 572
if ( $db->numrows() < 1 )
+ − 573
{
+ − 574
$sb_html = 'No pages are tagged yet.';
+ − 575
}
+ − 576
else
+ − 577
{
+ − 578
while ( $row = $db->fetchrow() )
+ − 579
{
+ − 580
$cloud->add_word($row['tag_name']);
+ − 581
}
+ − 582
$sb_html = $cloud->make_html('small', 'justify') . '<br /><a style="text-align: center;" href="' . makeUrlNS('Special', 'TagCloud') . '">Larger version</a>';
+ − 583
}
+ − 584
$template->sidebar_widget('Tag cloud', "<div style='padding: 5px;'>$sb_html</div>");
+ − 585
}
+ − 586
+ − 587
$plugins->attachHook('compile_template', 'sidebar_add_tag_cloud();');
+ − 588
0
+ − 589
?>