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