xref: /plugin/bez/mdl/Thread_commentFactory.php (revision 8a6381983135ed7de69b33e64aa0c1b16dbf69b0)
1*8a638198SSzymon Olewniczak<?php
2*8a638198SSzymon Olewniczak
3*8a638198SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl;
4*8a638198SSzymon Olewniczak
5*8a638198SSzymon Olewniczakclass Thread_commentFactory extends Factory {
6*8a638198SSzymon Olewniczak
7*8a638198SSzymon Olewniczak    protected function select_query() {
8*8a638198SSzymon Olewniczak        return "SELECT thread_comment.*, thread.coordinator
9*8a638198SSzymon Olewniczak                FROM thread_comment JOIN thread ON thread_comment.thread_id=thread.id";
10*8a638198SSzymon Olewniczak    }
11*8a638198SSzymon Olewniczak
12*8a638198SSzymon Olewniczak    public function get_from_thread(Thread $thread) {
13*8a638198SSzymon Olewniczak        return $this->get_all(array('thread_id' => $thread->id), $orderby='', $desc=true, array('thread' => $thread));
14*8a638198SSzymon Olewniczak    }
15*8a638198SSzymon Olewniczak
16*8a638198SSzymon Olewniczak    /**
17*8a638198SSzymon Olewniczak     * @param Thread_comment $thread_comment
18*8a638198SSzymon Olewniczak     * @param                $data
19*8a638198SSzymon Olewniczak     * @throws \Exception
20*8a638198SSzymon Olewniczak     */
21*8a638198SSzymon Olewniczak    public function initial_save(Entity $thread_comment, $data) {
22*8a638198SSzymon Olewniczak        parent::initial_save($thread_comment, $data);
23*8a638198SSzymon Olewniczak
24*8a638198SSzymon Olewniczak        $thread_comment->set_data($data);
25*8a638198SSzymon Olewniczak        try {
26*8a638198SSzymon Olewniczak            $this->beginTransaction();
27*8a638198SSzymon Olewniczak            $this->save($thread_comment);
28*8a638198SSzymon Olewniczak
29*8a638198SSzymon Olewniczak            $thread_comment->thread->set_participant_flags($thread_comment->author, array('subscribent', 'commentator'));
30*8a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
31*8a638198SSzymon Olewniczak
32*8a638198SSzymon Olewniczak            $this->commitTransaction();
33*8a638198SSzymon Olewniczak        } catch(Exception $exception) {
34*8a638198SSzymon Olewniczak            $this->rollbackTransaction();
35*8a638198SSzymon Olewniczak        }
36*8a638198SSzymon Olewniczak
37*8a638198SSzymon Olewniczak        $thread_comment->mail_notify_add();
38*8a638198SSzymon Olewniczak    }
39*8a638198SSzymon Olewniczak
40*8a638198SSzymon Olewniczak    public function update_save(Entity $thread_comment, $data) {
41*8a638198SSzymon Olewniczak        parent::update_save($thread_comment, $data);
42*8a638198SSzymon Olewniczak
43*8a638198SSzymon Olewniczak        $thread_comment->set_data($data);
44*8a638198SSzymon Olewniczak        try {
45*8a638198SSzymon Olewniczak            $this->beginTransaction();
46*8a638198SSzymon Olewniczak            $this->save($thread_comment);
47*8a638198SSzymon Olewniczak
48*8a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
49*8a638198SSzymon Olewniczak
50*8a638198SSzymon Olewniczak            $this->commitTransaction();
51*8a638198SSzymon Olewniczak        } catch(Exception $exception) {
52*8a638198SSzymon Olewniczak            $this->rollbackTransaction();
53*8a638198SSzymon Olewniczak        }
54*8a638198SSzymon Olewniczak    }
55*8a638198SSzymon Olewniczak
56*8a638198SSzymon Olewniczak    public function delete(Entity $obj) {
57*8a638198SSzymon Olewniczak        try {
58*8a638198SSzymon Olewniczak            $this->beginTransaction();
59*8a638198SSzymon Olewniczak
60*8a638198SSzymon Olewniczak            parent::delete($obj);
61*8a638198SSzymon Olewniczak            $obj->thread->update_last_activity();
62*8a638198SSzymon Olewniczak
63*8a638198SSzymon Olewniczak            $this->commitTransaction();
64*8a638198SSzymon Olewniczak        } catch(Exception $exception) {
65*8a638198SSzymon Olewniczak            $this->rollbackTransaction();
66*8a638198SSzymon Olewniczak        }
67*8a638198SSzymon Olewniczak    }
68*8a638198SSzymon Olewniczak}