Example #1
0
 /**
  * @param Command $command
  * @return mixed[]
  */
 private static function getCommandIssues(Command $command)
 {
     $issueArray = array();
     $issues = $command->getIssueSelection()->getIssueList();
     foreach ($issues as $id => $issue) {
         $driftMgr = $issue->getDriftMgr();
         $driftMgrColor = $issue->getDriftColor($driftMgr);
         $drift = $issue->getDrift();
         $driftColor = $issue->getDriftColor($drift);
         $user = UserCache::getInstance()->getUser($issue->getHandlerId());
         $issueArray[$id] = array("mantisLink" => Tools::mantisIssueURL($issue->getId(), NULL, TRUE), "bugid" => Tools::issueInfoURL(sprintf("%07d\n", $issue->getId())), "extRef" => $issue->getTcId(), "project" => $issue->getProjectName(), "target" => $issue->getTargetVersion(), "status" => $issue->getCurrentStatusName(), "progress" => round(100 * $issue->getProgress()), "effortEstim" => $issue->getEffortEstim() + $issue->getEffortAdd(), "mgrEffortEstim" => $issue->getMgrEffortEstim(), "elapsed" => $issue->getElapsed(), "driftMgr" => $driftMgr, "driftMgrColor" => $driftMgrColor, "drift" => $drift, "driftColor" => $driftColor, "duration" => $issue->getDuration(), "summary" => $issue->getSummary(), "type" => $issue->getType(), "handlerName" => $user->getName());
     }
     return $issueArray;
 }
Example #2
0
 /**
  *
  * @param type $relationshipList
  */
 private static function getFormattedRelationshipsInfo($issue)
 {
     $relationships = $issue->getRelationships();
     $relationshipsInfo = array();
     foreach ($relationships as $relType => $bugids) {
         $typeLabel = Issue::getRelationshipLabel($relType);
         foreach ($bugids as $bugid) {
             $relatedIssue = IssueCache::getInstance()->getIssue($bugid);
             $relationshipsInfo["{$bugid}"] = array('url' => Tools::issueInfoURL($bugid), 'relationship' => $typeLabel, 'status' => $relatedIssue->getCurrentStatusName(), 'progress' => round(100 * $relatedIssue->getProgress()));
         }
     }
     ksort($relationshipsInfo);
     return $relationshipsInfo;
 }
