You are here

function scale_collection_form_submit in Quiz 6.6

Same name and namespace in other branches
  1. 8.6 question_types/quiz_scale/quiz_scale.module \scale_collection_form_submit()
  2. 8.4 question_types/scale/scale.module \scale_collection_form_submit()
  3. 8.5 question_types/quiz_scale/quiz_scale.module \scale_collection_form_submit()
  4. 6.4 question_types/scale/scale.module \scale_collection_form_submit()
  5. 7.6 question_types/scale/scale.module \scale_collection_form_submit()
  6. 7 question_types/scale/scale.module \scale_collection_form_submit()
  7. 7.4 question_types/scale/scale.module \scale_collection_form_submit()
  8. 7.5 question_types/scale/scale.module \scale_collection_form_submit()

Handles the scale collection form.

_state

Parameters

$form:

1 string reference to 'scale_collection_form_submit'
scale_manage_collection_form in question_types/scale/scale.module
Form for changing and deleting the current users question types.

File

question_types/scale/scale.module, line 223
The main file for scale.

Code

function scale_collection_form_submit($form, &$form_state) {
  global $user;
  $changed = 0;
  $deleted = 0;
  foreach ($form_state['values'] as $key => $alternatives) {
    if ($col_id = _scale_get_col_id($key)) {
      $s_q = new ScaleQuestion(NULL);
      $s_q
        ->initUtil($col_id);
      switch ($alternatives['to-do']) {
        case 0:

        //Save, but don't change
        case 1:

          //Save and change existing questions
          $new_col_id = $s_q
            ->saveAnswerCollection(FALSE, $alternatives, 1);
          if (isset($alternatives['for_all'])) {
            _scale_set_for_all($new_col_id, $alternatives['for_all']);
          }
          if ($new_col_id == $col_id) {
            break;
          }
          $changed++;
          if ($alternatives['to-do'] == 0) {
            _scale_unpreset_collection($col_id, $user->uid);
            $s_q
              ->deleteCollectionIfNotUsed($col_id);
            if (isset($alternatives['for_all'])) {
              _scale_set_for_all($new_col_id, $alternatives['for_all']);
            }
          }
          elseif ($alternatives['to-do'] == 1) {
            $sql = 'UPDATE {quiz_scale_node_properties}
                    SET answer_collection_id = %d
                    WHERE answer_collection_id = %d
                    AND nid IN(
                      SELECT nid
                      FROM {node}
                      WHERE uid = %d
                    )';
            db_query($sql, $new_col_id, $col_id, $user->uid);
            db_query('DELETE FROM {quiz_scale_user} WHERE answer_collection_id = %d AND uid = %d', $col_id, $user->uid);
            $s_q
              ->deleteCollectionIfNotUsed($col_id);
          }
          break;
        case 2:

          //Delete
          $got_deleted = $s_q
            ->deleteCollectionIfNotUsed($col_id);
          if (!$got_deleted) {
            _scale_unpreset_collection($col_id, $user->uid);
          }
          $deleted++;
          break;
        case 3:

          //New
          if (strlen($alternatives['alternative0']) > 0) {
            $new_col_id = $s_q
              ->saveAnswerCollection(FALSE, $alternatives, 1);
            _scale_set_for_all($new_col_id, $alternatives['for_all']);
            drupal_set_message(t('New preset has been added'));
          }
          break;
      }
    }
  }
  if ($changed > 0) {
    drupal_set_message(t('!changed presets has been changed.', array(
      '!changed' => $changed,
    )));
  }
  if ($deleted > 0) {
    drupal_set_message(t('!deleted presets has been deleted.', array(
      '!deleted' => $deleted,
    )));
  }
}