private static function getValidationErrorString(Field $field, $rule, $value)
 {
     switch ($rule) {
         case FileMaker::RULE_FOURDIGITYEAR:
             $message = 'Please enter a four digit number for the year in field %1$s';
             break;
         case FileMaker::RULE_DATE_FIELD:
             $message = 'Please enter a valid date for field %1$s';
             break;
         case FileMaker::RULE_MAXCHARACTERS:
             $message = 'Value in field %1$s exceeds maximum number of allowed characters (%2$d)';
             break;
         case FileMaker::RULE_NOTEMPTY:
             $message = 'Field %1$s is required';
             break;
         case FileMaker::RULE_NUMERICONLY:
             $message = 'Only numbers are allowed for field %1$s';
             break;
         case FileMaker::RULE_TIMEOFDAY:
         case FileMaker::RULE_TIME_FIELD:
             $message = 'Please enter a valid time in field %1$s';
             break;
         case FileMaker::RULE_TIMESTAMP_FIELD:
             $message = 'Please enter a valid timestamp in field %1$s';
             break;
         default:
             $message = 'Incorrect value for field %1$s (%3$s)';
     }
     return sprintf($message, $field->getName(), $field->maxCharacters, $value);
 }
Esempio n. 2
0
 /**
  * Populate a layout object with parsed datas
  *
  * @param Layout $layout
  * @return FileMakerException|boolean
  * @throws FileMakerException
  */
 public function setLayout(Layout $layout)
 {
     if (!$this->_isParsed) {
         $error = new FileMakerException($this->_fm, 'Attempt to get a layout object before parsing data.');
         if ($this->_fm->getProperty('errorHandling') === 'default') {
             return $error;
         }
         throw $error;
     }
     if ($this->_layout === $layout) {
         return true;
     }
     $layout->name = $this->_parsedHead['layout'];
     $layout->database = $this->_parsedHead['database'];
     $layout->table = $this->_parsedHead['table'];
     foreach ($this->_fieldList as $fieldInfos) {
         $field = new Field($layout);
         $field->name = $fieldInfos['name'];
         $field->autoEntered = (bool) ($fieldInfos['auto-enter'] === 'yes');
         $field->global = (bool) ($fieldInfos['global'] === 'yes');
         $field->maxRepeat = (int) $fieldInfos['max-repeat'];
         $field->result = $fieldInfos['result'];
         $field->type = $fieldInfos['type'];
         if ($fieldInfos['not-empty'] === 'yes') {
             $field->validationRules[FileMaker::RULE_NOTEMPTY] = true;
             $field->validationMask |= FileMaker::RULE_NOTEMPTY;
         }
         if ($fieldInfos['numeric-only'] === 'yes') {
             $field->validationRules[FileMaker::RULE_NUMERICONLY] = true;
             $field->validationMask |= FileMaker::RULE_NUMERICONLY;
         }
         if (array_key_exists('max-characters', $fieldInfos)) {
             $field->maxCharacters = (int) $fieldInfos['max-characters'];
             $field->validationRules[FileMaker::RULE_MAXCHARACTERS] = true;
             $field->validationMask |= FileMaker::RULE_MAXCHARACTERS;
         }
         if ($fieldInfos['four-digit-year'] === 'yes') {
             $field->validationRules[FileMaker::RULE_FOURDIGITYEAR] = true;
             $field->validationMask |= FileMaker::RULE_FOURDIGITYEAR;
         }
         if ($fieldInfos['time-of-day'] === 'yes') {
             $field->validationRules[FileMaker::RULE_TIMEOFDAY] = true;
             $field->validationMask |= FileMaker::RULE_TIMEOFDAY;
         }
         if ($fieldInfos['four-digit-year'] === 'no' && $fieldInfos['result'] === 'timestamp') {
             $field->validationRules[FileMaker::RULE_TIMESTAMP_FIELD] = true;
             $field->validationMask |= FileMaker::RULE_TIMESTAMP_FIELD;
         }
         if ($fieldInfos['four-digit-year'] === 'no' && $fieldInfos['result'] === 'date') {
             $field->validationRules[FileMaker::RULE_DATE_FIELD] = true;
             $field->validationMask |= FileMaker::RULE_DATE_FIELD;
         }
         if ($fieldInfos['time-of-day'] === 'no' && $fieldInfos['result'] === 'time') {
             $field->validationRules[FileMaker::RULE_TIME_FIELD] = true;
             $field->validationMask |= FileMaker::RULE_TIME_FIELD;
         }
         $layout->fields[$field->getName()] = $field;
     }
     foreach ($this->_relatedSetNames as $relatedSetName => $fields) {
         $relatedSet = new RelatedSet($layout);
         $relatedSet->name = $relatedSetName;
         foreach ($fields as $fieldInfos) {
             $field = new Field($layout);
             $field->name = $fieldInfos['name'];
             $field->autoEntered = (bool) ($fieldInfos['auto-enter'] === 'yes');
             $field->global = (bool) ($fieldInfos['global'] === 'yes');
             $field->maxRepeat = (int) $fieldInfos['max-repeat'];
             $field->result = $fieldInfos['result'];
             $field->type = $fieldInfos['type'];
             if ($fieldInfos['not-empty'] === 'yes') {
                 $field->validationRules[FileMaker::RULE_NOTEMPTY] = true;
                 $field->validationMask |= FileMaker::RULE_NOTEMPTY;
             }
             if ($fieldInfos['numeric-only'] === 'yes') {
                 $field->validationRules[FileMaker::RULE_NUMERICONLY] = true;
                 $field->validationMask |= FileMaker::RULE_NUMERICONLY;
             }
             if (array_key_exists('max-characters', $fieldInfos)) {
                 $field->maxCharacters = (int) $fieldInfos['max-characters'];
                 $field->validationRules[FileMaker::RULE_MAXCHARACTERS] = true;
                 $field->validationMask |= FileMaker::RULE_MAXCHARACTERS;
             }
             if ($fieldInfos['four-digit-year'] === 'yes') {
                 $field->validationRules[FileMaker::RULE_FOURDIGITYEAR] = true;
                 $field->validationMask |= FileMaker::RULE_FOURDIGITYEAR;
             }
             if ($fieldInfos['time-of-day'] === 'yes' || $fieldInfos['result'] === 'time') {
                 $field->validationRules[FileMaker::RULE_TIMEOFDAY] = true;
                 $field->validationMask |= FileMaker::RULE_TIMEOFDAY;
             }
             if ($fieldInfos['four-digit-year'] === 'no' && $fieldInfos['result'] === 'timestamp') {
                 $field->validationRules[FileMaker::RULE_TIMESTAMP_FIELD] = true;
                 $field->validationMask |= FileMaker::RULE_TIMESTAMP_FIELD;
             }
             if ($fieldInfos['four-digit-year'] === 'no' && $fieldInfos['result'] === 'date') {
                 $field->validationRules[FileMaker::RULE_DATE_FIELD] = true;
                 $field->validationMask |= FileMaker::RULE_DATE_FIELD;
             }
             if ($fieldInfos['time-of-day'] === 'no' && $fieldInfos['result'] === 'time') {
                 $field->validationRules[FileMaker::RULE_TIME_FIELD] = true;
                 $field->validationMask |= FileMaker::RULE_TIME_FIELD;
             }
             $relatedSet->fields[$field->getName()] = $field;
         }
         $layout->relatedSets[$relatedSet->getName()] = $relatedSet;
     }
     $this->_layout = $layout;
     return true;
 }