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} 25786db852SSzymon Olewniczak 26786db852SSzymon Olewniczak$thread_comments = iterator_to_array($this->model->thread_commentFactory->get_from_thread($thread)); 27786db852SSzymon Olewniczak$tasks = $this->model->taskFactory->get_from_thread($thread); 28786db852SSzymon Olewniczak 29786db852SSzymon Olewniczak$timeline = array_merge($thread_comments, $tasks['corrections']); 30786db852SSzymon Olewniczakusort($timeline, function($a, $b) { 31786db852SSzymon Olewniczak if ($a->create_date == $b->create_date) { 32786db852SSzymon Olewniczak return 0; 33786db852SSzymon Olewniczak } 34786db852SSzymon Olewniczak return ($a->create_date < $b->create_date) ? -1 : 1; 35786db852SSzymon Olewniczak}); 36786db852SSzymon Olewniczak 37786db852SSzymon Olewniczak$this->tpl->set('timeline', $timeline); 38786db852SSzymon 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; 71*b331b892SSzymon Olewniczak} elseif ($this->get_param('action') == 'participant_remove') { 72*b331b892SSzymon Olewniczak $user_id = $this->get_param('user_id'); 73*b331b892SSzymon Olewniczak $thread->remove_participant($user_id); 74*b331b892SSzymon Olewniczak 75*b331b892SSzymon Olewniczak $name = $this->model->userFactory->get_user_full_name($user_id); 76*b331b892SSzymon Olewniczak $notif = sprintf($this->getLang('participant_removed'), $name); 77*b331b892SSzymon Olewniczak $this->add_notification($notif); 78*b331b892SSzymon Olewniczak 79*b331b892SSzymon Olewniczak $redirect = true; 80*b331b892SSzymon Olewniczak 818a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_delete') { 828a638198SSzymon Olewniczak /** @var bez\mdl\Thread_comment $thread_comment */ 838a638198SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 848a638198SSzymon Olewniczak $this->model->thread_commentFactory->delete($thread_comment); 858a638198SSzymon Olewniczak 868a638198SSzymon Olewniczak $redirect = true; 878a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_edit') { 888a638198SSzymon Olewniczak /** @var bez\mdl\Thread_comment $thread_comment */ 898a638198SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 908a638198SSzymon Olewniczak 918a638198SSzymon Olewniczak if(count($_POST) === 0) { 928a638198SSzymon Olewniczak $this->tpl->set_values($thread_comment->get_assoc()); 938a638198SSzymon Olewniczak } else { 948a638198SSzymon Olewniczak $this->model->thread_commentFactory->update_save($thread_comment, $_POST); 958a638198SSzymon Olewniczak 968a638198SSzymon Olewniczak $anchor = 'k' . $thread_comment->id; 978a638198SSzymon Olewniczak $redirect = true; 988a638198SSzymon Olewniczak } 99e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_add') { 100e8827d73SSzymon Olewniczak 101e8827d73SSzymon Olewniczak $defaults = array('thread' => $thread); 102e8827d73SSzymon Olewniczak 103e8827d73SSzymon Olewniczak if ($this->get_param('kid') != '') { 104e8827d73SSzymon Olewniczak $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread)); 105e8827d73SSzymon Olewniczak $defaults['thread_comment'] = $thread_comment; 106e8827d73SSzymon Olewniczak } 1078a638198SSzymon Olewniczak /** @var bez\mdl\Task $task */ 108e8827d73SSzymon Olewniczak $task = $this->model->taskFactory->create_object($defaults); 1098a638198SSzymon Olewniczak $this->tpl->set('task', $task); 1108a638198SSzymon Olewniczak 1118a638198SSzymon Olewniczak //save 1128a638198SSzymon Olewniczak if (count($_POST) > 0) { 1138a638198SSzymon Olewniczak $this->model->taskFactory->initial_save($task, $_POST); 1148a638198SSzymon Olewniczak 1158a638198SSzymon Olewniczak $anchor = 'z' . $task->id; 1168a638198SSzymon Olewniczak $redirect = true; 1178a638198SSzymon Olewniczak } 1188a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_edit') { 1198a638198SSzymon Olewniczak /** @var bez\mdl\Task $task */ 1208a638198SSzymon Olewniczak $task = $this->model->taskFactory->get_one($this->get_param('tid'), array('thread' => $thread)); 1218a638198SSzymon Olewniczak $this->tpl->set('task', $task); 1228a638198SSzymon Olewniczak 1238a638198SSzymon Olewniczak //save 1248a638198SSzymon Olewniczak if (count($_POST) === 0) { 1258a638198SSzymon Olewniczak $this->tpl->set_values($task->get_assoc()); 1268a638198SSzymon Olewniczak } else { 1278a638198SSzymon Olewniczak $this->model->taskFactory->update_save($task, $_POST); 1288a638198SSzymon Olewniczak 1298a638198SSzymon Olewniczak $anchor = 'z' . $task->id; 1308a638198SSzymon Olewniczak $redirect = true; 1318a638198SSzymon Olewniczak } 1326f380773SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_delete') { 1336f380773SSzymon Olewniczak /** @var bez\mdl\Task $task */ 1346f380773SSzymon Olewniczak $task = $this->model->taskFactory->get_one($this->get_param('tid'), array('thread' => $thread)); 1356f380773SSzymon Olewniczak $this->model->taskFactory->delete($task); 1366f380773SSzymon Olewniczak $redirect = true; 1378a638198SSzymon Olewniczak} 1388a638198SSzymon Olewniczak 1398a638198SSzymon Olewniczakif (isset($redirect) && $redirect == true) { 1408a638198SSzymon Olewniczak if (isset($anchor)) { 1418a638198SSzymon Olewniczak $anchor = '#'.$anchor; 1428a638198SSzymon Olewniczak } else { 1438a638198SSzymon Olewniczak $anchor = ''; 1448a638198SSzymon Olewniczak } 1458a638198SSzymon Olewniczak header('Location: ' . $this->url('thread', 'id', $thread->id) . $anchor); 1468a638198SSzymon Olewniczak} 147