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