diff -r 000000000000 -r 902822492a68 plugins/SpecialPageFuncs.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/SpecialPageFuncs.php Wed Jun 13 16:03:00 2007 -0400 @@ -0,0 +1,365 @@ +attachHook('base_classes_initted', ' + global $paths; + $paths->add_page(Array( + \'name\'=>\'Create page\', + \'urlname\'=>\'CreatePage\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); + + $paths->add_page(Array( + \'name\'=>\'All pages\', + \'urlname\'=>\'AllPages\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); + + $paths->add_page(Array( + \'name\'=>\'List of special pages\', + \'urlname\'=>\'SpecialPages\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); + + $paths->add_page(Array( + \'name\'=>\'About Enano\', + \'urlname\'=>\'About_Enano\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); + + $paths->add_page(Array( + \'name\'=>\'GNU General Public License\', + \'urlname\'=>\'GNU_General_Public_License\', + \'namespace\'=>\'Special\', + \'special\'=>0,\'visible\'=>1,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\', + )); + '); + +// function names are IMPORTANT!!! The name pattern is: page__ + +function page_Special_CreatePage() { + global $db, $session, $paths, $template, $plugins; // Common objects + if ( isset($_POST['do']) ) + { + $p = $_POST['pagename']; + $k = array_keys($paths->nslist); + for ( $i = 0; $i < sizeof( $paths->nslist ); $i++ ) + { + $ln = strlen( $paths->nslist[$k[$i]] ); + if ( substr($p, 0, $ln) == $paths->nslist[$k[$i]] ) + { + $namespace = $k[$i]; + } + } + if ( $namespace == 'Special' || ( $namespace == 'System' && $session->user_level < USER_LEVEL_ADMIN ) || $namespace == 'Admin') + { + $template->header(); + + echo '

The page could not be created.

The name "'.$p.'" is invalid.

'; + + $template->footer(); + $db->close(); + + exit; + } + $name = $db->escape(str_replace('_', ' ', $p)); + $urlname = $db->escape(str_replace(' ', '_', $p)); + $namespace = $_POST['namespace']; + if ( $namespace == 'Special' || ( $namespace == 'System' && $session->user_level < USER_LEVEL_ADMIN ) || $namespace == 'Admin') + { + $template->header(); + + echo '

The page could not be created.

The name "'.$paths->nslist[$namespace].$p.'" is invalid.

'; + + $template->footer(); + $db->close(); + + exit; + } + + $tn = $paths->nslist[$_POST['namespace']] . $urlname; + if ( isset($paths->pages[$tn]) ) + { + die_friendly('Error creating page', '

The page already exists.

'); + } + + if ( $paths->nslist[$namespace] == substr($urlname, 0, strlen($paths->nslist[$namespace]) ) ) + { + $urlname = substr($urlname, strlen($paths->nslist[$namespace]), strlen($urlname)); + } + + $k = array_keys( $paths->nslist ); + if(!in_array($_POST['namespace'], $k)) + { + $db->_die('An SQL injection attempt was caught at '.dirname(__FILE__).':'.__LINE__.'.'); + } + + $perms = $session->fetch_page_acl($urlname, $namespace); + if ( !$perms->get_permissions('create_page') ) + die_friendly('Error creating page', '

An access control rule is preventing you from creating pages.

'); + + $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'].'\');'); + if ( !$q ) + { + $db->_die('The page log could not be updated.'); + } + + $q = $db->sql_query('INSERT INTO '.table_prefix.'pages(name,urlname,namespace) VALUES(\''.$name.'\', \''.$urlname.'\', \''.$_POST['namespace'].'\');'); + if ( !$q ) + { + $db->_die('The page entry could not be inserted.'); + } + $q = $db->sql_query('INSERT INTO '.table_prefix.'page_text(page_id,namespace,page_text) VALUES(\''.$urlname.'\', \''.$_POST['namespace'].'\', \''.$db->escape('Please edit this page! ').'\');'); + if ( !$q ) + { + $db->_die('The page text entry could not be inserted.'); + } + + header('Location: '.makeUrl($paths->nslist[$_POST['namespace']].$p)); + exit; + } + $template->header(); + if ( !$session->get_permissions('create_page') ) + { + echo 'Wiki mode is disabled, only admins can create pages.'; + + $template->footer(); + $db->close(); + + exit; + } + echo RenderMan::render('Using the form below you can create a page.'); + ?> +
+

+

+

