[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/zend/Zend/Service/DeveloperGarden/LocalSearch/ -> SearchParameters.php (source)

   1  <?php
   2  /**
   3   * Zend Framework
   4   *
   5   * LICENSE
   6   *
   7   * This source file is subject to the new BSD license that is bundled
   8   * with this package in the file LICENSE.txt.
   9   * It is also available through the world-wide-web at this URL:
  10   * http://framework.zend.com/license/new-bsd
  11   * If you did not receive a copy of the license and are unable to
  12   * obtain it through the world-wide-web, please send an email
  13   * to [email protected] so we can send you a copy immediately.
  14   *
  15   * @category   Zend
  16   * @package    Zend_Service
  17   * @subpackage DeveloperGarden
  18   * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19   * @license    http://framework.zend.com/license/new-bsd     New BSD License
  20   * @version    $Id$
  21   */
  22  
  23  /**
  24   * @category   Zend
  25   * @package    Zend_Service
  26   * @subpackage DeveloperGarden
  27   * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  28   * @author     Marco Kaiser
  29   * @license    http://framework.zend.com/license/new-bsd     New BSD License
  30   */
  31  class Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
  32  {
  33      /**
  34       * possible search parameters, incl. default values
  35       *
  36       * @var array
  37       */
  38      private $_parameters = array(
  39          'what'             => null,
  40          'dymwhat'          => null,
  41          'dymrelated'       => null,
  42          'hits'             => null,
  43          'collapse'         => null,
  44          'where'            => null,
  45          'dywhere'          => null,
  46          'radius'           => null,
  47          'lx'               => null,
  48          'ly'               => null,
  49          'rx'               => null,
  50          'ry'               => null,
  51          'transformgeocode' => null,
  52          'sort'             => null,
  53          'spatial'          => null,
  54          'sepcomm'          => null,
  55          'filter'           => null, // can be ONLINER or OFFLINER
  56          'openingtime'      => null, // can be now or HH::MM
  57          'kategorie'        => null, // @see http://www.suchen.de/kategorie-katalog
  58          'site'             => null,
  59          'typ'              => null,
  60          'name'             => null,
  61          'page'             => null,
  62          'city'             => null,
  63          'plz'              => null,
  64          'strasse'          => null,
  65          'bundesland'       => null,
  66      );
  67  
  68      /**
  69       * possible collapse values
  70       *
  71       * @var array
  72       */
  73      private $_possibleCollapseValues = array(
  74          true,
  75          false,
  76          'ADDRESS_COMPANY',
  77          'DOMAIN'
  78      );
  79  
  80      /**
  81       * sets a new search word
  82       * alias for setWhat
  83       *
  84       * @param string $searchValue
  85       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
  86       */
  87      public function setSearchValue($searchValue)
  88      {
  89          return $this->setWhat($searchValue);
  90      }
  91  
  92      /**
  93       * sets a new search word
  94       *
  95       * @param string $searchValue
  96       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
  97       */
  98      public function setWhat($searchValue)
  99      {
 100          $this->_parameters['what'] = $searchValue;
 101          return $this;
 102      }
 103  
 104      /**
 105       * enable the did you mean what feature
 106       *
 107       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 108       */
 109      public function enableDidYouMeanWhat()
 110      {
 111          $this->_parameters['dymwhat'] = 'true';
 112          return $this;
 113      }
 114  
 115      /**
 116       * disable the did you mean what feature
 117       *
 118       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 119       */
 120      public function disableDidYouMeanWhat()
 121      {
 122          $this->_parameters['dymwhat'] = 'false';
 123          return $this;
 124      }
 125  
 126      /**
 127       * enable the did you mean where feature
 128       *
 129       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 130       */
 131      public function enableDidYouMeanWhere()
 132      {
 133          $this->_parameters['dymwhere'] = 'true';
 134          return $this;
 135      }
 136  
 137      /**
 138       * disable the did you mean where feature
 139       *
 140       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 141       */
 142      public function disableDidYouMeanWhere()
 143      {
 144          $this->_parameters['dymwhere'] = 'false';
 145          return $this;
 146      }
 147  
 148      /**
 149       * enable did you mean related, if true Kihno will be corrected to Kino
 150       *
 151       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 152       */
 153      public function enableDidYouMeanRelated()
 154      {
 155          $this->_parameters['dymrelated'] = 'true';
 156          return $this;
 157      }
 158  
 159      /**
 160       * diable did you mean related, if false Kihno will not be corrected to Kino
 161       *
 162       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 163       */
 164      public function disableDidYouMeanRelated()
 165      {
 166          $this->_parameters['dymrelated'] = 'true';
 167          return $this;
 168      }
 169  
 170      /**
 171       * set the max result hits for this search
 172       *
 173       * @param integer $hits
 174       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 175       */
 176      public function setHits($hits = 10)
 177      {
 178          require_once 'Zend/Validate/Between.php';
 179          $validator = new Zend_Validate_Between(0, 1000);
 180          if (!$validator->isValid($hits)) {
 181              $message = $validator->getMessages();
 182              require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php';
 183              throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message));
 184          }
 185          $this->_parameters['hits'] = $hits;
 186          return $this;
 187      }
 188  
 189      /**
 190       * If true, addresses will be collapsed for a single domain, common values
 191       * are:
 192       * ADDRESS_COMPANY – to collapse by address
 193       * DOMAIN – to collapse by domain (same like collapse=true)
 194       * false
 195       *
 196       * @param mixed $value
 197       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 198       */
 199      public function setCollapse($value)
 200      {
 201          if (!in_array($value, $this->_possibleCollapseValues, true)) {
 202              require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php';
 203              throw new Zend_Service_DeveloperGarden_LocalSearch_Exception('Not a valid value provided.');
 204          }
 205          $this->_parameters['collapse'] = $value;
 206          return $this;
 207      }
 208  
 209      /**
 210       * set a specific search location
 211       * examples:
 212       * +47°54’53.10”, 11° 10’ 56.76”
 213       * 47°54’53.10;11°10’56.76”
 214       * 47.914750,11.182533
 215       * +47.914750 ; +11.1824
 216       * Darmstadt
 217       * Berlin
 218       *
 219       * @param string $where
 220       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 221       */
 222      public function setWhere($where)
 223      {
 224          require_once 'Zend/Validate/NotEmpty.php';
 225  
 226          $validator = new Zend_Validate_NotEmpty();
 227          if (!$validator->isValid($where)) {
 228              $message = $validator->getMessages();
 229              require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php';
 230              throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message));
 231          }
 232          $this->_parameters['where'] = $where;
 233          return $this;
 234      }
 235  
 236      /**
 237       * returns the defined search location (ie city, country)
 238       *
 239       * @return string
 240       */
 241      public function getWhere()
 242      {
 243          return $this->_parameters['where'];
 244      }
 245  
 246      /**
 247       * enable the spatial search feature
 248       *
 249       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 250       */
 251      public function enableSpatial()
 252      {
 253          $this->_parameters['spatial'] = 'true';
 254          return $this;
 255      }
 256  
 257      /**
 258       * disable the spatial search feature
 259       *
 260       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 261       */
 262      public function disableSpatial()
 263      {
 264          $this->_parameters['spatial'] = 'false';
 265          return $this;
 266      }
 267  
 268      /**
 269       * sets spatial and the given radius for a circle search
 270       *
 271       * @param integer $radius
 272       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 273       */
 274      public function setRadius($radius)
 275      {
 276          require_once 'Zend/Validate/Int.php';
 277  
 278          $validator = new Zend_Validate_Int();
 279          if (!$validator->isValid($radius)) {
 280              $message = $validator->getMessages();
 281              require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php';
 282              throw new Zend_Service_DeveloperGarden_LocalSearch_Exception(current($message));
 283          }
 284          $this->_parameters['radius'] = $radius;
 285          $this->_parameters['transformgeocode'] = 'false';
 286  
 287          return $this;
 288      }
 289  
 290      /**
 291       * sets the values for a rectangle search
 292       * lx = longitude left top
 293       * ly = latitude left top
 294       * rx = longitude right bottom
 295       * ry = latitude right bottom
 296       *
 297       * @param $lx
 298       * @param $ly
 299       * @param $rx
 300       * @param $ry
 301       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 302       */
 303      public function setRectangle($lx, $ly, $rx, $ry)
 304      {
 305          $this->_parameters['lx'] = $lx;
 306          $this->_parameters['ly'] = $ly;
 307          $this->_parameters['rx'] = $rx;
 308          $this->_parameters['ry'] = $ry;
 309  
 310          return $this;
 311      }
 312  
 313      /**
 314       * if set, the service returns the zipcode for the result
 315       *
 316       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 317       */
 318      public function setTransformGeoCode()
 319      {
 320          $this->_parameters['transformgeocode'] = 'true';
 321          $this->_parameters['radius']           = null;
 322  
 323          return $this;
 324      }
 325  
 326      /**
 327       * sets the sort value
 328       * possible values are: 'relevance' and 'distance' (only with spatial enabled)
 329       *
 330       * @param string $sort
 331       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 332       */
 333      public function setSort($sort)
 334      {
 335          if (!in_array($sort, array('relevance', 'distance'))) {
 336              require_once 'Zend/Service/DeveloperGarden/LocalSearch/Exception.php';
 337              throw new Zend_Service_DeveloperGarden_LocalSearch_Exception('Not a valid sort value provided.');
 338          }
 339  
 340          $this->_parameters['sort'] = $sort;
 341          return $this;
 342      }
 343  
 344      /**
 345       * enable the separation of phone numbers
 346       *
 347       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 348       */
 349      public function enablePhoneSeparation()
 350      {
 351          $this->_parameters['sepcomm'] = 'true';
 352          return $this;
 353      }
 354  
 355      /**
 356       * disable the separation of phone numbers
 357       *
 358       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 359       */
 360      public function disablePhoneSeparation()
 361      {
 362          $this->_parameters['sepcomm'] = 'true';
 363          return $this;
 364      }
 365  
 366      /**
 367       * if this filter is set, only results with a website are returned
 368       *
 369       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 370       */
 371      public function setFilterOnliner()
 372      {
 373          $this->_parameters['filter'] = 'ONLINER';
 374          return $this;
 375      }
 376  
 377      /**
 378       * if this filter is set, only results without a website are returned
 379       *
 380       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 381       */
 382      public function setFilterOffliner()
 383      {
 384          $this->_parameters['filter'] = 'OFFLINER';
 385          return $this;
 386      }
 387  
 388  
 389      /**
 390       * removes the filter value
 391       *
 392       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 393       */
 394      public function disableFilter()
 395      {
 396          $this->_parameters['filter'] = null;
 397          return $this;
 398      }
 399  
 400      /**
 401       * set a filter to get just results who are open at the given time
 402       * possible values:
 403       * now = open right now
 404       * HH:MM = at the given time (ie 20:00)
 405       *
 406       * @param string $time
 407       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 408       */
 409      public function setOpeningTime($time = null)
 410      {
 411          $this->_parameters['openingtime'] = $time;
 412          return $this;
 413      }
 414  
 415      /**
 416       * sets a category filter
 417       *
 418       * @see http://www.suchen.de/kategorie-katalog
 419       * @param $category
 420       * @return unknown_type
 421       */
 422      public function setCategory($category = null)
 423      {
 424          $this->_parameters['kategorie'] = $category;
 425          return $this;
 426      }
 427  
 428      /**
 429       * sets the site filter
 430       * ie: www.developergarden.com
 431       *
 432       * @param string $site
 433       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 434       */
 435      public function setSite($site)
 436      {
 437          $this->_parameters['site'] = $site;
 438          return $this;
 439      }
 440  
 441      /**
 442       * sets a filter to the given document type
 443       * ie: pdf, html
 444       *
 445       * @param string $type
 446       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 447       */
 448      public function setDocumentType($type)
 449      {
 450          $this->_parameters['typ'] = $type;
 451          return $this;
 452      }
 453  
 454      /**
 455       * sets a filter for the company name
 456       * ie: Deutsche Telekom
 457       *
 458       * @param string $name
 459       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 460       */
 461      public function setName($name)
 462      {
 463          $this->_parameters['name'] = $name;
 464          return $this;
 465      }
 466  
 467      /**
 468       * sets a filter for the zip code
 469       *
 470       * @param string $zip
 471       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 472       */
 473      public function setZipCode($zip)
 474      {
 475          $this->_parameters['plz'] = $zip;
 476          return $this;
 477      }
 478  
 479      /**
 480       * sets a filter for the street
 481       *
 482       * @param string $street
 483       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 484       */
 485      public function setStreet($street)
 486      {
 487          $this->_parameters['strasse'] = $street;
 488          return $this;
 489      }
 490  
 491      /**
 492       * sets a filter for the county
 493       *
 494       * @param string $county
 495       * @return Zend_Service_DeveloperGarden_LocalSearch_SearchParameters
 496       */
 497      public function setCounty($county)
 498      {
 499          $this->_parameters['bundesland'] = $county;
 500          return $this;
 501      }
 502  
 503      /**
 504       * sets a raw parameter with the value
 505       *
 506       * @param string $key
 507       * @param mixed $value
 508       * @return unknown_type
 509       */
 510      public function setRawParameter($key, $value)
 511      {
 512          $this->_parameters[$key] = $value;
 513          return $this;
 514      }
 515  
 516      /**
 517       * returns the parameters as an array
 518       *
 519       * @return array
 520       */
 521      public function getSearchParameters()
 522      {
 523          $retVal = array();
 524          foreach ($this->_parameters as $key => $value) {
 525              if (is_null($value)) {
 526                  continue;
 527              }
 528              $param = array(
 529                  'parameter' => $key,
 530                  'value' => $value
 531              );
 532              $retVal[] = $param;
 533          }
 534          return $retVal;
 535      }
 536  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1