You are here

function _socialfield_validate_services in Social field 7

Setting instance settings from table settings.

1 string reference to '_socialfield_validate_services'
_socialfield_field_instance_settings_form in ./socialfield.module
Instance settings form process callback function.

File

./socialfield.module, line 423
Provides a field for adding social services links.

Code

function _socialfield_validate_services($form, &$form_state) {
  $used_services = $form_state['#used_services'];
  $displayed_services = $form_state['#services'];
  $weights = $form_state['#weights'];

  // Getting new instance settings.
  foreach ($form['rows'] as $key => &$row) {
    if (!is_numeric($key)) {
      continue;
    }
    $service_name = $row['service_name']['#value'];

    // Service checked, wanted to be used.
    if ($row['used_services']['#value']) {
      $used_services[$service_name] = $service_name;
    }
    else {
      unset($used_services[$service_name]);
    }

    // This service was checked to be displayed with icon on widget.
    if ($row['displayed_services']['#value']) {
      $used_services[$service_name] = $service_name;
      $displayed_services[$service_name] = $service_name;
    }
    else {
      unset($displayed_services[$service_name]);
    }
    $weights[$service_name] = $row['weight']['#value'];
  }
  if (!count($displayed_services)) {
    form_set_error('table', t('Select at least one service to display.'));
  }

  // Setting new instance settings.
  $form_state['values']['instance']['settings']['used_services'] = $used_services;
  $form_state['values']['instance']['settings']['services'] = $displayed_services;
  $form_state['values']['instance']['settings']['weights'] = $weights;
  unset($form_state['values']['instance']['settings']['table']);
}