getOption( 'simplesearch.core_path', null, $modx->getOption('core_path') . 'components/simplesearch/' ) . 'model/simplesearch/simplesearch.class.php'; $search = new SimpleSearch($modx, $scriptProperties); /* Find search index and toplaceholder setting */ $searchIndex = $modx->getOption('searchIndex', $scriptProperties, 'search'); $toPlaceholder = $modx->getOption('toPlaceholder', $scriptProperties, false); $noResultsTpl = $modx->getOption('noResultsTpl', $scriptProperties, 'SearchNoResults'); /* Get search string */ if (empty($_REQUEST[$searchIndex])) { $output = $search->getChunk($noResultsTpl, array( 'query' => '', )); return $search->output($output, $toPlaceholder); } $searchString = $search->parseSearchString($_REQUEST[$searchIndex]); if (!$searchString) { $output = $search->getChunk($noResultsTpl, array( 'query' => $searchString, )); return $search->output($output, $toPlaceholder); } /* Setup default properties. */ $tpl = $modx->getOption('tpl', $scriptProperties, 'SearchResult'); $containerTpl = $modx->getOption('containerTpl', $scriptProperties, 'SearchResults'); $showExtract = $modx->getOption('showExtract', $scriptProperties, true); $extractSource = $modx->getOption('extractSource', $scriptProperties, 'content'); $extractLength = $modx->getOption('extractLength', $scriptProperties, 200); $extractEllipsis = $modx->getOption('extractEllipsis', $scriptProperties, '...'); $highlightResults = $modx->getOption('highlightResults', $scriptProperties, true); $highlightClass = $modx->getOption('highlightClass', $scriptProperties, 'simplesearch-highlight'); $highlightTag = $modx->getOption('highlightTag', $scriptProperties, 'span'); $perPage = $modx->getOption('perPage', $scriptProperties, 10); $pagingSeparator = $modx->getOption('pagingSeparator', $scriptProperties, ' | '); $placeholderPrefix = $modx->getOption('placeholderPrefix', $scriptProperties, 'simplesearch.'); $includeTVs = $modx->getOption('includeTVs', $scriptProperties, ''); $processTVs = $modx->getOption('processTVs', $scriptProperties, ''); $tvPrefix = $modx->getOption('tvPrefix', $scriptProperties, ''); $offsetIndex = $modx->getOption('offsetIndex', $scriptProperties, 'simplesearch_offset'); $idx = isset($_REQUEST[$offsetIndex]) ? (int) $_REQUEST[$offsetIndex] + 1 : 1; $postHooks = $modx->getOption('postHooks', $scriptProperties, ''); $activeFacet = $modx->getOption('facet', $_REQUEST, $modx->getOption('activeFacet', $scriptProperties, 'default')); $activeFacet = $modx->sanitizeString($activeFacet); $facetLimit = $modx->getOption('facetLimit', $scriptProperties, 5); $outputSeparator = $modx->getOption('outputSeparator', $scriptProperties, "\n"); $addSearchToLink = (int) $modx->getOption('addSearchToLink', $scriptProperties, 0); $searchInLinkName = $modx->getOption('searchInLinkName', $scriptProperties, 'search'); $noResults = true; /* Get results */ $response = $search->getSearchResults($searchString, $scriptProperties); $placeholders = array('query' => $searchString); $resultsTpl = array('default' => array('results' => array(), 'total' => $response['total'])); if (!empty($response['results'])) { /* iterate through search results */ foreach ($response['results'] as $resourceArray) { $resourceArray['idx'] = $idx; if (empty($resourceArray['link'])) { $ctx = !empty($resourceArray['context_key']) ? $resourceArray['context_key'] : $modx->context->get('key'); $args = ''; if ($addSearchToLink) { $args = array($searchInLinkName => $searchString); } $resourceArray['link'] = $modx->makeUrl($resourceArray['id'], $ctx, $args); } if ($showExtract) { $extract = $searchString; if (array_key_exists($extractSource, $resourceArray)) { $text = $resourceArray[$extractSource]; } else { $text = $modx->runSnippet($extractSource, $resourceArray); } $extract = $search->createExtract($text, $extractLength, $extract,$extractEllipsis); /* Cleanup extract */ $extract = strip_tags(preg_replace("#\