/** * Returns the most searched queries as a DataList * * @return DataList * * @author Sebastian Diel <*****@*****.**>, Roland Lehmann <*****@*****.**> * @since 05.06.2012 */ public function TagsForCloud() { $searchTags = SilvercartSearchQuery::get_most_searched($this->TagsPerCloud); if (!$searchTags) { return false; } $searchTags = $searchTags->sort('SearchQuery'); $searchTagsArrayList = new ArrayList(); /* * The following block is a replacement for the call DataObjectSet::groupBy() * which does not exist any more */ $searchTagCounts = array(); foreach ($searchTags as $item) { $key = $item->hasMethod('count') ? $item->count() : $item->Count; $searchTagCounts[$key] = $key; } $fontSizeRanges = $this->getFontSizeRanges($searchTagCounts); foreach ($searchTags as $searchTag) { foreach ($fontSizeRanges as $fontSize => $fontSizeRange) { if ($searchTag->Count >= $fontSizeRange['Min'] && $searchTag->Count <= $fontSizeRange['Max']) { $searchTag->FontSize = $fontSize; $searchTagsArrayList->push($searchTag); } } } return $searchTagsArrayList; }
/** * URL action to search by a saved search query * * @param SS_HTTPRequest $request HTTP request * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 14.06.2012 */ public function SearchByQuery(SS_HTTPRequest $request) { $redirectBack = true; $searchQueryID = $request->param('ID'); if (is_numeric($searchQueryID)) { $searchQuery = SilvercartSearchQuery::get()->byID($searchQueryID); if ($searchQuery) { $redirectBack = false; Session::set('searchQuery', $searchQuery->SearchQuery); Session::save(); $this->redirect($this->Link()); } } if ($redirectBack) { $this->redirectBack(); } }
/** * Action to execute a search query * * @param SS_HTTPRequest $request Request to check for product data * @param bool $doRedirect Redirect after setting search settings? * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 30.06.2014 */ public function doSearch(SS_HTTPRequest $request, $doRedirect = true) { $postVars = $request->postVars(); if (!array_key_exists('locale', $postVars) || empty($postVars['locale'])) { $postVars['locale'] = Translatable::default_locale(); } Translatable::set_current_locale($postVars['locale']); i18n::set_locale($postVars['locale']); $quickSearchQuery = trim($postVars['quickSearchQuery']); $searchContext = 'SilvercartProduct'; $searchResultsPage = SilvercartTools::PageByIdentifierCode("SilvercartSearchResultsPage"); $searchQuery = SilvercartSearchQuery::get_by_query(trim(Convert::raw2sql($quickSearchQuery))); $searchQuery->Count++; $searchQuery->write(); SilvercartProduct::setDefaultSort('relevance'); Session::set("searchQuery", $quickSearchQuery); Session::set('searchContext', $searchContext); Session::save(); if ($doRedirect) { $this->owner->redirect($searchResultsPage->RelativeLink()); } }