18a638198SSzymon Olewniczak<?php 28a638198SSzymon Olewniczak/** 38a638198SSzymon Olewniczak * Created by PhpStorm. 48a638198SSzymon Olewniczak * User: ghi 58a638198SSzymon Olewniczak * Date: 12.12.17 68a638198SSzymon Olewniczak * Time: 11:58 78a638198SSzymon Olewniczak */ 88a638198SSzymon Olewniczak 98a638198SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 108a638198SSzymon Olewniczak 118a638198SSzymon Olewniczakclass TaskFactory extends Factory { 128a638198SSzymon Olewniczak protected function select_query() { 138a638198SSzymon Olewniczak return "SELECT task.*, task_program.name AS task_program_name 148a638198SSzymon Olewniczak FROM task LEFT JOIN task_program ON task.task_program_id = task_program.id"; 158a638198SSzymon Olewniczak } 168a638198SSzymon Olewniczak 17*e8827d73SSzymon Olewniczak public function get_from_thread(Thread $thread) { 18*e8827d73SSzymon Olewniczak $tasks = $this->model->taskFactory->get_all(array('thread_id' => $thread->id), 19*e8827d73SSzymon Olewniczak 'thread_comment_id', false, array('thread' => $thread)); 20*e8827d73SSzymon Olewniczak $by_thread_comment = array('corrections' => array()); 21*e8827d73SSzymon Olewniczak foreach ($tasks as $task) { 22*e8827d73SSzymon Olewniczak if ($task->thread_comment_id == null) { 23*e8827d73SSzymon Olewniczak $by_thread_comment['corrections'][$task->id] = $task; 24*e8827d73SSzymon Olewniczak continue; 25*e8827d73SSzymon Olewniczak } 26*e8827d73SSzymon Olewniczak if (!isset($by_thread_comment[$task->thread_comment_id])) { 27*e8827d73SSzymon Olewniczak $by_thread_comment[$task->thread_comment_id] = array(); 28*e8827d73SSzymon Olewniczak } 29*e8827d73SSzymon Olewniczak $by_thread_comment[$task->thread_comment_id][$task->id] = $task; 30*e8827d73SSzymon Olewniczak } 31*e8827d73SSzymon Olewniczak return $by_thread_comment; 32*e8827d73SSzymon Olewniczak } 33*e8827d73SSzymon Olewniczak 34*e8827d73SSzymon Olewniczak public function get_by_type($thread) { 35*e8827d73SSzymon Olewniczak $tasks = $this->model->taskFactory->get_all(array('thread_id' => $thread->id), 36*e8827d73SSzymon Olewniczak 'thread_comment_id', false, array('thread' => $thread)); 37*e8827d73SSzymon Olewniczak 38*e8827d73SSzymon Olewniczak $by_type = array('correction' => array(), 'corrective' => array(), 'preventive' => array()); 39*e8827d73SSzymon Olewniczak foreach ($tasks as $task) { 40*e8827d73SSzymon Olewniczak $by_type[$task->type][$task->id] = $task; 41*e8827d73SSzymon Olewniczak } 42*e8827d73SSzymon Olewniczak 43*e8827d73SSzymon Olewniczak return $by_type; 44*e8827d73SSzymon Olewniczak } 45*e8827d73SSzymon Olewniczak 468a638198SSzymon Olewniczak public function initial_save(Entity $task, $data) { 478a638198SSzymon Olewniczak parent::initial_save($task, $data); 488a638198SSzymon Olewniczak 498a638198SSzymon Olewniczak $task->set_data($data); 508a638198SSzymon Olewniczak try { 518a638198SSzymon Olewniczak $this->beginTransaction(); 528a638198SSzymon Olewniczak $this->save($task); 538a638198SSzymon Olewniczak 548a638198SSzymon Olewniczak if ($task->thread) { 558a638198SSzymon Olewniczak $task->thread->set_participant_flags($task->assignee, array('subscribent', 'task_assignee')); 568a638198SSzymon Olewniczak $task->thread->update_last_activity(); 578a638198SSzymon Olewniczak } 588a638198SSzymon Olewniczak 598a638198SSzymon Olewniczak $this->commitTransaction(); 608a638198SSzymon Olewniczak } catch(Exception $exception) { 618a638198SSzymon Olewniczak $this->rollbackTransaction(); 628a638198SSzymon Olewniczak } 638a638198SSzymon Olewniczak 648a638198SSzymon Olewniczak //$task->mail_notify_add(); 658a638198SSzymon Olewniczak } 668a638198SSzymon Olewniczak 678a638198SSzymon Olewniczak public function update_save(Entity $task, $data) { 688a638198SSzymon Olewniczak parent::update_save($task, $data); 698a638198SSzymon Olewniczak 708a638198SSzymon Olewniczak $task->set_data($data); 718a638198SSzymon Olewniczak try { 728a638198SSzymon Olewniczak $this->beginTransaction(); 738a638198SSzymon Olewniczak $this->save($task); 748a638198SSzymon Olewniczak 758a638198SSzymon Olewniczak if ($task->thread) { 768a638198SSzymon Olewniczak } 778a638198SSzymon Olewniczak 788a638198SSzymon Olewniczak $this->commitTransaction(); 798a638198SSzymon Olewniczak } catch(Exception $exception) { 808a638198SSzymon Olewniczak $this->rollbackTransaction(); 818a638198SSzymon Olewniczak } 828a638198SSzymon Olewniczak } 838a638198SSzymon Olewniczak}