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());