xref: /plugin/bez/mdl/Thread_commentFactory.php (revision 53df74e7ac5ae4234aac1fa716a33878a039026f)
18a638198SSzymon Olewniczak<?php
28a638198SSzymon Olewniczak
38a638198SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl;
48a638198SSzymon Olewniczak
58a638198SSzymon Olewniczakclass Thread_commentFactory extends Factory {
68a638198SSzymon Olewniczak
7*53df74e7SSzymon Olewniczak    public function get_table_view() {
8*53df74e7SSzymon Olewniczak        return 'thread_comment_view';
98a638198SSzymon Olewniczak    }
108a638198SSzymon Olewniczak
11e8827d73SSzymon Olewniczak    public function get_from_thread(Thread $thread, $filters=array(), $orderby='', $desc=true, $limit=false) {
12e8827d73SSzymon Olewniczak        $filters['thread_id'] = $thread->id;
13e8827d73SSzymon Olewniczak        return $this->get_all($filters, $orderby, $desc, array('thread' => $thread), $limit);
148a638198SSzymon Olewniczak    }
158a638198SSzymon Olewniczak
168a638198SSzymon Olewniczak    /**
178a638198SSzymon Olewniczak     * @param Thread_comment $thread_comment
188a638198SSzymon Olewniczak     * @param                $data
198a638198SSzymon Olewniczak     * @throws \Exception
208a638198SSzymon Olewniczak     */
218a638198SSzymon Olewniczak    public function initial_save(Entity $thread_comment, $data) {
228a638198SSzymon Olewniczak        try {
238a638198SSzymon Olewniczak            $this->beginTransaction();
248a638198SSzymon Olewniczak
25e8827d73SSzymon Olewniczak            if ($data['fn'] == 'comment_add' ||
26ff14b107SSzymon Olewniczak                $data['fn'] == 'thread_close' ||
27e8827d73SSzymon Olewniczak                $data['content'] != '') {
28*53df74e7SSzymon Olewniczak                parent::initial_save($thread_comment, $data);
298a638198SSzymon Olewniczak                $thread_comment->thread->set_participant_flags($thread_comment->author, array('subscribent', 'commentator'));
30e8827d73SSzymon Olewniczak            }
31e8827d73SSzymon Olewniczak
32e8827d73SSzymon Olewniczak            if ($data['fn'] == 'thread_close') {
33e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('closed');
34e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reject') {
35e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('rejected');
36e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reopen') {
37e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('opened');
38e8827d73SSzymon Olewniczak            }
39e8827d73SSzymon Olewniczak
408a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
418a638198SSzymon Olewniczak
428a638198SSzymon Olewniczak            $this->commitTransaction();
438a638198SSzymon Olewniczak        } catch(Exception $exception) {
448a638198SSzymon Olewniczak            $this->rollbackTransaction();
458a638198SSzymon Olewniczak        }
468a638198SSzymon Olewniczak
478a638198SSzymon Olewniczak        $thread_comment->mail_notify_add();
488a638198SSzymon Olewniczak    }
498a638198SSzymon Olewniczak
508a638198SSzymon Olewniczak    public function update_save(Entity $thread_comment, $data) {
518a638198SSzymon Olewniczak        try {
528a638198SSzymon Olewniczak            $this->beginTransaction();
53*53df74e7SSzymon Olewniczak            parent::update_save($thread_comment, $data);
548a638198SSzymon Olewniczak
558a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
568a638198SSzymon Olewniczak
578a638198SSzymon Olewniczak            $this->commitTransaction();
588a638198SSzymon Olewniczak        } catch(Exception $exception) {
598a638198SSzymon Olewniczak            $this->rollbackTransaction();
608a638198SSzymon Olewniczak        }
618a638198SSzymon Olewniczak    }
628a638198SSzymon Olewniczak
638a638198SSzymon Olewniczak    public function delete(Entity $obj) {
648a638198SSzymon Olewniczak        try {
658a638198SSzymon Olewniczak            $this->beginTransaction();
668a638198SSzymon Olewniczak
678a638198SSzymon Olewniczak            parent::delete($obj);
688a638198SSzymon Olewniczak            $obj->thread->update_last_activity();
698a638198SSzymon Olewniczak
708a638198SSzymon Olewniczak            $this->commitTransaction();
718a638198SSzymon Olewniczak        } catch(Exception $exception) {
728a638198SSzymon Olewniczak            $this->rollbackTransaction();
738a638198SSzymon Olewniczak        }
748a638198SSzymon Olewniczak    }
758a638198SSzymon Olewniczak}