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