function opigno_class_app_user_results in Opigno Class App 7
Page callback: view user results. Overwrite callback from Quiz app, group courses by class.
Parameters
int $uid:
Return value
string
1 string reference to 'opigno_class_app_user_results'
- opigno_class_app_menu_alter in ./
opigno_class_app.module - Implements hook_menu_alter().
File
- ./
opigno_class_app.module, line 274 - Module hooks.
Code
function opigno_class_app_user_results($uid = NULL) {
if (!isset($uid)) {
global $user;
$uid = $user->uid;
$account = clone $user;
}
else {
$account = user_load($uid);
}
if (empty($uid)) {
drupal_set_message(t("Could not find any user to display results for."), 'error');
drupal_not_found();
}
// Failsafe.
if (!module_exists('opigno_quiz_app')) {
return t("This page requires the Opigno Quiz App to be enabled.");
}
$html = '';
$scores = array();
$classes = array();
$printed_scores = array();
foreach (og_get_groups_by_user($account, 'node') as $gid => $nid) {
$node = node_load($nid);
if ($node->type == OPIGNO_COURSE_BUNDLE) {
if ($score_data = opigno_quiz_app_get_course_data_result($uid, $nid)) {
$scores[$nid] = $score_data;
$scores[$nid]['node'] = $node;
}
}
elseif ($node->type == 'class') {
$classes[$nid]['node'] = $node;
foreach ($node->opigno_class_courses as $lang => $items) {
foreach ($items as $item) {
$classes[$nid]['courses'][$item['target_id']] = $item['target_id'];
}
}
}
}
if (!empty($classes)) {
foreach ($classes as $class_nid => $data) {
$class_scores = array();
if (!empty($data['courses'])) {
$printed_scores = array_merge($printed_scores, array_keys($data['courses']));
foreach ($data['courses'] as $course_nid) {
$class_scores[$scores[$course_nid]['node']->title] = $scores[$course_nid];
}
$passed = OPIGNO_QUIZ_APP_PASSED;
foreach ($data['courses'] as $course_nid) {
if (!empty($scores[$course_nid]['passed']) && $scores[$course_nid]['passed'] != OPIGNO_QUIZ_APP_PASSED) {
$passed = $scores[$course_nid]['passed'];
break;
}
}
$html .= theme('table', array(
'header' => array(
t("@name (!status)", array(
'@name' => check_plain($data['node']->title),
'!status' => $passed == OPIGNO_QUIZ_APP_PASSED ? t("Passed") : ($passed == OPIGNO_QUIZ_APP_FAILED ? t("Failed") : t("Pending")),
)),
),
'rows' => array(
array(
theme('opigno_quiz_app_user_results', array(
'user' => $account,
'results' => $class_scores,
)),
),
),
'attributes' => array(
'class' => array(
'opigno-quiz-app-results-table',
'opigno-quiz-app-results-collapsible-table',
'opigno-quiz-app-course-class-results-table',
),
),
));
}
}
foreach ($printed_scores as $printed_score) {
unset($scores[$printed_score]);
}
}
$other_scores = array();
foreach ($scores as $nid => $score_data) {
$other_scores[$score_data['node']->title] = $score_data;
}
$html .= theme('opigno_quiz_app_user_results', array(
'user' => $account,
'results' => $other_scores,
));
$path = drupal_get_path('module', 'opigno_quiz_app');
drupal_add_js($path . '/js/opigno_quiz_app.js');
drupal_add_css($path . '/css/opigno_quiz_app.css');
return $html;
}