-// {{{ class UFBF_Town
-/** Retrieves a town, either from a postal code or a town name
- */
-class UFBF_Town extends UFBF_Text
-{
- const TYPE_TEXT = 1;
- const TYPE_ZIP = 2;
- const TYPE_ANY = 3;
-
- private $type;
- private $onlycurrentfield;
-
- public function __construct($envfield, $formtext = '', $type = self::TYPE_ANY, $onlycurrentfield = 'only_current')
- {
- $this->type = $type;
- $this->onlycurrentfield = $onlycurrentfield;
- parent::__construct($envfield, $formtext, 2, 30);
- }
-
- protected function buildUFC(UserFilterBuilder $ufb)
- {
- if ($ufb->isOn($this->onlycurrentfield)) {
- $flags = UFC_Address::FLAG_CURRENT;
- } else {
- $flags = UFC_Address::FLAG_ANY;
- }
-
- if (preg_match('/[0-9]/', $this->val)) {
- if ($this->type & self::TYPE_ZIP) {
- return new UFC_AddressField($this->val, UFC_AddressField::FIELD_ZIPCODE, UFC_Address::TYPE_ANY, $flags);
- } else {
- return new PFC_False();
- }
- } else {
- $byname = new UFC_AddressText(null, XDB::WILDCARD_CONTAINS, UFC_Address::TYPE_ANY, $flags, null, $this->val);
- $byzip = new UFC_AddressField($this->val, UFC_AddressField::FIELD_ZIPCODE, UFC_Address::TYPE_ANY, $flags);
- if ($this->type & self::TYPE_ANY) {
- return new PFC_Or($byname, $byzip);
- } else if ($this->type & self::TYPE_TEXT) {
- return $byname;
- } else {
- return $byzip;
- }
- }
- }
-
- public function getEnvFieldNames()
- {
- return array($this->envfield, $this->onlycurrentfield);
- }
-}
-// }}}
-
-// {{{ class UFBF_Country
-class UFBF_Country extends UFBF_Mixed