You are here

function quiz_question_nodeapi in Quiz 6.4

Same name and namespace in other branches
  1. 6.6 question_types/quiz_question/quiz_question.module \quiz_question_nodeapi()
  2. 6.3 question_types/quiz_question/quiz_question.module \quiz_question_nodeapi()
  3. 6.5 question_types/quiz_question/quiz_question.module \quiz_question_nodeapi()

Implementation of hook_nodeapi().

File

question_types/quiz_question/quiz_question.module, line 426
Quiz Question module. This module provides the basic facilities for adding quiz question types to a quiz.

Code

function quiz_question_nodeapi(&$node, $op) {

  // If a question is deleted it should also be removed from quizzes it belongs to.
  if ($op == 'delete revision') {
    $q_types = _quiz_question_get_implementations();
    foreach ($q_types as $q_type => $info) {
      if ($node->type == $q_type) {
        _quiz_delete_question($node, TRUE);

        // true for only this version
      }
    }
  }
  elseif ($op == 'presave') {
    $q_types = _quiz_question_get_implementations();
    foreach ($q_types as $q_type => $info) {
      if ($node->type == $q_type) {
        if (drupal_strlen($node->title) == 0 || !user_access('edit question titles')) {
          if (drupal_strlen(strip_tags(check_markup($node->body, $node->format, FALSE))) > variable_get('quiz_autotitle_length', 50)) {
            $node->title = drupal_substr(strip_tags(check_markup($node->body, $node->format, FALSE)), 0, variable_get('quiz_autotitle_length', 50) - 3) . '...';
          }
          else {
            $node->title = strip_tags(check_markup($node->body, $node->format, FALSE));
          }
        }
      }
    }
  }
  elseif ($node->type == 'quiz') {
    switch ($op) {
      case 'insert':
      case 'update':
        quiz_question_refresh_latest_quizzes($node->nid);
        break;
      case 'delete':
        quiz_question_remove_latest_quizzes($node->nid);
        break;
    }
  }
}