예제 #1
0
파일: AllPages.php 프로젝트: hugcoday/wiki
 function run($dbi, $argstr, $request, $basepage)
 {
     $args = $this->getArgs($argstr, $request);
     $pages = false;
     // Todo: extend given _GET args
     if (DEBUG && $args['debug']) {
         $timer = new DebugTimer();
     }
     $caption = _("All pages in this wiki (%d total):");
     if (!empty($args['userpages'])) {
         $pages = PageList::allUserPages($args['include_empty'], $args['sortby'], '');
         $caption = _("List of user-created pages (%d total):");
         $args['count'] = $request->getArg('count');
     } elseif (!empty($args['owner'])) {
         $pages = PageList::allPagesByOwner($args['owner'], $args['include_empty'], $args['sortby'], '');
         $args['count'] = $request->getArg('count');
         if (!$args['count']) {
             $args['count'] = $dbi->numPages($args['include_empty'], $args['exclude']);
         }
         $caption = fmt("List of pages owned by [%s] (%d total):", WikiLink($args['owner'] == '[]' ? $request->_user->getAuthenticatedId() : $args['owner'], 'if_known'), $args['count']);
         $pages->_options['count'] = $args['count'];
     } elseif (!empty($args['author'])) {
         $pages = PageList::allPagesByAuthor($args['author'], $args['include_empty'], $args['sortby'], '');
         $args['count'] = $request->getArg('count');
         if (!$args['count']) {
             $args['count'] = $dbi->numPages($args['include_empty'], $args['exclude']);
         }
         $caption = fmt("List of pages last edited by [%s] (%d total):", WikiLink($args['author'] == '[]' ? $request->_user->getAuthenticatedId() : $args['author'], 'if_known'), $args['count']);
         $pages->_options['count'] = $args['count'];
     } elseif (!empty($args['creator'])) {
         $pages = PageList::allPagesByCreator($args['creator'], $args['include_empty'], $args['sortby'], '');
         $args['count'] = $request->getArg('count');
         if (!$args['count']) {
             $args['count'] = $dbi->numPages($args['include_empty'], $args['exclude']);
         }
         $caption = fmt("List of pages created by [%s] (%d total):", WikiLink($args['creator'] == '[]' ? $request->_user->getAuthenticatedId() : $args['creator'], 'if_known'), $args['count']);
         $pages->_options['count'] = $args['count'];
         //} elseif ($pages) {
         //    $args['count'] = count($pages);
     } else {
         if (!$request->getArg('count')) {
             $args['count'] = $dbi->numPages($args['include_empty'], $args['exclude']);
         } else {
             $args['count'] = $request->getArg('count');
         }
     }
     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);
     }
     // deleted pages show up as version 0.
     //if ($args['include_empty'])
     //    $pagelist->_addColumn('version');
     if ($pages !== false) {
         $pagelist->addPageList($pages);
     } else {
         $pagelist->addPages($dbi->getAllPages($args['include_empty'], $args['sortby'], $args['limit']));
     }
     if (DEBUG && $args['debug']) {
         return HTML($pagelist, HTML::p(fmt("Elapsed time: %s s", $timer->getStats())));
     } else {
         return $pagelist;
     }
 }