345 lines
8.6 KiB
PHP
345 lines
8.6 KiB
PHP
<?php
|
|
require_once dirname(__FILE__) . '/../Error/Validation.php';
|
|
class FileMaker_Field_Implementation
|
|
{
|
|
var $_layout;
|
|
var $_name;
|
|
var $_autoEntered = false;
|
|
var $_global = false;
|
|
var $_maxRepeat = 1;
|
|
var $_validationMask = 0;
|
|
var $_validationRules = array();
|
|
var $_result;
|
|
var $_type;
|
|
var $_valueList = null;
|
|
var $_styleType;
|
|
var $_maxCharacters = 0;
|
|
function FileMaker_Field_Implementation(&$Vc6140495)
|
|
{
|
|
$this->_layout =& $Vc6140495;
|
|
}
|
|
function getName()
|
|
{
|
|
return $this->_name;
|
|
}
|
|
function &getLayout()
|
|
{
|
|
return $this->_layout;
|
|
}
|
|
function isAutoEntered()
|
|
{
|
|
return $this->_autoEntered;
|
|
}
|
|
function isGlobal()
|
|
{
|
|
return $this->_global;
|
|
}
|
|
function getRepetitionCount()
|
|
{
|
|
return $this->_maxRepeat;
|
|
}
|
|
function validate($V2063c160, $Vcb5e100e = null)
|
|
{
|
|
$V1c0c74f6 = true;
|
|
if ($Vcb5e100e === null) {
|
|
$V1c0c74f6 = false;
|
|
$Vcb5e100e = new FileMaker_Error_Validation($this->_layout->_impl->_fm);
|
|
}
|
|
foreach ($this->getValidationRules() as $V981c1e7b) {
|
|
switch ($V981c1e7b) {
|
|
case FILEMAKER_RULE_NOTEMPTY:
|
|
if (empty($V2063c160)) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_NUMERICONLY :
|
|
if (!empty ($V2063c160)) {
|
|
if ($this->checkNumericOnly($V2063c160)) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_MAXCHARACTERS :
|
|
if (!empty ($V2063c160)) {
|
|
$V2fa47f7c = strlen($V2063c160);
|
|
if ($V2fa47f7c > $this->_maxCharacters) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_TIME_FIELD :
|
|
if (!empty ($V2063c160)) {
|
|
if (!$this->checkTimeFormat($V2063c160)) {
|
|
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
$this->checkTimeValidity($V2063c160, $V981c1e7b, $Vcb5e100e, FALSE);
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_TIMESTAMP_FIELD :
|
|
if (!empty ($V2063c160)) {
|
|
if (!$this->checkTimeStampFormat($V2063c160)) {
|
|
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
$this->checkDateValidity($V2063c160, $V981c1e7b, $Vcb5e100e);
|
|
$this->checkTimeValidity($V2063c160, $V981c1e7b, $Vcb5e100e, FALSE);
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_DATE_FIELD :
|
|
if (!empty ($V2063c160)) {
|
|
if (!$this->checkDateFormat($V2063c160)) {
|
|
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
$this->checkDateValidity($V2063c160, $V981c1e7b, $Vcb5e100e);
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_FOURDIGITYEAR :
|
|
if (!empty ($V2063c160)) {
|
|
switch ($this->_result) {
|
|
case 'timestamp' :
|
|
if ($this->checkTimeStampFormatFourDigitYear($V2063c160)) {
|
|
preg_match('#^([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})[-,/,\\\\]([0-9]{4})#', $V2063c160, $V9c28d32d);
|
|
$V7436f942 = $V9c28d32d[1];
|
|
$V628b7db0 = $V9c28d32d[2];
|
|
$V84cdc76c = $V9c28d32d[3];
|
|
if ($V84cdc76c < 1 || $V84cdc76c > 4000) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else
|
|
if (!checkdate($V7436f942, $V628b7db0, $V84cdc76c)) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
$this->checkTimeValidity($V2063c160, $V981c1e7b, $Vcb5e100e, FALSE);
|
|
}
|
|
} else {
|
|
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
break;
|
|
default :
|
|
preg_match('#([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})[-,/,\\\\]([0-9]{1,4})#', $V2063c160, $V78f0805f);
|
|
if (count($V78f0805f) != 3) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
$V6c8f3f79 = strlen($V78f0805f[2]);
|
|
if ($V6c8f3f79 != 4) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
if ($V78f0805f[2] < 1 || $V78f0805f[2] > 4000) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
if (!checkdate($V78f0805f[0], $V78f0805f[1], $V78f0805f[2])) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case FILEMAKER_RULE_TIMEOFDAY :
|
|
if (!empty ($V2063c160)) {
|
|
if ($this->checkTimeFormat($V2063c160)) {
|
|
$this->checkTimeValidity($V2063c160, $V981c1e7b, $Vcb5e100e, TRUE);
|
|
} else {
|
|
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if ($V1c0c74f6) {
|
|
return $Vcb5e100e;
|
|
} else {
|
|
return $Vcb5e100e->numErrors() ? $Vcb5e100e : true;
|
|
}
|
|
}
|
|
|
|
function getLocalValidationRules()
|
|
{
|
|
$V6b55d9ec = array ();
|
|
foreach (array_keys($this->_validationRules) as $V981c1e7b) {
|
|
switch ($V981c1e7b) {
|
|
case FILEMAKER_RULE_NOTEMPTY :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_NUMERICONLY :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_MAXCHARACTERS :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_FOURDIGITYEAR :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_TIMEOFDAY :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_TIMESTAMP_FIELD :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_DATE_FIELD :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
case FILEMAKER_RULE_TIME_FIELD :
|
|
$V6b55d9ec[] = $V981c1e7b;
|
|
break;
|
|
}
|
|
}
|
|
return $V6b55d9ec;
|
|
}
|
|
function checkTimeStampFormatFourDigitYear($V2063c160)
|
|
{
|
|
return (preg_match('#^[ ]*([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})[-,/,\\\\]([0-9]{4})[ ]*([0-9]{1,2})[:]([0-9]{1,2})([:][0-9]{1,2})?([ ]*((AM|PM)|(am|pm)))?[ ]*$#', $V2063c160));
|
|
}
|
|
function checkTimeStampFormat($V2063c160)
|
|
{
|
|
return (preg_match('#^[ ]*([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})([-,/,\\\\]([0-9]{1,4}))?[ ]*([0-9]{1,2})[:]([0-9]{1,2})([:][0-9]{1,2})?([ ]*((AM|PM)|(am|pm)))?[ ]*$#', $V2063c160));
|
|
}
|
|
function checkDateFormat($V2063c160)
|
|
{
|
|
return (preg_match('#^[ ]*([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})([-,/,\\\\]([0-9]{1,4}))?[ ]*$#', $V2063c160));
|
|
}
|
|
function checkTimeFormat($V2063c160)
|
|
{
|
|
return (preg_match('#^[ ]*([0-9]{1,2})[:]([0-9]{1,2})([:][0-9]{1,2})?([ ]*((AM|PM)|(am|pm)))?[ ]*$#', $V2063c160));
|
|
}
|
|
function checkNumericOnly($V2063c160)
|
|
{
|
|
return (!is_numeric($V2063c160));
|
|
}
|
|
function checkDateValidity($V2063c160, $V981c1e7b, $Vcb5e100e)
|
|
{
|
|
preg_match('#([0-9]{1,2})[-,/,\\\\]([0-9]{1,2})([-,/,\\\\]([0-9]{1,4}))?#', $V2063c160, $V78f0805f);
|
|
if ($V78f0805f[4]) {
|
|
$V6c8f3f79 = strlen($V78f0805f[4]);
|
|
$V84cdc76c = $V78f0805f[4];
|
|
if ($V6c8f3f79 != 4) {
|
|
$V84cdc76c = $V84cdc76c +2000;
|
|
}
|
|
if ($V78f0805f[4] < 1 || $V78f0805f[4] > 4000) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else {
|
|
if (!checkdate($V78f0805f[1], $V78f0805f[2], $V78f0805f[4])) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
} else {
|
|
$V84cdc76c = date('Y');
|
|
if (!checkdate($V78f0805f[1], $V78f0805f[2], $V84cdc76c)) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
}
|
|
function checkTimeValidity($V2063c160, $V981c1e7b, $Vcb5e100e, $Vcaf85b7b)
|
|
{
|
|
$V52124c01 = 0;
|
|
if ($Vcaf85b7b) {
|
|
$V52124c01 = 12;
|
|
} else {
|
|
$V52124c01 = 24;
|
|
}
|
|
preg_match('#([0-9]{1,2})[:]([0-9]{1,2})[:]?([0-9]{1,2})?#', $V2063c160, $V9c28d32d);
|
|
$V896c55cc = $V9c28d32d[1];
|
|
$V640fd0cc = $V9c28d32d[2];
|
|
if (count($V9c28d32d) >= 4) {
|
|
$V783e8e29 = $V9c28d32d[3];
|
|
}
|
|
if ($V896c55cc < 0 || $V896c55cc > $V52124c01) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else if ($V640fd0cc < 0 || $V640fd0cc > 59) {
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
} else
|
|
if (isset($V783e8e29)) {
|
|
if ($V783e8e29 < 0 || $V783e8e29 > 59)
|
|
$Vcb5e100e->addError($this, $V981c1e7b, $V2063c160);
|
|
}
|
|
}
|
|
function getValidationRules()
|
|
{
|
|
return array_keys($this->_validationRules);
|
|
}
|
|
function getValidationMask()
|
|
{
|
|
return $this->_validationMask;
|
|
}
|
|
function hasValidationRule($Ve289cc97)
|
|
{
|
|
return $Ve289cc97 & $this->_validationMask;
|
|
}
|
|
function describeValidationRule($Ve289cc97)
|
|
{
|
|
if (is_array($this->_validationRules[$Ve289cc97])) {
|
|
return $this->_validationRules[$Ve289cc97];
|
|
}
|
|
return null;
|
|
}
|
|
function describeLocalValidationRules()
|
|
{
|
|
$V6b55d9ec = array ();
|
|
foreach ($this->_validationRules as $V981c1e7b => $V1dee80c7) {
|
|
switch ($V981c1e7b) {
|
|
case FILEMAKER_RULE_NOTEMPTY :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_NUMERICONLY :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_MAXCHARACTERS :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_FOURDIGITYEAR :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_TIMEOFDAY :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_TIMESTAMP_FIELD :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_DATE_FIELD :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
case FILEMAKER_RULE_TIME_FIELD :
|
|
$V6b55d9ec[$V981c1e7b] = $V1dee80c7;
|
|
break;
|
|
}
|
|
}
|
|
return $V6b55d9ec;
|
|
}
|
|
function describeValidationRules()
|
|
{
|
|
return $this->_validationRules;
|
|
}
|
|
function getResult()
|
|
{
|
|
return $this->_result;
|
|
}
|
|
function getType()
|
|
{
|
|
return $this->_type;
|
|
}
|
|
function getValueList($Vd33e904c = null)
|
|
{
|
|
$Vb4a88417 = $this->_layout->loadExtendedInfo($Vd33e904c);
|
|
if (FileMaker::isError($Vb4a88417)) {
|
|
return $Vb4a88417;
|
|
}
|
|
return $this->_layout->getValueList($this->_valueList);
|
|
}
|
|
function getStyleType()
|
|
{
|
|
$Vb4a88417 = $this->_layout->loadExtendedInfo();
|
|
if (FileMaker::isError($Vb4a88417)) {
|
|
return $Vb4a88417;
|
|
}
|
|
return $this->_styleType;
|
|
}
|
|
}
|