From: Reini U. <ru...@us...> - 2004-11-20 17:36:08
|
Update of /cvsroot/phpwiki/phpwiki/lib/plugin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14204/plugin Modified Files: WantedPages.php Log Message: improved WantedPages SQL backends PageList::sortby new 3rd arg valid_fields (override db fields) WantedPages sql pager inexact for performance reasons: assume 3 wantedfrom per page, to be correct, no getTotal() support exclude argument for get_all_pages, new _sql_set() Index: WantedPages.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/plugin/WantedPages.php,v retrieving revision 1.13 retrieving revision 1.14 diff -u -2 -b -p -d -r1.13 -r1.14 --- WantedPages.php 20 Nov 2004 11:28:49 -0000 1.13 +++ WantedPages.php 20 Nov 2004 17:35:58 -0000 1.14 @@ -52,5 +52,7 @@ extends WikiPlugin array('page' => '[pagename]', // just for a single page. 'noheader' => false, - 'exclude_from' => _("PgsrcTranslation").','._("InterWikiMap"))); + 'exclude_from' => _("PgsrcTranslation").','._("InterWikiMap"), + 'limit' => '100', + 'paging' => 'auto')); } @@ -77,17 +79,17 @@ extends WikiPlugin if (!$page) { - $allpages_iter = $dbi->getAllPages(false, false); - while ($page_handle = $allpages_iter->next()) { - $name = $page_handle->getName(); - if (in_array($name, $exclude_from)) continue; - $links = $page_handle->getPageLinks(true); // include_empty - while ($link_handle = $links->next()) { - if (! $dbi->isWikiPage($linkname = $link_handle->getName())) { - $pagelist->addPage($linkname); - //if (!array_key_exists($linkname, $this->_wpagelist)) - $pagelist->_wpagelist[$linkname][] = $name; - } - } + list($offset, $maxcount) = $pagelist->limit($limit); + $wanted_iter = $dbi->wantedPages($exclude_from, $exclude, $sortby, $limit); + while ($row = $wanted_iter->next()) { + $wanted = $row['pagename']; + $wantedfrom = $row['wantedfrom']; + // ignore duplicates: + if (empty($pagelist->_wpagelist[$wanted])) + $pagelist->addPage($wanted); + $pagelist->_wpagelist[$wanted][] = $wantedfrom; } + $wanted_iter->free(); + // update limit, but it's still a hack. + $pagelist->_options['limit'] = "$offset," . min($pagelist->getTotal(), $maxcount); } elseif ($dbi->isWikiPage($page)) { //only get WantedPages links for one page @@ -109,9 +111,7 @@ extends WikiPlugin if (!$noheader) { if ($page) - $pagelist->setCaption(sprintf(_("Wanted Pages for %s (%d total):"), - $page, count($pagelist->_wpagelist))); + $pagelist->setCaption(sprintf(_("Wanted Pages for %s:"), $page)); else - $pagelist->setCaption(sprintf(_("Wanted Pages in this wiki (%d total):"), - count($pagelist->_wpagelist))); + $pagelist->setCaption(sprintf(_("Wanted Pages in this wiki:"))); } // reference obviously doesn't work, so force an update to add _wpagelist to parentobj @@ -132,5 +132,5 @@ class _PageList_Column_WantedPages_wante foreach($this->parentobj->_wpagelist[$page->getName()] as $page) { if ($html) - $html->pushContent(',', WikiLink($page)); + $html->pushContent(', ', WikiLink($page)); else $html = HTML(WikiLink($page)); @@ -141,4 +141,11 @@ class _PageList_Column_WantedPages_wante // $Log$ +// Revision 1.14 2004/11/20 17:35:58 rurban +// improved WantedPages SQL backends +// PageList::sortby new 3rd arg valid_fields (override db fields) +// WantedPages sql pager inexact for performance reasons: +// assume 3 wantedfrom per page, to be correct, no getTotal() +// support exclude argument for get_all_pages, new _sql_set() +// // Revision 1.13 2004/11/20 11:28:49 rurban // fix a yet unused PageList customPageListColumns bug (merge class not decl to _types) |