GetFieldOptions($field_name); if ( isset($format) ) { $options['format'] = $format; } if ( !isset($options['options'][$value]) ) { // required option is not defined in config => query for it $sql = sprintf($options['left_sql'], $options['left_title_field'], $options['left_key_field'], $this->Conn->escape($value)); $options['options'][$value] = $this->Conn->GetOne($sql); if ( $options['options'][$value] === false ) { return $value; } } return $options['options'][$value]; } /** * Performs basic type validation on form field value * * @param mixed $value * @param string $field_name * @param kDBItem $object * @return mixed * @access public */ public function Parse($value, $field_name, &$object) { if ( $value == '' ) { return NULL; } $options = $object->GetFieldOptions($field_name); $found = isset($options['options']) ? array_search($value, $options['options']) : false; if ( $found !== false ) { // requested option found among field options return $found; } // requested option is not found in field options -> query for it $sql = sprintf($options['left_sql'], $options['left_key_field'], $options['left_title_field'], $this->Conn->escape($value)); $found = $this->Conn->GetOne($sql); if ( $found !== false ) { // option successfully retrieved from db -> cache it $options['options'][$found] = $value; } $skip_errors = array_key_exists('skip_errors', $options) && $options['skip_errors']; if ( $found === false && !$skip_errors ) { // option not found at all -> return not formatted value & set error $object->SetError($field_name, 'invalid_option', 'la_error_InvalidOption'); return $value; } return $found; } }