xref: /plugin/bez/mdl/Thread_commentFactory.php (revision ff14b1073c2dab2f863cab3b8baf8b1a01f7993a)
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
12e8827d73SSzymon Olewniczak    public function get_from_thread(Thread $thread, $filters=array(), $orderby='', $desc=true, $limit=false) {
13e8827d73SSzymon Olewniczak        $filters['thread_id'] = $thread->id;
14e8827d73SSzymon 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
28e8827d73SSzymon Olewniczak            if ($data['fn'] == 'comment_add' ||
29*ff14b107SSzymon Olewniczak                $data['fn'] == 'thread_close' ||
30e8827d73SSzymon Olewniczak                $data['content'] != '') {
31e8827d73SSzymon Olewniczak                $thread_comment->set_data($data);
32e8827d73SSzymon Olewniczak                $this->save($thread_comment);
338a638198SSzymon Olewniczak                $thread_comment->thread->set_participant_flags($thread_comment->author, array('subscribent', 'commentator'));
34e8827d73SSzymon Olewniczak            }
35e8827d73SSzymon Olewniczak
36e8827d73SSzymon Olewniczak            if ($data['fn'] == 'thread_close') {
37e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('closed');
38e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reject') {
39e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('rejected');
40e8827d73SSzymon Olewniczak            } elseif ($data['fn'] == 'thread_reopen') {
41e8827d73SSzymon Olewniczak                $thread_comment->thread->set_state('opened');
42e8827d73SSzymon Olewniczak            }
43e8827d73SSzymon Olewniczak
448a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
458a638198SSzymon Olewniczak
468a638198SSzymon Olewniczak            $this->commitTransaction();
478a638198SSzymon Olewniczak        } catch(Exception $exception) {
488a638198SSzymon Olewniczak            $this->rollbackTransaction();
498a638198SSzymon Olewniczak        }
508a638198SSzymon Olewniczak
518a638198SSzymon Olewniczak        $thread_comment->mail_notify_add();
528a638198SSzymon Olewniczak    }
538a638198SSzymon Olewniczak
548a638198SSzymon Olewniczak    public function update_save(Entity $thread_comment, $data) {
558a638198SSzymon Olewniczak        parent::update_save($thread_comment, $data);
568a638198SSzymon Olewniczak
578a638198SSzymon Olewniczak        $thread_comment->set_data($data);
588a638198SSzymon Olewniczak        try {
598a638198SSzymon Olewniczak            $this->beginTransaction();
608a638198SSzymon Olewniczak            $this->save($thread_comment);
618a638198SSzymon Olewniczak
628a638198SSzymon Olewniczak            $thread_comment->thread->update_last_activity();
638a638198SSzymon Olewniczak
648a638198SSzymon Olewniczak            $this->commitTransaction();
658a638198SSzymon Olewniczak        } catch(Exception $exception) {
668a638198SSzymon Olewniczak            $this->rollbackTransaction();
678a638198SSzymon Olewniczak        }
688a638198SSzymon Olewniczak    }
698a638198SSzymon Olewniczak
708a638198SSzymon Olewniczak    public function delete(Entity $obj) {
718a638198SSzymon Olewniczak        try {
728a638198SSzymon Olewniczak            $this->beginTransaction();
738a638198SSzymon Olewniczak
748a638198SSzymon Olewniczak            parent::delete($obj);
758a638198SSzymon Olewniczak            $obj->thread->update_last_activity();
768a638198SSzymon Olewniczak
778a638198SSzymon Olewniczak            $this->commitTransaction();
788a638198SSzymon Olewniczak        } catch(Exception $exception) {
798a638198SSzymon Olewniczak            $this->rollbackTransaction();
808a638198SSzymon Olewniczak        }
818a638198SSzymon Olewniczak    }
828a638198SSzymon Olewniczak}