/** * Get a summary of task timing for a given period * * @param RegisteredUser $user * @param int $taskid * @param int $projectid * @param int $clientid * @param time $start * @param time $end * @return ArrayObject */ public function getSummaryTimesheet($user = null, $taskid = null, $projectid = null, $clientid = null, $timesheet = -1, $start = null, $end = null) { $select = $this->dbService->select()->from('task', array(new Zend_Db_Expr('task.title as title'), 'id'))->joinLeft('crmuser', 'task.userid=crmuser.username', 'username')->joinLeft('timesheetrecord', 'task.id=timesheetrecord.taskid', new Zend_Db_Expr('SUM(endtime - starttime) as timespent')); $select = $this->filterBaseTimesheetQuery($select, $taskid, $projectid, $clientid, $start, $end); // If we weren't passed a user, just load // one from the request if ($user != null) { $select->where('task.userid = ?', $user->getUsername()); } if ($timesheet >= 0) { $select->where('timesheetrecord.timesheetid = ?', $timesheet); } $select->group(new Zend_Db_Expr('task.id')); $select->order('endtime DESC'); $tasks = $this->dbService->fetchObjects('task', $select); return $tasks; }