function getFormatter() { $plugin = $this->formatterPlugin; if (!$plugin) { $plugin = new Search_Formatter_Plugin_WikiTemplate("* {display name=title format=objectlink}\n"); } $formatter = new Search_Formatter($plugin); if ($this->alternateOutput > '') { $formatter->setAlternateOutput($this->alternateOutput); } else { $formatter->setAlternateOutput('^' . tra('No results for query.') . '^'); } foreach ($this->subFormatters as $name => $plugin) { $formatter->addSubFormatter($name, $plugin); } return $formatter; }
function testLinkInsideSmartyTemplate() { global $prefs; $prefs['feature_sefurl'] = 'y'; $plugin = new Search_Formatter_Plugin_SmartyTemplate(dirname(__FILE__) . '/basic.tpl'); $formatter = new Search_Formatter($plugin); $formatter->addSubFormatter('object_id', new Search_Formatter_Plugin_WikiTemplate("{display name=object_id format=objectlink}")); $output = $formatter->format(array(array('object_type' => 'wiki page', 'object_id' => 'HomePage'))); $expect = <<<OUT <div>~np~<table> \t<caption>Count: 1</caption> \t<tr><th>Object</th><th>Type</th></tr> \t<tr><td><a href="HomePage" class="" title="HomePage" data-type="wiki page" data-object="HomePage">HomePage</a></td><td>wiki page</td></tr> </table> ~/np~</div> OUT; $this->assertXmlStringEqualsXmlString($expect, "<div>{$output}</div>"); }
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; }