xref: /plugin/bez/ctl/task.php (revision c45b82bd7652392a33a65dbf693208bcdf28ad29)
1aa89e6f8SSzymon Olewniczak<?php
2aa89e6f8SSzymon Olewniczak
3aa89e6f8SSzymon Olewniczakif (!isset($nparams['tid'])) {
4aa89e6f8SSzymon Olewniczak    header('Location: ?id=bez:tasks');
5aa89e6f8SSzymon Olewniczak}
6aa89e6f8SSzymon Olewniczak$template['tid'] = $nparams['tid'];
7f2c81100SSzymon Olewniczak$template['action'] = isset($nparams['action']) ? $nparams['action'] : '-default';
8f2c81100SSzymon Olewniczak$template['state'] = isset($nparams['state']) ? $nparams['state'] : '-1';
9aa89e6f8SSzymon Olewniczaktry {
10aa89e6f8SSzymon Olewniczak    $task = $this->model->tasks->get_one($template['tid']);
11aa89e6f8SSzymon Olewniczak    $template['task'] = $task;
12aa89e6f8SSzymon Olewniczak
13aa89e6f8SSzymon Olewniczak
14f2c81100SSzymon Olewniczak    if ($task->cause !== NULL && $task->cause !== '') {
15f2c81100SSzymon Olewniczak        $template['commcause'] = $this->model->commcauses->get_one($task->cause);
16f2c81100SSzymon Olewniczak    }
17aa89e6f8SSzymon Olewniczak
18f2c81100SSzymon Olewniczak    if ($task->issue !== NULL && $task->issue !== '') {
19f2c81100SSzymon Olewniczak        $template['issue'] = $this->model->issues->get_one($task->issue);
20f2c81100SSzymon Olewniczak    }
21f2c81100SSzymon Olewniczak
22f2c81100SSzymon Olewniczak
23f2c81100SSzymon Olewniczak    if ($template['action'] === 'task_change_state') {
24f2c81100SSzymon Olewniczak        if (count($_POST) > 0) {
25ef159648SSzymon Olewniczak            if (isset($_POST['no_evaluation'])) {
26ef159648SSzymon Olewniczak                $_POST['reason'] = '';
27ef159648SSzymon Olewniczak            }
28ef159648SSzymon Olewniczak
29aa89e6f8SSzymon Olewniczak            $task->set_state(array(
30aa89e6f8SSzymon Olewniczak                        'state' => $nparams['state'],
31aa89e6f8SSzymon Olewniczak                        'reason' => $_POST['reason'])
32aa89e6f8SSzymon Olewniczak                    );
33aa89e6f8SSzymon Olewniczak            $this->model->tasks->save($task);
34aa89e6f8SSzymon Olewniczak
35f2c81100SSzymon Olewniczak            if (isset($template['issue'])) {
36f2c81100SSzymon Olewniczak                $template['issue']->update_last_activity();
37f2c81100SSzymon Olewniczak                $this->model->issues->save($template['issue']);
38f2c81100SSzymon Olewniczak            }
39aa89e6f8SSzymon Olewniczak
40aa89e6f8SSzymon Olewniczak            $redirect = true;
41f2c81100SSzymon Olewniczak        } else {
42f2c81100SSzymon Olewniczak            $value = $task->get_assoc();
43f2c81100SSzymon Olewniczak        }
44f2c81100SSzymon Olewniczak    } elseif ($template['action'] === 'task_reopen') {
45f2c81100SSzymon Olewniczak        $task->set_state(array('state' => '0'));
46f2c81100SSzymon Olewniczak        $this->model->tasks->save($task);
47f2c81100SSzymon Olewniczak
48f2c81100SSzymon Olewniczak        if (isset($template['issue'])) {
49f2c81100SSzymon Olewniczak            $template['issue']->update_last_activity();
50f2c81100SSzymon Olewniczak            $this->model->issues->save($template['issue']);
51aa89e6f8SSzymon Olewniczak        }
52aa89e6f8SSzymon Olewniczak
538c9d5139SSzymon Olewniczak        $notify_users = array();
548c9d5139SSzymon Olewniczak        if ($task->reporter !== $this->model->user_nick) {
558c9d5139SSzymon Olewniczak            //prevent duplicates
568c9d5139SSzymon Olewniczak            $notify_users[$task->reporter] = $task->reporter;
578c9d5139SSzymon Olewniczak        }
588c9d5139SSzymon Olewniczak        if ($task->executor !== $this->model->user_nick) {
598c9d5139SSzymon Olewniczak            //prevent duplicates
608c9d5139SSzymon Olewniczak            $notify_users[$task->executor] = $task->executor;
618c9d5139SSzymon Olewniczak        }
628c9d5139SSzymon Olewniczak
638c9d5139SSzymon Olewniczak        $task->mail_notify_add($template['issue'], $notify_users,
648c9d5139SSzymon Olewniczak                                array('action' => $bezlang['mail_task_reopened']));
658c9d5139SSzymon Olewniczak
66f2c81100SSzymon Olewniczak        $redirect = true;
67f2c81100SSzymon Olewniczak    } elseif($template['action'] === 'task_edit') {
68f2c81100SSzymon Olewniczak
69f2c81100SSzymon Olewniczak        $template['users'] = $this->model->users->get_all();
70f2c81100SSzymon Olewniczak        $template['tasktypes'] = $this->model->tasktypes->get_all();
71f2c81100SSzymon Olewniczak
72f2c81100SSzymon Olewniczak        if (isset($template['issue'])) {
73f2c81100SSzymon Olewniczak            $template['causes'] = $this->model->commcauses->get_all(array(
74f2c81100SSzymon Olewniczak                'issue' => $template['issue']->id,
75f2c81100SSzymon Olewniczak                'type' => array('!=', '0'),
76f2c81100SSzymon Olewniczak            ));
77aa89e6f8SSzymon Olewniczak        }
78aa89e6f8SSzymon Olewniczak
79f2c81100SSzymon Olewniczak        if (count($_POST) > 0) {
80f2c81100SSzymon Olewniczak            //checkboxes
81f2c81100SSzymon Olewniczak            if (!isset($_POST['all_day_event'])) {
82f2c81100SSzymon Olewniczak                $_POST['all_day_event'] = '0';
83f2c81100SSzymon Olewniczak            }
84f2c81100SSzymon Olewniczak            $task->set_data($_POST);
85f2c81100SSzymon Olewniczak            //for reason
866271e095SSzymon Olewniczak            //$task->set_state($_POST);
87f2c81100SSzymon Olewniczak
88f2c81100SSzymon Olewniczak            $this->model->tasks->save($task);
89f2c81100SSzymon Olewniczak
90f2c81100SSzymon Olewniczak            header("Location: ?id=bez:task:tid:".$task->id);
91f2c81100SSzymon Olewniczak        } else {
92f2c81100SSzymon Olewniczak            $value = $task->get_assoc();
93f2c81100SSzymon Olewniczak        }
94*c45b82bdSSzymon Olewniczak
95*c45b82bdSSzymon Olewniczak    } elseif($template['action'] === 'task_edit_metadata') {
96*c45b82bdSSzymon Olewniczak        $template['users'] = $this->model->users->get_all();
97*c45b82bdSSzymon Olewniczak
98*c45b82bdSSzymon Olewniczak        if (count($_POST) > 0) {
99*c45b82bdSSzymon Olewniczak            $task->set_meta($_POST);
100*c45b82bdSSzymon Olewniczak            $this->model->tasks->save($task);
101*c45b82bdSSzymon Olewniczak
102*c45b82bdSSzymon Olewniczak            header("Location: ?id=bez:task:tid:".$task->id);
103*c45b82bdSSzymon Olewniczak        } else {
104*c45b82bdSSzymon Olewniczak            $value = $task->get_assoc();
105*c45b82bdSSzymon Olewniczak            $value['date'] = date('Y-m-d', (int)$value['date']);
106*c45b82bdSSzymon Olewniczak            $value['close_date'] = date('Y-m-d', (int)$value['close_date']);
107*c45b82bdSSzymon Olewniczak        }
108f2c81100SSzymon Olewniczak    }
109f2c81100SSzymon Olewniczak
110f2c81100SSzymon Olewniczak    if ($redirect) {
111f2c81100SSzymon Olewniczak        header("Location: ?id=bez:task:tid:".$template['tid']);
112aa89e6f8SSzymon Olewniczak    }
1136271e095SSzymon Olewniczak} catch (ValidationException $e) {
1146271e095SSzymon Olewniczak	$errors = $e->get_errors();
1156271e095SSzymon Olewniczak	$value = $_POST;
11619440e21SSzymon Olewniczak} catch (DBException $e) {
11719440e21SSzymon Olewniczak    echo nl2br($e);
118aa89e6f8SSzymon Olewniczak}
119aa89e6f8SSzymon Olewniczak
120