コード例 #1
0
 /**
  * @param SS_HTTPRequest|null $request
  * @return $this
  */
 public function setLocations(SS_HTTPRequest $request = null)
 {
     if ($request === null) {
         $request = $this->request;
     }
     $filter = $this->config()->get('base_filter');
     if ($request->getVar('CategoryID')) {
         $filter['CategoryID'] = $request->getVar('CategoryID');
     } else {
         if ($this->getPageCategories()->exists()) {
             foreach ($this->getPageCategories() as $category) {
                 $filter['CategoryID'][] = $category->ID;
             }
         }
     }
     $this->extend('updateLocatorFilter', $filter, $request);
     $filterAny = $this->config()->get('base_filter_any');
     $this->extend('updateLocatorFilterAny', $filterAny, $request);
     $exclude = $this->config()->get('base_exclude');
     $this->extend('updateLocatorExclude', $exclude, $request);
     $locations = Locator::get_locations($filter, $filterAny, $exclude);
     $locations = DataToArrayListHelper::to_array_list($locations);
     //allow for adjusting list post possible distance calculation
     $this->extend('updateLocationList', $locations);
     if ($locations->canSortBy('distance')) {
         $locations = $locations->sort('distance');
     }
     //allow for returning list to be set as
     $this->extend('updateListType', $locations);
     $this->locations = $locations;
     return $this;
 }