Example #3
0
 /**
  *
  * @param type $relationshipList
  */
 private static function getFormattedRelationshipsInfo($issue)
 {
     $relationships = $issue->getRelationships();
     $relationshipsInfo = array();
     foreach ($relationships as $relType => $bugids) {
         $typeLabel = Issue::getRelationshipLabel($relType);
         foreach ($bugids as $bugid) {
             $relatedIssue = IssueCache::getInstance()->getIssue($bugid);
             $summary = htmlspecialchars(preg_replace('![\\t\\r\\n]+!', ' ', $relatedIssue->getSummary()));
             $relationshipsInfo["{$bugid}"] = array('url' => Tools::issueInfoURL($bugid), 'relationship' => $typeLabel, 'status' => $relatedIssue->getCurrentStatusName(), 'progress' => round(100 * $relatedIssue->getProgress()), 'summary' => $summary);
         }
     }
     ksort($relationshipsInfo);
     return $relationshipsInfo;
 }
 /**
  *
  * returns an array of [user][activity]
  * activity in (elapsed, sidetask, other, external, leave)
  *
  */
 public function execute()
 {
     $team = TeamCache::getInstance()->getTeam($this->teamid);
     $members = $team->getActiveMembers(null, null, true);
     $issueList = $this->inputIssueSel->getIssueList();
     // ---
     $userList = array();
     $formattedTaskListPerUser = array();
     $iSelPerUser = array();
     $iSelOpenTasks = new IssueSelection('nonResolved');
     /* @var $issue Issue */
     foreach ($issueList as $issue) {
         try {
             // for each issue that is not resolved, add reestimated to handler.
             if (!$issue->isResolved()) {
                 $userId = $issue->getHandlerId();
                 if (0 != $userId) {
                     $user = UserCache::getInstance()->getUser($userId);
                     $userList[$userId] = $user->getRealname();
                 } else {
                     $userList[0] = '(unknown 0)';
                 }
                 if (!$this->isExtRef) {
                     $displayedTaskId = NULL;
                 } else {
                     $displayedTaskId = NULL != $issue->getTcId() && false != trim($issue->getTcId()) ? $issue->getTcId() : 'm-' . $issue->getId();
                 }
                 $tooltipAttr = $issue->getTooltipItems($this->teamid, $this->sessionUserid, $this->isManager);
                 // add task summary in front
                 $tooltipAttr = array(T_('Summary') => $issue->getSummary()) + $tooltipAttr;
                 $formattedTaskListPerUser[$userId][] = Tools::issueInfoURL($issue->getId(), $tooltipAttr, FALSE, $displayedTaskId);
                 if (!array_key_exists($userId, $iSelPerUser)) {
                     $iSelPerUser[$userId] = new IssueSelection('user_' . $userId);
                 }
                 $iSelPerUser[$userId]->addIssue($issue->getId());
                 $iSelOpenTasks->addIssue($issue->getId());
             }
         } catch (Exception $e) {
             self::$logger->error("BacklogPerUserIndicator: " . $e->getMessage());
         }
     }
     // sort by name, keep key-val association
     asort($userList);
     asort($members);
     // team members
     $usersActivity = array();
     foreach ($members as $userId => $userName) {
         if (array_key_exists($userId, $iSelPerUser)) {
             $isel = $iSelPerUser[$userId];
             $progress = round($isel->getProgress() * 100);
             $backlog = $isel->duration;
             $taskList = implode(', ', $formattedTaskListPerUser[$userId]);
             $nbTasks = count($formattedTaskListPerUser[$userId]);
         } else {
             $progress = 0;
             $backlog = '';
             $taskList = '';
             $nbTasks = '';
         }
         $usersActivity[$userId] = array('handlerName' => $userName, 'backlog' => $backlog, 'nbTasks' => $nbTasks, 'progress' => $progress, 'taskList' => $taskList);
     }
     // users not in team
     foreach ($userList as $userId => $userName) {
         if (!array_key_exists($userId, $members) && 0 != $userId) {
             $isel = $iSelPerUser[$userId];
             $usersActivity[$userId] = array('handlerName' => '<span class="warn_font">' . $userName . '</span>', 'backlog' => $isel->duration, 'nbTasks' => count($formattedTaskListPerUser[$userId]), 'progress' => round($isel->getProgress() * 100), 'taskList' => implode(', ', $formattedTaskListPerUser[$userId]));
         }
     }
     // unassigned tasks
     if (array_key_exists(0, $userList)) {
         $isel = $iSelPerUser[0];
         $usersActivity[0] = array('handlerName' => '<span class="error_font">' . T_('(unknown 0)') . '</span>', 'backlog' => $isel->duration, 'nbTasks' => count($formattedTaskListPerUser[0]), 'progress' => round($isel->getProgress() * 100), 'taskList' => implode(', ', $formattedTaskListPerUser[0]));
     }
     // Total
     $totalArray = array('handlerName' => T_('TOTAL'), 'backlog' => $iSelOpenTasks->duration, 'nbTasks' => count($iSelOpenTasks->getIssueList()), 'progress' => round($iSelOpenTasks->getProgress() * 100), 'taskList' => '');
     #var_dump($usersActivity);
     $this->execData = array();
     $this->execData['userArray'] = $usersActivity;
     $this->execData['totalArray'] = $totalArray;
 }
 /**
  *
  */
 public function execute()
 {
     // === get timetracks for each Issue,
     $team = TeamCache::getInstance()->getTeam($this->teamid);
     $useridList = array_keys($team->getActiveMembers($this->startTimestamp, $this->endTimestamp));
     $timeTracks = $this->inputIssueSel->getTimetracks($useridList, $this->startTimestamp, $this->endTimestamp);
     // === get project list
     // TODO
     $projectidList = array_keys($this->getProjectList());
     // === process timetracks
     $rawInfoPerCat = $this->getRawInfoPerCategory($timeTracks, $projectidList);
     // === build $infoPerCat
     $infoPerCat = array();
     foreach ($rawInfoPerCat['durationPerCat'] as $catName => $duration) {
         $catInfo = array('catName' => $catName, 'duration' => $duration);
         // create formatedBugList (with tooltips)
         if ($this->isDisplayTasks) {
             $bugList = $rawInfoPerCat['bugidsPerCat'][$catName];
             $formatedBugs = '';
             foreach ($bugList as $bugid => $bugDuration) {
                 $issue = IssueCache::getInstance()->getIssue($bugid);
                 $tooltipAttributes = array(T_('Project') => $issue->getProjectName(), T_('Summary') => $issue->getSummary(), T_('Elapsed') => $bugDuration);
                 if (!empty($formatedBugs)) {
                     $formatedBugs .= ', ' . Tools::issueInfoURL($bugid, $tooltipAttributes);
                 } else {
                     $formatedBugs = Tools::issueInfoURL($bugid, $tooltipAttributes);
                 }
             }
             $catInfo['formatedBugsPerCategory'] = $formatedBugs;
         }
         $infoPerCat[$catName] = $catInfo;
     }
     $this->execData = $infoPerCat;
     return $this->execData;
 }
