Skip to content
Snippets Groups Projects
Commit 119c4ee9 authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

optimize queries for summary views, fixes #52

parent d491cc5b
No related branches found
No related tags found
No related merge requests found
...@@ -1934,12 +1934,13 @@ class SheetsController extends StudipController ...@@ -1934,12 +1934,13 @@ class SheetsController extends StudipController
}); });
foreach ($members as $member) { foreach ($members as $member) {
$students[] = get_fullname($member->user_id, 'no_title'); $students[] = $member->user->getFullName('no_title');
$stud_ids[] = get_student_id($member->user_id) ?: _vips('(keine Matrikelnummer)'); $stud_ids[] = get_student_id($member->user) ?: _vips('(keine Matrikelnummer)');
} }
} else { } else {
$students[] = get_fullname($user_id); $user = User::find($user_id);
$stud_ids[] = get_student_id($user_id) ?: _vips('(keine Matrikelnummer)'); $students[] = $user->getFullName('no_title');
$stud_ids[] = get_student_id($user) ?: _vips('(keine Matrikelnummer)');
} }
} }
......
...@@ -497,7 +497,7 @@ class SolutionsController extends StudipController ...@@ -497,7 +497,7 @@ class SolutionsController extends StudipController
$folder = $solver['name']; $folder = $solver['name'];
if ($solver['type'] === 'single') { if ($solver['type'] === 'single') {
$folder .= sprintf(' (%s)', get_student_id($solver['id']) ?: $solver['user_name']); $folder .= sprintf(' (%s)', $solver['stud_id'] ?: $solver['username']);
} }
if ($solution && $solution['uploads']) { if ($solution && $solution['uploads']) {
...@@ -1639,13 +1639,16 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL, ...@@ -1639,13 +1639,16 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL,
$block_name = $row['block_name']; $block_name = $row['block_name'];
$weighting = (float) $row['weight']; $weighting = (float) $row['weight'];
$assignment = VipsAssignment::find($assignment_id);
if (isset($block_id) && $row['block_weight'] !== NULL) { if (isset($block_id) && $row['block_weight'] !== NULL) {
$category = 'blocks'; $category = 'blocks';
// store assignment // store assignment
$assignments[$assignment_id] = [ $assignments[$assignment_id] = [
'category' => $category, 'assignment' => $assignment,
'item_id' => $block_id 'category' => $category,
'item_id' => $block_id
]; ];
// store item // store item
...@@ -1679,14 +1682,15 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL, ...@@ -1679,14 +1682,15 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL,
// store assignment // store assignment
$assignments[$assignment_id] = [ $assignments[$assignment_id] = [
'category' => $category, 'assignment' => $assignment,
'item_id' => $assignment_id 'category' => $category,
'item_id' => $assignment_id
]; ];
// store item // store item
$items[$category][$assignment_id] = [ $items[$category][$assignment_id] = [
'id' => $assignment_id, 'id' => $assignment_id,
'item' => VipsAssignment::find($assignment_id), 'item' => $assignment,
'name' => $test_title, 'name' => $test_title,
'tooltip' => $test_title, 'tooltip' => $test_title,
'points' => $points, 'points' => $points,
...@@ -1736,7 +1740,7 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL, ...@@ -1736,7 +1740,7 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL,
// each assignment // each assignment
foreach ($result as $row) { foreach ($result as $row) {
$assignment_id = (int) $row['assignment_id']; $assignment_id = (int) $row['assignment_id'];
$assignment = VipsAssignment::find($assignment_id); $assignment = $assignments[$assignment_id]['assignment'];
$user_id = $row['user_id']; $user_id = $row['user_id'];
$reached_points = $assignment->getUserPoints($user_id); // points in the assignment $reached_points = $assignment->getUserPoints($user_id); // points in the assignment
...@@ -1843,14 +1847,11 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL, ...@@ -1843,14 +1847,11 @@ function participants_overview_data($course_id, $param_user_id, $display = NULL,
// get information for each participant // get information for each participant
foreach ($participants as $user_id => $rest) { foreach ($participants as $user_id => $rest) {
$user = User::find($user_id); $user = User::find($user_id);
$forename = $user->vorname;
$surname = $user->nachname; $participants[$user_id]['forename'] = $user->vorname;
$stud_id = get_student_id($user_id); $participants[$user_id]['surname'] = $user->nachname;
$participants[$user_id]['name'] = $user->nachname . ', ' . $user->vorname;
$participants[$user_id]['forename'] = $forename; $participants[$user_id]['stud_id'] = get_student_id($user);
$participants[$user_id]['surname'] = $surname;
$participants[$user_id]['name'] = $surname.', '.$forename;
$participants[$user_id]['stud_id'] = $stud_id;
} }
...@@ -2092,10 +2093,11 @@ function get_solutions($assignment, $view) ...@@ -2092,10 +2093,11 @@ function get_solutions($assignment, $view)
// get user names // get user names
foreach ($result as $user) { foreach ($result as $user) {
$solvers[$user->id]['user_name'] = $user->username; $solvers[$user->id]['username'] = $user->username;
$solvers[$user->id]['forename'] = $user->vorname; $solvers[$user->id]['forename'] = $user->vorname;
$solvers[$user->id]['surname'] = $user->nachname; $solvers[$user->id]['surname'] = $user->nachname;
$solvers[$user->id]['name'] = $user->nachname.', '.$user->vorname; $solvers[$user->id]['name'] = $user->nachname . ', ' . $user->vorname;
$solvers[$user->id]['stud_id'] = get_student_id($user);
} }
uasort($solvers, function($a, $b) { uasort($solvers, function($a, $b) {
...@@ -2160,7 +2162,7 @@ function get_solutions($assignment, $view) ...@@ -2160,7 +2162,7 @@ function get_solutions($assignment, $view)
} }
return [ return [
'solvers' => $solvers, // ordered by surname - forename - user id 'solvers' => $solvers, // ordered by name
'exercises' => $exercises, // ordered by position 'exercises' => $exercises, // ordered by position
'solutions' => $solutions // first single solvers then groups, furthermore unordered 'solutions' => $solutions // first single solvers then groups, furthermore unordered
]; ];
......
...@@ -114,8 +114,8 @@ button.vips_file_upload:hover { ...@@ -114,8 +114,8 @@ button.vips_file_upload:hover {
} }
.ui-tabs .ui-tabs-tab:hover { .ui-tabs .ui-tabs-tab:hover {
border-bottom: 3px solid #636971; border-bottom: 3px solid #b1b4b8;
border-bottom: 3px solid var(--light-gray-color-80, #636971); border-bottom: 3px solid var(--dark-gray-color-40, #b1b4b8);
} }
.ui-tabs .ui-tabs-nav li.ui-tabs-active { .ui-tabs .ui-tabs-nav li.ui-tabs-active {
......
...@@ -328,7 +328,7 @@ $(function() { ...@@ -328,7 +328,7 @@ $(function() {
$('.vips_tabs').each(function() { $('.vips_tabs').each(function() {
$(this).tabs({ $(this).tabs({
active: Math.max($(this).find('> ul > li:visible').index(), 0) active: $(this).hasClass('edit-hidden') ? 1 : 0
}); });
}) })
}); });
......
...@@ -195,21 +195,18 @@ function normalizeFloat($string, &$unit) ...@@ -195,21 +195,18 @@ function normalizeFloat($string, &$unit)
} }
/** /**
* Returns the student id for the given user id. * Returns the student id for the given user.
*/ */
function get_student_id($user_id) function get_student_id($user)
{ {
if (Context::get()->getSemClass()->offsetGet('studygroup_mode')) { $datafield_id = Config::get()->VIPS_STUDENT_ID_DATAFIELD;
return NULL; $sem_class = Context::get()->getSemClass();
}
$stud_id = Config::get()->getValue('VIPS_STUDENT_ID_DATAFIELD');
if ($stud_id) { if ($datafield_id && !$sem_class['studygroup_mode']) {
$fields = DataFieldEntry::getDataFieldEntries($user_id); $entries = DatafieldEntryModel::findByModel($user, $datafield_id);
} }
return isset($fields[$stud_id]) ? $fields[$stud_id]->getValue() : NULL; return $entries ? $entries[0]->content : NULL;
} }
/** /**
......
...@@ -190,11 +190,11 @@ ...@@ -190,11 +190,11 @@
_vips('Aufgabenblatt drucken'), Icon::create('print'), ['target' => '_blank'] _vips('Aufgabenblatt drucken'), Icon::create('print'), ['target' => '_blank']
) ?> ) ?>
<? if ($solver['type'] == 'single') : ?> <? if ($solver['type'] == 'single') : ?>
<? $menu->addLink(URLHelper::getURL('dispatch.php/messages/write', ['rec_uname' => $solver['user_name']]), <? $menu->addLink(URLHelper::getURL('dispatch.php/messages/write', ['rec_uname' => $solver['username']]),
sprintf(_vips('Nachricht an "%s" schreiben'), $solver['name']), Icon::create('mail'), ['data-dialog' => ''] sprintf(_vips('Nachricht an "%s" schreiben'), $solver['name']), Icon::create('mail'), ['data-dialog' => '']
) ?> ) ?>
<? elseif ($solver['type'] == 'group') : ?> <? elseif ($solver['type'] == 'group') : ?>
<? $receivers = array_column($solver['members'], 'user_name') ?> <? $receivers = array_column($solver['members'], 'username') ?>
<? $menu->addLink(URLHelper::getURL('dispatch.php/messages/write', ['rec_uname' => $receivers]), <? $menu->addLink(URLHelper::getURL('dispatch.php/messages/write', ['rec_uname' => $receivers]),
_vips('Nachricht an die Gruppe schreiben'), Icon::create('mail'), ['data-dialog' => ''] _vips('Nachricht an die Gruppe schreiben'), Icon::create('mail'), ['data-dialog' => '']
) ?> ) ?>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment