private function assertResultCorrect($count, $from, $perPage, $first, $last) { $this->addDocuments($count); $query = new Search_Query(); $query->filterType('article'); $query->setRange($from, $perPage); $result = $query->search($this->index); $this->assertEquals($count, count($result), 'total count'); $real = array(); foreach ($result as $hit) { $real[] = $hit; } $this->assertEquals($first, $real[0]['object_id'], 'first entry'); $this->assertEquals($last, $real[count($real) - 1]['object_id'], 'last entry'); }
private function processObjects($function, $categId, $objects) { $unifiedsearchlib = TikiLib::lib('unifiedsearch'); foreach ($objects as $object) { $type = $object['type']; $id = $object['id']; $this->{$function}($categId, $type, $id); $unifiedsearchlib->invalidateObject($type, $id); } $unifiedsearchlib->processUpdateQueue(count($objects) * 2); $query = new Search_Query(); $query->filterCategory((string) $categId); $query->filterPermissions(Perms::get()->getGroups()); $query->setRange(0, 1); $result = $query->search($unifiedsearchlib->getIndex()); return array('categId' => $categId, 'count' => count($result), 'objects' => $objects, 'confirm' => 1); }
function testSpecifiedPaginationRange() { $index = new Search_Index_Memory(); $query = new Search_Query(); $query->setRange(60, 30); $query->search($index); $this->assertEquals(60, $index->getLastStart()); $this->assertEquals(30, $index->getLastCount()); }
function wikiplugin_list($data, $params) { $unifiedsearchlib = TikiLib::lib('unifiedsearch'); $alternate = null; $output = null; $subPlugins = array(); $query = new Search_Query; $query->setWeightCalculator($unifiedsearchlib->getWeightCalculator()); if (isset($_REQUEST['maxRecords'])) { if (isset($_REQUEST['offset'])) { $query->setRange($_REQUEST['offset'], $_REQUEST['maxRecords']); } else { $query->setRange(0, $_REQUEST['maxRecords']); } } elseif (isset($_REQUEST['offset'])) { $query->setRange($_REQUEST['offset']); } $matches = WikiParser_PluginMatcher::match($data); $argumentParser = new WikiParser_PluginArgumentParser; $onclick = ''; $offset_jsvar = ''; foreach ($matches as $match) { $name = $match->getName(); $arguments = $argumentParser->parse($match->getArguments()); foreach ($arguments as $key => $value) { $function = "wpquery_{$name}_{$key}"; if (function_exists($function)) { $function($query, $value, $arguments); } $function = "wpformat_{$name}_{$key}"; if (function_exists($function)) { $function($subPlugins, $value, $match->getBody()); } } if ($name == 'output') { $output = $match; } if ($name == 'alternate') { $alternate = $match->getBody(); } if ($name == 'pagination' && isset($arguments['onclick'])) { $onclick = $arguments['onclick']; } if ($name == 'pagination' && isset($arguments['offset_jsvar'])) { $offset_jsvar = $arguments['offset_jsvar']; } } if (! Perms::get()->admin) { $query->filterPermissions(Perms::get()->getGroups()); } if (!empty($_REQUEST['sort_mode'])) { $query->setOrder($_REQUEST['sort_mode']); } $index = $unifiedsearchlib->getIndex(); $result = $query->search($index); if (count($result)) { if (!empty($output)) { $arguments = $argumentParser->parse($output->getArguments()); if (isset($arguments['template'])) { if ($arguments['template'] == 'table') { $arguments['template'] = dirname(__FILE__) . '/../../templates/table.tpl'; } else if (!file_exists($arguments['template'])) { TikiLib::lib('errorreport')->report(tr('Missing template "%0"', $arguments['template'])); return ''; } $builder = new Search_Formatter_ArrayBuilder; $templateData = $builder->getData($output->getBody()); $plugin = new Search_Formatter_Plugin_SmartyTemplate($arguments['template']); $plugin->setData($templateData); $plugin->setFields(wp_list_findfields($templateData)); } elseif (isset($arguments['wiki']) && TikiLib::lib('tiki')->page_exists($arguments['wiki'])) { $wikitpl = "tplwiki:" . $arguments['wiki']; $wikicontent = TikiLib::lib('smarty')->fetch($wikitpl); $plugin = new Search_Formatter_Plugin_WikiTemplate($wikicontent); } else { $plugin = new Search_Formatter_Plugin_WikiTemplate($output->getBody()); } if (isset($arguments['pagination'])) { $plugin = new WikiPlugin_List_AppendPagination($plugin, $onclick, $offset_jsvar); } } else { $plugin = new Search_Formatter_Plugin_WikiTemplate("* {display name=title format=objectlink}\n"); } $formatter = new Search_Formatter($plugin); $formatter->setDataSource($unifiedsearchlib->getDataSource()); foreach ($subPlugins as $key => $plugin) { $formatter->addSubFormatter($key, $plugin); } $out = $formatter->format($result); } elseif (!empty($alternate)) { $out = $alternate; } else { $out = '^' . tra('No results for query.') . '^'; } return $out; }