1fe5d6d1eSSzymon Olewniczak<?php 253df74e7SSzymon Olewniczak/** @var action_plugin_bez $this */ 3fe5d6d1eSSzymon Olewniczak 4fe5d6d1eSSzymon Olewniczakuse \dokuwiki\plugin\bez; 5fe5d6d1eSSzymon Olewniczak 6a0cd8c78SSzymon Olewniczakif ($this->model->get_level() < BEZ_AUTH_USER) { 753df74e7SSzymon Olewniczak throw new bez\meta\PermissionDeniedException(); 853df74e7SSzymon Olewniczak} 953df74e7SSzymon Olewniczak 10fe5d6d1eSSzymon Olewniczakif ($this->get_param('id') == '') { 118a638198SSzymon Olewniczak header('Location: ' . $this->url('threads')); 12fe5d6d1eSSzymon Olewniczak} 13fe5d6d1eSSzymon Olewniczak 148a638198SSzymon Olewniczak/** @var bez\mdl\Thread $thread */ 15fe5d6d1eSSzymon Olewniczak$thread = $this->model->threadFactory->get_one($this->get_param('id')); 1653df74e7SSzymon Olewniczak 1753df74e7SSzymon Olewniczakif ($thread->acl_of('id') < BEZ_PERMISSION_VIEW) { 1853df74e7SSzymon Olewniczak throw new bez\meta\PermissionDeniedException(); 1953df74e7SSzymon Olewniczak} 2053df74e7SSzymon Olewniczak 217fbf4c39SSzymon Olewniczak$this->tpl->set('thread', $thread); 22f7519ef1SSzymon Olewniczakif ($thread->type == 'project') { 23f7519ef1SSzymon Olewniczak $this->tpl->set('lang_suffix', '_project'); 24f7519ef1SSzymon Olewniczak} 25*786db852SSzymon Olewniczak 26*786db852SSzymon Olewniczak$thread_comments = iterator_to_array($this->model->thread_commentFactory->get_from_thread($thread)); 27*786db852SSzymon Olewniczak$tasks = $this->model->taskFactory->get_from_thread($thread); 28*786db852SSzymon Olewniczak 29*786db852SSzymon Olewniczak$timeline = array_merge($thread_comments, $tasks['corrections']); 30*786db852SSzymon Olewniczakusort($timeline, function($a, $b) { 31*786db852SSzymon Olewniczak if ($a->create_date == $b->create_date) { 32*786db852SSzymon Olewniczak return 0; 33*786db852SSzymon Olewniczak } 34*786db852SSzymon Olewniczak return ($a->create_date < $b->create_date) ? -1 : 1; 35*786db852SSzymon Olewniczak}); 36*786db852SSzymon Olewniczak 37*786db852SSzymon Olewniczak$this->tpl->set('timeline', $timeline); 38*786db852SSzymon Olewniczak$this->tpl->set('tasks', $tasks); 39e8827d73SSzymon Olewniczak$this->tpl->set('task_programs', $this->model->task_programFactory->get_all()); 408a638198SSzymon Olewniczak 41a0cd8c78SSzymon Olewniczak/** @var bez\mdl\Thread_comment $thread_comment */ 42a0cd8c78SSzymon Olewniczak$thread_comment = $this->model->thread_commentFactory->create_object(array('thread' => $thread)); 43a0cd8c78SSzymon Olewniczak$this->tpl->set('thread_comment', $thread_comment); 448a638198SSzymon Olewniczak 458a638198SSzymon Olewniczakif ($this->get_param('action') == 'commcause_add') { 468a638198SSzymon Olewniczak 478a638198SSzymon Olewniczak $this->model->thread_commentFactory->initial_save($thread_comment, $_POST); 488a638198SSzymon Olewniczak 498a638198SSzymon Olewniczak $anchor = 'k'.$thread_comment->id; 508a638198SSzymon Olewniczak $redirect = true; 518a638198SSzymon Olewniczak 528a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'subscribe') { 538a638198SSzymon Olewniczak 548a638198SSzymon Olewniczak $thread->set_participant_flags($this->model->user_nick, array('subscribent')); 558a638198SSzymon Olewniczak $redirect = true; 568a638198SSzymon Olewniczak 578a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'unsubscribe') { 588a638198SSzymon Olewniczak 598a638198SSzymon Olewniczak $thread->remove_participant_flags($this->model->user_nick, array('subscribent')); 608a638198SSzymon Olewniczak $this->add_notification($this->getLang('unsubscribed_com')); 618a638198SSzymon Olewniczak $redirect = true; 628a638198SSzymon Olewniczak 638a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'invite') { 648a638198SSzymon Olewniczak $client = $_POST['client']; 658a638198SSzymon Olewniczak 66e8827d73SSzymon Olewniczak $thread->invite($client); 67e8827d73SSzymon Olewniczak 688a638198SSzymon Olewniczak $this->add_notification($this->model->userFactory->get_user_email($client), $this->getLang('invitation_has_been_send')); 698a638198SSzymon Olewniczak 708a638198SSzymon Olewniczak $redirect = true; 718a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_delete') { 728a638198SSzymon Olewniczak /** @var bez\mdl\Thread_comment $thread_comment */ 738a638198SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 748a638198SSzymon Olewniczak $this->model->thread_commentFactory->delete($thread_comment); 758a638198SSzymon Olewniczak 768a638198SSzymon Olewniczak $redirect = true; 778a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_edit') { 788a638198SSzymon Olewniczak /** @var bez\mdl\Thread_comment $thread_comment */ 798a638198SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 808a638198SSzymon Olewniczak 818a638198SSzymon Olewniczak if(count($_POST) === 0) { 828a638198SSzymon Olewniczak $this->tpl->set_values($thread_comment->get_assoc()); 838a638198SSzymon Olewniczak } else { 848a638198SSzymon Olewniczak $this->model->thread_commentFactory->update_save($thread_comment, $_POST); 858a638198SSzymon Olewniczak 868a638198SSzymon Olewniczak $anchor = 'k' . $thread_comment->id; 878a638198SSzymon Olewniczak $redirect = true; 888a638198SSzymon Olewniczak } 89e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_add') { 90e8827d73SSzymon Olewniczak 91e8827d73SSzymon Olewniczak $defaults = array('thread' => $thread); 92e8827d73SSzymon Olewniczak 93e8827d73SSzymon Olewniczak if ($this->get_param('kid') != '') { 94e8827d73SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 95e8827d73SSzymon Olewniczak $defaults['thread_comment'] = $thread_comment; 96e8827d73SSzymon Olewniczak } 978a638198SSzymon Olewniczak /** @var bez\mdl\Task $task */ 98e8827d73SSzymon Olewniczak $task = $this->model->taskFactory->create_object($defaults); 998a638198SSzymon Olewniczak $this->tpl->set('task', $task); 1008a638198SSzymon Olewniczak 1018a638198SSzymon Olewniczak //save 1028a638198SSzymon Olewniczak if (count($_POST) > 0) { 1038a638198SSzymon Olewniczak $this->model->taskFactory->initial_save($task, $_POST); 1048a638198SSzymon Olewniczak 1058a638198SSzymon Olewniczak $anchor = 'z' . $task->id; 1068a638198SSzymon Olewniczak $redirect = true; 1078a638198SSzymon Olewniczak } 1088a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_edit') { 1098a638198SSzymon Olewniczak /** @var bez\mdl\Task $task */ 1108a638198SSzymon Olewniczak $task = $this->model->taskFactory->get_one($this->get_param('tid'), array('thread' => $thread)); 1118a638198SSzymon Olewniczak $this->tpl->set('task', $task); 1128a638198SSzymon Olewniczak 1138a638198SSzymon Olewniczak //save 1148a638198SSzymon Olewniczak if (count($_POST) === 0) { 1158a638198SSzymon Olewniczak $this->tpl->set_values($task->get_assoc()); 1168a638198SSzymon Olewniczak } else { 1178a638198SSzymon Olewniczak $this->model->taskFactory->update_save($task, $_POST); 1188a638198SSzymon Olewniczak 1198a638198SSzymon Olewniczak $anchor = 'z' . $task->id; 1208a638198SSzymon Olewniczak $redirect = true; 1218a638198SSzymon Olewniczak } 1228a638198SSzymon Olewniczak} 1238a638198SSzymon Olewniczak 1248a638198SSzymon Olewniczakif (isset($redirect) && $redirect == true) { 1258a638198SSzymon Olewniczak if (isset($anchor)) { 1268a638198SSzymon Olewniczak $anchor = '#'.$anchor; 1278a638198SSzymon Olewniczak } else { 1288a638198SSzymon Olewniczak $anchor = ''; 1298a638198SSzymon Olewniczak } 1308a638198SSzymon Olewniczak header('Location: ' . $this->url('thread', 'id', $thread->id) . $anchor); 1318a638198SSzymon Olewniczak} 132