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