コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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();
     }
 }
コード例 #3
0
 /**
  * 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());
     }
 }