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