xref: /plugin/bez/ctl/thread_report.php (revision fe5d6d1ebd253c129098b67fff8cf438a54d8650)
1de02284cSSzymon Olewniczak<?php
2de02284cSSzymon Olewniczak
3de02284cSSzymon Olewniczakuse \dokuwiki\plugin\bez;
4de02284cSSzymon Olewniczak
5de02284cSSzymon Olewniczakif ($this->model->acl->get_level() < BEZ_AUTH_USER) {
6de02284cSSzymon Olewniczak    throw new bez\meta\PermissionDeniedException();
7de02284cSSzymon Olewniczak}
8de02284cSSzymon Olewniczak
9de02284cSSzymon Olewniczak
10de02284cSSzymon Olewniczakif (isset($nparams['id']) && is_numeric($nparams['id'])) {
11de02284cSSzymon Olewniczak	$thread_id = (int)$nparams['id'];
12de02284cSSzymon Olewniczak	/** @var \dokuwiki\plugin\bez\mdl\Thread $thread */
13de02284cSSzymon Olewniczak	$thread = $this->model->threadFactory->get_one($thread_id);
14de02284cSSzymon Olewniczak
15de02284cSSzymon Olewniczak	$tpl->set('thread', $thread);
16de02284cSSzymon Olewniczak}
17de02284cSSzymon Olewniczak//else {
18de02284cSSzymon Olewniczak	//$template['thread'] = $this->model->issues->create_dummy_object();
19de02284cSSzymon Olewniczak	//$template['priority'] = 'None';
20de02284cSSzymon Olewniczak//}
21de02284cSSzymon Olewniczak
22de02284cSSzymon Olewniczak//$action = '';
23de02284cSSzymon Olewniczak//if (isset($nparams['action'])) {
24de02284cSSzymon Olewniczak//	$action = $nparams['action'];
25de02284cSSzymon Olewniczak//}
26de02284cSSzymon Olewniczak
27*fe5d6d1eSSzymon Olewniczak//try {
28*fe5d6d1eSSzymon Olewniczakif ($this->get_param('action') == 'edit') {
29de02284cSSzymon Olewniczak    if (!isset($thread)) {
30de02284cSSzymon Olewniczak        throw new Exception('there is now row with given id');
31de02284cSSzymon Olewniczak    }
32de02284cSSzymon Olewniczak    //$template['form_action'] = 'update';
33de02284cSSzymon Olewniczak    //$value = $thread->get_assoc();
34de02284cSSzymon Olewniczak    $this->tpl->set_values($thread->get_assoc());
35*fe5d6d1eSSzymon Olewniczak} elseif ($this->get_param('action') == 'update') {
36de02284cSSzymon Olewniczak    //$template['form_action'] = 'update';
37de02284cSSzymon Olewniczak
38de02284cSSzymon Olewniczak    $prev_coordiantor = $thread->coordinator;
39de02284cSSzymon Olewniczak
40de02284cSSzymon Olewniczak    $thread->set_data($_POST);
41de02284cSSzymon Olewniczak
42de02284cSSzymon Olewniczak    $thread->add_participant($thread->coordinator);
43de02284cSSzymon Olewniczak
44de02284cSSzymon Olewniczak    //save to get ID!!!
45de02284cSSzymon Olewniczak    $this->model->threadFactory->save($thread);
46de02284cSSzymon Olewniczak
47de02284cSSzymon Olewniczak    if ($thread->coordinator !== '-proposal' &&
48de02284cSSzymon Olewniczak        $INFO['client'] !== $thread->coordinator &&
49de02284cSSzymon Olewniczak        $thread->coordinator != $prev_coordiantor) {
50de02284cSSzymon Olewniczak        //coordinator becomes subscribent automaticly
51de02284cSSzymon Olewniczak        $thread->add_subscribent($thread->coordinator);
52de02284cSSzymon Olewniczak        $this->model->threadFactory->save($thread);
53de02284cSSzymon Olewniczak
54de02284cSSzymon Olewniczak        $thread->mail_inform_coordinator();
55de02284cSSzymon Olewniczak    }
56de02284cSSzymon Olewniczak
57de02284cSSzymon Olewniczak    header('Location: ?id='.$this->id('thread', 'id', $thread->id));
58*fe5d6d1eSSzymon Olewniczak} elseif ($this->get_param('action') == 'add') {
59de02284cSSzymon Olewniczak    //$template['form_action'] = 'add';
60de02284cSSzymon Olewniczak
61de02284cSSzymon Olewniczak    $defaults = array();
62de02284cSSzymon Olewniczak    if ($this->model->acl->get_level() >= BEZ_AUTH_LEADER) {
63de02284cSSzymon Olewniczak        $defaults['coordinator'] = $_POST['coordinator'];
64de02284cSSzymon Olewniczak    }
65de02284cSSzymon Olewniczak    $thread = $this->model->threadFactory->create_object($defaults);
66de02284cSSzymon Olewniczak
67de02284cSSzymon Olewniczak    $data = array(
68de02284cSSzymon Olewniczak//            'type' => $_POST['type'],
69de02284cSSzymon Olewniczak        'title' => $_POST['title'],
70de02284cSSzymon Olewniczak        'content' => $_POST['content']
71de02284cSSzymon Olewniczak    );
72de02284cSSzymon Olewniczak    $thread->set_data($data);
73de02284cSSzymon Olewniczak
74de02284cSSzymon Olewniczak    try {
75de02284cSSzymon Olewniczak        $this->model->threadFactory->beginTransaction();
76de02284cSSzymon Olewniczak
77de02284cSSzymon Olewniczak        $this->model->threadFactory->save($thread);
78de02284cSSzymon Olewniczak
79de02284cSSzymon Olewniczak        $thread->add_label($_POST['label']);
80de02284cSSzymon Olewniczak
81de02284cSSzymon Olewniczak        $thread->set_participant_flags($thread->original_poster, array('original_poster', 'subscribent'));
82de02284cSSzymon Olewniczak        if($thread->coordinator != null) {
83de02284cSSzymon Olewniczak            $thread->set_participant_flags($thread->coordinator, array('coordinator', 'subscribent'));
84de02284cSSzymon Olewniczak        }
85de02284cSSzymon Olewniczak        $this->model->threadFactory->commitTransaction();
86de02284cSSzymon Olewniczak    } catch(Exception $exception) {
87de02284cSSzymon Olewniczak        $this->model->threadFactory->rollbackTransaction();
88de02284cSSzymon Olewniczak    }
89de02284cSSzymon Olewniczak
90de02284cSSzymon Olewniczak
91de02284cSSzymon Olewniczak//        if ($thread->coordinator !== '-proposal' &&
92de02284cSSzymon Olewniczak//            $INFO['client'] !== $thread->coordinator) {
93de02284cSSzymon Olewniczak//            //coordinator becomes subscribent automaticly
94de02284cSSzymon Olewniczak//            $thread->add_subscribent($issue->coordinator);
95de02284cSSzymon Olewniczak//            $this->model->issues->save($thread);
96de02284cSSzymon Olewniczak//
97de02284cSSzymon Olewniczak//            $thread->mail_inform_coordinator();
98de02284cSSzymon Olewniczak//        }
99de02284cSSzymon Olewniczak
100de02284cSSzymon Olewniczak
101de02284cSSzymon Olewniczak    header('Location: ?id='.$this->id('thread', 'id', $thread->id));
102de02284cSSzymon Olewniczak
103de02284cSSzymon Olewniczak}
104de02284cSSzymon Olewniczak//	else {
105de02284cSSzymon Olewniczak//		$template['form_action'] = 'add';
106de02284cSSzymon Olewniczak//	}
107de02284cSSzymon Olewniczak
108*fe5d6d1eSSzymon Olewniczak//} catch (bez\meta\ValidationException $e) {
109*fe5d6d1eSSzymon Olewniczak//	$errors = $e->get_errors();
110*fe5d6d1eSSzymon Olewniczak//	$value = $_POST;
111*fe5d6d1eSSzymon Olewniczak//}
112de02284cSSzymon Olewniczak
113de02284cSSzymon Olewniczak//$template['issuetypes'] = $this->model->issuetypes->get_all();
114de02284cSSzymon Olewniczak$this->tpl->set('users', $this->model->userFactory->get_all());
115de02284cSSzymon Olewniczak$this->tpl->set('labels', $this->model->labelFactory->get_all());