Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

ipaddress-field.inc.php

Go to the documentation of this file.
00001 <?php
00008 class IpAddressField extends CollectionField
00009 {
00016     public function __construct($name, Form &$parentForm, array $attribs = array())
00017     {
00018         $attribs['fields'] = array(
00019             array('TextField', "${name}_1", array('size' => 3, 'maxlength' => 3)),
00020             array('LabelField', "${name}_dot1", array('text' => '&nbsp;.&nbsp;')),
00021             array('TextField', "${name}_2", array('size' => 3, 'maxlength' => 3)),
00022             array('LabelField', "${name}_dot2", array('text' => '&nbsp;.&nbsp;')),
00023             array('TextField', "${name}_3", array('size' => 3, 'maxlength' => 3)),
00024             array('LabelField', "${name}_dot3", array('text' => '&nbsp;.&nbsp;')),
00025             array('TextField', "${name}_4", array('size' => 3, 'maxlength' => 3)),
00026         );
00027 
00028         parent::__construct($name, $parentForm, $attribs);
00029         $this->autoAdvance = true;
00030     }
00031 
00036     public function validate()
00037     {
00038         # call parent to validate individual text fields
00039         parent::validate();
00040 
00041         # If any of the sub fields have input automatically all sub fields _must_ have input
00042         if(!$this->allFieldsHaveData() && !$this->noFieldsHaveData())
00043         {
00044             $this->hasError = true;
00045             $this->errorMessage = "The $this->title field must be a valid IP address.";
00046         }
00047     }
00048 
00053     public function getData()
00054     {
00055         $ret = $this->fields[0]->getData() . '.' . $this->fields[2]->getData() . '.' . 
00056             $this->fields[4]->getData() . '.' . $this->fields[6]->getData();
00057 
00058         # check for an empty value
00059         if($ret == '...')
00060             return null;
00061 
00062         return $ret;
00063     }
00064 
00065 
00070     public function setData($data)
00071     {
00072         if(preg_match('/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $data, $matches))
00073         {
00074             if(($matches[1] <= 255 && $matches[1] >= 0) &&
00075                 ($matches[2] <= 255 && $matches[2] >= 0) &&
00076                 ($matches[3] <= 255 && $matches[3] >= 0) &&
00077                 ($matches[4] <= 255 && $matches[4] >= 0)
00078             )
00079             {
00080                 $this->fields[0]->setData($matches[1]);
00081                 $this->fields[2]->setData($matches[2]);
00082                 $this->fields[4]->setData($matches[3]);
00083                 $this->fields[6]->setData($matches[4]);
00084 
00085                 return;
00086             }
00087         }
00088 
00089         if($data != '')
00090             throw new InvalidValueException();
00091     }
00092 
00096     public function getSqlImpl()
00097     {
00098         return "$this->name = '" . $this->getData() . "'";
00099     }
00100 }
00101 ?>

Generated on Fri Oct 27 12:26:39 2006 for BaseJumper by doxygen 1.3.9.1