diff options
Diffstat (limited to 'app/controllers/running_processes.php')
| -rw-r--r-- | app/controllers/running_processes.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/app/controllers/running_processes.php b/app/controllers/running_processes.php new file mode 100644 index 0000000..988062e --- /dev/null +++ b/app/controllers/running_processes.php @@ -0,0 +1,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) + ]) + ); + } +} |
