xref: /plugin/bez/mdl/TaskFactory.php (revision e8827d732aaeeee6f7b703c5654f86ca97056383)
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}