4 require_once('lib/WikiDB/backend.php');
8 * An inefficient but general most_popular iterator.
10 * This iterator will work with any backend which implements the
11 * backend::get_all_pages() and backend::get_pagedata()
14 class WikiDB_backend_dumb_MostPopularIter
15 extends WikiDB_backend_iterator
17 function WikiDB_backend_dumb_MostPopularIter($backend, &$all_pages, $limit) {
18 $this->_pages = array();
19 $pages = &$this->_pages;
21 while ($page = $all_pages->next()) {
22 if (!isset($page['pagedata']))
23 $page['pagedata'] = $backend->get_pagedata($page['pagename']);
27 if($limit < 0){ //sort pages in reverse order - ie least popular first.
28 usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf_rev');
31 else usort($pages, 'WikiDB_backend_dumb_MostPopularIter_sortf');
34 $pages = array_reverse($pages);
38 if ($limit && $limit < count($pages))
39 array_splice($pages, $limit);
43 return array_shift($this->_pages);
51 function WikiDB_backend_dumb_MostPopularIter_sortf($a,$b) {
53 if (isset($a['pagedata']['hits']))
54 $ahits = (int)$a['pagedata']['hits'];
55 if (isset($b['pagedata']['hits']))
56 $bhits = (int)$b['pagedata']['hits'];
57 return $bhits - $ahits;
60 function WikiDB_backend_dumb_MostPopularIter_sortf_rev($a,$b) {
62 if (isset($a['pagedata']['hits']))
63 $ahits = (int)$a['pagedata']['hits'];
64 if (isset($b['pagedata']['hits']))
65 $bhits = (int)$b['pagedata']['hits'];
66 return $ahits - $bhits;
73 // c-hanging-comment-ender-p: nil
74 // indent-tabs-mode: nil