diff -r 000000000000 -r 4eba9c11703f web/Zend/Service/DeveloperGarden/LocalSearch/SearchParameters.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Service/DeveloperGarden/LocalSearch/SearchParameters.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,536 @@ + 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 ($value === null) { + continue; + } + $param = array( + 'parameter' => $key, + 'value' => $value + ); + $retVal[] = $param; + } + return $retVal; + } +}