You are here

function tablefield_required_process_tablefield in TableField 8.2

Helper function to process tablefield widgets.

1 string reference to 'tablefield_required_process_tablefield'
tablefield_required_element_info_alter in tablefield_required/tablefield_required.module
Implements hook_element_info_alter().

File

tablefield_required/tablefield_required.module, line 111
Contains module hooks for tablefield_required.

Code

function tablefield_required_process_tablefield($element, $form_state, $complete_form) {
  if (!_tablefield_required_is_field_config_path() && isset($element['tablefield']['table']) && isset($element['#tablefield_required']) && !$element['#required']) {
    $config = $element['#tablefield_required'];

    // Let's prepare our needed variables.
    $rows = isset($config['required_rows']) && $config['required_rows'] ? explode(',', preg_replace('/\\s+/', '', $config['required_rows'])) : [];
    $cols = isset($config['required_cols']) && $config['required_cols'] ? explode(',', preg_replace('/\\s+/', '', $config['required_cols'])) : [];
    $inherit = isset($config['multivalue_inherit']) ? $config['multivalue_inherit'] : FALSE;

    // Our array of settings to pass to the validation function.
    $settings = [
      'required_rows' => $rows,
      'required_cols' => $cols,
      'inherit' => $inherit,
    ];

    // Do not process if inheritance for multi-value tables is disabled.
    if (!$settings['inherit'] && $element['#delta'] > 0) {
      return $element;
    }
    foreach ($element['tablefield']['table'] as $row_index => &$row) {
      if (is_numeric($row_index)) {
        foreach ($row as $col_index => &$col) {

          // We could to assign returned value, but better to keep it neutral.
          if (tablefield_required_cell_is_required($row_index, $col_index, $settings)) {
            $col['#required'] = TRUE;
          }
        }
      }
    }
  }
  return $element;
}