xref: /plugin/bez/mdl/ThreadFactory.php (revision fe5d6d1ebd253c129098b67fff8cf438a54d8650)
1de02284cSSzymon Olewniczak<?php
2de02284cSSzymon Olewniczak
3de02284cSSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl;
4de02284cSSzymon Olewniczak
5de02284cSSzymon Olewniczak//if(!defined('DOKU_INC')) die();
6de02284cSSzymon Olewniczak
7de02284cSSzymon Olewniczak//require_once 'factory.php';
8de02284cSSzymon Olewniczak//require_once 'thread.php';
9de02284cSSzymon Olewniczak
10de02284cSSzymon Olewniczak
11de02284cSSzymon Olewniczak
12de02284cSSzymon Olewniczakclass ThreadFactory extends Factory {
13de02284cSSzymon Olewniczak
14de02284cSSzymon Olewniczak//	public function __construct($model) {
15de02284cSSzymon Olewniczak//		parent::__construct($model);
16de02284cSSzymon Olewniczak
17de02284cSSzymon Olewniczak		/* state_string:
18de02284cSSzymon Olewniczak			0 -> opened
19de02284cSSzymon Olewniczak			1 -> closed
20de02284cSSzymon Olewniczak			2 -> rejected
21de02284cSSzymon Olewniczak			if state = 0 and all tasks are done -> done
22de02284cSSzymon Olewniczak		*/
23de02284cSSzymon Olewniczak//		$this->select_query = "SELECT *,
24de02284cSSzymon Olewniczak//					(CASE
25de02284cSSzymon Olewniczak//                        WHEN state = 2
26de02284cSSzymon Olewniczak//							THEN '".$this->model->action->getLang('state_rejected')."'
27de02284cSSzymon Olewniczak//						WHEN coordinator = '-proposal'
28de02284cSSzymon Olewniczak//							THEN '".$this->model->action->getLang('state_proposal')."'
29de02284cSSzymon Olewniczak//						WHEN state = 0 	AND assigned_tasks_count > 0
30de02284cSSzymon Olewniczak//										AND opened_tasks_count = 0
31de02284cSSzymon Olewniczak//							THEN '".$this->model->action->getLang('state_done')."'
32de02284cSSzymon Olewniczak//						WHEN state = 0
33de02284cSSzymon Olewniczak//							THEN '".$this->model->action->getLang('state_opened')."'
34de02284cSSzymon Olewniczak//						WHEN state = 1
35de02284cSSzymon Olewniczak//							THEN '".$this->model->action->getLang('state_closed')."'
36de02284cSSzymon Olewniczak//					END) AS state_string,
37de02284cSSzymon Olewniczak//
38de02284cSSzymon Olewniczak//					(CASE
39de02284cSSzymon Olewniczak//                        WHEN state = 2
40de02284cSSzymon Olewniczak//							THEN '2'
41de02284cSSzymon Olewniczak//						WHEN coordinator = '-proposal'
42de02284cSSzymon Olewniczak//							THEN '-proposal'
43de02284cSSzymon Olewniczak//						WHEN state = 0 	AND assigned_tasks_count > 0
44de02284cSSzymon Olewniczak//										AND opened_tasks_count = 0
45de02284cSSzymon Olewniczak//							THEN '-done'
46de02284cSSzymon Olewniczak//						WHEN state = 0
47de02284cSSzymon Olewniczak//							THEN '0'
48de02284cSSzymon Olewniczak//						WHEN state = 1
49de02284cSSzymon Olewniczak//							THEN '1'
50de02284cSSzymon Olewniczak//					END) AS full_state,
51de02284cSSzymon Olewniczak//
52de02284cSSzymon Olewniczak//					(CASE 	WHEN state = 2 then '3'
53de02284cSSzymon Olewniczak//                            WHEN task_priority IS NULL THEN 'None'
54de02284cSSzymon Olewniczak//							ELSE task_priority
55de02284cSSzymon Olewniczak//					END) AS priority
56de02284cSSzymon Olewniczak//
57de02284cSSzymon Olewniczak//					FROM (SELECT issues.*,
58de02284cSSzymon Olewniczak//							(SELECT COUNT(*) FROM tasks
59de02284cSSzymon Olewniczak//								WHERE tasks.issue = issues.id)
60de02284cSSzymon Olewniczak//							AS assigned_tasks_count,
61de02284cSSzymon Olewniczak//							(SELECT COUNT(*) FROM tasks
62de02284cSSzymon Olewniczak//								WHERE tasks.issue = issues.id AND tasks.state = 0)
63de02284cSSzymon Olewniczak//							AS opened_tasks_count,
64de02284cSSzymon Olewniczak//							(SELECT MIN((CASE	WHEN tasks.state > 0 THEN '3'
65de02284cSSzymon Olewniczak//								WHEN tasks.plan_date >= date('now', '+1 month') THEN '2'
66de02284cSSzymon Olewniczak//								WHEN tasks.plan_date >= date('now') THEN '1'
67de02284cSSzymon Olewniczak//								ELSE '0' END)) FROM tasks WHERE tasks.issue = issues.id)
68de02284cSSzymon Olewniczak//							AS task_priority,
69de02284cSSzymon Olewniczak//                            (SELECT SUM(tasks.cost) FROM tasks
70de02284cSSzymon Olewniczak//								WHERE tasks.issue = issues.id)
71de02284cSSzymon Olewniczak//                            AS cost,
72de02284cSSzymon Olewniczak//					issuetypes.".$this->model->conf['lang']." AS type_string
73de02284cSSzymon Olewniczak//					FROM issues
74de02284cSSzymon Olewniczak//						LEFT JOIN issuetypes ON issues.type = issuetypes.id)";
75de02284cSSzymon Olewniczak//	}
76de02284cSSzymon Olewniczak
77de02284cSSzymon Olewniczak    protected function select_query() {
78*fe5d6d1eSSzymon Olewniczak        return "SELECT thread.*, label.id AS label_id, label.name AS label_name FROM thread
79de02284cSSzymon Olewniczak                        LEFT JOIN thread_label ON thread.id = thread_label.thread_id
80de02284cSSzymon Olewniczak                        LEFT JOIN label ON label.id = thread_label.label_id";
81de02284cSSzymon Olewniczak    }
82de02284cSSzymon Olewniczak
83de02284cSSzymon Olewniczak    public function get_years_scope() {
84de02284cSSzymon Olewniczak        $r = $this->model->sqlite->query('SELECT create_date FROM thread ORDER BY id LIMIT 1');
85de02284cSSzymon Olewniczak        $date = $this->model->sqlite->res2single($r);
86de02284cSSzymon Olewniczak
87de02284cSSzymon Olewniczak        //get only year
88de02284cSSzymon Olewniczak		$first =  (int) substr($date, 0, strpos($date, '-'));
89de02284cSSzymon Olewniczak        $last = (int) date('Y');
90de02284cSSzymon Olewniczak
91de02284cSSzymon Olewniczak		$years = array();
92de02284cSSzymon Olewniczak		for ($year = $first; $year <= $last; $year++) {
93de02284cSSzymon Olewniczak			$years[] = (string) $year;
94de02284cSSzymon Olewniczak        }
95de02284cSSzymon Olewniczak		return $years;
96de02284cSSzymon Olewniczak    }
97de02284cSSzymon Olewniczak}
98