GetFieldOptions($field_name); if ( isset($format) ) $options['format'] = $format; if( !isset($options['options'][$value]) ) { // required option is not defined in config => query for it $db =& $this->Application->GetADODBConnection(); $sql = sprintf($options['left_sql'],$options['left_title_field'],$options['left_key_field'], $db->escape($value)); $options['options'][$value] = $db->GetOne($sql); if ($options['options'][$value] === false) return $value; } return $options['options'][$value]; } /** * Parse value from form submit * * @param mixed $value * @param string $field_name * @param kDBItem $object * @return mixed */ 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 $db =& $this->Application->GetADODBConnection(); $sql = sprintf($options['left_sql'], $options['left_key_field'], $options['left_title_field'], $db->escape($value)); $found = $db->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; } }