xref: /plugin/bez/mdl/Task_commentFactory.php (revision 53df74e7ac5ae4234aac1fa716a33878a039026f)
1e8827d73SSzymon Olewniczak<?php
2e8827d73SSzymon Olewniczak
3e8827d73SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl;
4e8827d73SSzymon Olewniczak
5e8827d73SSzymon Olewniczakclass Task_commentFactory extends Factory {
6e8827d73SSzymon Olewniczak
7e8827d73SSzymon Olewniczak    public function get_from_task(Task $task) {
8e8827d73SSzymon Olewniczak        return $this->get_all(array('task_id' => $task->id), $orderby='', $desc=true, array('task' => $task));
9e8827d73SSzymon Olewniczak    }
10e8827d73SSzymon Olewniczak
11e8827d73SSzymon Olewniczak    /**
12e8827d73SSzymon Olewniczak     * @param Thread_comment $thread_comment
13e8827d73SSzymon Olewniczak     * @param                $data
14e8827d73SSzymon Olewniczak     * @throws \Exception
15e8827d73SSzymon Olewniczak     */
16e8827d73SSzymon Olewniczak    public function initial_save(Entity $task_comment, $data) {
17e8827d73SSzymon Olewniczak        try {
18e8827d73SSzymon Olewniczak            $this->beginTransaction();
19e8827d73SSzymon Olewniczak
20e8827d73SSzymon Olewniczak            //if empty content and task_do, do not save the comment
21e8827d73SSzymon Olewniczak            if ($data['fn'] == 'comment_add' || $data['content'] != '') {
22*53df74e7SSzymon Olewniczak                parent::initial_save($task_comment, $data);
23e8827d73SSzymon Olewniczak                $task_comment->task->set_participant_flags($task_comment->author, array('subscribent', 'commentator'));
24e8827d73SSzymon Olewniczak            }
25e8827d73SSzymon Olewniczak
26e8827d73SSzymon Olewniczak            if ($data['fn'] == 'task_do') {
27e8827d73SSzymon Olewniczak                $task_comment->task->set_state('done');
28e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'task_reopen') {
29e8827d73SSzymon Olewniczak                $task_comment->task->set_state('opened');
30e8827d73SSzymon Olewniczak            }
31e8827d73SSzymon Olewniczak
32*53df74e7SSzymon Olewniczak            if ($task_comment->task->thread_id != '') {
33e8827d73SSzymon Olewniczak                $task_comment->task->thread->update_last_activity();
34*53df74e7SSzymon Olewniczak            }
35e8827d73SSzymon Olewniczak
36e8827d73SSzymon Olewniczak            $this->commitTransaction();
37e8827d73SSzymon Olewniczak        } catch(Exception $exception) {
38e8827d73SSzymon Olewniczak            $this->rollbackTransaction();
39e8827d73SSzymon Olewniczak        }
40e8827d73SSzymon Olewniczak
41e8827d73SSzymon Olewniczak        $task_comment->mail_notify_add();
42e8827d73SSzymon Olewniczak    }
43e8827d73SSzymon Olewniczak
44e8827d73SSzymon Olewniczak    public function update_save(Entity $task_comment, $data) {
45e8827d73SSzymon Olewniczak        try {
46e8827d73SSzymon Olewniczak            $this->beginTransaction();
47*53df74e7SSzymon Olewniczak            parent::update_save($task_comment, $data);
48e8827d73SSzymon Olewniczak
49e8827d73SSzymon Olewniczak            $task_comment->task->update_last_activity();
50e8827d73SSzymon Olewniczak
51e8827d73SSzymon Olewniczak            $this->commitTransaction();
52e8827d73SSzymon Olewniczak        } catch(Exception $exception) {
53e8827d73SSzymon Olewniczak            $this->rollbackTransaction();
54e8827d73SSzymon Olewniczak        }
55e8827d73SSzymon Olewniczak    }
56e8827d73SSzymon Olewniczak
57e8827d73SSzymon Olewniczak    public function delete(Entity $obj) {
58e8827d73SSzymon Olewniczak        try {
59e8827d73SSzymon Olewniczak            $this->beginTransaction();
60e8827d73SSzymon Olewniczak
61e8827d73SSzymon Olewniczak            parent::delete($obj);
62e8827d73SSzymon Olewniczak            $obj->task->update_last_activity();
63e8827d73SSzymon Olewniczak
64e8827d73SSzymon Olewniczak            $this->commitTransaction();
65e8827d73SSzymon Olewniczak        } catch(Exception $exception) {
66e8827d73SSzymon Olewniczak            $this->rollbackTransaction();
67e8827d73SSzymon Olewniczak        }
68e8827d73SSzymon Olewniczak    }
69e8827d73SSzymon Olewniczak}