You are here

function _get_quiz_status_chart in Quiz 8.6

Same name and namespace in other branches
  1. 8.4 modules/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  2. 8.5 modules/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  3. 6.6 includes/quiz_dashboard/quiz_dashboard.admin.inc \_get_quiz_status_chart()
  4. 6.4 includes/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  5. 7.6 modules/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  6. 7 includes/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  7. 7.4 includes/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  8. 7.5 modules/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()
  9. 6.x modules/quiz_stats/quiz_stats.admin.inc \_get_quiz_status_chart()

Generates a chart showing the status for all registered responses to a quiz.

Parameters

int $vid: Revision id of quiz node.

int $uid: An optional user ID. If supplied, only quizzes created by that user will be returned.

Return value

array|false Array with chart and metadata, FALSE if no quiz was found.

1 call to _get_quiz_status_chart()
quiz_stats_get_adv_stats in modules/quiz_stats/quiz_stats.admin.inc
Get stats for a single quiz. Maybe also for a single user.

File

modules/quiz_stats/quiz_stats.admin.inc, line 185
Administration file for Quiz stats Module.

Code

function _get_quiz_status_chart($vid, $uid = 0) {

  // Get the pass rate of the given quiz by vid.
  $pass_rate = db_select('quiz_node_properties', 'qnp')
    ->fields('qnp', array(
    'pass_rate',
  ))
    ->condition('vid', $vid)
    ->execute()
    ->fetchField();
  if (!$pass_rate) {
    return FALSE;
  }

  // Get the count value of results row above and below pass rate.
  $query = db_select('quiz_node_results', 'qnr');
  $query
    ->addExpression("SUM(score >= {$pass_rate})", 'no_pass');
  $query
    ->addExpression("SUM(score < {$pass_rate})", 'no_fail');
  $query
    ->addExpression('SUM(is_evaluated = 0)', 'no_incomplete');
  $query
    ->condition('vid', $vid);
  $query
    ->condition('is_invalid', 0);
  $quiz = $query
    ->execute()
    ->fetchAssoc();
  if ($quiz['no_pass'] + $quiz['no_fail'] + $quiz['no_incomplete'] < 1) {

    // No sufficient data.
    return FALSE;
  }

  // Generates quiz status chart 3D pie chart.
  $chart = '<div id="get_quiz_status_chart" class="quiz-stats-chart-space">';
  $chart .= theme('get_quiz_status_chart', array(
    'quiz' => $quiz,
  ));
  $chart .= '</div>';
  return array(
    'chart' => $chart,
    'title' => t('Status'),
    'explanation' => t('This chart shows the status for all attempts made to answer this revision of the quiz.'),
  );
}