You are here

function user_badges_change_form_submit in User Badges 7.4

Same name and namespace in other branches
  1. 6.2 user_badges.module \user_badges_change_form_submit()
  2. 6 user_badges.module \user_badges_change_form_submit()
  3. 7 user_badges.module \user_badges_change_form_submit()
  4. 7.2 user_badges.module \user_badges_change_form_submit()
  5. 7.3 user_badges.module \user_badges_change_form_submit()

Process user_badges_change_form form submissions.

Add the named badge. Remove the checked badges.

File

./user_badges.module, line 803
Hooks and other stuff related to user badge.

Code

function user_badges_change_form_submit($form, &$form_state) {
  $uid = $form_state['values']['uid'];

  // If the user used the multi drop-down to select badges,
  // submit them accordingly.
  if (variable_get('user_badges_selector_type', 1) == 0) {
    foreach ($form_state['values']['add_drop_down'] as $bid) {

      // We have to add this validation as we don't want to add the - None -
      // case which might have been selected.
      if ($bid > 0) {
        user_badges_user_add_badge($uid, $bid, 'user');
      }
    }
  }
  else {

    // Add badges for non-empty fields.
    for ($i = 1; $i <= 5; $i++) {
      if (!empty($form_state['values']['add'][$i])) {
        user_badges_user_add_badge($uid, $form_state['values']['add'][$i], 'user');
      }
    }
  }

  // Remove any checked badges.
  $badges_to_go = array();
  if (isset($form_state['values']['remove'])) {
    foreach ($form_state['values']['remove'] as $bid => $value) {
      if (is_numeric($bid) && $value == 1) {
        $badges_to_go[] = $bid;
      }
    }
    if (count($badges_to_go)) {
      foreach ($badges_to_go as $bid) {
        user_badges_user_remove_badge($uid, $bid);
      }
      drupal_set_message(format_plural(count($badges_to_go), '1 badge removed.', '@count badges removed.'));
    }
  }
  if (arg(2) == 'edit') {

    // My account.
    $form_state['redirect'] = "user/{$uid}";
  }
  else {

    // Full admin UI.
    $form_state['redirect'] = "user/{$uid}/badges";
  }
}