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}