You are here

function quiz_question_access_to_score in Quiz 7.6

Same name and namespace in other branches
  1. 8.4 question_types/quiz_question/quiz_question.module \quiz_question_access_to_score()
  2. 6.4 question_types/quiz_question/quiz_question.module \quiz_question_access_to_score()
  3. 7 question_types/quiz_question/quiz_question.module \quiz_question_access_to_score()
  4. 7.4 question_types/quiz_question/quiz_question.module \quiz_question_access_to_score()

Figure out if a user has access to score a certain result

Parameters

$vid: Question version id

$result_id: Result id

Return value

True if the user has access to score the result

2 string references to 'quiz_question_access_to_score'
long_answer_menu in question_types/long_answer/long_answer.module
Implements hook_menu().
short_answer_menu in question_types/short_answer/short_answer.module
Implements hook_menu().

File

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

Code

function quiz_question_access_to_score($vid, $result_id) {
  global $user;
  $sql = 'SELECT * FROM {quiz_node_results_answers} WHERE result_id = :result_id AND question_vid = :question_vid';
  $answer = db_query($sql, array(
    ':result_id' => $result_id,
    ':question_vid' => $vid,
  ))
    ->fetch();
  if (!$answer) {
    return FALSE;
  }
  if (user_access('score any quiz')) {
    return TRUE;
  }
  if (user_access('score taken quiz answer')) {
    $uid = db_query('SELECT uid from {quiz_node_results} qnr WHERE qnr.result_id = :result_id', array(
      ':result_id' => $result_id,
    ))
      ->fetchField();
    if ($uid == $user->uid) {
      return TRUE;
    }
  }
  if (user_access('score own quiz')) {
    return db_query('SELECT r.uid FROM {node_revision} r
            JOIN {quiz_node_results} qnr ON (r.nid = qnr.nid)
            WHERE qnr.result_id = :result_id
            ', array(
      ':result_id' => $result_id,
    ))
      ->fetchField() == $user->uid;
  }
}