aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/running_processes.php
blob: 988062ea4acdd55f75cd50ea239a73514fc3d57b (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
<?php

class RunningProcessesController extends AuthenticatedController
{

    public function widget_action()
    {
        $this->processes = array_merge(
            \Studip\Processes\Questionnaires::getProcesses(User::findCurrent()),
            \Studip\Processes\TimedFolders::getProcesses(User::findCurrent())
        );
        $plugins = PluginManager::getInstance()->getPlugins('RunningProcessPlugin');
        foreach ($plugins as $plugin) {
            $this->processes = array_merge($this->processes, $plugin->getRunningProcesses());
        }

        $this->contexts = [];
        foreach ($this->processes as $process) {
            if (!isset($this->contexts[$process->context_id])) {
                $context = get_object_by_range_id($process->context_id);

                if ($context) {
                    if ($context instanceof Course) {
                        $avatar = CourseAvatar::getAvatar($process->context_id);
                    } else {
                        $avatar = InstituteAvatar::getAvatar($process->context_id);
                    }
                    $this->contexts[$process->context_id] = [
                        'id' => $process->context_id,
                        'name' => (string) $context->name,
                        'url' => URLHelper::getURL('dispatch.php/course/go', ['to' => $process->context_id]),
                        'avatar' => $avatar->getURL(Avatar::SMALL),
                    ];
                }
            }
        }

        $this->render_vue_app(
            Studip\VueApp::create('RunningProcesses')
                ->withProps([
                    'contexts' => $this->contexts,
                    'processes' => array_map(function ($process) { return $process->toArray(); }, $this->processes)
                ])
        );
    }
}