You are here

public function DDLinesQuestion::delete in Quiz 8.4

Implementation of delete

Overrides QuizQuestion::delete

See also

QuizQuestion#delete()

File

question_types/quiz_ddlines/lib/Drupal/quiz_ddlines/DDLinesQuestion.php, line 281
The main classes for the quiz_ddlines question type.

Class

DDLinesQuestion
Extension of QuizQuestion.

Namespace

Drupal\quiz_ddlines

Code

public function delete($only_this_version = FALSE) {
  $delete_node = db_delete('quiz_ddlines_node')
    ->condition('nid', $this->node
    ->id());
  $delete_results = db_delete('quiz_ddlines_user_answers')
    ->condition('question_nid', $this->node
    ->id());
  if ($only_this_version) {
    $delete_node
      ->condition('vid', $this->node
      ->getRevisionId());
    $delete_results
      ->condition('question_vid', $this->node
      ->getRevisionId());
  }

  // Delete from table quiz_ddlines_user_answer_multi
  $user_answer_ids = array();
  if ($only_this_version) {
    $query = db_query('SELECT id FROM {quiz_ddlines_user_answers} WHERE question_nid = :nid AND question_vid = :vid', array(
      ':nid' => $this->node
        ->id(),
      ':vid' => $this->node
        ->getRevisionId(),
    ));
  }
  else {
    $query = db_query('SELECT id FROM {quiz_ddlines_user_answers} WHERE question_nid = :nid', array(
      ':nid' => $this->node
        ->id(),
    ));
  }
  while ($user_answer = $query
    ->fetch()) {
    $user_answer_ids[] = $user_answer->id;
  }
  if (count($user_answer_ids)) {
    db_delete('quiz_ddlines_user_answer_multi')
      ->condition('user_answer_id', $user_answer_ids, 'IN')
      ->execute();
  }
  $delete_node
    ->execute();
  $delete_results
    ->execute();
  parent::delete($only_this_version);
}