Example #6
0
 /**
  * Get consistency errors
  * @param int $teamid
  * @return mixed[]
  */
 private function getTeamConsistencyErrors($teamid)
 {
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("getTeamConsistencyErrors teamid={$teamid}");
     }
     // get team projects
     $issueList = TeamCache::getInstance()->getTeam($teamid)->getTeamIssueList(true, false);
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("getTeamConsistencyErrors nbIssues=" . count($issueList));
     }
     #$ccheck = new ConsistencyCheck2($issueList);
     $ccheck = new ConsistencyCheck2($issueList, $teamid);
     $cerrList = $ccheck->check();
     $cerrs = NULL;
     if (count($cerrList) > 0) {
         $i = 0;
         foreach ($cerrList as $cerr) {
             $i += 1;
             if (NULL != $cerr->userId) {
                 $user = UserCache::getInstance()->getUser($cerr->userId);
             } else {
                 $user = NULL;
             }
             if (Issue::exists($cerr->bugId)) {
                 $issue = IssueCache::getInstance()->getIssue($cerr->bugId);
                 $summary = $issue->getSummary();
                 $projName = $issue->getProjectName();
                 $refExt = $issue->getTcId();
             } else {
                 $summary = '';
                 $projName = '';
             }
             $cerrs[$i] = array('userName' => isset($user) ? $user->getName() : '', 'issueURL' => NULL == $cerr->bugId ? '' : Tools::issueInfoURL($cerr->bugId, $summary), 'mantisURL' => NULL == $cerr->bugId ? '' : Tools::mantisIssueURL($cerr->bugId, $summary, true), 'extRef' => NULL == $refExt ? '' : $refExt, 'date' => NULL == $cerr->timestamp ? '' : date("Y-m-d", $cerr->timestamp), 'status' => NULL == $cerr->status ? '' : Constants::$statusNames[$cerr->status], 'severity' => $cerr->getLiteralSeverity(), 'project' => $projName, 'desc' => $cerr->desc, 'summary' => $summary);
         }
     }
     return $cerrs;
 }
 /**
  * @param Issue $issue
  * @param boolean $isManager
  * @return mixed[]
  */
 private function getSmartyDirftedIssue(Issue $issue, $isManager)
 {
     $driftMgr = $isManager ? $issue->getDriftMgr() : 0;
     $drift = $issue->getDrift();
     $driftMgrColor = NULL;
     if ($isManager) {
         if ($driftMgr < -1) {
             $driftMgrColor = "#61ed66";
         } else {
             if ($driftMgr > 1) {
                 $driftMgrColor = "#fcbdbd";
             }
         }
         $driftMgr = round($driftMgr, 2);
     }
     $driftColor = NULL;
     if ($drift < -1) {
         $driftColor = "#61ed66";
     } else {
         if ($drift > 1) {
             $driftColor = "#fcbdbd";
         }
     }
     return array('issueURL' => Tools::issueInfoURL($issue->getId()), 'mantisURL' => Tools::mantisIssueURL($issue->getId(), NULL, true), 'projectName' => $issue->getProjectName(), 'targetVersion' => $issue->getTargetVersion(), 'driftMgrColor' => $driftMgrColor, 'driftMgr' => $driftMgr, 'driftColor' => $driftColor, 'drift' => round($drift, 2), 'backlog' => $issue->getBacklog(), 'progress' => round(100 * $issue->getProgress()), 'currentStatusName' => $issue->getCurrentStatusName(), 'summary' => $issue->getSummary());
 }
Example #8
0
 /**
  * Get the consistency errors
  * @param int $teamid
  * @return mixed[][]
  */
 private function getConsistencyErrors($teamid)
 {
     $issueList = TeamCache::getInstance()->getTeam($teamid)->getTeamIssueList(TRUE);
     $ccheck = new ConsistencyCheck2($issueList, $teamid);
     $cerrList = $ccheck->checkBadBacklog();
     #$cerrList2 = $ccheck->checkUnassignedTasks();
     $consistencyErrors = NULL;
     if (count($cerrList) > 0 || count($cerrList2) > 0) {
         $consistencyErrors = array();
         foreach ($cerrList as $cerr) {
             $user = UserCache::getInstance()->getUser($cerr->userId);
             $issue = IssueCache::getInstance()->getIssue($cerr->bugId);
             $titleAttr = array(T_('Project') => $issue->getProjectName(), T_('Summary') => $issue->getSummary());
             $consistencyErrors[] = array('issueURL' => Tools::issueInfoURL($cerr->bugId, $titleAttr), 'issueStatus' => Constants::$statusNames[$cerr->status], 'date' => date("Y-m-d", $cerr->timestamp), 'user' => $user->getName(), 'severity' => $cerr->getLiteralSeverity(), 'severityColor' => $cerr->getSeverityColor(), 'desc' => $cerr->desc);
         }
         /*
                  if (0 != count($cerrList2)) {
                     $consistencyErrors[] = array(
                        'issueURL' => '',
                        'issueStatus' => '-',
                        'date' => '-',
                        'user' => '('.T_('unknown').')',
                        'severity' => T_('Warning'),
                        'severityColor' => 'color:orange',
                        'desc' => count($cerrList2).' '.T_('tasks are not assigned to anybody.')
                     );
                  }
         */
     }
     return $consistencyErrors;
 }
