xref: /plugin/bez/ctl/thread.php (revision 53df74e7ac5ae4234aac1fa716a33878a039026f)
1fe5d6d1eSSzymon Olewniczak<?php
2*53df74e7SSzymon Olewniczak/** @var action_plugin_bez $this */
3fe5d6d1eSSzymon Olewniczak
4fe5d6d1eSSzymon Olewniczakuse \dokuwiki\plugin\bez;
5fe5d6d1eSSzymon Olewniczak
6*53df74e7SSzymon Olewniczakif ($this->model->acl->get_level() < BEZ_AUTH_USER) {
7*53df74e7SSzymon Olewniczak    throw new bez\meta\PermissionDeniedException();
8*53df74e7SSzymon Olewniczak}
9*53df74e7SSzymon 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'));
16*53df74e7SSzymon Olewniczak
17*53df74e7SSzymon Olewniczakif ($thread->acl_of('id') < BEZ_PERMISSION_VIEW) {
18*53df74e7SSzymon Olewniczak    throw new bez\meta\PermissionDeniedException();
19*53df74e7SSzymon Olewniczak}
20*53df74e7SSzymon Olewniczak
217fbf4c39SSzymon Olewniczak$this->tpl->set('thread', $thread);
228a638198SSzymon Olewniczak$this->tpl->set('thread_comments', $this->model->thread_commentFactory->get_from_thread($thread));
23e8827d73SSzymon Olewniczak$this->tpl->set('tasks', $this->model->taskFactory->get_from_thread($thread));
24e8827d73SSzymon Olewniczak$this->tpl->set('task_programs',  $this->model->task_programFactory->get_all());
258a638198SSzymon Olewniczak
268a638198SSzymon Olewniczak
278a638198SSzymon Olewniczakif ($this->get_param('action') == 'commcause_add') {
288a638198SSzymon Olewniczak
298a638198SSzymon Olewniczak    /** @var bez\mdl\Thread_comment $thread_comment */
308a638198SSzymon Olewniczak    $thread_comment = $this->model->thread_commentFactory->create_object(array('thread' => $thread));
318a638198SSzymon Olewniczak    $this->model->thread_commentFactory->initial_save($thread_comment, $_POST);
328a638198SSzymon Olewniczak
338a638198SSzymon Olewniczak    $anchor = 'k'.$thread_comment->id;
348a638198SSzymon Olewniczak    $redirect = true;
358a638198SSzymon Olewniczak
368a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'subscribe') {
378a638198SSzymon Olewniczak
388a638198SSzymon Olewniczak    $thread->set_participant_flags($this->model->user_nick, array('subscribent'));
398a638198SSzymon Olewniczak    $redirect = true;
408a638198SSzymon Olewniczak
418a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'unsubscribe') {
428a638198SSzymon Olewniczak
438a638198SSzymon Olewniczak    $thread->remove_participant_flags($this->model->user_nick, array('subscribent'));
448a638198SSzymon Olewniczak    $this->add_notification($this->getLang('unsubscribed_com'));
458a638198SSzymon Olewniczak    $redirect = true;
468a638198SSzymon Olewniczak
478a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'invite') {
488a638198SSzymon Olewniczak    $client = $_POST['client'];
498a638198SSzymon Olewniczak
50e8827d73SSzymon Olewniczak    $thread->invite($client);
51e8827d73SSzymon Olewniczak
528a638198SSzymon Olewniczak    $this->add_notification($this->model->userFactory->get_user_email($client), $this->getLang('invitation_has_been_send'));
538a638198SSzymon Olewniczak
548a638198SSzymon Olewniczak    $redirect = true;
558a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_delete') {
568a638198SSzymon Olewniczak    /** @var bez\mdl\Thread_comment $thread_comment */
578a638198SSzymon Olewniczak    $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread));
588a638198SSzymon Olewniczak    $this->model->thread_commentFactory->delete($thread_comment);
598a638198SSzymon Olewniczak
608a638198SSzymon Olewniczak    $redirect = true;
618a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'commcause_edit') {
628a638198SSzymon Olewniczak    /** @var bez\mdl\Thread_comment $thread_comment */
638a638198SSzymon Olewniczak    $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread));
648a638198SSzymon Olewniczak
658a638198SSzymon Olewniczak    if(count($_POST) === 0) {
668a638198SSzymon Olewniczak        $this->tpl->set_values($thread_comment->get_assoc());
678a638198SSzymon Olewniczak    } else {
688a638198SSzymon Olewniczak        $this->model->thread_commentFactory->update_save($thread_comment, $_POST);
698a638198SSzymon Olewniczak
708a638198SSzymon Olewniczak        $anchor   = 'k' . $thread_comment->id;
718a638198SSzymon Olewniczak        $redirect = true;
728a638198SSzymon Olewniczak    }
73e8827d73SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_add') {
74e8827d73SSzymon Olewniczak
75e8827d73SSzymon Olewniczak    $defaults = array('thread' => $thread);
76e8827d73SSzymon Olewniczak
77e8827d73SSzymon Olewniczak    if ($this->get_param('kid') != '') {
78e8827d73SSzymon Olewniczak        $thread_comment = $this->model->thread_commentFactory->get_one($this->get_param('kid'), array('thread' => $thread));
79e8827d73SSzymon Olewniczak        $defaults['thread_comment'] = $thread_comment;
80e8827d73SSzymon Olewniczak    }
818a638198SSzymon Olewniczak    /** @var bez\mdl\Task $task */
82e8827d73SSzymon Olewniczak    $task = $this->model->taskFactory->create_object($defaults);
838a638198SSzymon Olewniczak    $this->tpl->set('task', $task);
848a638198SSzymon Olewniczak
858a638198SSzymon Olewniczak    //save
868a638198SSzymon Olewniczak    if (count($_POST) > 0) {
878a638198SSzymon Olewniczak        $this->model->taskFactory->initial_save($task, $_POST);
888a638198SSzymon Olewniczak
898a638198SSzymon Olewniczak        $anchor   = 'z' . $task->id;
908a638198SSzymon Olewniczak        $redirect = true;
918a638198SSzymon Olewniczak    }
928a638198SSzymon Olewniczak} elseif ($this->get_param('action') == 'task_edit') {
938a638198SSzymon Olewniczak    /** @var bez\mdl\Task $task */
948a638198SSzymon Olewniczak    $task = $this->model->taskFactory->get_one($this->get_param('tid'), array('thread' => $thread));
958a638198SSzymon Olewniczak    $this->tpl->set('task', $task);
968a638198SSzymon Olewniczak
978a638198SSzymon Olewniczak    //save
988a638198SSzymon Olewniczak    if (count($_POST) === 0) {
998a638198SSzymon Olewniczak        $this->tpl->set_values($task->get_assoc());
1008a638198SSzymon Olewniczak    } else {
1018a638198SSzymon Olewniczak        $this->model->taskFactory->update_save($task, $_POST);
1028a638198SSzymon Olewniczak
1038a638198SSzymon Olewniczak        $anchor   = 'z' . $task->id;
1048a638198SSzymon Olewniczak        $redirect = true;
1058a638198SSzymon Olewniczak    }
1068a638198SSzymon Olewniczak}
1078a638198SSzymon Olewniczak
1088a638198SSzymon Olewniczakif (isset($redirect) && $redirect == true) {
1098a638198SSzymon Olewniczak    if (isset($anchor)) {
1108a638198SSzymon Olewniczak        $anchor = '#'.$anchor;
1118a638198SSzymon Olewniczak    } else {
1128a638198SSzymon Olewniczak        $anchor = '';
1138a638198SSzymon Olewniczak    }
1148a638198SSzymon Olewniczak    header('Location: ' . $this->url('thread', 'id', $thread->id) . $anchor);
1158a638198SSzymon Olewniczak}
116