aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/tree.php
blob: 655e7170d2052d99184566e79bfc5b70d2476d10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php

class TreeController extends AuthenticatedController
{
    public function export_csv_action()
    {
        if (!Request::isPost()) {
            throw new MethodNotAllowedException();
        }

        $ids = explode(',', Request::get('courses', ''));
        $courses = Course::findMany($ids);

        $captions = [
            _('Veranstaltungsnummer'),
            _('Name'),
            _('Semester'),
            _('Zeiten'),
            _('Lehrende')
        ];

        $data = [];
        foreach ($courses as $course) {
            $sem = Seminar::getInstance($course->id);
            $lecturers = SimpleCollection::createFromArray(
                CourseMember::findByCourseAndStatus($course->id, 'dozent')
            )->orderBy('position, nachname, vorname');

            $lecturersSorted = array_map(
                function ($l) {
                    return implode(', ', $l);
                },
                $lecturers->toArray('nachname vorname title_front title_rear')
            );

            $data[] = [
                $course->veranstaltungsnummer,
                $course->getFullName('type-number-name'),
                $course->getTextualSemester(),
                $sem->getDatesExport(),
                implode(', ', $lecturersSorted)
            ];
        }

        $tmpname = md5(uniqid('ErgebnisVeranstaltungssuche'));
        if (array_to_csv($data, $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) {
            $this->render_text(FileManager::getDownloadURLForTemporaryFile(
                $tmpname,
                'veranstaltungssuche.csv'
            ));
        } else {
            $this->set_status(400, 'The csv could not be created.');
        }
    }
}