xref: /plugin/bez/ctl/task.php (revision ff14b1073c2dab2f863cab3b8baf8b1a01f7993a)
1aa89e6f8SSzymon Olewniczak<?php
2e8827d73SSzymon Olewniczak/** @var action_plugin_bez_default $this */
3aa89e6f8SSzymon Olewniczak
4e8827d73SSzymon Olewniczakuse \dokuwiki\plugin\bez;
5aa89e6f8SSzymon Olewniczak
6e8827d73SSzymon Olewniczakif ($this->get_param('tid') == '') {
7e8827d73SSzymon Olewniczak    header('Location: ' . $this->url('tasks'));
804f149d4SSzymon Olewniczak}
904f149d4SSzymon Olewniczak
10e8827d73SSzymon Olewniczak/** @var bez\mdl\Task $task */
11e8827d73SSzymon Olewniczak$task = $this->model->taskFactory->get_one($this->get_param('tid'));
12e8827d73SSzymon Olewniczak$this->tpl->set('task', $task);
13e8827d73SSzymon Olewniczak$this->tpl->set('task_comments', $this->model->task_commentFactory->get_from_task($task));
14*ff14b107SSzymon Olewniczak$this->tpl->set('task_programs',  $this->model->task_programFactory->get_all());
15aa89e6f8SSzymon Olewniczak
16e8827d73SSzymon Olewniczakif ($this->get_param('action') == 'comment_add') {
17aa89e6f8SSzymon Olewniczak
18e8827d73SSzymon Olewniczak    /** @var bez\mdl\Thread_comment $thread_comment */
19e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->create_object(array('task' => $task));
20e8827d73SSzymon Olewniczak    $this->model->task_commentFactory->initial_save($task_comment, $_POST);
21f2c81100SSzymon Olewniczak
22e8827d73SSzymon Olewniczak    $anchor = 'k'.$task_comment->id;
2304f149d4SSzymon Olewniczak    $redirect = true;
2404f149d4SSzymon Olewniczak
25e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'subscribe') {
26e8827d73SSzymon Olewniczak
27e8827d73SSzymon Olewniczak    $task->set_participant_flags($this->model->user_nick, array('subscribent'));
28e8827d73SSzymon Olewniczak    $redirect = true;
29e8827d73SSzymon Olewniczak
30e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'unsubscribe') {
31e8827d73SSzymon Olewniczak
32e8827d73SSzymon Olewniczak    $task->remove_participant_flags($this->model->user_nick, array('subscribent'));
33e8827d73SSzymon Olewniczak
34e8827d73SSzymon Olewniczak    $this->add_notification($this->getLang('unsubscribed_com'));
35e8827d73SSzymon Olewniczak    $redirect = true;
36e8827d73SSzymon Olewniczak
37e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'invite') {
3804f149d4SSzymon Olewniczak     $client = $_POST['client'];
3904f149d4SSzymon Olewniczak
40e8827d73SSzymon Olewniczak    $task->invite($client);
41e8827d73SSzymon Olewniczak    $this->add_notification($this->model->userFactory->get_user_email($client), $this->getLang('invitation_has_been_send'));
4204f149d4SSzymon Olewniczak
4304f149d4SSzymon Olewniczak    $redirect = true;
44e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'comment_delete') {
45e8827d73SSzymon Olewniczak    /** @var bez\mdl\Task_comment $task_comment */
46e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->get_one($this->get_param('zkid'), array('task' => $task));
47e8827d73SSzymon Olewniczak    $this->model->task_commentFactory->delete($task_comment);
48c45b82bdSSzymon Olewniczak
4904f149d4SSzymon Olewniczak    $redirect = true;
50e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'comment_edit') {
51e8827d73SSzymon Olewniczak    /** @var bez\mdl\Task_comment $task_comment */
52e8827d73SSzymon Olewniczak    $task_comment = $this->model->task_commentFactory->get_one($this->get_param('zkid'), array('thread' => $thread));
53e8827d73SSzymon Olewniczak
54e8827d73SSzymon Olewniczak    if(count($_POST) === 0) {
55e8827d73SSzymon Olewniczak        $this->tpl->set_values($task_comment->get_assoc());
56c45b82bdSSzymon Olewniczak    } else {
57e8827d73SSzymon Olewniczak        $this->model->task_commentFactory->update_save($task_comment, $_POST);
58e8827d73SSzymon Olewniczak
59e8827d73SSzymon Olewniczak        $anchor   = 'zk' . $task_comment->id;
60e8827d73SSzymon Olewniczak        $redirect = true;
61e8827d73SSzymon Olewniczak    }
62e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_edit') {
63e8827d73SSzymon Olewniczak    //save
64e8827d73SSzymon Olewniczak    if (count($_POST) === 0) {
65e8827d73SSzymon Olewniczak        $this->tpl->set_values($task->get_assoc());
66e8827d73SSzymon Olewniczak    } else {
67e8827d73SSzymon Olewniczak        $this->model->taskFactory->update_save($task, $_POST);
68e8827d73SSzymon Olewniczak        $redirect = true;
69c45b82bdSSzymon Olewniczak    }
70f2c81100SSzymon Olewniczak}
71f2c81100SSzymon Olewniczak
72e8827d73SSzymon Olewniczakif (isset($redirect) && $redirect == true) {
73e8827d73SSzymon Olewniczak    if (isset($anchor)) {
74e8827d73SSzymon Olewniczak        $anchor = '#'.$anchor;
75e8827d73SSzymon Olewniczak    } else {
76e8827d73SSzymon Olewniczak        $anchor = '';
77aa89e6f8SSzymon Olewniczak    }
78e8827d73SSzymon Olewniczak    header("Location: " . $this->url('task', 'tid', $task->id) . $anchor);
79aa89e6f8SSzymon Olewniczak}
80aa89e6f8SSzymon Olewniczak
81e8827d73SSzymon Olewniczak//$template['tid'] = $nparams['tid'];
82e8827d73SSzymon Olewniczak//$template['action'] = isset($nparams['action']) ? $nparams['action'] : '-default';
83e8827d73SSzymon Olewniczak//$template['state'] = isset($nparams['state']) ? $nparams['state'] : '-1';
84e8827d73SSzymon Olewniczak//try {
85e8827d73SSzymon Olewniczak//    $task = $this->model->tasks->get_one($template['tid']);
86e8827d73SSzymon Olewniczak//    $template['task'] = $task;
87e8827d73SSzymon Olewniczak//
88e8827d73SSzymon Olewniczak//    if ($task->issue == '') {
89e8827d73SSzymon Olewniczak//        //remove userts that are subscribents already
90e8827d73SSzymon Olewniczak//        $template['users_to_invite'] = array_diff_key($this->model->users->get_all(), $task->get_subscribents());
91e8827d73SSzymon Olewniczak//    }
92e8827d73SSzymon Olewniczak//
93e8827d73SSzymon Olewniczak//
94e8827d73SSzymon Olewniczak//    if ($task->cause !== NULL && $task->cause !== '') {
95e8827d73SSzymon Olewniczak//        $template['commcause'] = $this->model->commcauses->get_one($task->cause);
96e8827d73SSzymon Olewniczak//    }
97e8827d73SSzymon Olewniczak//
98e8827d73SSzymon Olewniczak//    if ($task->issue !== NULL && $task->issue !== '') {
99e8827d73SSzymon Olewniczak//        $template['issue'] = $this->model->issues->get_one($task->issue);
100e8827d73SSzymon Olewniczak//    }
101e8827d73SSzymon Olewniczak//
102e8827d73SSzymon Olewniczak//
103e8827d73SSzymon Olewniczak//    if ($template['action'] === 'task_change_state') {
104e8827d73SSzymon Olewniczak//        if (count($_POST) > 0) {
105e8827d73SSzymon Olewniczak//            if (isset($_POST['no_evaluation'])) {
106e8827d73SSzymon Olewniczak//                $_POST['reason'] = '';
107e8827d73SSzymon Olewniczak//            }
108e8827d73SSzymon Olewniczak//
109e8827d73SSzymon Olewniczak//            $task->set_state(array(
110e8827d73SSzymon Olewniczak//                        'state' => $nparams['state'],
111e8827d73SSzymon Olewniczak//                        'reason' => $_POST['reason'])
112e8827d73SSzymon Olewniczak//                    );
113e8827d73SSzymon Olewniczak//            $this->model->tasks->save($task);
114e8827d73SSzymon Olewniczak//
115e8827d73SSzymon Olewniczak//            if (isset($template['issue'])) {
116e8827d73SSzymon Olewniczak//                $template['issue']->update_last_activity();
117e8827d73SSzymon Olewniczak//                $this->model->issues->save($template['issue']);
118e8827d73SSzymon Olewniczak//            }
119e8827d73SSzymon Olewniczak//
120e8827d73SSzymon Olewniczak//            $task->mail_notify_subscribents($template['issue'],
121e8827d73SSzymon Olewniczak//                        array('action' => $bezlang['mail_task_change_state']));
122e8827d73SSzymon Olewniczak//
123e8827d73SSzymon Olewniczak//            $redirect = true;
124e8827d73SSzymon Olewniczak//        } else {
125e8827d73SSzymon Olewniczak//            $value = $task->get_assoc();
126e8827d73SSzymon Olewniczak//        }
127e8827d73SSzymon Olewniczak//    } elseif ($template['action'] === 'task_reopen') {
128e8827d73SSzymon Olewniczak//        $task->set_state(array('state' => '0'));
129e8827d73SSzymon Olewniczak//        $this->model->tasks->save($task);
130e8827d73SSzymon Olewniczak//
131e8827d73SSzymon Olewniczak//        if (isset($template['issue'])) {
132e8827d73SSzymon Olewniczak//            $template['issue']->update_last_activity();
133e8827d73SSzymon Olewniczak//            $this->model->issues->save($template['issue']);
134e8827d73SSzymon Olewniczak//        }
135e8827d73SSzymon Olewniczak//
136e8827d73SSzymon Olewniczak//        $task->mail_notify_subscribents($template['issue'],
137e8827d73SSzymon Olewniczak//                        array('action' => $bezlang['mail_task_reopened']));
138e8827d73SSzymon Olewniczak//
139e8827d73SSzymon Olewniczak//
140e8827d73SSzymon Olewniczak//        $redirect = true;
141e8827d73SSzymon Olewniczak//    } elseif($template['action'] === 'task_edit') {
142e8827d73SSzymon Olewniczak//
143e8827d73SSzymon Olewniczak//        $template['users'] = $this->model->users->get_all();
144e8827d73SSzymon Olewniczak//        $template['tasktypes'] = $this->model->tasktypes->get_all();
145e8827d73SSzymon Olewniczak//
146e8827d73SSzymon Olewniczak//        if (isset($template['issue'])) {
147e8827d73SSzymon Olewniczak//            $template['causes'] = $this->model->commcauses->get_all(array(
148e8827d73SSzymon Olewniczak//                'issue' => $template['issue']->id,
149e8827d73SSzymon Olewniczak//                'type' => array('!=', '0'),
150e8827d73SSzymon Olewniczak//            ));
151e8827d73SSzymon Olewniczak//        }
152e8827d73SSzymon Olewniczak//
153e8827d73SSzymon Olewniczak//        if (count($_POST) > 0) {
154e8827d73SSzymon Olewniczak//            //checkboxes
155e8827d73SSzymon Olewniczak//            if (!isset($_POST['all_day_event'])) {
156e8827d73SSzymon Olewniczak//                $_POST['all_day_event'] = '0';
157e8827d73SSzymon Olewniczak//            }
158e8827d73SSzymon Olewniczak//            $task->set_data($_POST);
159e8827d73SSzymon Olewniczak//            //for reason
160e8827d73SSzymon Olewniczak//            //$task->set_state($_POST);
161e8827d73SSzymon Olewniczak//
162e8827d73SSzymon Olewniczak//            $this->model->tasks->save($task);
163e8827d73SSzymon Olewniczak//
164e8827d73SSzymon Olewniczak//            $redirect = true;
165e8827d73SSzymon Olewniczak//        } else {
166e8827d73SSzymon Olewniczak//            $value = $task->get_assoc();
167e8827d73SSzymon Olewniczak//        }
168e8827d73SSzymon Olewniczak//
169e8827d73SSzymon Olewniczak//    } elseif ($template['action'] === 'subscribe') {
170e8827d73SSzymon Olewniczak//			$task->add_subscribent($INFO['client']);
171e8827d73SSzymon Olewniczak//			$this->model->tasks->save($task);
172e8827d73SSzymon Olewniczak//
173e8827d73SSzymon Olewniczak//            header("Location: ?id=bez:task:tid:".$task->id);
174e8827d73SSzymon Olewniczak//
175e8827d73SSzymon Olewniczak//    } elseif ($template['action'] === 'unsubscribe') {
176e8827d73SSzymon Olewniczak//			$task->remove_subscribent($INFO['client']);
177e8827d73SSzymon Olewniczak//			$this->model->tasks->save($task);
178e8827d73SSzymon Olewniczak//
179e8827d73SSzymon Olewniczak//            $this->add_notification($bezlang['unsubscribed_task_com']);
180e8827d73SSzymon Olewniczak//
181e8827d73SSzymon Olewniczak//            $redirect = true;
182e8827d73SSzymon Olewniczak//
183e8827d73SSzymon Olewniczak//    } elseif ($template['action'] === 'invite') {
184e8827d73SSzymon Olewniczak//            $client = $_POST['client'];
185e8827d73SSzymon Olewniczak//
186e8827d73SSzymon Olewniczak//			$state = $task->add_subscribent($client);
187e8827d73SSzymon Olewniczak//            //user wasn't subscribent
188e8827d73SSzymon Olewniczak//            if ($state === true) {
189e8827d73SSzymon Olewniczak//                $this->model->tasks->save($task);
190e8827d73SSzymon Olewniczak//                $task->mail_notify_invite($client);
191e8827d73SSzymon Olewniczak//
192e8827d73SSzymon Olewniczak//                $this->add_notification($this->model->users->get_user_email($client), $bezlang['invitation_has_been_send']);
193e8827d73SSzymon Olewniczak//
194e8827d73SSzymon Olewniczak//                $redirect = true;
195e8827d73SSzymon Olewniczak//            }
196e8827d73SSzymon Olewniczak//
197e8827d73SSzymon Olewniczak//    } elseif($template['action'] === 'task_edit_metadata') {
198e8827d73SSzymon Olewniczak//        $template['users'] = $this->model->users->get_all();
199e8827d73SSzymon Olewniczak//
200e8827d73SSzymon Olewniczak//        if (count($_POST) > 0) {
201e8827d73SSzymon Olewniczak//            $task->set_meta($_POST);
202e8827d73SSzymon Olewniczak//            $this->model->tasks->save($task);
203e8827d73SSzymon Olewniczak//
204e8827d73SSzymon Olewniczak//            $redirect = true;
205e8827d73SSzymon Olewniczak//        } else {
206e8827d73SSzymon Olewniczak//            $value = $task->get_assoc();
207e8827d73SSzymon Olewniczak//            $value['date'] = date('Y-m-d', (int)$value['date']);
208e8827d73SSzymon Olewniczak//            $value['close_date'] = date('Y-m-d', (int)$value['close_date']);
209e8827d73SSzymon Olewniczak//        }
210e8827d73SSzymon Olewniczak//    }
211e8827d73SSzymon Olewniczak//
212e8827d73SSzymon Olewniczak//    if ($redirect) {
213e8827d73SSzymon Olewniczak//        header("Location: ?id=bez:task:tid:".$template['tid']);
214e8827d73SSzymon Olewniczak//    }
215e8827d73SSzymon Olewniczak//} catch (ValidationException $e) {
216e8827d73SSzymon Olewniczak//	$errors = $e->get_errors();
217e8827d73SSzymon Olewniczak//	$value = $_POST;
218e8827d73SSzymon Olewniczak//} catch (DBException $e) {
219e8827d73SSzymon Olewniczak//    echo nl2br($e);
220e8827d73SSzymon Olewniczak//}
221e8827d73SSzymon Olewniczak
222