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