stats.php

来自「一个基于web的开源项目管理工具」· PHP 代码 · 共 223 行

PHP
223
字号
<?phpif (!defined('DP_BASE_DIR')){  die('You should not access this file directly.');}function file_size($size){	if (empty($size))		return '0 B';        if ($size > 1024*1024*1024)                return round($size / 1024 / 1024 / 1024, 2) . ' Gb';        if ($size > 1024*1024)                return round($size / 1024 / 1024, 2) . ' Mb';        if ($size > 1024)                return round($size / 1024, 2) . ' Kb';        return $size . ' B';}$sql = 'SELECT * FROM projectsLEFT JOIN tasks ON task_project = project_id';if (!empty($project_id))	$sql .= ' WHERE project_id = ' . $project_id;$all_tasks = db_loadList($sql);$sql = 'SELECT *, round(sum(task_log_hours),2) as workFROM projectsLEFT JOIN tasks ON task_project = project_idLEFT JOIN user_tasks ON user_tasks.task_id = tasks.task_idLEFT JOIN users ON user_tasks.user_id = users.user_idLEFT JOIN task_log ON task_log_task = tasks.task_id AND task_log_creator = users.user_id';if (!empty($project_id))	$sql .= ' WHERE project_id = ' . $project_id;$sql .= ' GROUP BY tasks.task_id, users.user_id';$users_all = db_loadList($sql);foreach ($users_all as $user){	$users_per_task[$user['task_id']][] = $user['user_id'];	$users[$user['user_id']]['all'][$user['task_id']] = $user;	$users[$user['user_id']]['name'] = (!empty($user['user_username']))?$user['user_username']:$user['user_id'];	$users[$user['user_id']]['hours'] = 0;	$users[$user['user_id']]['completed'] = array();	$users[$user['user_id']]['inprogress'] = array();	$users[$user['user_id']]['pending'] = array();	$users[$user['user_id']]['overdue'] = array();		}$tasks['hours'] = 0;$tasks['inprogress'] = array();$tasks['completed'] = array();$tasks['pending'] = array();$tasks['overdue'] = array();foreach($all_tasks as $task){	if ($task['task_percent_complete'] == 100)		$tasks['completed'][] = & $task;	else	{		if ($task['task_end_date'] < date('Y-m-d'))			$tasks['overdue'][] = & $task;		if ($task['task_percent_complete'] == 0)			$tasks['pending'][] = & $task;		else			$tasks['inprogress'][] = & $task;	}	if (isset($users_per_task[$task['task_id']]))	{		foreach($users_per_task[$task['task_id']] as $user)		{			if ($task['task_percent_complete'] == 100)				$users[$user]['completed'][] = & $task;			else			{				if ($task['task_end_date'] < date('Y-m-d'))					$users[$user]['overdue'][] = & $task;				if ($task['task_percent_complete'] == 0)					$users[$user]['pending'][] = & $task;				else					$users[$user]['inprogress'][] = & $task;			}						$users[$user]['hours'] += $users[$user]['all'][$task['task_id']]['work'];			$tasks['hours'] += $users[$user]['all'][$task['task_id']]['work'];		}	}}$sql = 'SELECT sum(file_size)FROM filesWHERE file_project = ' . $project_id . 'GROUP BY file_project';$files = db_loadResult($sql);$ontime = round(100 * (1 - (count($tasks['overdue']) / count($all_tasks)) - (count($tasks['completed']) / count($all_tasks))));?><table width="100%" border="1" cellpadding="0" cellspacing="0" class="tbl"><tr>	<th colspan="3"><?php echo $AppUI->_('Progress Chart (completed/in progress/pending)'); ?></th></tr><tr height="30">	<td width="<?php echo round(count($tasks['completed']) / count($all_tasks) * 100); ?>%" style="background: springgreen; text-align: center;"><?php echo $AppUI->_('completed'); ?></td>	<td width="<?php echo round(count($tasks['inprogress']) / count($all_tasks) * 100); ?>%" style="background: aquamarine; text-align: center;"><?php echo $AppUI->_('in progress'); ?></td>	<td width="<?php echo round(count($tasks['pending']) / count($all_tasks) * 100); ?>%" style="background: gold; text-align: center;"><?php echo $AppUI->_('pending'); ?></td></tr></table><br /><table width="100%" border="1" cellpadding="0" cellspacing="0" class="tbl"><tr>	<th colspan="3"><?php echo $AppUI->_('Time Chart (completed/on time/ocerdue)'); ?></td></tr><tr height="30">	<td width="<?php echo round(count($tasks['completed']) / count($all_tasks) * 100); ?>%" style="background: springgreen; text-align: center;"><?php echo $AppUI->_('completed'); ?></td>	<td width="<?php echo $ontime; ?>%" style="background: aquamarine; text-align: center;"><?php echo $AppUI->_('on time'); ?></td>	<td width="<?php echo round(count($tasks['overdue']) / count($all_tasks) * 100); ?>%" style="background: tomato; text-align: center;"><?php echo $AppUI->_('overdue'); ?></td></tr></table><br /><table class="tbl"><tr>	<td><table width="100%" cellspacing="1" cellpadding="4" border="0" class="tbl"><tr>	<th colspan="3"><?php echo $AppUI->_('Current Project Status'); ?></th></tr><tr>	<th><?php echo $AppUI->_('Status'); ?></th>	<th><?php echo $AppUI->_('Task Details'); ?></th>	<th>%</th></tr><tr>	<td nowrap><?php echo $AppUI->_('Complete'); ?>:</td>	<td><?php echo count($tasks['completed']); ?></td>	<td><?php echo round(count($tasks['completed']) / count($all_tasks) * 100); ?>%</td></tr><tr>	<td nowrap><?php echo $AppUI->_('In Progress'); ?>:</td>	<td><?php echo count($tasks['inprogress']); ?></td>	<td><?php echo round(count($tasks['inprogress']) / count($all_tasks) * 100); ?>%</td></tr><tr>	<td nowrap><?php echo $AppUI->_('Not Started'); ?>:</td>	<td><?php echo count($tasks['pending']); ?></td>	<td><?php echo round(count($tasks['pending']) / count($all_tasks) * 100); ?>%</td></tr><tr>	<td nowrap><?php echo $AppUI->_('Past Due'); ?>:</td>	<td><?php echo count($tasks['overdue']); ?></td>	<td><?php echo round(count($tasks['overdue']) / count($all_tasks) * 100); ?>%</td></tr><tr>	<td><?php echo $AppUI->_('Total'); ?>:</td>	<td><?php echo count($all_tasks); ?></td>	<td>100%</td></tr></table><br /><table width="100%" cellspacing="1" cellpadding="4" border="0" class="tbl"><tr>	<th colspan="2"><?php echo $AppUI->_('Project Assignee Details'); ?></th></tr><tr>	<td><?php echo $AppUI->_('Team Size'); ?>:</td>	<td><?php echo count($users); ?> <?php echo $AppUI->_('users'); ?></td></tr></table><br /><table width="100%" cellspacing="1" cellpadding="4" border="0" class="tbl"><tr>	<th colspan="2"><?php echo $AppUI->_('Document Space Utilized'); ?></th></tr><tr>	<td><?php echo $AppUI->_('Space Utilized'); ?>:</td>	<td nowrap="nowrap"><?php echo file_size($files); ?></td></tr></table>	</td>	<td width="100%" valign="top"><table width="100%" cellspacing="1" cellpadding="4" border="0" class="tbl"><tr>	<th><?php echo $AppUI->_('Task Assignee'); ?></th>	<th><?php echo $AppUI->_('Pending Tasks'); ?></th>	<th><?php echo $AppUI->_('Overdue Tasks'); ?></th>	<th><?php echo $AppUI->_('In progress'); ?></th>	<th><?php echo $AppUI->_('Completed Tasks'); ?></th>	<th><?php echo $AppUI->_('Total Tasks'); ?></th>	<th><?php echo $AppUI->_('Hours worked'); ?></th></tr><?php foreach($users as $user => $stats) {?><tr>	<td><?php echo $stats['name']; ?></td>	<td><?php echo count($stats['pending']); ?></td>	<td><?php echo count($stats['overdue']); ?></td>	<td><?php echo count($stats['inprogress']); ?></td>	<td><?php echo count($stats['completed']); ?></td>	<td><?php echo count($stats['all']); ?></td>	<td><?php echo $stats['hours']; ?> <?php echo $AppUI->_('hours'); ?></td></tr><?php } ?><tr>	<td class="highlight"><?php echo $AppUI->_('Total'); ?>:</td>	<td class="highlight"><?php echo count($tasks['pending']); ?></td>	<td class="highlight"><?php echo count($tasks['pending']); ?></td>	<td class="highlight"><?php echo count($tasks['inprogress']); ?></td>	<td class="highlight"><?php echo count($tasks['completed']); ?></td>	<td class="highlight"><?php echo count($all_tasks); ?></td>	<td class="highlight"><?php echo $tasks['hours']; ?> <?php echo $AppUI->_('hours'); ?></td></tr></table>	</td></tr></table>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?