/**
  * Returns field value from POST data.
  *
  * @param kyCustomFieldDefinition $custom_field_definition Custom field definition.
  * @throws kyException
  * @return mixed Field value.
  */
 function ky_get_post_value($custom_field_definition)
 {
     $field_name = $custom_field_definition->getName();
     $required = $custom_field_definition->getIsRequired();
     $regexp = $custom_field_definition->getRegexpValidate();
     $as_array = $custom_field_definition->getType() === kyCustomFieldDefinition::TYPE_CHECKBOX || $custom_field_definition->getType() === kyCustomFieldDefinition::TYPE_MULTI_SELECT;
     if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
         return null;
     }
     if (!array_key_exists($field_name, $_POST)) {
         if ($required) {
             throw new kyException("Field '%s' is required.", $custom_field_definition->getTitle());
         }
         return null;
     }
     if ($as_array) {
         $value = $_POST[$field_name];
         if (!is_array($value)) {
             if (strlen(trim($value)) > 0) {
                 $value = array($value);
             } else {
                 $value = array();
             }
         }
         if ($required && count($value) === 0) {
             throw new kyException("Field '%s' is required.", $custom_field_definition->getTitle());
         }
     } else {
         $value = trim($_POST[$field_name]);
         if ($required && strlen($value) === 0) {
             throw new kyException("Field '%s' is required.", $custom_field_definition->getTitle());
         }
         if (strlen($regexp) > 0 && !preg_match($regexp, $value)) {
             throw new kyException("Error validating field '%s'.", $custom_field_definition->getTitle());
         }
     }
     return $value;
 }