1<?php 2 3 /********************************************************\ 4 | Show various reports on tasks | 5 | ~~~~~~~~~~~~~~~~~~~~~~~~ | 6 \********************************************************/ 7 8if (!defined('IN_FS')) { 9 die('Do not access this file directly.'); 10} 11 12if (!$user->perms('view_reports')) { 13 Flyspray::Redirect($baseurl); 14} 15 16require_once(BASEDIR . '/includes/events.inc.php'); 17$page->setTitle($fs->prefs['page_title'] . L('reports')); 18 19/**********************\ 20* Event reports * 21\**********************/ 22 23$events = array(1 => L('opened'), 24 13 => L('reopened'), 25 2 => L('closed'), 26 3 => L('edited'), 27 14 => L('assignmentchanged'), 28 29 => L('events.useraddedtoassignees'), 29 4 => L('commentadded'), 30 5 => L('commentedited'), 31 6 => L('commentdeleted'), 32 7 => L('attachmentadded'), 33 8 => L('attachmentdeleted'), 34 11 => L('relatedadded'), 35 12 => L('relateddeleted'), 36 9 => L('notificationadded'), 37 10 => L('notificationdeleted'), 38 17 => L('reminderadded'), 39 18 => L('reminderdeleted')); 40 41$user_events = array(30 => L('created'), 42 31 => L('deleted')); 43 44$page->assign('events', $events); 45$page->assign('user_events', $user_events); 46 47$sort = strtoupper(Req::enum('sort', array('desc', 'asc'))); 48 49$where = array(); 50$params = array(); 51$orderby = ''; 52 53switch (Req::val('order')) { 54 case 'type': 55 $orderby = "h.event_type {$sort}, h.event_date {$sort}"; 56 break; 57 case 'user': 58 $orderby = "user_id {$sort}, h.event_date {$sort}"; 59 break; 60 case 'date': default: 61 $orderby = "h.event_date {$sort}, h.event_type {$sort}"; 62} 63 64foreach (Req::val('events', array()) as $eventtype) { 65 $where[] = 'h.event_type = ?'; 66 $params[] = $eventtype; 67} 68$where = '(' . implode(' OR ', $where) . ')'; 69 70if ($proj->id) { 71 $where = $where . 'AND (t.project_id = ? OR h.event_type > 29) '; 72 $params[] = $proj->id; 73} 74 75if ( ($fromdate = Req::val('fromdate')) || Req::val('todate')) { 76 $where .= ' AND '; 77 $todate = Req::val('todate'); 78 79 if ($fromdate) { 80 $where .= ' h.event_date > ?'; 81 $params[] = Flyspray::strtotime($fromdate) + 0; 82 } 83 if ($todate && $fromdate) { 84 $where .= ' AND h.event_date < ?'; 85 $params[] = Flyspray::strtotime($todate) + 86400; 86 } else if ($todate) { 87 $where .= ' h.event_date < ?'; 88 $params[] = Flyspray::strtotime($todate) + 86400; 89 } 90} 91 92if (count(Req::val('events'))) { 93 $histories = $db->Query("SELECT h.* 94 FROM {history} h 95 LEFT JOIN {tasks} t ON h.task_id = t.task_id 96 WHERE $where 97 ORDER BY $orderby", $params, Req::num('event_number', -1)); 98 99 $histories = $db->FetchAllArray($histories); 100} 101 102$page->uses('histories', 'sort'); 103 104$page->pushTpl('reports.tpl'); 105?> 106