Completed
Push — develop ( 79e117...34fa42 )
by Seth
02:25
created

relative-grades.php ➔ isAcademic()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 8
nc 3
nop 1
dl 0
loc 11
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
require_once 'common.inc.php';
4
5
use smtech\ReflexiveCanvasLTI\LTI\ToolProvider;
6
use Battis\DataUtilities;
7
8
if ($firstStudent === false) {
9
    $toolbox->smarty_display('no-advisees.tpl');
10
    exit;
11
}
12
13
$toolbox->getCache()->purgeExpired();
14
$toolbox->cache_pushKey(basename(__FILE__, '.php'));
15
$toolbox->cache_pushKey($_SESSION[COURSE_ID]);
16
17
$terms = $toolbox->getTermList();
18
19
$advisees = $toolbox->cache_get('advisees');
20
if ($advisees === false) {
21
    $advisees = $toolbox->api_get('courses/' . $_SESSION[COURSE_ID] . '/users', [
22
        'enrollment_type' => 'student'
23
    ]);
24
    $toolbox->cache_set('advisees', $advisees);
25
}
26
27
$advisee = (isset($_REQUEST['advisee']) ? $_REQUEST['advisee'] : $firstStudent);
28
29
$toolbox->cache_popKey();
30
$toolbox->cache_pushKey($advisee);
31
32
$courses = $toolbox->cache_get('courses');
33
if ($courses === false) {
34
    $allCourses = $toolbox->api_get("users/$advisee/courses");
35
36
    $courses = [];
37
    foreach ($allCourses as $course) {
38
        if (!empty($course['account_id']) &&
39
            $toolbox->isAcademic($course['account_id'])) {
40
            $courses[$course['id']] = $course;
41
        }
42
    }
43
    $toolbox->cache_set('courses', $courses);
44
}
45
46
$analytics = $toolbox->cache_get('analytics');
47
if ($analytics === false) {
48
    $analytics = [];
49
    foreach ($courses as $course) {
50
        $analytics[$course['id']] = $toolbox->api_get("courses/{$course['id']}/analytics/users/$advisee/assignments");
51
    }
52
    $toolbox->cache_set('analytics', $analytics);
53
}
54
55
$toolbox->cache_popKey();
56
$toolbox->cache_popKey();
57
58
$toolbox->smarty_assign([
59
    'advisee' => $advisee,
60
    'advisees' => $advisees,
61
    'terms' => $terms,
62
    'courses' => $courses,
63
    'analytics' => $analytics,
64
    'canvasInstanceUrl' => $_SESSION[CANVAS_INSTANCE_URL]
65
]);
66
67
/*
68
 * FIXME unclear why the post-bootstrap-scripts block isn't working in the
69
 *     relative-grades.tpl file
70
 */
71
$toolbox->getSmarty()->addScript(
72
    DataUtilities::URLfromPath(__DIR__ . '/../vendor/npm-asset/chart.js/dist/Chart.min.js')
73
);
74
$toolbox->getSmarty()->addScript(
75
    DataUtilities::URLfromPath(__DIR__ . '/../js/relative-grades.js.php') . "?advisee={$advisee}"
76
);
77
78
$toolbox->smarty_display('relative-grades.tpl');
79