Ejemplo n.º 1
0
 function run($dbi, $argstr, &$request, $basepage)
 {
     $args = $this->getArgs($argstr, $request);
     if (empty($args['s'])) {
         return '';
     }
     $query = new TextSearchQuery($args['s'], $args['case_exact'], $args['regex']);
     $pages = $dbi->titleSearch($query, $args['sortby'], $args['limit'], $args['exclude']);
     $pagelist = new PageList($args['info'], $args['exclude'], $args);
     while ($page = $pages->next()) {
         $pagelist->addPage($page);
         $last_name = $page->getName();
     }
     if ($args['format'] == 'livesearch') {
         $request->discardOutput();
         $request->buffer_output(false);
         echo '<div class="LSRes">';
         echo $pagelist->asXml();
         echo '</div>';
         if (empty($WikiTheme->DUMP_MODE)) {
             unset($GLOBALS['ErrorManager']->_postponed_errors);
             $request->finish();
         }
     }
     // Provide an unknown WikiWord link to allow for page creation
     // when a search returns no results
     if (!$args['noheader']) {
         $s = $args['s'];
         if (!$pagelist->getTotal() and !$query->_regex) {
             $s = WikiLink($args['s'], 'auto');
         }
         $pagelist->setCaption(fmt("Title search results for '%s'", $s));
     }
     if ($args['auto_redirect'] && $pagelist->getTotal() == 1) {
         return HTML($request->redirect(WikiURL($last_name, false, 'absurl'), false), $pagelist);
     }
     return $pagelist;
 }