protected function display() { if (Tools::isConnectedUser()) { if (0 != $this->teamid) { $team = TeamCache::getInstance()->getTeam($this->teamid); $action = filter_input(INPUT_GET, 'action'); if ('setDateRange' === $action) { $startdate = filter_input(INPUT_GET, 'startdate'); $startTimestamp = Tools::date2timestamp($startdate); $enddate = filter_input(INPUT_GET, 'enddate'); $endTimestamp = Tools::date2timestamp($enddate); $endTimestamp += 24 * 60 * 60 - 1; // + 1 day -1 sec. } else { //$startTimestamp = $team->getDate(); // creationDate //$endTimestamp = time(); $startTimestamp = strtotime("first day of this month"); $endTimestamp = strtotime("last day of this month"); } $this->smartyHelper->assign('startDate', date("Y-m-d", $startTimestamp)); $this->smartyHelper->assign('endDate', date("Y-m-d", $endTimestamp)); // create issueSelection with issues from team projects $teamIssues = $team->getTeamIssueList(true, true); // with disabledProjects ? $teamIssueSelection = new IssueSelection('Team' . $this->teamid . 'ISel'); $teamIssueSelection->addIssueList($teamIssues); // feed the PluginDataProvider $pluginDataProvider = PluginDataProvider::getInstance(); $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_ISSUE_SELECTION, $teamIssueSelection); $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_TEAM_ID, $this->teamid); $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp); $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_END_TIMESTAMP, $endTimestamp); $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_SESSION_USER_ID, $this->session_userid); $dashboardName = 'Team' . $this->teamid; // save the DataProvider for Ajax calls $_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardName] = serialize($pluginDataProvider); // create the Dashboard $dashboard = new Dashboard($dashboardName); $dashboard->setDomain(IndicatorPluginInterface::DOMAIN_TEAM); $dashboard->setCategories(array(IndicatorPluginInterface::CATEGORY_QUALITY, IndicatorPluginInterface::CATEGORY_ACTIVITY, IndicatorPluginInterface::CATEGORY_ROADMAP, IndicatorPluginInterface::CATEGORY_PLANNING, IndicatorPluginInterface::CATEGORY_RISK, IndicatorPluginInterface::CATEGORY_TEAM)); $dashboard->setTeamid($this->teamid); $dashboard->setUserid($this->session_userid); $data = $dashboard->getSmartyVariables($this->smartyHelper); foreach ($data as $smartyKey => $smartyVariable) { $this->smartyHelper->assign($smartyKey, $smartyVariable); } } else { $this->smartyHelper->assign('error', T_('Please select a team to access this page.')); } } else { $this->smartyHelper->assign('error', T_('Sorry, you need to be identified.')); } }
/** * display Drifts for Issues that have NOT been marked as 'Resolved' until now * @param int $teamid * @param int $threshold * @return mixed[] */ private function getCurrentDeviationStats($teamid, $threshold = 1) { $issueList = TeamCache::getInstance()->getTeam($teamid)->getCurrentIssueList(TRUE, FALSE, FALSE); if (NULL == $issueList || 0 == count($issueList)) { self::$logger->info("getCurrentDeviationStats: No opened issues for team {$teamid}"); return NULL; } $issueSelection = new IssueSelection("current issues"); $issueSelection->addIssueList($issueList); $deviationGroups = $issueSelection->getDeviationGroups($threshold); $deviationGroupsMgr = $issueSelection->getDeviationGroupsMgr($threshold); $currentDeviationStats = array(); $currentDeviationStats['totalDeviationMgr'] = $issueSelection->getDriftMgr(); $currentDeviationStats['totalDeviation'] = $issueSelection->getDrift(); $posDriftMgr = $deviationGroupsMgr['positive']->getDriftMgr(); $posDrift = $deviationGroups['positive']->getDrift(); $currentDeviationStats['nbIssuesPosMgr'] = $deviationGroupsMgr['positive']->getNbIssues(); $currentDeviationStats['nbIssuesPos'] = $deviationGroups['positive']->getNbIssues(); $currentDeviationStats['nbDaysPosMgr'] = $posDriftMgr['nbDays']; $currentDeviationStats['nbDaysPos'] = $posDrift['nbDays']; $currentDeviationStats['issuesPosMgr'] = $deviationGroupsMgr['positive']->getFormattedIssueList(); $currentDeviationStats['issuesPos'] = $deviationGroups['positive']->getFormattedIssueList(); $equalDriftMgr = $deviationGroupsMgr['equal']->getDriftMgr(); $equalDrift = $deviationGroups['equal']->getDrift(); $currentDeviationStats['nbIssuesEqualMgr'] = $deviationGroupsMgr['equal']->getNbIssues(); $currentDeviationStats['nbIssuesEqual'] = $deviationGroups['equal']->getNbIssues(); $currentDeviationStats['nbDaysEqualMgr'] = $equalDriftMgr['nbDays']; $currentDeviationStats['nbDaysEqual'] = $equalDrift['nbDays']; $currentDeviationStats['issuesEqualMgr'] = $deviationGroupsMgr['equal']->getFormattedIssueList(); $currentDeviationStats['issuesEqual'] = $deviationGroups['equal']->getFormattedIssueList(); $negDriftMgr = $deviationGroupsMgr['negative']->getDriftMgr(); $negDrift = $deviationGroups['negative']->getDrift(); $currentDeviationStats['nbIssuesNegMgr'] = $deviationGroupsMgr['negative']->getNbIssues(); $currentDeviationStats['nbIssuesNeg'] = $deviationGroups['negative']->getNbIssues(); $currentDeviationStats['nbDaysNegMgr'] = $negDriftMgr['nbDays']; $currentDeviationStats['nbDaysNeg'] = $negDrift['nbDays']; $currentDeviationStats['issuesNegMgr'] = $deviationGroupsMgr['negative']->getFormattedIssueList(); $currentDeviationStats['issuesNeg'] = $deviationGroups['negative']->getFormattedIssueList(); return $currentDeviationStats; }
/** * @param int $servicecontractid * @return mixed[] */ private static function getContractTotalDetailedMgr($servicecontractid, $provDaysByType) { $detailledMgr = NULL; if (0 != $servicecontractid) { $contract = ServiceContractCache::getInstance()->getServiceContract($servicecontractid); $issueSelection = new IssueSelection("Total"); // sidetasks $sidetasksPerCategory = $contract->getSidetasksPerCategoryType(true); foreach ($sidetasksPerCategory as $id => $iSel) { if (is_numeric($id) && Project::cat_st_inactivity == $id) { continue; } $issueSelection->addIssueList($iSel->getIssueList()); } // tasks $cmdsetsIssueSelection = $contract->getIssueSelection(CommandSet::type_general, Command::type_general); $issueSelection->addIssueList($cmdsetsIssueSelection->getIssueList()); // provisions foreach ($provDaysByType as $nbDays) { $issueSelection->addProvision($nbDays); } #echo 'TotalSideTasks provision = '.$issueSelection->getProvision().'<br>'; $detailledMgr = SmartyTools::getIssueSelectionDetailedMgr($issueSelection); $detailledMgr['name'] = $issueSelection->name; } return $detailledMgr; }
private function generateStatusHistoryGraph($teamid) { $team = TeamCache::getInstance()->getTeam($teamid); $issueList = $team->getTeamIssueList(true, false); $issueSel = new IssueSelection('Team ' . $team->getName() . ' issues'); $issueSel->addIssueList($issueList); $startTimestamp = $team->getDate(); $endTimestamp = time(); $params = array('startTimestamp' => $startTimestamp, 'endTimestamp' => $endTimestamp, 'interval' => 10); $statusHistoryIndicator = new StatusHistoryIndicator(); $statusHistoryIndicator->execute($issueSel, $params); $smartyobj = $statusHistoryIndicator->getSmartyObject(); foreach ($smartyobj as $smartyKey => $smartyVariable) { $this->smartyHelper->assign($smartyKey, $smartyVariable); } }
protected function display() { if (Tools::isConnectedUser()) { $teamList = $this->session_user->getTeamList(); // only teamMembers & observers can access this page if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid)) { $this->smartyHelper->assign('accessDenied', TRUE); } else { $pageWidth = Tools::getSecurePOSTIntValue('width', Tools::getSecureGETIntValue('width', 0)); $this->smartyHelper->assign('width', $pageWidth); if (array_key_exists($this->teamid, $teamList)) { $this->smartyHelper->assign('consistencyErrors', $this->getConsistencyErrors($this->teamid)); $team = TeamCache::getInstance()->getTeam($this->teamid); $isManager = $this->session_user->isTeamManager($this->teamid); $isObserver = $this->session_user->isTeamObserver($this->teamid); $this->smartyHelper->assign('isManager', $isManager || $isObserver); // display backlog (unassigned tasks) $unassignedIssues = $team->getUnassignedTasks(); $unassigendSel = new IssueSelection("unassigned from team {$this->teamid}"); $unassigendSel->addIssueList($unassignedIssues); $this->smartyHelper->assign('unassigned_nbIssues', $unassigendSel->getNbIssues()); $this->smartyHelper->assign('unassigned_MEE', $unassigendSel->mgrEffortEstim); $this->smartyHelper->assign('unassigned_EE', $unassigendSel->effortEstim + $unassigendSel->effortAdd); // get planningOptions $keyvalue = Tools::getSecurePOSTStringValue('planningOptions', ''); if (!empty($keyvalue)) { $planningOptions = Tools::doubleExplode(':', ',', $keyvalue); $this->session_user->setPlanningOptions($this->teamid, $planningOptions); } $this->smartyHelper->assign('planningOptions', $this->getPlanningOptions()); $today = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $graphSize = "undefined" != $pageWidth ? $pageWidth - 150 : 800; $allTasksLists = array(); $workloads = array(); $teamMembers = $team->getUsers(); $nbDaysToDisplay = 0; foreach ($teamMembers as $user) { $workload = 0; // show only developper's & manager's tasks if (!$user->isTeamDeveloper($this->teamid) && !$user->isTeamManager($this->teamid)) { if (self::$logger->isDebugEnabled()) { self::$logger->debug("user " . $user->getId() . " excluded from scheduled users on team {$this->teamid}"); } continue; } if (NULL != $user->getDepartureDate($this->teamid) && $user->getDepartureDate($this->teamid) < $today) { continue; } $scheduledTaskList = ScheduledTask::scheduleUser($user, $today, $this->teamid, TRUE); foreach ($scheduledTaskList as $scheduledTask) { $workload += $scheduledTask->getDuration(); } $nbDaysToDisplay = $nbDaysToDisplay < $workload ? $workload : $nbDaysToDisplay; $allTasksLists[$user->getName()] = $scheduledTaskList; $workloads[$user->getName()] = $workload; } $dayPixSize = 0 != $nbDaysToDisplay ? $graphSize / $nbDaysToDisplay : 0; $dayPixSize = round($dayPixSize); #echo "DEBUG dayPixSize = $dayPixSize<br/>\n"; $this->smartyHelper->assign('planning', $this->getPlanning($nbDaysToDisplay, $dayPixSize, $allTasksLists, $workloads, $this->teamid, $this->session_userid, $isManager)); $this->smartyHelper->assign('colors', array("green" => T_("onTime"), "red" => T_("NOT onTime"), "blue" => T_("no deadLine"), "grey" => T_("monitored"))); $this->smartyHelper->assign('dayPixSize', $dayPixSize - 1); } } } }
/** * Collect the Issues of all the Commands (of a given type) * * @param int $type Command::type_general * * @return IssueSelection */ public function getIssueSelection($type) { // TODO: if type==NULL return for all types $issueSelection = new IssueSelection(); $cmdidList = $this->getCommandIds($type); if ($cmdidList && 0 != count($cmdidList)) { foreach ($cmdidList as $cmdid) { $cmd = CommandCache::getInstance()->getCommand($cmdid); $mcdIS = $cmd->getIssueSelection(); $issueSelection->addIssueList($mcdIS->getIssueList()); } } return $issueSelection; }
/** * Collect the Issues of all the CommandSets (of a given type) * * @param int $cset_type CommandSet::type_general * @param int $cmd_type Command::type_general * @return IssueSelection */ public function getIssueSelection($cset_type, $cmd_type) { // TODO: if type==NULL return for all types $issueSelection = new IssueSelection(); $cmdsetidList = $this->getCommandSetIds($cset_type); if ($cmdsetidList && 0 != count($cmdsetidList)) { foreach ($cmdsetidList as $commandset_id) { $cmdset = CommandSetCache::getInstance()->getCommandSet($commandset_id); $cmdsetIS = $cmdset->getIssueSelection($cmd_type); $issueSelection->addIssueList($cmdsetIS->getIssueList()); } } return $issueSelection; }