Example #9
0
 /**
  * @param int $teamid
  * @param bool $withSupport
  * @return mixed[]
  */
 private function getIssuesInDrift($teamid, $withSupport = TRUE)
 {
     $team = TeamCache::getInstance()->getTeam($teamid);
     $mList = $team->getMembers();
     $projList = $team->getProjects(true, false);
     // exclude disabled projects
     $issueArray = NULL;
     foreach ($mList as $id => $name) {
         $user = UserCache::getInstance()->getUser($id);
         // do not take observer's tasks
         if (!$user->isTeamDeveloper($teamid) && !$user->isTeamCustomer($teamid) && !$user->isTeamManager($teamid)) {
             if (self::$logger->isDebugEnabled()) {
                 self::$logger->debug("getIssuesInDrift user {$id} ({$name}) excluded.");
             }
             continue;
         }
         // TODO WARN: unassigned issues will be ommitted !!
         $issueList = $user->getAssignedIssues($projList);
         foreach ($issueList as $issue) {
             $driftMgrEE = $issue->getDriftMgr($withSupport);
             $driftEE = $issue->getDrift($withSupport);
             if ($driftMgrEE > 0 || $driftEE > 0) {
                 $tooltipAttr = $issue->getTooltipItems($teamid, $this->session_userid);
                 $issueArray[] = array('bugId' => Tools::issueInfoURL($issue->getId(), $tooltipAttr), 'handlerName' => $user->getName(), 'projectName' => $issue->getProjectName(), 'progress' => round(100 * $issue->getProgress()), 'effortEstimMgr' => $issue->getMgrEffortEstim(), 'effortEstim' => $issue->getEffortEstim() + $issue->getEffortAdd(), 'elapsed' => $issue->getElapsed(), 'reestimated' => $issue->getReestimated(), 'backlog' => $issue->getBacklog(), 'driftPrelEE' => $driftMgrEE, 'driftEE' => $driftEE, 'statusName' => $issue->getCurrentStatusName(), 'summary' => $issue->getSummary());
             }
         }
     }
     return $issueArray;
 }
