Пример #1
0
 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.'));
     }
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * @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;
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
 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);
             }
         }
     }
 }
Пример #6
0
 /**
  * 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;
 }
Пример #7
0
 /**
  * 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;
 }