xref: /plugin/bez/ctl/task_form.php (revision 023e646d59850ae23af8502a8614e36014a02206)
1<?php
2include_once DOKU_PLUGIN."bez/models/issues.php";
3include_once DOKU_PLUGIN."bez/models/tasks.php";
4include_once DOKU_PLUGIN."bez/models/causes.php";
5include_once DOKU_PLUGIN."bez/models/users.php";
6include_once DOKU_PLUGIN."bez/models/tasktypes.php";
7include_once DOKU_PLUGIN."bez/models/bezcache.php";
8
9$causo = new Causes();
10$bezcache = new Bezcache();
11
12$issue_id = (int)$nparams['id'];
13
14/*casue*/
15$cause_id = '';
16if (isset($nparams['cid']) && $nparams['cid'] != '') {
17	$cause_id = (int)$nparams['cid'];
18	$template['cause'] = $causo->join($causo->getone($cause_id));
19}
20
21/*edycja*/
22if (isset($nparams['tid'])) {
23	$action = $nparams['action'];
24	$tid = (int)$nparams['tid'];
25
26	$task = $this->model->tasks->get_one($tid);
27	$template['auth_level'] = $task->get_level();
28
29	if (isset($nparams['id'])) {
30		$template['causes'] = $causo->get($issue_id);
31	}
32
33	if (!$action)
34		$action = 'edit';
35
36	if ($action == 'edit') {
37		$value = $task->get_assoc();
38	} else if ($action == 'update') {
39		try {
40			//checkboxes
41			if (!isset($_POST['all_day_event'])) {
42				$_POST['all_day_event'] = '0';
43			}
44			$task->set_data($_POST);
45			$task->set_acl($_POST);
46
47			if ($task->any_errors()) {
48				$errors = $task->get_errors();
49				$value = $_POST;
50			} else {
51				$this->model->tasks->save($task);
52				$bezcache->task_toupdate($task->id);
53
54
55				$cause_id = $task->cause;
56				$issue_id = $task->issue;
57				if ($cause_id == NULL) {
58					header("Location: ?id=bez:issue_task:id:$issue_id:tid:$tid");
59				} else {
60					header("Location: ?id=bez:issue_cause_task:id:$issue_id:cid:$cause_id:tid:$tid");
61				}
62			}
63		} catch (Exception $e) {
64			echo nl2br($e);
65		}
66	}
67
68	$template['task_button'] = $bezlang['change_task_button'];
69
70	if ($task->cause == NULL) {
71		$template['task_action'] = $this->id('task_form', 'id', $task->issue, 'tid', $task->id, 'action', 'update');
72	} else {
73		$template['task_action'] = $this->id('task_form', 'id', $task->issue, 'cid', $task->cause, 'tid', $task->id, 'action', 'update');
74	}
75
76
77
78/*dodawania*/
79} else {
80	$defaults = array('issue' => $issue_id, 'cause' => $cause_id, 'tasktype' => $_POST['tasktype']);
81
82	$task = $this->model->tasks->create_object($defaults);
83
84	$template['auth_level'] = $task->get_level();
85
86
87
88	if (count($_POST) > 0) {
89		try {
90			//checkboxes
91			if (!isset($_POST['all_day_event'])) {
92				$_POST['all_day_event'] = '0';
93			}
94			$task->set_data($_POST);
95			if ($task->any_errors()) {
96				$errors = $task->get_errors();
97				$value = $_POST;
98			} else {
99				$tid = $this->model->tasks->save($task);
100				$issue_id = $task->issue;
101				$cause_id = $task->cause;
102
103				$title = 'Dodano zadanie';
104				$exec = $task->executor;
105				$subject = "[$conf[title]] $title: #$issue_id #z$tid";
106				$to = $this->model->users->get_user_full_name($exec).' <'.$this->model->users->get_user_email($exec).'>';
107				if ($cause_id == '') {
108					$body = "$uri?id=".$this->id('issue_task', 'id', $issue_id, 'tid', $tid);
109				} else {
110					$body = "$uri?id=".$this->id('issue_cause_task', 'id', $issue_id, 'cid', $cause_id, 'tid', $tid);
111				}
112				$this->helper->mail($to, $subject, $body);
113
114				if ($cause_id == '') {
115					header("Location: ?id=bez:issue_task:id:$issue_id:tid:$tid");
116				} else {
117					header("Location: ?id=bez:issue_cause_task:id:$issue_id:cid:$cause_id:tid:$tid");
118				}
119			}
120		} catch (Exception $e) {
121			echo nl2br($e);
122		}
123	} else {
124		$value['all_day_event'] = '1';
125	}
126
127	$template['task_button'] = $bezlang['add'];
128	if ($task->cause == NULL) {
129		$template['task_action'] = $this->id('task_form', 'id', $task->issue, 'action', 'add');
130	} else {
131		$template['task_action'] = $this->id('task_form', 'id', $task->issue, 'cid', $task->cause, 'action', 'add');
132	}
133
134}
135
136if (isset($nparams['id'])) {
137	$isso = new Issues();
138	$template['issue'] = $isso->get($issue_id);
139}
140
141$template['users'] = $this->model->users->get_all();
142$template['tasktypes'] = $this->model->tasktypes->get_all();
143