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