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); }
/** * 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; }