xref: /plugin/bez/ctl/task.php (revision 7753af1423ffcf45811f41067d803201e2f76fc1)
1aa89e6f8SSzymon Olewniczak<?php
253df74e7SSzymon Olewniczak/** @var action_plugin_bez $this */
3aa89e6f8SSzymon Olewniczak
4e8827d73SSzymon Olewniczakuse \dokuwiki\plugin\bez;
5aa89e6f8SSzymon Olewniczak
6a0cd8c78SSzymon Olewniczakif ($this->model->get_level() < BEZ_AUTH_USER) {
753df74e7SSzymon Olewniczak    throw new bez\meta\PermissionDeniedException();
853df74e7SSzymon Olewniczak}
953df74e7SSzymon Olewniczak
10e8827d73SSzymon Olewniczakif ($this->get_param('tid') == '') {
11e8827d73SSzymon Olewniczak    header('Location: ' . $this->url('tasks'));
1204f149d4SSzymon Olewniczak}
1304f149d4SSzymon Olewniczak
14e8827d73SSzymon Olewniczak/** @var bez\mdl\Task $task */
15e8827d73SSzymon Olewniczak$task = $this->model->taskFactory->get_one($this->get_param('tid'));
16e8827d73SSzymon Olewniczak$this->tpl->set('task', $task);
17e8827d73SSzymon Olewniczak$this->tpl->set('task_comments', $this->model->task_commentFactory->get_from_task($task));
18*7753af14SSzymon Olewniczak$this->tpl->set('task_programs',  $this->model->task_programFactory->get_all([], 'name'));
19aa89e6f8SSzymon Olewniczak
20e8827d73SSzymon Olewniczakif ($this->get_param('action') == 'comment_add') {
21aa89e6f8SSzymon Olewniczak
22e8827d73SSzymon Olewniczak    /** @var bez\mdl\Thread_comment $thread_comment */
23e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->create_object(array('task' => $task));
24e8827d73SSzymon Olewniczak    $this->model->task_commentFactory->initial_save($task_comment, $_POST);
25f2c81100SSzymon Olewniczak
2653df74e7SSzymon Olewniczak    $anchor = 'zk'.$task_comment->id;
2704f149d4SSzymon Olewniczak    $redirect = true;
2804f149d4SSzymon Olewniczak
29e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'subscribe') {
30e8827d73SSzymon Olewniczak
31e8827d73SSzymon Olewniczak    $task->set_participant_flags($this->model->user_nick, array('subscribent'));
32e8827d73SSzymon Olewniczak    $redirect = true;
33e8827d73SSzymon Olewniczak
34e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'unsubscribe') {
35e8827d73SSzymon Olewniczak
36e8827d73SSzymon Olewniczak    $task->remove_participant_flags($this->model->user_nick, array('subscribent'));
37e8827d73SSzymon Olewniczak
3814a1f0a4SSzymon Olewniczak    $this->add_notification($this->getLang('task_unsubscribed_com'));
39e8827d73SSzymon Olewniczak    $redirect = true;
40e8827d73SSzymon Olewniczak
41e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'invite') {
4204f149d4SSzymon Olewniczak     $client = $_POST['client'];
4304f149d4SSzymon Olewniczak
44e8827d73SSzymon Olewniczak    $task->invite($client);
45e8827d73SSzymon Olewniczak    $this->add_notification($this->model->userFactory->get_user_email($client), $this->getLang('invitation_has_been_send'));
4604f149d4SSzymon Olewniczak
4704f149d4SSzymon Olewniczak    $redirect = true;
48b331b892SSzymon Olewniczak} elseif ($this->get_param('action') == 'participant_remove') {
49b331b892SSzymon Olewniczak    $user_id = $this->get_param('user_id');
50b331b892SSzymon Olewniczak    $task->remove_participant($user_id);
51b331b892SSzymon Olewniczak
52b331b892SSzymon Olewniczak    $name = $this->model->userFactory->get_user_full_name($user_id);
53b331b892SSzymon Olewniczak    $notif = sprintf($this->getLang('participant_removed'), $name);
54b331b892SSzymon Olewniczak    $this->add_notification($notif);
55b331b892SSzymon Olewniczak
56b331b892SSzymon Olewniczak    $redirect = true;
57e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'comment_delete') {
58e8827d73SSzymon Olewniczak    /** @var bez\mdl\Task_comment $task_comment */
59e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->get_one($this->get_param('zkid'), array('task' => $task));
60e8827d73SSzymon Olewniczak    $this->model->task_commentFactory->delete($task_comment);
61c45b82bdSSzymon Olewniczak
6204f149d4SSzymon Olewniczak    $redirect = true;
63e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'comment_edit') {
64e8827d73SSzymon Olewniczak    /** @var bez\mdl\Task_comment $task_comment */
65e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->get_one($this->get_param('zkid'), array('thread' => $thread));
66e8827d73SSzymon Olewniczak
67e8827d73SSzymon Olewniczak    if(count($_POST) === 0) {
68e8827d73SSzymon Olewniczak        $this->tpl->set_values($task_comment->get_assoc());
69c45b82bdSSzymon Olewniczak    } else {
70e8827d73SSzymon Olewniczak        $this->model->task_commentFactory->update_save($task_comment, $_POST);
71e8827d73SSzymon Olewniczak
72e8827d73SSzymon Olewniczak        $anchor   = 'zk' . $task_comment->id;
73e8827d73SSzymon Olewniczak        $redirect = true;
74e8827d73SSzymon Olewniczak    }
75e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_edit') {
76e8827d73SSzymon Olewniczak    //save
77e8827d73SSzymon Olewniczak    if (count($_POST) === 0) {
78e8827d73SSzymon Olewniczak        $this->tpl->set_values($task->get_assoc());
79e8827d73SSzymon Olewniczak    } else {
80e8827d73SSzymon Olewniczak        $this->model->taskFactory->update_save($task, $_POST);
81e8827d73SSzymon Olewniczak        $redirect = true;
82c45b82bdSSzymon Olewniczak    }
836f380773SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_delete') {
846f380773SSzymon Olewniczak    $this->model->taskFactory->delete($task);
856f380773SSzymon Olewniczak    if ($task->thread_id != '') {
866f380773SSzymon Olewniczak        header('Location: ' . $this->url('thread', 'id', $task->thread_id));
876f380773SSzymon Olewniczak    } else {
886f380773SSzymon Olewniczak        header("Location: " . $this->url('tasks'));
896f380773SSzymon Olewniczak    }
90a5de966aSSzymon Olewniczak} elseif ($this->get_param('action') == 'pin') {
91a5de966aSSzymon Olewniczak    $thread_id = $_POST['thread_id'];
92a5de966aSSzymon Olewniczak    $task->pin($thread_id);
93a5de966aSSzymon Olewniczak    $redirect = true;
94a5de966aSSzymon Olewniczak} elseif ($this->get_param('action') == 'unpin') {
95a5de966aSSzymon Olewniczak    $task->unpin();
96a5de966aSSzymon Olewniczak    $redirect = true;
97f2c81100SSzymon Olewniczak}
98f2c81100SSzymon Olewniczak
99a5de966aSSzymon Olewniczak
100e8827d73SSzymon Olewniczakif (isset($redirect) && $redirect == true) {
101e8827d73SSzymon Olewniczak    if (isset($anchor)) {
102e8827d73SSzymon Olewniczak        $anchor = '#'.$anchor;
103e8827d73SSzymon Olewniczak    } else {
104e8827d73SSzymon Olewniczak        $anchor = '';
105aa89e6f8SSzymon Olewniczak    }
106e8827d73SSzymon Olewniczak    header("Location: " . $this->url('task', 'tid', $task->id) . $anchor);
107aa89e6f8SSzymon Olewniczak}