Пример #1
0
 public static function format(Address $address, $options)
 {
     $data = array_filter(['country' => $address->getCountry()->getName(), 'city' => $address->getLocality(), 'district' => $address->getSubLocality(), 'postalCode' => $address->getPostalCode(), 'streetName' => $address->getStreetName(), 'streetNumber' => $address->getStreetNumber()]);
     if ($options['format'] === self::FORMAT_REVERSED) {
         $data = array_reverse($data);
     }
     if ($options['type'] === self::TYPE_SHORT) {
         unset($data['country']);
     }
     return implode(', ', $data);
 }
Пример #2
0
 /**
  * Transform an `Address` instance into a string representation.
  *
  * @param Address $address
  * @param string  $format
  *
  * @return string
  */
 public function format(Address $address, $format)
 {
     $replace = [self::STREET_NUMBER => $address->getStreetNumber(), self::STREET_NAME => $address->getStreetName(), self::LOCALITY => $address->getLocality(), self::POSTAL_CODE => $address->getPostalCode(), self::SUB_LOCALITY => $address->getSubLocality(), self::COUNTRY => $address->getCountry()->getName(), self::COUNTRY_CODE => $address->getCountry()->getCode(), self::TIMEZONE => $address->getTimezone()];
     for ($level = 1; $level <= AdminLevelCollection::MAX_LEVEL_DEPTH; $level++) {
         $replace[self::ADMIN_LEVEL . $level] = null;
         $replace[self::ADMIN_LEVEL_CODE . $level] = null;
     }
     foreach ($address->getAdminLevels() as $level => $adminLevel) {
         $replace[self::ADMIN_LEVEL . $level] = $adminLevel->getName();
         $replace[self::ADMIN_LEVEL_CODE . $level] = $adminLevel->getCode();
     }
     return strtr($format, $replace);
 }
Пример #3
0
 protected function compareNumbers(Address $a, Address $b, $query)
 {
     // if one of the addresses doesn't even have a number in it,
     $aNumber = UserInputHelpers::normalizeNumber($a->getStreetNumber());
     $bNumber = UserInputHelpers::normalizeNumber($b->getStreetNumber());
     if ($aNumber && !$bNumber) {
         return -1;
     }
     if ($bNumber && !$aNumber) {
         return 1;
     }
     if (!($inputNumber = UserInputHelpers::matchStreet($query))) {
         return 0;
     }
     if ($this->isNumberFull($inputNumber)) {
         // preffer more exact
         $aEquals = $this->equalsNumber($aNumber, $inputNumber);
         $bEquals = $this->equalsNumber($bNumber, $inputNumber);
         if ($aEquals && !$bEquals) {
             return -1;
         }
         if ($bEquals && !$aEquals) {
             return 1;
         }
     }
     // preffer more data, but at least one component must equal
     $aPartially = $this->equalsNumberPartially($aNumber, $inputNumber);
     $bPartially = $this->equalsNumberPartially($bNumber, $inputNumber);
     if ($aPartially && !$bPartially) {
         return -1;
     }
     if ($bPartially && !$aPartially) {
         return 1;
     }
     $aHasMore = $this->isNumberFull($aNumber) && !$this->isNumberFull($bNumber);
     $bHasMore = $this->isNumberFull($bNumber) && !$this->isNumberFull($aNumber);
     if ($aHasMore && !$bHasMore) {
         return -1;
     }
     if ($bHasMore && !$aHasMore) {
         return 1;
     }
     return 0;
 }
Пример #4
0
 private function formatStreet(Address $address)
 {
     return $address->getStreetName() . ($address->getStreetNumber() ? ' ' . $address->getStreetNumber() : '');
 }
Пример #5
0
 /**
  * Expects certain address types to be present in the given address.
  *
  * @param \Geocoder\Model\Address $address
  * @return bool
  */
 public function isExpectedType(Address $address)
 {
     $expected = $this->_config['expect'];
     if (!$expected) {
         return true;
     }
     $adminLevels = $address->getAdminLevels();
     $map = [static::TYPE_AAL1 => 1, static::TYPE_AAL2 => 2, static::TYPE_AAL3 => 3, static::TYPE_AAL4 => 4, static::TYPE_AAL5 => 5];
     foreach ($expected as $expect) {
         switch ($expect) {
             case static::TYPE_COUNTRY:
                 if ($address->getCountry() !== null) {
                     return true;
                 }
                 break;
             case static::TYPE_AAL1:
             case static::TYPE_AAL2:
             case static::TYPE_AAL3:
             case static::TYPE_AAL4:
             case static::TYPE_AAL5:
                 if ($adminLevels->has($map[$expect])) {
                     return true;
                 }
                 break;
             case static::TYPE_LOC:
                 if ($address->getLocality() !== null) {
                     return true;
                 }
                 break;
             case static::TYPE_SUBLOC:
                 if ($address->getSubLocality() !== null) {
                     return true;
                 }
                 break;
             case static::TYPE_POSTAL:
                 if ($address->getPostalCode() !== null) {
                     return true;
                 }
                 break;
             case static::TYPE_ADDRESS:
                 if ($address->getStreetName() !== null) {
                     return true;
                 }
                 break;
             case static::TYPE_NUMBER:
                 if ($address->getStreetNumber() !== null) {
                     return true;
                 }
                 break;
         }
     }
     return false;
 }