/** * Save query with number of results and is spellchecked. * * @param QueryModel $query Search query object. * * @return void */ public function saveSearchResults(QueryModel $query) { $adapter = $this->getConnection(); $table = $this->getMainTable(); $numResults = $query->getNumResults(); $isSpellchecked = (int) $query->getIsSpellchecked(); $saveData = ['store_id' => $query->getStoreId(), 'query_text' => $query->getQueryText(), 'num_results' => $numResults, 'is_spellchecked' => $isSpellchecked]; $updateData = ['num_results' => $numResults, 'is_spellchecked' => $isSpellchecked]; $adapter->insertOnDuplicate($table, $saveData, $updateData); }
/** * Convert all results to array * * @return array * @SuppressWarnings(PHPMD.NPathComplexity) */ public function toArray() { $result = ['totalItems' => 0, 'query' => $this->query->getQueryText(), 'indexes' => [], 'noResults' => false, 'urlAll' => $this->searchHelper->getResultUrl($this->query->getQueryText())]; /** @var \Mirasvit\Search\Model\Index $index */ foreach ($this->getIndexes() as $index) { $indexCode = $index->getCode(); if ($indexCode == 'catalogsearch_fulltext') { $indexCode = 'magento_catalog_product'; } $collection = $this->getCollection($index); $localIndex = $this->indexPool->get($indexCode); $localIndex->setCollection($collection); $items = ['code' => $indexCode, 'title' => $index->getTitle(), 'totalItems' => $collection->getSize(), 'isShowTotals' => $indexCode == 'magento_search_query' ? false : true, 'items' => $localIndex->getItems()]; $result['indexes'][] = $items; $result['totalItems'] += $localIndex->getSize(); } $result['textAll'] = __('Show all %1 results →', $result['totalItems']); $result['textEmpty'] = __('Sorry, nothing found for "%1".', $result['query']); $result['noResults'] = $result['totalItems'] ? false : true; return $result; }
/** * Save query with number of results * * @param QueryModel $query * @return void * * @throws \Magento\Framework\Exception\LocalizedException */ public function saveNumResults(QueryModel $query) { $adapter = $this->getConnection(); $table = $this->getMainTable(); $numResults = $query->getNumResults(); $saveData = ['store_id' => $query->getStoreId(), 'query_text' => $query->getQueryText(), 'num_results' => $numResults]; $updateData = ['num_results' => $numResults]; $adapter->insertOnDuplicate($table, $saveData, $updateData); }
/** * Query text * * @return string */ public function getQueryText() { return strip_tags($this->query->getQueryText()); }