From: Reini U. <ru...@us...> - 2004-12-06 19:50:19
|
Update of /cvsroot/phpwiki/phpwiki/lib/plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4180/plugin Modified Files: AllPages.php BackLinks.php LinkDatabase.php ModeratedPage.php PhotoAlbum.php UnfoldSubpages.php WikiAdminChmod.php WikiAdminSelect.php WikiAdminUtils.php Log Message: enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. renamed delete_page to purge_page. enable action=edit&version=-1 to force creation of a new version. added BABYCART_PATH config fixed magiqc in adodb.inc.php and some more docs Index: AllPages.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/AllPages.php,v retrieving revision 1.34 retrieving revision 1.35 diff -u -2 -b -p -d -r1.34 -r1.35 --- AllPages.php 23 Nov 2004 15:17:19 -0000 1.34 +++ AllPages.php 6 Dec 2004 19:50:04 -0000 1.35 @@ -65,4 +65,5 @@ extends WikiPlugin function run($dbi, $argstr, $request, $basepage) { $args = $this->getArgs($argstr, $request); + $pages = false; // Todo: extend given _GET args if ($args['debug']) @@ -93,8 +94,7 @@ extends WikiPlugin if (! $request->getArg('count')) $args['count'] = $dbi->numPages($args['include_empty'],$args['exclude']); else $args['count'] = $request->getArg('count'); - //$pages = false; // ?? } - //if (empty($args['count']) and !empty($pages)) - // $args['count'] = count($pages); + if (empty($args['count']) and !empty($pages)) + $args['count'] = count($pages); $pagelist = new PageList($args['info'], $args['exclude'], $args); if (!$args['noheader']) $pagelist->setCaption($caption); @@ -104,7 +104,7 @@ extends WikiPlugin $pagelist->_addColumn('version'); - /*if ($pages !== false) + if ($pages !== false) $pagelist->addPageList($pages); - else */ + else $pagelist->addPages( $dbi->getAllPages($args['include_empty'], $args['sortby'], $args['limit']) ); if ($args['debug']) { @@ -123,4 +123,12 @@ extends WikiPlugin // $Log$ +// Revision 1.35 2004/12/06 19:50:04 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.34 2004/11/23 15:17:19 rurban // better support for case_exact search (not caseexact for consistency), Index: BackLinks.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/BackLinks.php,v retrieving revision 1.31 retrieving revision 1.32 diff -u -2 -b -p -d -r1.31 -r1.32 --- BackLinks.php 26 Nov 2004 18:39:02 -0000 1.31 +++ BackLinks.php 6 Dec 2004 19:50:05 -0000 1.32 @@ -146,6 +146,13 @@ class _PageList_Column_BackLinks_count e } - // $Log$ +// Revision 1.32 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.31 2004/11/26 18:39:02 rurban // new regex search parser and SQL backends (90% complete, glob and pcre backends missing) Index: LinkDatabase.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/LinkDatabase.php,v retrieving revision 1.3 retrieving revision 1.4 diff -u -2 -b -p -d -r1.3 -r1.4 --- LinkDatabase.php 30 Nov 2004 23:44:00 -0000 1.3 +++ LinkDatabase.php 6 Dec 2004 19:50:05 -0000 1.4 @@ -33,5 +33,5 @@ require_once('lib/WikiPluginCached.php') * * TODO: Currently the meta-head tags disturb the touchgraph java browser a bit. - * Maybe add a theme without much header tags. + * Maybe add a theme without that much header tags. */ class WikiPlugin_LinkDatabase @@ -179,4 +179,12 @@ class _PageList_Column_LinkDatabase_link // $Log$ +// Revision 1.4 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.3 2004/11/30 23:44:00 rurban // some comments Index: ModeratedPage.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/ModeratedPage.php,v retrieving revision 1.2 retrieving revision 1.3 diff -u -2 -b -p -d -r1.2 -r1.3 --- ModeratedPage.php 30 Nov 2004 17:46:49 -0000 1.2 +++ ModeratedPage.php 6 Dec 2004 19:50:05 -0000 1.3 @@ -20,10 +20,12 @@ rcs_id('$Id$'); Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + /** - * This plugin requires an action page (Default: ModeratedPage) - * and provides delayed execution of restricted actions, after - * a special moderators request: + * This plugin requires an action page (default: ModeratedPage) + * and provides delayed execution of restricted actions, + * after a special moderators request. Usually by email. * http://mywiki/SomeModeratedPage?action=ModeratedPage&id=kdclcr78431zr43uhrn&pass=approve * + * See http://phpwiki.org/PageModeration * Author: ReiniUrban */ @@ -110,4 +112,13 @@ extends WikiPlugin } list($args['emails'], $args['moderators']) = $page->getPageChangeEmails(array($page->getName() => $users)); + + if (!empty($args['require_access'])) { + $args['require_access'] = preg_split("/\s*,\s*/", $args['require_access']); + if (empty($args['require_access'])) + unset($args['require_access']); + } + if ($args['require_level'] !== false) { + $args['require_level'] = (integer) $args['require_level']; + } unset($args['id']); unset($args['page']); @@ -176,5 +187,5 @@ extends WikiPlugin /** - * Handle client-side moderation request on any moderated page. + * Handle client-side POST moderation request on any moderated page. * if ($page->get('moderation')) WikiPlugin_ModeratedPage::handler(...); * return false if not handled (pass through), true if handled and displayed. @@ -196,12 +207,20 @@ extends WikiPlugin } // which action? - if ($action == 'edit') { + if (!empty($status['require_access']) and !in_array(action2access($action), $status['require_access'])) + return false; // allow and fall through, not moderated + if (!empty($status['require_level']) and $request->_user->_level >= $status['require_level']) + return false; // allow and fall through, not moderated + // else all post actions are moderated by default + if (1) /* or in_array($action, array('edit','remove','rename')*/ { //$moderated = $page->get('moderated'); $id = $this->generateId(); while (!empty($moderated[$id])) $id = $this->generateId(); // avoid duplicates - $moderated['id'] = $id; - $moderated['data'][$id] = array('args' => $request->getArgs(), + $moderated['id'] = $id; // overwrite current id + $moderated['data'][$id] = array( // add current request 'timestamp' => time(), - 'userid' => $request->_user->getId()); + 'userid' => $request->_user->getId(), + 'args' => $request->getArgs(), + 'user' => serialize($request->_user), + ); $this->_tokens['CONTENT'] = HTML::div(array('class' => 'wikitext'), fmt("%s: action forwarded to moderator %s", @@ -216,6 +235,8 @@ extends WikiPlugin $action.': '._("ModeratedPage").' '.$pagename."\n" . serialize($moderated['data'][$id]) - ."\n<".WikiURL($pagename, array('id' => $id,'pass' => 'approve'),1).">" - ."\n<".WikiURL($pagename, array('id' => $id,'pass' => 'reject'),1).">\n" + ."\n<".WikiURL($pagename, array('action' => _("ModeratedPage"), + 'id' => $id, 'pass' => 'approve'), 1).">" + ."\n<".WikiURL($pagename, array('action' => _("ModeratedPage"), + 'id' => $id, 'pass' => 'reject'), 1).">\n" )) { $page->set('moderated', $moderated); @@ -232,6 +253,8 @@ extends WikiPlugin /** * Handle admin-side moderation resolve. + * We might have to convert the GET to a POST request to continue with the left-over stored request. */ function approve($args, $moderation) { + // check id, convert to POST, continue ; } @@ -240,4 +263,5 @@ extends WikiPlugin */ function reject($args, $moderation) { + // check id, delete action ; } @@ -270,4 +294,12 @@ extends WikiPlugin // $Log$ +// Revision 1.3 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.2 2004/11/30 17:46:49 rurban // added ModeratedPage POST action hook (part 2/3) Index: PhotoAlbum.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/PhotoAlbum.php,v retrieving revision 1.10 retrieving revision 1.11 diff -u -2 -b -p -d -r1.10 -r1.11 --- PhotoAlbum.php 1 Dec 2004 19:34:13 -0000 1.10 +++ PhotoAlbum.php 6 Dec 2004 19:50:05 -0000 1.11 @@ -29,5 +29,5 @@ rcs_id('$Id$'); * Usage: * <?plugin PhotoAlbum - * src="http://server/textfile" or localfile or localdir or nothing + * src="http://server/textfile" or localfile or localdir * mode=[column|row] * desc=true @@ -442,4 +442,12 @@ extends WikiPlugin // $Log$ +// Revision 1.11 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.10 2004/12/01 19:34:13 rurban // Cleanup of CONSTANT pollution. Index: UnfoldSubpages.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/UnfoldSubpages.php,v retrieving revision 1.17 retrieving revision 1.18 diff -u -2 -b -p -d -r1.17 -r1.18 --- UnfoldSubpages.php 23 Nov 2004 15:17:19 -0000 1.17 +++ UnfoldSubpages.php 6 Dec 2004 19:50:05 -0000 1.18 @@ -24,9 +24,10 @@ rcs_id('$Id$'); * UnfoldSubpages: Lists the content of all SubPages of the current page. * This is e.g. useful for the CalendarPlugin, to see all entries at once. - * Warning: Don't use it with non-existant sections! + * Warning: Better don't use it with non-existant sections! * The section extractor is currently quite unstable. * Usage: <?plugin UnfoldSubpages sortby=-mtime words=50 maxpages=5 ?> * Author: Reini Urban <ru...@x-...> */ +include_once("lib/PageList.php"); class WikiPlugin_UnfoldSubpages extends WikiPlugin @@ -151,4 +152,12 @@ extends WikiPlugin // $Log$ +// Revision 1.18 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.17 2004/11/23 15:17:19 rurban // better support for case_exact search (not caseexact for consistency), Index: WikiAdminChmod.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/WikiAdminChmod.php,v retrieving revision 1.12 retrieving revision 1.13 diff -u -2 -b -p -d -r1.12 -r1.13 --- WikiAdminChmod.php 23 Nov 2004 15:17:19 -0000 1.12 +++ WikiAdminChmod.php 6 Dec 2004 19:50:05 -0000 1.13 @@ -140,4 +140,5 @@ extends WikiPlugin_WikiAdminSelect $args['info'] = "checkbox,pagename,perm,author,mtime"; } + $args['types'] = array('perm' => new _PageList_Column_perm('perm', _("Permission"))); $pagelist = new PageList_Selectable($args['info'], $args['exclude'], $args); $pagelist->addPageList($pages); @@ -187,5 +188,5 @@ extends WikiPlugin_WikiAdminSelect 'value' => 1)); if (!empty($post_args['updatechildren'])) $checkbox->setAttr('checked','checked'); - $header->pushContent($checkbox, + $header->pushContent($checkbox, HTML::raw(" "), _("Propagate new permissions to all subpages?"), HTML::raw(" "), @@ -194,8 +195,24 @@ extends WikiPlugin_WikiAdminSelect return $header; } - } +class _PageList_Column_perm extends _PageList_Column { + function _getValue ($page_handle, &$revision_handle) { + $perm_array = pagePermissions($page_handle->_pagename); + return pagePermissionsSimpleFormat($perm_array, + $page_handle->get('author'), + $page_handle->get('group')); + } +}; + // $Log$ +// Revision 1.13 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.12 2004/11/23 15:17:19 rurban // better support for case_exact search (not caseexact for consistency), Index: WikiAdminSelect.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/WikiAdminSelect.php,v retrieving revision 1.21 retrieving revision 1.22 diff -u -2 -b -p -d -r1.21 -r1.22 --- WikiAdminSelect.php 23 Nov 2004 15:17:20 -0000 1.21 +++ WikiAdminSelect.php 6 Dec 2004 19:50:05 -0000 1.22 @@ -248,4 +248,12 @@ extends WikiPlugin // $Log$ +// Revision 1.22 2004/12/06 19:50:05 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.21 2004/11/23 15:17:20 rurban // better support for case_exact search (not caseexact for consistency), Index: WikiAdminUtils.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/WikiAdminUtils.php,v retrieving revision 1.13 retrieving revision 1.14 diff -u -2 -b -p -d -r1.13 -r1.14 --- WikiAdminUtils.php 25 Jun 2004 14:29:22 -0000 1.13 +++ WikiAdminUtils.php 6 Dec 2004 19:50:05 -0000 1.14 @@ -2,5 +2,5 @@ rcs_id('$Id$'); /** - Copyright 2003 $ThePhpWikiProgrammingTeam + Copyright 2003, 2004 $ThePhpWikiProgrammingTeam This file is part of PhpWiki. @@ -22,4 +22,10 @@ rcs_id('$Id$'); /** + valid actions: + purge-cache + purge-bad-pagenames + purge-empty-pages + access-restrictions + email-verification */ class WikiPlugin_WikiAdminUtils @@ -31,5 +37,5 @@ extends WikiPlugin function getDescription () { - return _("Miscellaneous utility functions of use to the administrator."); + return _("Miscellaneous utility functions for the WIKIADMIN."); } @@ -58,7 +64,6 @@ extends WikiPlugin $posted = $request->getArg('wikiadminutils'); - $request->setArg('wikiadminutils', false); - if ($request->isPost()) { + if ($request->isPost() and $posted['action'] == $action) { // a different form. we might have multiple $user = $request->getUser(); if (!$user->isAdmin()) { @@ -68,5 +73,4 @@ extends WikiPlugin return $this->do_action($request, $posted); } - if (empty($label)) $label = $default_label; @@ -102,5 +106,6 @@ extends WikiPlugin function _getLabel($action) { $labels = array('purge-cache' => _("Purge Markup Cache"), - 'purge-bad-pagenames' => _("Delete Pages With Invalid Names")); + 'purge-bad-pagenames' => _("Purge all Pages With Invalid Names"), + 'purge-empty-pages' => _("Purge all empty, unreferenced Pages")); return @$labels[$action]; } @@ -118,25 +123,56 @@ extends WikiPlugin // FIXME: this should be moved into WikiDB::normalize() or something... $dbi = $request->getDbh(); + $count = 0; + $list = HTML::ol(array('align'=>'left')); $pages = $dbi->getAllPages('include_empty'); // Do we really want the empty ones too? - $badpages = array(); while (($page = $pages->next())) { $pagename = $page->getName(); $wpn = new WikiPageName($pagename); - if (! $wpn->isValid()) - $badpages[] = $pagename; + if (! $wpn->isValid()) { + $dbi->purgePage($pagename); + $list->pushContent(HTML::li($pagename)); + $count++; } - - if (!$badpages) + } + $pages->free(); + if (!$count) return _("No pages with bad names were found."); - - $list = HTML::ul(); - foreach ($badpages as $pagename) { - $dbi->deletePage($pagename); - $list->pushContent(HTML::li($pagename)); + else { + return HTML(fmt("Deleted %s pages with invalid names:", $count), + HTML::div(array('align'=>'left'), $list)); + } } - return HTML(fmt("Deleted %s pages with invalid names:", - count($badpages)), - $list); + /** + * Purge all non-referenced empty pages. Mainly those created by bad link extraction. + */ + function _do_purge_empty_pages(&$request, $args) { + $dbi = $request->getDbh(); + $count = 0; $notpurgable = 0; + $list = HTML::ol(array('align'=>'left')); + $pages = $dbi->getAllPages('include_empty'); + while (($page = $pages->next())) { + if (!$page->exists() and ($links = $page->getBackLinks('include_empty')) and !$links->next()) { + $pagename = $page->getName(); + if ($pagename == 'global_data' or $pagename == '.') continue; + if ($dbi->purgePage($pagename)) + $list->pushContent(HTML::li($pagename.' '._("[purged]"))); + else { + $list->pushContent(HTML::li($pagename.' '._("[not purgable]"))); + $notpurgable++; + } + $count++; + } + } + $pages->free(); + if (!$count) + return _("No empty, unreferenced pages were found."); + else + return HTML(fmt("Deleted %s unreferenced pages:", $count), + HTML::div(array('align'=>'left'), $list), + ($notpurgable ? + fmt("The %d not-purgable pages/links are links in some page(s). You might want to edit them.", + $notpurgable) + : '')); } |