xref: /plugin/bez/mdl/Thread_commentFactory.php (revision e8827d732aaeeee6f7b703c5654f86ca97056383)
18a638198SSzymon Olewniczak<?php
28a638198SSzymon Olewniczak
38a638198SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl;
48a638198SSzymon Olewniczak
58a638198SSzymon Olewniczakclass Thread_commentFactory extends Factory {
68a638198SSzymon Olewniczak
78a638198SSzymon Olewniczak    protected function select_query() {
88a638198SSzymon Olewniczak        return "SELECT thread_comment.*, thread.coordinator
98a638198SSzymon Olewniczak                FROM thread_comment JOIN thread ON thread_comment.thread_id=thread.id";
108a638198SSzymon Olewniczak    }
118a638198SSzymon Olewniczak
12*e8827d73SSzymon Olewniczak    public function get_from_thread(Thread $thread, $filters=array(), $orderby='', $desc=true, $limit=false) {
13*e8827d73SSzymon Olewniczak        $filters['thread_id'] = $thread->id;
14*e8827d73SSzymon Olewniczak        return $this->get_all($filters, $orderby, $desc, array('thread' => $thread), $limit);
158a638198SSzymon Olewniczak    }
168a638198SSzymon Olewniczak
178a638198SSzymon Olewniczak    /**
188a638198SSzymon Olewniczak     * @param Thread_comment $thread_comment
198a638198SSzymon Olewniczak     * @param                $data
208a638198SSzymon Olewniczak     * @throws \Exception
218a638198SSzymon Olewniczak     */
228a638198SSzymon Olewniczak    public function initial_save(Entity $thread_comment, $data) {
238a638198SSzymon Olewniczak        parent::initial_save($thread_comment, $data);
248a638198SSzymon Olewniczak
258a638198SSzymon Olewniczak        try {
268a638198SSzymon Olewniczak            $this->beginTransaction();
278a638198SSzymon Olewniczak
28*e8827d73SSzymon Olewniczak            if ($data['fn'] == 'comment_add' ||
29*e8827d73SSzymon Olewniczak                $data['content'] != '') {
30*e8827d73SSzymon Olewniczak                $thread_comment->set_data($data);
31*e8827d73SSzymon Olewniczak                $this->save($thread_comment);
328a638198SSzymon Olewniczak                $thread_comment->thread->set_participant_flags($thread_comment->author, array('subscribent', 'commentator'));
33*e8827d73SSzymon Olewniczak            }
34*e8827d73SSzymon Olewniczak
35*e8827d73SSzymon Olewniczak            if ($data['fn'] == 'thread_close') {
36*e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('closed');
37*e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reject') {
38*e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('rejected');
39*e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reopen') {
40*e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('opened');
41*e8827d73SSzymon Olewniczak            }
42*e8827d73SSzymon Olewniczak
438a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
448a638198SSzymon Olewniczak
458a638198SSzymon Olewniczak            $this->commitTransaction();
468a638198SSzymon Olewniczak        } catch(Exception $exception) {
478a638198SSzymon Olewniczak            $this->rollbackTransaction();
488a638198SSzymon Olewniczak        }
498a638198SSzymon Olewniczak
508a638198SSzymon Olewniczak        $thread_comment->mail_notify_add();
518a638198SSzymon Olewniczak    }
528a638198SSzymon Olewniczak
538a638198SSzymon Olewniczak    public function update_save(Entity $thread_comment, $data) {
548a638198SSzymon Olewniczak        parent::update_save($thread_comment, $data);
558a638198SSzymon Olewniczak
568a638198SSzymon Olewniczak        $thread_comment->set_data($data);
578a638198SSzymon Olewniczak        try {
588a638198SSzymon Olewniczak            $this->beginTransaction();
598a638198SSzymon Olewniczak            $this->save($thread_comment);
608a638198SSzymon Olewniczak
618a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
628a638198SSzymon Olewniczak
638a638198SSzymon Olewniczak            $this->commitTransaction();
648a638198SSzymon Olewniczak        } catch(Exception $exception) {
658a638198SSzymon Olewniczak            $this->rollbackTransaction();
668a638198SSzymon Olewniczak        }
678a638198SSzymon Olewniczak    }
688a638198SSzymon Olewniczak
698a638198SSzymon Olewniczak    public function delete(Entity $obj) {
708a638198SSzymon Olewniczak        try {
718a638198SSzymon Olewniczak            $this->beginTransaction();
728a638198SSzymon Olewniczak
738a638198SSzymon Olewniczak            parent::delete($obj);
748a638198SSzymon Olewniczak            $obj->thread->update_last_activity();
758a638198SSzymon Olewniczak
768a638198SSzymon Olewniczak            $this->commitTransaction();
778a638198SSzymon Olewniczak        } catch(Exception $exception) {
788a638198SSzymon Olewniczak            $this->rollbackTransaction();
798a638198SSzymon Olewniczak        }
808a638198SSzymon Olewniczak    }
818a638198SSzymon Olewniczak}