Example #10
0
 /**
  * Drift Stats on a given Issue.class List
  *
  * @param Issue[] $issueList
  * @param bool $withSupport
  * @return mixed[] driftStats
  *
  * TODO move this method to IssueSelection class
  */
 private function getIssuesDriftStats(array $issueList, $withSupport = true)
 {
     if (NULL == $issueList) {
         echo "<div style='color:red'>ERROR getIssuesDriftStats: Issue List is NULL !<br/></div>";
         self::$logger->error("getIssuesDriftStats(): Issue List is NULL !");
         return 0;
     }
     if (0 == count($issueList)) {
         echo "<div style='color:red'>ERROR getIssuesDriftStats: Issue List is empty !<br/></div>";
         self::$logger->error("getIssuesDriftStats(): Issue List is empty !");
         return 0;
     }
     $derive = 0;
     $deriveETA = 0;
     $nbDriftsNeg = 0;
     $nbDriftsEqual = 0;
     $nbDriftsPos = 0;
     $nbDriftsNegETA = 0;
     $nbDriftsEqualETA = 0;
     $nbDriftsPosETA = 0;
     $driftNeg = 0;
     $driftEqual = 0;
     $driftPos = 0;
     $driftNegETA = 0;
     $driftEqualETA = 0;
     $driftPosETA = 0;
     $formatedBugidNegList = "";
     $formatedBugidPosList = "";
     $formatedBugidEqualList = "";
     $bugidEqualList = "";
     foreach ($issueList as $issue) {
         // compute total drift
         $issueDrift = $issue->getDrift($withSupport);
         $derive += $issueDrift;
         $issueDriftMgrEE = $issue->getDriftMgr($withSupport);
         $deriveETA += $issueDriftMgrEE;
         if (self::$logger->isDebugEnabled()) {
             self::$logger->debug("getIssuesDriftStats() Found : bugid=" . $issue->getId() . ", proj=" . $issue->getProjectId() . ", effortEstim=" . $issue->getEffortEstim() . ", BS=" . $issue->getEffortAdd() . ", elapsed = " . $issue->getElapsed() . ", drift={$issueDrift}, DriftMgrEE={$issueDriftMgrEE}");
         }
         // get drift stats. equal is when drif = +-1
         if ($issueDrift < -1) {
             $nbDriftsNeg++;
             $driftNeg += $issueDrift;
             if ($formatedBugidNegList != "") {
                 $formatedBugidNegList .= ', ';
             }
             $formatedBugidNegList .= Tools::issueInfoURL($issue->getId(), $issue->getSummary());
         } elseif ($issueDrift > 1) {
             $nbDriftsPos++;
             $driftPos += $issueDrift;
             if ($formatedBugidPosList != "") {
                 $formatedBugidPosList .= ', ';
             }
             $formatedBugidPosList .= Tools::issueInfoURL($issue->getId(), $issue->getSummary());
         } else {
             $nbDriftsEqual++;
             $driftEqual += $issueDrift;
             if ($formatedBugidEqualList != "") {
                 $formatedBugidEqualList .= ', ';
             }
             $formatedBugidEqualList .= Tools::issueInfoURL($issue->getId(), $issue->getSummary());
             if ($bugidEqualList != "") {
                 $bugidEqualList .= ', ';
             }
             $bugidEqualList .= $issue->getId();
         }
         if ($issueDriftMgrEE < -1) {
             $nbDriftsNegETA++;
             $driftNegETA += $issueDriftMgrEE;
         } elseif ($issueDriftMgrEE > 1) {
             $nbDriftsPosETA++;
             $driftPosETA += $issueDriftMgrEE;
         } else {
             $nbDriftsEqualETA++;
             $driftEqualETA += $issueDriftMgrEE;
         }
     }
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("derive totale (" . Tools::formatDate("%B %Y", $this->startTimestamp) . ") = {$derive}");
         self::$logger->debug("derive totale ETA(" . Tools::formatDate("%B %Y", $this->startTimestamp) . ") = {$deriveETA}");
         self::$logger->debug("Nbre Bugs en derive        : {$nbDriftsPos}");
         self::$logger->debug("Nbre Bugs a l'equilibre    : {$nbDriftsEqual}");
         self::$logger->debug("Nbre Bugs en avance        : {$nbDriftsNeg}");
         self::$logger->debug("Nbre Bugs en derive     ETA: {$nbDriftsPosETA}");
         self::$logger->debug("Nbre Bugs a l'equilibre ETA: {$nbDriftsEqualETA}");
         self::$logger->debug("Nbre Bugs en avance     ETA: {$nbDriftsNegETA}");
     }
     return array("totalDrift" => $derive, "totalDriftETA" => $deriveETA, "driftPos" => $driftPos, "driftEqual" => $driftEqual, "driftNeg" => $driftNeg, "driftPosETA" => $driftPosETA, "driftEqualETA" => $driftEqualETA, "driftNegETA" => $driftNegETA, "nbDriftsPos" => $nbDriftsPos, "nbDriftsEqual" => $nbDriftsEqual, "nbDriftsNeg" => $nbDriftsNeg, "nbDriftsPosETA" => $nbDriftsPosETA, "nbDriftsEqualETA" => $nbDriftsEqualETA, "nbDriftsNegETA" => $nbDriftsNegETA, "formatedBugidPosList" => $formatedBugidPosList, "formatedBugidEqualList" => $formatedBugidEqualList, "formatedBugidNegList" => $formatedBugidNegList, "bugidEqualList" => $bugidEqualList);
 }
