protected function display() { if (Tools::isConnectedUser()) { // only teamMembers & observers can access this page if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid)) { $this->smartyHelper->assign('accessDenied', TRUE); } else { // dates $weekDates = Tools::week_dates(date('W'), date('Y')); $startdate = Tools::getSecurePOSTStringValue("startdate", Tools::formatDate("%Y-%m-%d", $weekDates[1])); $this->smartyHelper->assign('startDate', $startdate); $enddate = Tools::getSecurePOSTStringValue("enddate", Tools::formatDate("%Y-%m-%d", $weekDates[5])); $this->smartyHelper->assign('endDate', $enddate); $isDetailed = Tools::getSecurePOSTIntValue('withJobDetails', 0); $this->smartyHelper->assign('isJobDetails', $isDetailed); $isExtTasksPrj = Tools::getSecurePOSTIntValue('withExtTasksPrj', 0); $this->smartyHelper->assign('isExtTasksPrj', $isExtTasksPrj); $isSideTasksPrj = Tools::getSecurePOSTIntValue('withSideTasksPrj', 1); $this->smartyHelper->assign('isSideTasksPrj', $isSideTasksPrj); if ('computeProjectActivityReport' == $_POST['action']) { $startTimestamp = Tools::date2timestamp($startdate); $endTimestamp = Tools::date2timestamp($enddate); $endTimestamp = mktime(23, 59, 59, date('m', $endTimestamp), date('d', $endTimestamp), date('Y', $endTimestamp)); $timeTracking = new TimeTracking($startTimestamp, $endTimestamp, $this->teamid); $this->smartyHelper->assign('projectActivityReport', $this->getProjectActivityReport($timeTracking->getProjectTracks(true), $this->teamid, $isDetailed)); // WorkingDaysPerProjectPerUser $data = $timeTracking->getWorkingDaysPerProjectPerUser($isExtTasksPrj, true, $isSideTasksPrj); foreach ($data as $smartyKey => $smartyVariable) { $this->smartyHelper->assign($smartyKey, $smartyVariable); } $data = $this->getWorkingDaysPerProjectPerUser($startTimestamp, $endTimestamp, $isExtTasksPrj, $isSideTasksPrj); foreach ($data as $smartyKey => $smartyVariable) { $this->smartyHelper->assign($smartyKey, $smartyVariable); } } } } }
/** * creates for each project a table with the following fields: * TaskName | RAF | <Jobs> * @param TimeTracking $timeTracking * @param string $myFile * @return string */ private function exportProjectActivityToCSV(TimeTracking $timeTracking, $myFile) { $sepChar = ';'; $team = TeamCache::getInstance()->getTeam($timeTracking->getTeamid()); if (!is_dir(Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports')) { mkdir(Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports', 0755); } $fh = fopen($myFile, 'w'); // $projectTracks[projectid][bugid][jobid] = duration $projectTracks = $timeTracking->getProjectTracks(); foreach ($projectTracks as $projectId => $bugList) { // write table header $project = ProjectCache::getInstance()->getProject($projectId); $stringData = $project->getName() . "\n"; $stringData .= T_("Task") . $sepChar; $stringData .= T_("BL") . $sepChar; $jobList = $project->getJobList($team->getProjectType($projectId)); foreach ($jobList as $jobName) { $stringData .= $jobName . $sepChar; } $stringData .= "\n"; // write table content (by bugid) foreach ($bugList as $bugid => $jobs) { $issue = IssueCache::getInstance()->getIssue($bugid); // remove sepChar from summary text $formatedSummary = str_replace($sepChar, " ", $issue->getSummary()); $stringData .= "{$bugid} / " . $issue->getTcId() . " : " . $formatedSummary . $sepChar; $stringData .= $issue->getBacklog() . $sepChar; foreach ($jobList as $jobId => $jobName) { $stringData .= $jobs[$jobId] . $sepChar; } $stringData .= "\n"; } $stringData .= "\n"; fwrite($fh, $stringData); } fclose($fh); return $myFile; }
/** * creates for each project a table with the following fields: * id | TC | startDate | endDate | status | total elapsed | elapsed + Backlog | elapsed in period | Backlog * TOTAL * @param TimeTracking $timeTracking * @param string $myFile * @return string */ public static function exportProjectMonthlyActivityToCSV(TimeTracking $timeTracking, $myFile) { $sepChar = ';'; $fh = fopen($myFile, 'w'); // returns : $projectTracks[projectid][bugid][jobid] = duration $projectTracks = $timeTracking->getProjectTracks(); foreach ($projectTracks as $projectId => $bugList) { $totalEffortEstim = 0; $totalElapsed = 0; $totalBacklog = 0; $totalElapsedPeriod = 0; // write table header $project = ProjectCache::getInstance()->getProject($projectId); $stringData = $project->getName() . "\n"; // WARNING i18n: HTML translation like french accents (eacute;) add an unwanted column sepChar (;) $stringData .= "ID" . $sepChar; $stringData .= "Task" . $sepChar; $stringData .= "Ext.ID" . $sepChar; $stringData .= "Start date" . $sepChar; $stringData .= "End date" . $sepChar; $stringData .= "Status" . $sepChar; $stringData .= "Total EffortEstim" . $sepChar; $stringData .= "Total elapsed" . $sepChar; $stringData .= "elapsed + Backlog" . $sepChar; $stringData .= "elapsed in period" . $sepChar; $stringData .= "BL" . $sepChar; $stringData .= "\n"; // write table content (by bugid) foreach ($bugList as $bugid => $jobs) { $issue = IssueCache::getInstance()->getIssue($bugid); // remove sepChar from summary text $formatedSummary = str_replace($sepChar, " ", $issue->getSummary()); $stringData .= $bugid . $sepChar; $stringData .= $formatedSummary . $sepChar; $stringData .= $issue->getTcId() . $sepChar; $stringData .= date("d/m/Y", $issue->startDate()) . $sepChar; $stringData .= date("d/m/Y", $issue->endDate()) . $sepChar; $stringData .= $issue->getCurrentStatusName() . $sepChar; $stringData .= $issue->getEffortEstim() + $issue->getEffortAdd() . $sepChar; $stringData .= $issue->getElapsed() . $sepChar; $stringData .= $issue->getElapsed() + $issue->getBacklog() . $sepChar; // sum all job durations $elapsedInPeriod = 0; foreach ($jobs as $jobId => $duration) { $elapsedInPeriod += $duration; } $stringData .= $elapsedInPeriod . $sepChar; $stringData .= $issue->getBacklog() . $sepChar; $stringData .= "\n"; $totalEffortEstim += $issue->getEffortEstim() + $issue->getEffortAdd(); $totalElapsed += $issue->getElapsed(); $totalBacklog += $issue->getBacklog(); $totalElapsedPeriod += $elapsedInPeriod; } // total per project $stringData .= "TOTAL" . $sepChar . $sepChar . $sepChar . $sepChar . $sepChar . $sepChar; $stringData .= $totalEffortEstim . $sepChar; $stringData .= $totalElapsed . $sepChar; $stringData .= $totalElapsed + $totalBacklog . $sepChar; $stringData .= $totalElapsedPeriod . $sepChar; $stringData .= $totalBacklog . $sepChar; $stringData .= "\n"; $stringData .= "\n"; fwrite($fh, $stringData); } fclose($fh); return $myFile; }