00001 <?php
00008 class PhoneNumberField extends CollectionField
00009 {
00010 protected $ext = false;
00011
00018 public function __construct($name, Form &$parentForm, array $attribs = array())
00019 {
00020 $attribs['fields'] = array(
00021 array('TextField', "${name}_area", array_merge($attribs, array('size' => '3', 'regExp' => 'number', 'maxlength' => '3'))),
00022 array('TextField', "${name}_prefix", array_merge($attribs, array('size' => '3', 'regExp' => 'number', 'maxlength' => '3'))),
00023 array('TextField', "${name}_num", array_merge($attribs, array('size' => '4', 'regExp' => 'number', 'maxlength' => '4')))
00024 );
00025 parent::__construct($name, $parentForm, $attribs);
00026 $this->autoAdvance = true;
00027
00028 if($this->ext)
00029 {
00030 $this->add('LabelField', 'Ext.');
00031 $this->add('TextField', "${name}_ext", array_merge($attribs, array('size' => '4', 'regExp' => 'number')));
00032 }
00033 }
00034
00039 public function setData($value)
00040 {
00041 $value = preg_replace("/[^0-9]*/", "", $value);
00042
00043 if(preg_match('/([0-9]{3})([0-9]{3})([0-9]{4})/', $value, $matches))
00044 {
00045 $this->fields[0]->setData($matches[1]);
00046 $this->fields[1]->setData($matches[2]);
00047 $this->fields[2]->setData($matches[3]);
00048 }
00049 }
00050
00055 public function getData()
00056 {
00057 $num = $this->fields[0]->getData() . $this->fields[1]->getData() . $this->fields[2]->getData();
00058
00059 if($this->ext)
00060 $num .= 'x' . $this->fields[4]->getData();
00061
00062 return $num;
00063 }
00064
00069 public function getSqlImpl()
00070 {
00071 return "$this->name = '" . $this->getData() . "'";
00072 }
00073
00074 }
00075 ?>