4 require_once('lib/WikiDB/backend.php');
7 * An inefficient but general most_popular iterator.
9 * This iterator will work with any backend which implements the
10 * backend::get_all_pages() and backend::get_pagedata()
13 class WikiDB_backend_dumb_MostPopularIter
14 extends WikiDB_backend_iterator
16 function WikiDB_backend_dumb_MostPopularIter($backend, &$all_pages, $limit) {
17 $this->_pages = array();
18 $pages = &$this->_pages;
20 while ($page = $all_pages->next()) {
21 if (!isset($page['pagedata']))
22 $page['pagedata'] = $backend->get_pagedata($page['pagename']);
26 if($limit < 0){ //sort pages in reverse order - ie least popular first.
27 usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf_rev');
30 else usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf');
33 $pages = array_reverse($pages);
37 if ($limit && $limit < count($pages))
38 array_splice($pages, $limit);
42 return array_shift($this->_pages);
50 function WikiDB_backend_dumb_MostPopularIter_sortf($a,$b) {
52 if (isset($a['pagedata']['hits']))
53 $ahits = (int)$a['pagedata']['hits'];
54 if (isset($b['pagedata']['hits']))
55 $bhits = (int)$b['pagedata']['hits'];
56 return $bhits - $ahits;
59 function WikiDB_backend_dumb_MostPopularIter_sortf_rev($a,$b) {
61 if (isset($a['pagedata']['hits']))
62 $ahits = (int)$a['pagedata']['hits'];
63 if (isset($b['pagedata']['hits']))
64 $bhits = (int)$b['pagedata']['hits'];
65 return $ahits - $bhits;
72 // c-hanging-comment-ender-p: nil
73 // indent-tabs-mode: nil