function _quiz_results_mr_prepare_filter in Quiz 7
Same name and namespace in other branches
- 8.4 quiz.admin.inc \_quiz_results_mr_prepare_filter()
- 6.4 quiz.admin.inc \_quiz_results_mr_prepare_filter()
- 7.4 quiz.admin.inc \_quiz_results_mr_prepare_filter()
Returns sql and parameters to be added in join, where and group clauses in the _quiz_results_mr_data_provider select statement
Parameters
$filter_params: params to be sent as parameter to db_query. (array)
Return value
$filter_sql sql to be added to where statement in browser(string)
See also
_quiz_results_mr_data_provider()
1 call to _quiz_results_mr_prepare_filter()
File
- ./
quiz.admin.inc, line 2320 - Administrator interface for Quiz module.
Code
function _quiz_results_mr_prepare_filter($quiz) {
$pre = 'quiz_results_mr_';
// Get all the intervals we need
$started_intervals = _quiz_get_interval_timestamps('time_start');
$finished_intervals = _quiz_get_interval_timestamps('time_end');
$duration_intervals = _quiz_get_duration_intervals();
$score_intervals = _quiz_get_score_intervals($quiz);
// Prepare the filter array
$filter = array(
'params' => array(
$quiz->nid,
),
'join' => '',
'where' => '',
'group' => '',
);
if (isset($_SESSION[$pre . 'name']) && drupal_strlen($_SESSION[$pre . 'name']) > 0) {
$filter['where'] .= ' AND u.name LIKE \'%s%%\'';
$filter['params'][] = $_SESSION[$pre . 'name'];
}
if (isset($_SESSION[$pre . 'started'])) {
$filter['where'] .= $started_intervals[$_SESSION[$pre . 'started']]['sql'];
}
if (isset($_SESSION[$pre . 'finished'])) {
$filter['where'] .= $finished_intervals[$_SESSION[$pre . 'finished']]['sql'];
}
if (isset($_SESSION[$pre . 'score'])) {
$filter['where'] .= $score_intervals[$_SESSION[$pre . 'score']];
}
if (isset($_SESSION[$pre . 'evaluated'])) {
switch ($_SESSION[$pre . 'evaluated']) {
case '0':
$filter['where'] .= ' AND is_evaluated = 0';
break;
case '1':
$filter['where'] .= ' AND is_evaluated = 1';
break;
}
}
if ($_SESSION[$pre . 'not_in_progress'] == 1) {
$filter['where'] .= " AND time_end <> 0";
}
if ($_SESSION[$pre . 'best_results'] == 1) {
$filter['join'] .= " INNER JOIN (\n SELECT qnrs.uid, MAX(qnrs.score) AS top_score\n FROM {quiz_node_results} qnrs\n LEFT JOIN {users} u ON u.uid = qnrs.uid\n LEFT JOIN {quiz_node_properties} qnp ON qnrs.vid = qnp.vid\n WHERE qnrs.nid = :quiz_nid " . $filter['where'] . "\n GROUP BY qnrs.uid\n ) AS qnrc ON qnrs.uid = qnrc.uid AND qnrs.score = qnrc.top_score";
$filter['group'] .= " GROUP BY qnrs.uid";
if (db_driver() == 'pgsql') {
$filter['group'] .= " GROUP BY qnrs.uid, u.uid, u.name, qnrs.result_id, qnrs.score, qnrs.is_evaluated, qnrs.time_start, qnrs.time_end, qnp.pass_rate";
}
$filter['params'][] = $filter['params'][0];
if (isset($_SESSION[$pre . 'name']) && drupal_strlen($_SESSION[$pre . 'name']) > 0) {
$filter['params'][] = $_SESSION[$pre . 'name'];
}
}
return $filter;
}