Example #11
0
 /**
  * Get consistency errors
  * @return mixed[]
  */
 private function getConsistencyErrors()
 {
     $consistencyErrors = array();
     // if null, array_merge fails !
     if (0 != $this->teamid) {
         // only this team's projects
         #$teamList = $this->teamList;
         $teamList = array($this->teamid => $this->teamList[$this->teamid]);
         // except disabled projects
         $projList = $this->session_user->getProjectList($teamList, true, false);
         $issueList = $this->session_user->getAssignedIssues($projList, true);
         $ccheck = new ConsistencyCheck2($issueList, $this->teamid);
         $cerrList = $ccheck->check();
         if (count($cerrList) > 0) {
             foreach ($cerrList as $cerr) {
                 if ($this->session_user->getId() == $cerr->userId) {
                     $issue = IssueCache::getInstance()->getIssue($cerr->bugId);
                     $titleAttr = array(T_('Project') => $issue->getProjectName(), T_('Summary') => $issue->getSummary());
                     $consistencyErrors[] = array('issueURL' => Tools::issueInfoURL($cerr->bugId, $titleAttr), 'status' => Constants::$statusNames[$cerr->status], 'desc' => $cerr->desc);
                 }
             }
         }
     }
     return $consistencyErrors;
 }
 /**
  * $explodeResults contains a list of filterNames + an IssueSelection on the last column.
  * This function will replace the IssueSelection with a smarty comprehensible array
  * containing the info to be displayed.
  *
  * @param type $explodeResults
  * @param type $filterDisplayNames
  */
 private function getIssues($explodeResults, $filterDisplayNames, $smartyVariables)
 {
     $iselIdx = count($explodeResults[0]) - 1;
     $smartyObj = array();
     // find out which issues will have a tooltip
     if (0 != $this->maxTooltipsPerPage) {
         $bugWithTooltipList = @array_keys($this->inputIssueSel->getLastUpdatedList($this->maxTooltipsPerPage));
         #echo "bugWithTooltipList = ".implode(',', $bugWithTooltipList).'<br>';
     }
     foreach ($explodeResults as $line) {
         $isel = $line[$iselIdx];
         // format Issues list
         $formatedResolvedList = '';
         $formatedOpenList = '';
         $formatedNewList = '';
         foreach ($isel->getIssueList() as $bugid => $issue) {
             if (0 != $this->maxTooltipsPerPage && !in_array($issue->getId(), $bugWithTooltipList)) {
                 // display default one-line tooltip
                 $tooltipAttr = NULL;
             } else {
                 if (0 != $this->userid) {
                     $tooltipAttr = $issue->getTooltipItems($this->teamid, $this->userid);
                 } else {
                     $tooltipAttr = $issue->getTooltipItems($this->teamid, 0, $this->isManager);
                 }
                 if (!array_key_exists(T_('Summary'), $tooltipAttr)) {
                     // insert in front
                     $tooltipAttr = array(T_('Summary') => $issue->getSummary()) + $tooltipAttr;
                 }
             }
             if (Constants::$status_new == $issue->getCurrentStatus()) {
                 if (!empty($formatedNewList)) {
                     $formatedNewList .= ', ';
                 }
                 $formatedNewList .= Tools::issueInfoURL($bugid, $tooltipAttr);
             } elseif ($issue->getCurrentStatus() >= $issue->getBugResolvedStatusThreshold()) {
                 if (!empty($formatedResolvedList)) {
                     $formatedResolvedList .= ', ';
                 }
                 $formatedResolvedList .= Tools::issueInfoURL($bugid, $tooltipAttr);
             } else {
                 if (!empty($formatedOpenList)) {
                     $formatedOpenList .= ', ';
                 }
                 $formatedOpenList .= Tools::issueInfoURL($bugid, $tooltipAttr);
             }
         }
         $smartyElem = array('newList' => $formatedNewList, 'openList' => $formatedOpenList, 'resolvedList' => $formatedResolvedList);
         // ---
         $line[$iselIdx] = $smartyElem;
         $smartyObj[] = $line;
     }
     // add TitleLine
     $titles = $filterDisplayNames;
     $titles[] = T_("New Tasks");
     $titles[] = T_("Current Tasks");
     $titles[] = T_("Resolved Tasks");
     // set Smarty
     if (1 == count($explodeResults)) {
         $totalLine = $smartyObj[0];
         // first line is rootElem (TOTAL)
     } else {
         $totalLine = array_shift($smartyObj);
         // first line is rootElem (TOTAL)
     }
     $smartyVariables['issuesTitles'] = $titles;
     $smartyVariables['issuesLines'] = $smartyObj;
     $smartyVariables['issuesTotal'] = $totalLine;
     return $smartyVariables;
 }
Example #13
0
 /**
  * return a coma separated list of bugid URLs
  * @return string
  */
 public function getFormattedIssueList()
 {
     $formattedList = "";
     // make a copy, the initial issueList may be already sorted on different criteria
     $sortedList = $this->issueList;
     ksort($sortedList, SORT_NUMERIC);
     foreach ($sortedList as $bugid => $issue) {
         if ("" != $formattedList) {
             $formattedList .= ', ';
         }
         $titleAttr = array(T_('Project') => $issue->getProjectName(), T_('Summary') => $issue->getSummary());
         $extRef = $issue->getTcId();
         if (!is_null($extRef) && '' != $extRef) {
             $titleAttr[T_('ExtRef')] = $extRef;
         }
         $formattedList .= Tools::issueInfoURL($bugid, $titleAttr);
     }
     return $formattedList;
 }
