Completed
Push — master ( 91af7f...6afa24 )
by Seth
04:16
created

submissions.php ➔ unborkPreviewUrl()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nc 3
nop 1
dl 0
loc 17
rs 9.4285
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
$enrollments = $toolbox->api_get(
9
    'courses/' . $_SESSION[ToolProvider::class]['canvas']['course_id'] . '/enrollments',
10
    [
11
        'user_id' => $_SESSION[ToolProvider::class]['canvas']['user_id']
12
    ]
13
);
14
15
$isStudent = false;
16
foreach ($enrollments as $enrollment) {
17
    if ($enrollment['type'] == 'StudentEnrollment') {
18
        $isStudent = true;
19
    }
20
    if (empty($user)) {
21
        $user = $enrollment['user'];
22
    }
23
}
24
25
$assignments = [];
26
if ($isStudent) {
27
    $submissions = $toolbox->api_get(
28
        'courses/' . $_SESSION[ToolProvider::class]['canvas']['course_id'] . '/students/submissions',
29
        [
30
            'as_user_id' => $user['id'],
31
            'student_ids' => [$user['id']],
32
            'include' => ['submission_history']
33
        ]
34
    );
35
36
    foreach ($submissions as $submission) {
37
        $assignment = $toolbox->api_get(
38
            'courses/' . $_SESSION[ToolProvider::class]['canvas']['course_id'] .
39
            "/assignments/{$submission['assignment_id']}"
40
        );
41
        if (!in_array('not_graded', $assignment['submission_types'])) {
42
            $assignmentData['assignment'] = $assignment;
43
            foreach ($submission['submission_history'] as $version) {
44
                if (!empty($version['submitted_at'])) {
45
                    $versionData = [
46
                        'id' => $version['id'],
47
                        'attempt' => $version['attempt'],
48
                        'submitted_at' => $version['submitted_at']
49
                    ];
50
                    if ($version['submission_type'] == 'online_text_entry') {
51
                        $versionData['body'] = $version['body'];
52
                    } else {
53
                        if (empty($version['attachments'])) {
54
                            $versionData['type'] = DataUtilities::titleCase(
55
                                str_replace(
56
                                    '_',
57
                                    ' ',
58
                                    $version['submission_type']
59
                                )
60
                            );
61
                            $versionData['preview_url'] = $toolbox->unborkPreviewUrl($version['preview_url']);
62
                        } else {
63
                            foreach ($version['attachments'] as $attachment) {
64
                                $versionData['attachments'][$attachment['id']] = [
65
                                        'name' => $attachment['display_name'],
66
                                        'preview_url' => $toolbox->unborkPreviewUrl($attachment['preview_url'])
67
                                    ];
68
                            }
69
                        }
70
                    }
71
                    if (!empty($versionData['body']) ||
72
                        !empty($versionData['preview_url']) ||
73
                        !empty($versionData['attachments'])) {
74
                        $assignmentData['submissions'][$versionData['attempt']] = $versionData;
75
                    }
76
                }
77
            }
78
            if (!empty($assignmentData['submissions'])) {
79
                $assignments[$submission['assignment_id']] = $assignmentData;
80
            }
81
            unset($assignmentData);
82
            unset($versionData);
83
        }
84
    }
85
}
86
87
$toolbox->smarty_assign([
88
    'name' => 'See All Submissions',
89
    'category' => $user['name'],
90
    'assignments' => $assignments,
91
]);
92
if (empty($assignments)) {
93
    $toolbox->smarty_display('no_submissions.tpl');
94
} else {
95
    $toolbox->smarty_display('submissions.tpl');
96
}
97