null, 'dymwhat' => null, 'dymrelated' => null, 'hits' => null, 'collapse' => null, 'where' => null, 'dywhere' => null, 'radius' => null, 'lx' => null, 'ly' => null, 'rx' => null, 'ry' => null, 'transformgeocode' => null, 'sort' => null, 'spatial' => null, 'sepcomm' => null, 'filter' => null, // can be ONLINER or OFFLINER 'openingtime' => null, // can be now or HH::MM 'kategorie' => null, // @see http://www.suchen.de/kategorie-katalog 'site' => null, 'typ' => null, 'name' => null, 'page' => null, 'city' => null, 'plz' => null, 'strasse' => null, 'bundesland' => null, ); /** * possible collapse values * * @var array */ private $_possibleCollapseValues = array( true, false, 'ADDRESS_COMPANY', 'DOMAIN' ); /** * sets a new search word * alias for setWhat * * @param string $searchValue * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setSearchValue($searchValue) { return $this->setWhat($searchValue); } /** * sets a new search word * * @param string $searchValue * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setWhat($searchValue) { $this->_parameters['what'] = $searchValue; return $this; } /** * enable the did you mean what feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function enableDidYouMeanWhat() { $this->_parameters['dymwhat'] = 'true'; return $this; } /** * disable the did you mean what feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disableDidYouMeanWhat() { $this->_parameters['dymwhat'] = 'false'; return $this; } /** * enable the did you mean where feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function enableDidYouMeanWhere() { $this->_parameters['dymwhere'] = 'true'; return $this; } /** * disable the did you mean where feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disableDidYouMeanWhere() { $this->_parameters['dymwhere'] = 'false'; return $this; } /** * enable did you mean related, if true Kihno will be corrected to Kino * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function enableDidYouMeanRelated() { $this->_parameters['dymrelated'] = 'true'; return $this; } /** * diable did you mean related, if false Kihno will not be corrected to Kino * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disableDidYouMeanRelated() { $this->_parameters['dymrelated'] = 'true'; return $this; } /** * set the max result hits for this search * * @param integer $hits * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setHits($hits = 10) { require_once 'Zend/Validate/Between.php'; $validator = new Zend_Validate_Between(0, 1000); if (!$validator->isValid($hits)) { $message = $validator->getMessages(); require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php'; throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message)); } $this->_parameters['hits'] = $hits; return $this; } /** * If true, addresses will be collapsed for a single domain, common values * are: * ADDRESS_COMPANY – to collapse by address * DOMAIN – to collapse by domain (same like collapse=true) * false * * @param mixed $value * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setCollapse($value) { if (!in_array($value, $this->_possibleCollapseValues, true)) { require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php'; throw new Zend_Service_DeveloperGarden_LocalSearch_Exception('Not a valid value provided.'); } $this->_parameters['collapse'] = $value; return $this; } /** * set a specific search location * examples: * +47°54’53.10”, 11° 10’ 56.76” * 47°54’53.10;11°10’56.76” * 47.914750,11.182533 * +47.914750 ; +11.1824 * Darmstadt * Berlin * * @param string $where * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setWhere($where) { require_once 'Zend/Validate/NotEmpty.php'; $validator = new Zend_Validate_NotEmpty(); if (!$validator->isValid($where)) { $message = $validator->getMessages(); require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php'; throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message)); } $this->_parameters['where'] = $where; return $this; } /** * returns the defined search location (ie city, country) * * @return string */ public function getWhere() { return $this->_parameters['where']; } /** * enable the spatial search feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function enableSpatial() { $this->_parameters['spatial'] = 'true'; return $this; } /** * disable the spatial search feature * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disableSpatial() { $this->_parameters['spatial'] = 'false'; return $this; } /** * sets spatial and the given radius for a circle search * * @param integer $radius * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setRadius($radius) { require_once 'Zend/Validate/Int.php'; $validator = new Zend_Validate_Int(); if (!$validator->isValid($radius)) { $message = $validator->getMessages(); require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php'; throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message)); } $this->_parameters['radius'] = $radius; $this->_parameters['transformgeocode'] = 'false'; return $this; } /** * sets the values for a rectangle search * lx = longitude left top * ly = latitude left top * rx = longitude right bottom * ry = latitude right bottom * * @param $lx * @param $ly * @param $rx * @param $ry * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setRectangle($lx, $ly, $rx, $ry) { $this->_parameters['lx'] = $lx; $this->_parameters['ly'] = $ly; $this->_parameters['rx'] = $rx; $this->_parameters['ry'] = $ry; return $this; } /** * if set, the service returns the zipcode for the result * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setTransformGeoCode() { $this->_parameters['transformgeocode'] = 'true'; $this->_parameters['radius'] = null; return $this; } /** * sets the sort value * possible values are: 'relevance' and 'distance' (only with spatial enabled) * * @param string $sort * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setSort($sort) { if (!in_array($sort, array('relevance', 'distance'))) { require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php'; throw new Zend_Service_DeveloperGarden_LocalSearch_Exception('Not a valid sort value provided.'); } $this->_parameters['sort'] = $sort; return $this; } /** * enable the separation of phone numbers * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function enablePhoneSeparation() { $this->_parameters['sepcomm'] = 'true'; return $this; } /** * disable the separation of phone numbers * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disablePhoneSeparation() { $this->_parameters['sepcomm'] = 'true'; return $this; } /** * if this filter is set, only results with a website are returned * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setFilterOnliner() { $this->_parameters['filter'] = 'ONLINER'; return $this; } /** * if this filter is set, only results without a website are returned * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setFilterOffliner() { $this->_parameters['filter'] = 'OFFLINER'; return $this; } /** * removes the filter value * * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function disableFilter() { $this->_parameters['filter'] = null; return $this; } /** * set a filter to get just results who are open at the given time * possible values: * now = open right now * HH:MM = at the given time (ie 20:00) * * @param string $time * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setOpeningTime($time = null) { $this->_parameters['openingtime'] = $time; return $this; } /** * sets a category filter * * @see http://www.suchen.de/kategorie-katalog * @param $category * @return unknown_type */ public function setCategory($category = null) { $this->_parameters['kategorie'] = $category; return $this; } /** * sets the site filter * ie: www.developergarden.com * * @param string $site * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setSite($site) { $this->_parameters['site'] = $site; return $this; } /** * sets a filter to the given document type * ie: pdf, html * * @param string $type * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setDocumentType($type) { $this->_parameters['typ'] = $type; return $this; } /** * sets a filter for the company name * ie: Deutsche Telekom * * @param string $name * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setName($name) { $this->_parameters['name'] = $name; return $this; } /** * sets a filter for the zip code * * @param string $zip * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setZipCode($zip) { $this->_parameters['plz'] = $zip; return $this; } /** * sets a filter for the street * * @param string $street * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setStreet($street) { $this->_parameters['strasse'] = $street; return $this; } /** * sets a filter for the county * * @param string $county * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters */ public function setCounty($county) { $this->_parameters['bundesland'] = $county; return $this; } /** * sets a raw parameter with the value * * @param string $key * @param mixed $value * @return unknown_type */ public function setRawParameter($key, $value) { $this->_parameters[$key] = $value; return $this; } /** * returns the parameters as an array * * @return array */ public function getSearchParameters() { $retVal = array(); foreach ($this->_parameters as $key => $value) { if (is_null($value)) { continue; } $param = array( 'parameter' => $key, 'value' => $value ); $retVal[] = $param; } return $retVal; } }