xref: /plugin/bez/ctl/task.php (revision 48ab8737be612e4552ba4d7b8e87354e2328dafc)
1<?php
2
3if (!isset($nparams['tid'])) {
4    header('Location: ?id=bez:tasks');
5}
6$template['tid'] = $nparams['tid'];
7$template['action'] = isset($nparams['action']) ? $nparams['action'] : '-default';
8$template['state'] = isset($nparams['state']) ? $nparams['state'] : '-1';
9try {
10    $task = $this->model->tasks->get_one($template['tid']);
11    $template['task'] = $task;
12
13
14    if ($task->cause !== NULL && $task->cause !== '') {
15        $template['commcause'] = $this->model->commcauses->get_one($task->cause);
16    }
17
18    if ($task->issue !== NULL && $task->issue !== '') {
19        $template['issue'] = $this->model->issues->get_one($task->issue);
20    }
21
22
23    if ($template['action'] === 'task_change_state') {
24        if (count($_POST) > 0) {
25            $task->set_state(array(
26                        'state' => $nparams['state'],
27                        'reason' => $_POST['reason'])
28                    );
29            $this->model->tasks->save($task);
30
31            if (isset($template['issue'])) {
32                $template['issue']->update_last_activity();
33                $this->model->issues->save($template['issue']);
34            }
35
36            $redirect = true;
37        } else {
38            $value = $task->get_assoc();
39        }
40    } elseif ($template['action'] === 'task_reopen') {
41        $task->set_state(array('state' => '0'));
42        $this->model->tasks->save($task);
43
44        if (isset($template['issue'])) {
45            $template['issue']->update_last_activity();
46            $this->model->issues->save($template['issue']);
47        }
48
49        $redirect = true;
50    } elseif($template['action'] === 'task_edit') {
51        $template['auth_level'] = $task->get_level();
52
53        $template['users'] = $this->model->users->get_all();
54        $template['tasktypes'] = $this->model->tasktypes->get_all();
55
56        if (isset($template['issue'])) {
57            $template['causes'] = $this->model->commcauses->get_all(array(
58                'issue' => $template['issue']->id,
59                'type' => array('!=', '0'),
60            ));
61        }
62
63        if (count($_POST) > 0) {
64            //checkboxes
65            if (!isset($_POST['all_day_event'])) {
66                $_POST['all_day_event'] = '0';
67            }
68            $task->set_data($_POST);
69            //for reason
70            $task->set_state($_POST);
71
72            $this->model->tasks->save($task);
73                //~ $bezcache = new Bezcache();
74                //~ $bezcache->task_toupdate($task->id);
75
76            header("Location: ?id=bez:task:tid:".$task->id);
77        } else {
78            $value = $task->get_assoc();
79        }
80    }
81
82    if ($redirect) {
83        header("Location: ?id=bez:task:tid:".$template['tid']);
84    }
85
86} catch (DBException $e) {
87    echo nl2br($e);
88}
89
90