Example #14
0
        if ($mgrEffortEstim) {
            $issue->setMgrEffortEstim($mgrEffortEstim);
        }
        if ($effortEstim) {
            $issue->setEffortEstim($effortEstim);
        }
        if ($targetversionid) {
            $issue->setTargetVersion($targetversionid);
        }
        if ($userid) {
            $issue->setHandler($userid);
        }
        if ($type) {
            $issue->setType($type);
        }
        if ($formatedDeadline) {
            $timestamp = Tools::date2timestamp($formatedDeadline);
            $issue->setDeadline($timestamp);
        }
        if ($commandid) {
            $command = CommandCache::getInstance()->getCommand($commandid);
            $command->addIssue($bugid, true);
            // DBonly
        }
        if ($logger->isDebugEnabled()) {
            $logger->debug("Import bugid={$bugid} {$extRef} - {$summary} - {$mgrEffortEstim} - {$effortEstim} - {$commandid} - {$categoryid} - {$targetversionid} - {$userid}");
        }
        // RETURN VALUE
        echo Tools::mantisIssueURL($bugid, NULL, TRUE) . " " . Tools::issueInfoURL($bugid, NULL);
    }
}
 /**
  *
  */
 public function execute()
 {
     $issueList = $this->inputIssueSel->getIssueList();
     $today = time();
     $midnightTimestamp = mktime(0, 0, 0, date('m', $today), date('d', $today), date('Y', $today));
     $issueArray = NULL;
     foreach ($issueList as $issue) {
         $deadline = $issue->getDeadLine();
         if ($deadline > 0 && $deadline < $midnightTimestamp && !$issue->isResolved()) {
             $tooltipAttr = $issue->getTooltipItems($this->teamid, $this->session_userid);
             $user = UserCache::getInstance()->getUser($issue->getHandlerId());
             #$driftMgrEE = $issue->getDriftMgr($withSupport);
             #$driftEE = $issue->getDrift($withSupport);
             $issueArray[] = array('bugId' => Tools::issueInfoURL($issue->getId(), $tooltipAttr), 'handlerName' => $user->getName(), 'projectName' => $issue->getProjectName(), 'deadline' => date('Y-m-d', $deadline), 'progress' => round(100 * $issue->getProgress()), 'elapsed' => $issue->getElapsed(), 'reestimated' => $issue->getReestimated(), 'backlog' => $issue->getBacklog(), 'statusName' => $issue->getCurrentStatusName(), 'summary' => $issue->getSummary());
         }
     }
     $this->execData = $issueArray;
     return $this->execData;
 }
Example #16
0
 /**
  * returns all issues not already assigned to a command
  * and which project_id is defined in the team
  *
  * @param int $this->teamid
  * @return mixed[]
  */
 private function getChildIssuesCandidates($teamid)
 {
     $issueArray = array();
     // team projects except externalTasksProject & NoStats projects
     $projects = TeamCache::getInstance()->getTeam($this->teamid)->getProjects();
     $extProjId = Config::getInstance()->getValue(Config::id_externalTasksProject);
     unset($projects[$extProjId]);
     $formattedProjectList = implode(', ', array_keys($projects));
     $query = "SELECT * FROM `mantis_bug_table` " . "WHERE project_id IN ({$formattedProjectList}) " . "AND 0 = is_issue_in_team_commands(id, {$teamid}) " . "ORDER BY id DESC";
     $result = SqlWrapper::getInstance()->sql_query($query);
     if (!$result) {
         echo "<span style='color:red'>ERROR: Query FAILED</span>";
         exit;
     }
     while ($row = SqlWrapper::getInstance()->sql_fetch_object($result)) {
         $issue = IssueCache::getInstance()->getIssue($row->id, $row);
         $issueArray[$row->id] = array("bugid" => Tools::issueInfoURL(sprintf("%07d\n", $issue->getId())), "extRef" => $issue->getTcId(), "project" => $issue->getProjectName(), "target" => $issue->getTargetVersion(), "status" => $issue->getCurrentStatusName(), "summary" => htmlspecialchars($issue->getSummary()));
     }
     return $issueArray;
 }
Example #17
0
 public static function getIssueDescription($bugid, $extid, $summary, $tooltipAttr = NULL)
 {
     $description = Tools::mantisIssueURL($bugid, NULL, TRUE) . ' ' . Tools::issueInfoURL($bugid, $tooltipAttr);
     if ($extid != NULL && strlen($extid) > 0) {
         $description .= " / " . $extid;
     }
     if ($summary != NULL && strlen($summary) > 0) {
         $description .= " : " . htmlspecialchars($summary);
     }
     return $description;
 }
