2 require_once 'lib/WikiDB/backend.php';
5 * An inefficient but general most_popular iterator.
7 * This iterator will work with any backend which implements the
8 * backend::get_all_pages() and backend::get_pagedata()
11 class WikiDB_backend_dumb_MostPopularIter
12 extends WikiDB_backend_iterator
14 function WikiDB_backend_dumb_MostPopularIter($backend, &$all_pages, $limit) {
15 $this->_pages = array();
16 $pages = &$this->_pages;
18 while ($page = $all_pages->next()) {
19 if (!isset($page['pagedata']))
20 $page['pagedata'] = $backend->get_pagedata($page['pagename']);
24 if($limit < 0){ //sort pages in reverse order - ie least popular first.
25 usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf_rev');
28 else usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf');
31 $pages = array_reverse($pages);
35 if ($limit && $limit < count($pages))
36 array_splice($pages, $limit);
40 return array_shift($this->_pages);
48 function WikiDB_backend_dumb_MostPopularIter_sortf($a,$b) {
50 if (isset($a['pagedata']['hits']))
51 $ahits = (int)$a['pagedata']['hits'];
52 if (isset($b['pagedata']['hits']))
53 $bhits = (int)$b['pagedata']['hits'];
54 return $bhits - $ahits;
57 function WikiDB_backend_dumb_MostPopularIter_sortf_rev($a,$b) {
59 if (isset($a['pagedata']['hits']))
60 $ahits = (int)$a['pagedata']['hits'];
61 if (isset($b['pagedata']['hits']))
62 $bhits = (int)$b['pagedata']['hits'];
63 return $ahits - $bhits;
70 // c-hanging-comment-ender-p: nil
71 // indent-tabs-mode: nil