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 { 12*ff14b107SSzymon Olewniczak 13*ff14b107SSzymon Olewniczak public function get_table_view() { 14*ff14b107SSzymon Olewniczak return 'task_view'; 158a638198SSzymon Olewniczak } 168a638198SSzymon Olewniczak 17e8827d73SSzymon Olewniczak public function get_from_thread(Thread $thread) { 18e8827d73SSzymon Olewniczak $tasks = $this->model->taskFactory->get_all(array('thread_id' => $thread->id), 19e8827d73SSzymon Olewniczak 'thread_comment_id', false, array('thread' => $thread)); 20e8827d73SSzymon Olewniczak $by_thread_comment = array('corrections' => array()); 21e8827d73SSzymon Olewniczak foreach ($tasks as $task) { 22e8827d73SSzymon Olewniczak if ($task->thread_comment_id == null) { 23e8827d73SSzymon Olewniczak $by_thread_comment['corrections'][$task->id] = $task; 24e8827d73SSzymon Olewniczak continue; 25e8827d73SSzymon Olewniczak } 26e8827d73SSzymon Olewniczak if (!isset($by_thread_comment[$task->thread_comment_id])) { 27e8827d73SSzymon Olewniczak $by_thread_comment[$task->thread_comment_id] = array(); 28e8827d73SSzymon Olewniczak } 29e8827d73SSzymon Olewniczak $by_thread_comment[$task->thread_comment_id][$task->id] = $task; 30e8827d73SSzymon Olewniczak } 31e8827d73SSzymon Olewniczak return $by_thread_comment; 32e8827d73SSzymon Olewniczak } 33e8827d73SSzymon Olewniczak 34e8827d73SSzymon Olewniczak public function get_by_type($thread) { 35e8827d73SSzymon Olewniczak $tasks = $this->model->taskFactory->get_all(array('thread_id' => $thread->id), 36e8827d73SSzymon Olewniczak 'thread_comment_id', false, array('thread' => $thread)); 37e8827d73SSzymon Olewniczak 38e8827d73SSzymon Olewniczak $by_type = array('correction' => array(), 'corrective' => array(), 'preventive' => array()); 39e8827d73SSzymon Olewniczak foreach ($tasks as $task) { 40e8827d73SSzymon Olewniczak $by_type[$task->type][$task->id] = $task; 41e8827d73SSzymon Olewniczak } 42e8827d73SSzymon Olewniczak 43e8827d73SSzymon Olewniczak return $by_type; 44e8827d73SSzymon Olewniczak } 45e8827d73SSzymon Olewniczak 46*ff14b107SSzymon Olewniczak public function users_involvement() { 47*ff14b107SSzymon Olewniczak $sql = 'SELECT user_id, 48*ff14b107SSzymon Olewniczak SUM(original_poster), 49*ff14b107SSzymon Olewniczak SUM(assignee), 50*ff14b107SSzymon Olewniczak SUM(commentator), 51*ff14b107SSzymon Olewniczak COUNT(*) 52*ff14b107SSzymon Olewniczak FROM task_participant 53*ff14b107SSzymon Olewniczak GROUP BY user_id 54*ff14b107SSzymon Olewniczak ORDER BY user_id'; 55*ff14b107SSzymon Olewniczak 56*ff14b107SSzymon Olewniczak $r = $this->model->sqlite->query($sql); 57*ff14b107SSzymon Olewniczak return $r; 58*ff14b107SSzymon Olewniczak } 59*ff14b107SSzymon Olewniczak 608a638198SSzymon Olewniczak public function initial_save(Entity $task, $data) { 618a638198SSzymon Olewniczak parent::initial_save($task, $data); 628a638198SSzymon Olewniczak 638a638198SSzymon Olewniczak $task->set_data($data); 648a638198SSzymon Olewniczak try { 658a638198SSzymon Olewniczak $this->beginTransaction(); 668a638198SSzymon Olewniczak $this->save($task); 678a638198SSzymon Olewniczak 688a638198SSzymon Olewniczak if ($task->thread) { 698a638198SSzymon Olewniczak $task->thread->set_participant_flags($task->assignee, array('subscribent', 'task_assignee')); 708a638198SSzymon Olewniczak $task->thread->update_last_activity(); 718a638198SSzymon Olewniczak } 728a638198SSzymon Olewniczak 738a638198SSzymon Olewniczak $this->commitTransaction(); 748a638198SSzymon Olewniczak } catch(Exception $exception) { 758a638198SSzymon Olewniczak $this->rollbackTransaction(); 768a638198SSzymon Olewniczak } 778a638198SSzymon Olewniczak 788a638198SSzymon Olewniczak //$task->mail_notify_add(); 798a638198SSzymon Olewniczak } 808a638198SSzymon Olewniczak 818a638198SSzymon Olewniczak public function update_save(Entity $task, $data) { 828a638198SSzymon Olewniczak parent::update_save($task, $data); 838a638198SSzymon Olewniczak 848a638198SSzymon Olewniczak $task->set_data($data); 858a638198SSzymon Olewniczak try { 868a638198SSzymon Olewniczak $this->beginTransaction(); 878a638198SSzymon Olewniczak $this->save($task); 888a638198SSzymon Olewniczak 898a638198SSzymon Olewniczak if ($task->thread) { 908a638198SSzymon Olewniczak } 918a638198SSzymon Olewniczak 928a638198SSzymon Olewniczak $this->commitTransaction(); 938a638198SSzymon Olewniczak } catch(Exception $exception) { 948a638198SSzymon Olewniczak $this->rollbackTransaction(); 958a638198SSzymon Olewniczak } 968a638198SSzymon Olewniczak } 978a638198SSzymon Olewniczak}