Example #18
0
 /**
  * Get consistency errors
  * @param Command $cmd
  * @return mixed[]
  */
 private function getConsistencyErrors(Command $cmd)
 {
     $consistencyErrors = array();
     // if null, array_merge fails !
     $cerrList = $cmd->getConsistencyErrors();
     if (count($cerrList) > 0) {
         foreach ($cerrList as $cerr) {
             if (!is_null($cerr->userId)) {
                 $user = UserCache::getInstance()->getUser($cerr->userId);
             } else {
                 $user = NULL;
             }
             if (Issue::exists($cerr->bugId)) {
                 $issue = IssueCache::getInstance()->getIssue($cerr->bugId);
                 $projName = $issue->getProjectName();
                 $summary = $issue->getSummary();
             } else {
                 $projName = '';
                 $summary = '';
             }
             $titleAttr = array(T_('Project') => $projName, T_('Summary') => $summary);
             $consistencyErrors[] = array('issueURL' => Tools::issueInfoURL($cerr->bugId, $titleAttr), 'issueStatus' => Constants::$statusNames[$cerr->status], 'user' => isset($user) ? $user->getName() : '', 'severity' => $cerr->getLiteralSeverity(), 'severityColor' => $cerr->getSeverityColor(), 'desc' => $cerr->desc);
         }
     }
     return $consistencyErrors;
 }
Example #19
0
 /**
  * display Timetracking Tuples
  * @param int $userid
  * @param TimeTracking $timeTracking
  * @return mixed[]
  */
 private function getTimetrackingTuples($userid, TimeTracking $timeTracking)
 {
     // Display previous entries
     $query = "SELECT id, bugid, jobid, date, duration" . " FROM `codev_timetracking_table`" . " WHERE userid = {$userid}" . " AND date >= " . $timeTracking->getStartTimestamp() . " ORDER BY date";
     $result = SqlWrapper::getInstance()->sql_query($query) or die("Query failed: {$query}");
     $jobs = new Jobs();
     $timetrackingTuples = array();
     while ($row = SqlWrapper::getInstance()->sql_fetch_object($result)) {
         // get information on this bug
         try {
             $issue = IssueCache::getInstance()->getIssue($row->bugid);
             // get general information
             $jobName = $jobs->getJobName($row->jobid);
             $formatedDate = Tools::formatDate("%Y-%m-%d", $row->date);
             $cosmeticDate = Tools::formatDate("%Y-%m-%d - %A", $row->date);
             $formatedJobName = str_replace("'", "\\'", $jobName);
             $formatedSummary = str_replace("'", "\\'", $issue->getSummary());
             $formatedSummary = str_replace('"', "\\'", $formatedSummary);
             $formatedSummary = htmlspecialchars(preg_replace('![\\t\\r\\n]+!', ' ', $formatedSummary));
             //$totalEstim = $issue->effortEstim + $issue->effortAdd;
             $timetrackingTuples[$row->id] = array('timestamp' => $row->date, 'date' => $formatedDate, 'formatedId' => $issue->getFormattedIds(), 'duration' => $row->duration, 'formatedJobName' => $formatedJobName, 'summary' => $formatedSummary, 'cosmeticDate' => $cosmeticDate, 'mantisURL' => Tools::mantisIssueURL($row->bugid, NULL, true), 'issueURL' => Tools::issueInfoURL($row->bugid), 'issueId' => $issue->getTcId(), 'projectName' => $issue->getProjectName(), 'issueSummary' => htmlspecialchars(preg_replace('![\\t\\r\\n]+!', ' ', $issue->getSummary())), 'jobName' => $jobName, 'categoryName' => $issue->getCategoryName(), 'currentStatusName' => $issue->getCurrentStatusName());
         } catch (Exception $e) {
             $summary = T_('Error: Task not found in Mantis DB !');
             $timetrackingTuples[$row->id] = array('formatedId' => $row->bugid, 'duration' => $row->duration, 'summary' => $summary, 'mantisURL' => '', 'issueURL' => $row->bugid, 'issueId' => '!', 'projectName' => '!', 'issueSummary' => '<span class="error_font">' . $summary . '</span>', 'categoryName' => '!', 'currentStatusName' => '!');
         }
     }
     $currentTimeTrackingTuples = array();
     $futureTimeTrackingTuples = array();
     foreach ($timetrackingTuples as $trackId => $timeTrackingTuple) {
         if ($timeTrackingTuple['timestamp'] <= $timeTracking->getEndTimestamp()) {
             $currentTimeTrackingTuples[$trackId] = $timeTrackingTuple;
         } else {
             $futureTimeTrackingTuples[$trackId] = $timeTrackingTuple;
         }
         unset($timeTrackingTuple['timestamp']);
     }
     return array("current" => $currentTimeTrackingTuples, "future" => $futureTimeTrackingTuples);
 }