public function CivicrmInlineEntityFormController::entityFormValidate in CiviCRM Entity 7.2
Validates the entity form.
Parameters
$entity_form: The entity form.
$form_state: The form state of the parent form.
Overrides EntityInlineEntityFormController::entityFormValidate
File
- modules/
civicrm_entity_inline/ includes/ civicrm.civicrm_entity_inline.inc, line 233
Class
Code
public function entityFormValidate($entity_form, &$form_state) {
$entity_type = $entity_form['#entity_type'];
$ief_id = $entity_form['#ief_id'];
$field_name = $form_state['inline_entity_form'][$ief_id]['instance']['field_name'];
$op = $entity_form['#op'];
if ($op == 'edit') {
foreach ($form_state['inline_entity_form'][$ief_id]['entities'] as $delta => &$entity_array) {
if (isset($form_state['values'][$field_name]['und']['entities'][$delta]['form'])) {
//$entity = $entity_array['entity'];
foreach ($form_state['values'][$field_name]['und']['entities'][$delta]['form'] as $key => $value) {
//$entity->{$key} = $value;
if (!is_array($value)) {
$entity_array['entity']->{$key} = $value;
}
else {
if (isset($value['value'])) {
$entity_array['entity']->{$key} = $value['value'];
}
else {
$entity_array['entity']->{$key} = $value;
}
}
}
}
}
}
elseif ($op == 'create' || $op == 'add') {
$entity = $entity_form['#entity'];
$child_form_state_values = drupal_array_get_nested_value($form_state['values'], $entity_form['#parents']);
foreach ($child_form_state_values as $key => $value) {
if (!is_array($value)) {
$entity->{$key} = $value;
}
elseif (isset($value['value'])) {
$entity->{$key} = $value['value'];
}
else {
$entity->{$key} = $value;
}
}
}
if ($op == 'create' || $op == 'add' || $op == 'edit') {
// validate civicrm data
$entity_metadata_info = entity_get_property_info($entity_type);
foreach ($form_state['inline_entity_form'][$ief_id]['entities'] as $delta => $ent_array) {
foreach ($entity_metadata_info['properties'] as $name => $info) {
if (!empty($info['type'])) {
// integer validation
if ($info['type'] == 'integer') {
//text field validation
if (isset($entity_form[$name]['#type']) && $entity_form[$name]['#type'] == 'textfield') {
if (isset($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name]) && strlen($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name]) && (string) (int) $form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name] !== (string) $form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name]) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . $name, t('Value must be an integer. e.g (1, 154, 0)'));
}
}
}
elseif ($info['type'] == 'decimal') {
//text field validation
if (isset($entity_form[$name]['#type']) && $entity_form[$name]['#type'] == 'textfield') {
if (isset($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name]) && strlen($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name]) && !is_numeric($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form'][$name])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . $name, t('Value must be an number. e.g (1, 1.26, -1.3)'));
}
}
}
}
}
// validate name for contact
if ($entity_type == 'civicrm_contact' && isset($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['contact_type'])) {
if ($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['contact_type'] == 'Individual') {
if (!isset($entity_form['first_name']) && !isset($entity_form['middle_name']) && !isset($entity_form['last_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'contact_type', t('Individual contact type, form must include at least one of first, middle, or last name fields.'));
}
elseif (empty($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['first_name']) && empty($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['middle_name']) && empty($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['last_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'first_name', t('At least one of first, middle, or last names must be set when contact type is set to Individual.'));
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'middle_name');
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'last_name');
}
}
elseif ($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['contact_type'] == 'Household') {
if (!isset($entity_form['household_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'contact_type', t('Household contact type, form must include the household name field.'));
}
elseif (empty($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['household_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'household_name', t('Household name is required when contact type is set to Household'));
}
}
elseif ($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['contact_type'] == 'Organization') {
if (!isset($entity_form['organization_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'contact_type', t('Organization contact type, form must include the organization name field.'));
}
elseif (empty($form_state['values'][$field_name][LANGUAGE_NONE]['entities'][$delta]['form']['organization_name'])) {
form_set_error($field_name . '][' . LANGUAGE_NONE . '][entities][' . $delta . '][form][' . 'organization_name', t('Organization name is required when contact type is set to Organization.'));
}
}
}
field_attach_form_validate($entity_type, $ent_array['entity'], $entity_form, $form_state);
}
}
parent::entityFormValidate($entity_form, $form_state);
}