function _content_field_overview_form_validate_add_new in Content Construction Kit (CCK) 6.2
Same name and namespace in other branches
- 6.3 includes/content.admin.inc \_content_field_overview_form_validate_add_new()
Helper function for content_field_overview_form_validate.
Validate the 'add new field' row.
1 call to _content_field_overview_form_validate_add_new()
File
- includes/
content.admin.inc, line 379 - Administrative interface for content type creation.
Code
function _content_field_overview_form_validate_add_new($form, &$form_state) {
$field = $form_state['values']['_add_new_field'];
// Validate if any information was provided in the 'add new field' row.
if (array_filter(array(
$field['label'],
$field['field_name'],
$field['type'],
$field['widget_type'],
))) {
// No label.
if (!$field['label']) {
form_set_error('_add_new_field][label', t('Add new field: you need to provide a label.'));
}
// No field name.
if (!$field['field_name']) {
form_set_error('_add_new_field][field_name', t('Add new field: you need to provide a field name.'));
}
else {
$field_name = $field['field_name'];
// Add the 'field_' prefix.
if (substr($field_name, 0, 6) != 'field_') {
$field_name = 'field_' . $field_name;
form_set_value($form['_add_new_field']['field_name'], $field_name, $form_state);
}
// Invalid field name.
if (!preg_match('!^field_[a-z0-9_]+$!', $field_name)) {
form_set_error('_add_new_field][field_name', t('Add new field: the field name %field_name is invalid. The name must include only lowercase unaccentuated letters, numbers, and underscores.', array(
'%field_name' => $field_name,
)));
}
if (strlen($field_name) > 32) {
form_set_error('_add_new_field][field_name', t('Add new field: the field name %field_name is too long. The name is limited to 32 characters, including the \'field_\' prefix.', array(
'%field_name' => $field_name,
)));
}
// A field named 'field_instance' would cause a tablename clash with {content_field_instance}
if ($field_name == 'field_instance') {
form_set_error('_add_new_field][field_name', t("Add new field: the name 'field_instance' is a reserved name."));
}
// Field name already exists.
// We need to check inactive fields as well, so we can't use content_fields().
module_load_include('inc', 'content', 'includes/content.crud');
$fields = content_field_instance_read(array(), TRUE);
$used = FALSE;
foreach ($fields as $existing_field) {
$used |= $existing_field['field_name'] == $field_name;
}
if ($used) {
form_set_error('_add_new_field][field_name', t('Add new field: the field name %field_name already exists.', array(
'%field_name' => $field_name,
)));
}
}
// No field type.
if (!$field['type']) {
form_set_error('_add_new_field][type', t('Add new field: you need to select a field type.'));
}
// No widget type.
if (!$field['widget_type']) {
form_set_error('_add_new_field][widget_type', t('Add new field: you need to select a widget.'));
}
elseif ($field['type']) {
$widget_types = content_widget_type_options($field['type']);
if (!isset($widget_types[$field['widget_type']])) {
form_set_error('_add_new_field][widget_type', t('Add new field: invalid widget.'));
}
}
}
}