+
+ footer(); +} + +function page_Special_AllPages() +{ + // This should be an easy one + global $db, $session, $paths, $template, $plugins; // Common objects + $template->header(); + $sz = sizeof( $paths->pages ) / 2; + echo '

Below is a list of all of the pages on this website.

'; + $cclass = 'row1'; + for ( $i = 0; $i < $sz; $i = $i ) + { + if ( $cclass == 'row1') + { + $cclass='row3'; + } + else if ( $cclass == 'row3') + { + $cclass='row1'; + } + echo ''; + for ( $j = 0; $j < 2; $j = $j ) + { + if ( $i < $sz && $paths->pages[$i]['namespace'] != 'Special' && $paths->pages[$i]['namespace'] != 'Admin' && $paths->pages[$i]['visible'] == 1) + { + echo ''; + $j++; + } + else if ( $i >= $sz ) + { + echo ''; + $j++; + } + $i++; + } + echo ''; + } + echo '
'; + if ( $paths->pages[$i]['namespace'] != 'Article' ) + { + echo '('.$paths->pages[$i]['namespace'].') '; + } + echo $paths->pages[$i]['name'].'
'; + $template->footer(); +} + +function page_Special_SpecialPages() +{ + // This should be an easy one + global $db, $session, $paths, $template, $plugins; // Common objects + $template->header(); + $sz = sizeof($paths->pages) / 2; + echo '

Below is a list of all of the special pages on this website.

'; + $cclass='row1'; + for ( $i = 0; $i < $sz; $i = $i) + { + if ( $cclass == 'row1' ) + { + $cclass = 'row3'; + } + else if ( $cclass == 'row3') + { + $cclass='row1'; + } + echo ''; + for ( $j = 0; $j < 2; $j = $j ) + { + if ( $i < $sz && $paths->pages[$i]['namespace'] == 'Special' && $paths->pages[$i]['visible'] == 1) + { + echo ''; + $j++; + } + else if ( $i >= $sz ) + { + echo ''; + $j++; + } + $i++; + } + echo ''; + } + echo '
'; + echo $paths->pages[$i]['name'].'
'; + $template->footer(); +} + +function page_Special_About_Enano() +{ + global $db, $session, $paths, $template, $plugins; // Common objects + $platform = 'Unknown'; + $uname = @file_get_contents('/proc/sys/kernel/ostype'); + if($uname == "Linux\n") + $platform = 'Linux'; + else if(file_exists('/hurd/pfinet')) // I have a little experience with GNU/Hurd :-) http://hurdvm.enanocms.org/ + $platform = 'GNU/Hurd'; + else if(file_exists('C:\Windows\system32\ntoskrnl.exe')) + $platform = 'Windows NT'; + else if(file_exists('C:\Windows\system\krnl386.exe')) + $platform = 'Windows 9x/DOS'; + else if(file_exists('/bin/bash')) + $platform = 'Other GNU/Mac OS X'; + else if(is_dir('/bin')) + $platform = 'Other POSIX'; + $template->header(); + ?> +
+
+ + + + + + + + + + + +
About the Enano Content Management System

This website is powered by Enano, the lightweight and open source + CMS that everyone can use. Enano is copyright © 2006 Dan Fuhry. For legal information, along with a list of libraries that Enano + uses, please see Legal Information.

+

The developers and maintainers of Enano strongly believe that software should not only be free to use, but free to be modified, + distributed, and used to create derivative works. For more information about Free Software, check out the + Wikipedia page or + the Free Software Foundation's homepage.

+

This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.

+

You should have received a copy of + the GNU General Public License along with this program; if not, write to:

+

Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor
+ Boston, MA 02110-1301, USA

+

Alternatively, you can read it online.

+
+ + + + + + +
+ + Powered by Enano + + + + Written in PHP + + + + Database engine powered by MySQL + +
+
Enano version:
Web server:
Server platform:
PHP version:
MySQL version:_conn); ?>
+
+ footer(); +} + +function page_Special_GNU_General_Public_License() +{ + global $db, $session, $paths, $template, $plugins; // Common objects + $template->header(); + if(file_exists(ENANO_ROOT.'/GPL')) + { + echo '

The following text represents the license that the Enano 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.

'; + echo RenderMan::render( htmlspecialchars ( file_get_contents ( ENANO_ROOT . '/GPL' ) ) ); + } + else + { + echo '

It appears that the file "GPL" is missing from your Enano installation. You may find a wiki-formatted copy of the GPL at: http://www.enanocms.org/GPL.

'; + } + $template->footer(); +} + +?> \ No newline at end of file