Example #1
0
 protected function display()
 {
     if (Tools::isConnectedUser()) {
         $threshold = 0.5;
         // for Deviation filters
         // only teamMembers & observers can access this page
         if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid)) {
             $this->smartyHelper->assign('accessDenied', TRUE);
         } else {
             $withSupport = TRUE;
             $weekDates = Tools::week_dates(date('W'), date('Y'));
             // The first day of the current week
             $startDate = date("Y-m-d", $weekDates[1]);
             $startTimestamp = Tools::date2timestamp($startDate);
             #echo "DEBUG startTimestamp ".date("Y-m-d H:i:s", $startTimestamp)."<br/>";
             // The last day of the current week
             $endDate = date("Y-m-d", $weekDates[5]);
             $endTimestamp = Tools::date2timestamp($endDate);
             $endTimestamp += 24 * 60 * 60 - 1;
             // + 1 day -1 sec.
             #echo "DEBUG endTimestamp   ".date("Y-m-d H:i:s", $endTimestamp)."<br/>";
             #$managedTeamList = $this->session_user->getManagedTeamList();
             #$isManager = array_key_exists($this->teamid, $managedTeamList);
             $isManager = $this->session_user->isTeamManager($this->teamid);
             $isObserver = $this->session_user->isTeamObserver($this->teamid);
             $this->smartyHelper->assign('manager', $isManager || $isObserver);
             $this->smartyHelper->assign('threshold', $threshold);
             $this->smartyHelper->assign('currentDeviationStats', $this->getCurrentDeviationStats($this->teamid, $threshold));
             $this->smartyHelper->assign('issuesInDrift', $this->getIssuesInDrift($this->teamid, $withSupport));
         }
     }
 }
Example #2
0
 protected function display()
 {
     // Admins only
     if (Tools::isConnectedUser()) {
         $session_user = UserCache::getInstance()->getUser($_SESSION['userid']);
         if ($session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) {
             $this->smartyHelper->assign('defaultColor', Holidays::$defaultColor);
             if (isset($_POST['hol_color'])) {
                 $formatedDate = Tools::getSecurePOSTStringValue('date');
                 $timestamp = Tools::date2timestamp($formatedDate);
                 $hol_desc = Tools::getSecurePOSTStringValue('hol_desc');
                 $hol_color = Tools::getSecurePOSTStringValue('hol_color');
                 if (!Holidays::save($timestamp, $hol_desc, $hol_color)) {
                     $this->smartyHelper->assign('error', T_("Couldn't add the holiday"));
                 }
             } elseif (isset($_POST['hol_id'])) {
                 $hol_id = Tools::getSecurePOSTIntValue('hol_id');
                 if (!Holidays::delete($hol_id)) {
                     $this->smartyHelper->assign('error', T_("Couldn't remove the holiday"));
                 }
             }
             $this->smartyHelper->assign('holidays', Holidays::getHolidays());
         }
     }
 }
Example #3
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.'));
     }
 }
Example #4
0
 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 {
             $team = TeamCache::getInstance()->getTeam($this->teamid);
             $formatedteamName = str_replace(" ", "_", $team->getName());
             // dates
             $month = date('m');
             $year = date('Y');
             // The first day of the current month
             $startdate = Tools::getSecurePOSTStringValue("startdate", Tools::formatDate("%Y-%m-%d", mktime(0, 0, 0, $month, 1, $year)));
             $this->smartyHelper->assign('startDate', $startdate);
             $startTimestamp = Tools::date2timestamp($startdate);
             // The current date plus one year
             $nbDaysInMonth = date("t", mktime(0, 0, 0, $month, 1, $year));
             $enddate = Tools::getSecurePOSTStringValue("enddate", Tools::formatDate("%Y-%m-%d", mktime(23, 59, 59, $month, $nbDaysInMonth, $year)));
             $this->smartyHelper->assign('endDate', $enddate);
             $endTimestamp = Tools::date2timestamp($enddate);
             $endTimestamp += 24 * 60 * 60 - 1;
             // + 1 day -1 sec.
             if ('computeCsvMonthly' == $_POST['action']) {
                 $timeTracking = new TimeTracking($startTimestamp, $endTimestamp, $this->teamid);
                 $myFile = Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports' . DIRECTORY_SEPARATOR . $formatedteamName . "_Mantis_" . date("Ymd") . ".csv";
                 ExportCsvTools::exportManagedIssuesToCSV($this->teamid, $startTimestamp, $endTimestamp, $myFile);
                 $this->smartyHelper->assign('managedIssuesToCSV', basename($myFile));
                 $myFile = Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports' . DIRECTORY_SEPARATOR . $formatedteamName . "_Projects_" . date("Ymd", $timeTracking->getStartTimestamp()) . "-" . date("Ymd", $timeTracking->getEndTimestamp()) . ".csv";
                 $this->exportProjectMonthlyActivityToCSV($timeTracking, $myFile);
                 $this->smartyHelper->assign('projectMonthlyActivityToCSV', basename($myFile));
                 // reduce scope to enhance speed
                 $reports = array();
                 for ($i = 1; $i <= 12; $i++) {
                     $reports[] = basename(ExportCsvTools::exportHolidaystoCSV($i, $year, $this->teamid, $formatedteamName, Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports'));
                 }
                 $this->smartyHelper->assign('reports', $reports);
                 $this->smartyHelper->assign('reportsDir', Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports');
             }
         }
     }
 }
Example #5
0
 protected function display()
 {
     if (Tools::isConnectedUser()) {
         // Admins only
         $userid = $_SESSION['userid'];
         //$session_user = UserCache::getInstance()->getUser($userid);
         $teamid = 9;
         // ASF_OVA_Internet
         $cmdid = 16;
         // ASF Commande Internet
         $cmd = CommandCache::getInstance()->getCommand($cmdid);
         $startTimestamp = Tools::date2timestamp('2013-11-22');
         $endTimestamp = Tools::date2timestamp('2014-06-22');
         // ------ START TESTS
         //if (FALSE == Tools::createClassMap()) { echo "ERROR createClassMap";}
         //$pm = PluginManager::getInstance();
         //$pm->discoverNewPlugins();
         // ------ END TESTS
         // feed the PluginDataProvider
         $pluginDataProvider = PluginDataProvider::getInstance();
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_ISSUE_SELECTION, $cmd->getIssueSelection());
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_TEAM_ID, $teamid);
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_END_TIMESTAMP, $endTimestamp);
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_PROVISION_DAYS, $cmd->getProvisionDays());
         $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_SESSION_USER_ID, $userid);
         // save the DataProvider for Ajax calls
         $_SESSION[PluginDataProviderInterface::SESSION_ID] = serialize($pluginDataProvider);
         // create the Dashboard
         $dashboard = new Dashboard('myDashboardId');
         $dashboard->setDomain(IndicatorPluginInterface::DOMAIN_COMMAND);
         $dashboard->setCategories(array(IndicatorPluginInterface::CATEGORY_QUALITY, IndicatorPluginInterface::CATEGORY_ACTIVITY, IndicatorPluginInterface::CATEGORY_ROADMAP, IndicatorPluginInterface::CATEGORY_PLANNING, IndicatorPluginInterface::CATEGORY_RISK, IndicatorPluginInterface::CATEGORY_TEAM));
         $dashboard->setTeamid($teamid);
         $dashboard->setUserid($userid);
         $data = $dashboard->getSmartyVariables($this->smartyHelper);
         foreach ($data as $smartyKey => $smartyVariable) {
             $this->smartyHelper->assign($smartyKey, $smartyVariable);
         }
     } else {
         $this->smartyHelper->assign('error', T_('Sorry, you need to be in the admin-team to access this page.'));
     }
 }
 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 {
             $isManager = $this->session_user->isTeamManager($this->teamid);
             $isObserver = $this->session_user->isTeamObserver($this->teamid);
             if ($isManager || $isObserver) {
                 // observers have access to the same info
                 $this->smartyHelper->assign('isManager', true);
             }
             // dates
             $month = date('m');
             $year = date('Y');
             $startdate = Tools::getSecurePOSTStringValue("startdate", Tools::formatDate("%Y-%m-%d", mktime(0, 0, 0, $month, 1, $year)));
             $this->smartyHelper->assign('startDate', $startdate);
             $startTimestamp = Tools::date2timestamp($startdate);
             $nbDaysInMonth = date("t", $startTimestamp);
             $enddate = Tools::getSecurePOSTStringValue("enddate", Tools::formatDate("%Y-%m-%d", mktime(0, 0, 0, $month, $nbDaysInMonth, $year)));
             $this->smartyHelper->assign('endDate', $enddate);
             $endTimestamp = Tools::date2timestamp($enddate);
             #$isDetailed = Tools::getSecurePOSTStringValue('cb_detailed','');
             #$this->smartyHelper->assign('isDetailed', $isDetailed);
             if ('computeMonthlyActivityReport' == $_POST['action']) {
                 $timeTracking = new TimeTracking($startTimestamp, $endTimestamp, $this->teamid);
                 $tracks = $timeTracking->getTimeTracks();
                 $this->smartyHelper->assign('monthlyActivityReport', $this->getMonthlyActivityReport($tracks));
                 // ConsistencyCheck
                 $consistencyErrors = $this->getConsistencyErrors($timeTracking);
                 if (count($consistencyErrors) > 0) {
                     $this->smartyHelper->assign('ccheckErrList', $consistencyErrors);
                     $this->smartyHelper->assign('ccheckButtonTitle', count($consistencyErrors) . ' ' . T_("Errors"));
                     $this->smartyHelper->assign('ccheckBoxTitle', count($consistencyErrors) . ' ' . T_("days are incomplete or undefined"));
                 }
             }
         }
     }
 }
Example #7
0
 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);
                 }
             }
         }
     }
 }
Example #8
0
 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 {
             $projects[0] = T_('All projects');
             $projects += TeamCache::getInstance()->getTeam($this->teamid)->getProjects(false);
             $projectid = 0;
             if (isset($_POST['projectid']) && array_key_exists($_POST['projectid'], $projects)) {
                 $projectid = Tools::getSecurePOSTIntValue('projectid');
                 $_SESSION['projectid'] = $_POST['projectid'];
             } else {
                 if (isset($_SESSION['projectid']) && array_key_exists($_SESSION['projectid'], $projects)) {
                     $projectid = $_SESSION['projectid'];
                 }
             }
             $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projects, $projectid));
             // The first day of the current week
             $weekDates = Tools::week_dates(date('W'), date('Y'));
             $startdate = Tools::getSecurePOSTStringValue('startdate', Tools::formatDate("%Y-%m-%d", $weekDates[1]));
             $this->smartyHelper->assign('startDate', $startdate);
             // The current date plus one year
             $enddate = Tools::getSecurePOSTStringValue('enddate', Tools::formatDate("%Y-%m-%d", strtotime('+6 month')));
             $this->smartyHelper->assign('endDate', $enddate);
             if ('computeGantt' == $_POST['action']) {
                 $startT = Tools::date2timestamp($startdate);
                 $endT = Tools::date2timestamp($enddate);
                 #$endT += 24 * 60 * 60 -1; // + 1 day -1 sec.
                 // draw graph
                 $this->smartyHelper->assign('urlGraph', 'teamid=' . $this->teamid . '&projects=' . $projectid . '&startT=' . $startT . '&endT=' . $endT);
             }
         }
     }
 }
Example #9
0
 /**
  * Display 'Developers Workload'
  * nb of days.: (holidays & externalTasks not included, developers only)
  * @param TimeTracking[] $timeTrackingTable
  * @return string
  */
 private function generateDevelopersWorkloadGraph($timeTrackingTable)
 {
     $formattedTimetracks = array();
     foreach ($timeTrackingTable as $startTimestamp => $timeTracking) {
         // REM: the 'normal' drifts DO include support
         $formattedTimetracks[$startTimestamp] = $timeTracking->getAvailableWorkload();
     }
     $values = array();
     $legend = array();
     foreach ($formattedTimetracks as $date => $value) {
         $values[Tools::formatDate("%Y-%m-01", $date)] = $value;
         $legend[Tools::formatDate("%B %Y", $date)] = round($value, 1);
     }
     $this->smartyHelper->assign('workload_jqplotData', Tools::array2plot($values));
     $timestamp = Tools::getStartEndKeys($values);
     $start = Tools::formatDate("%Y-%m-01", Tools::date2timestamp($timestamp[0]));
     $end = Tools::formatDate("%Y-%m-01", strtotime($timestamp[1] . " +1 month"));
     $this->smartyHelper->assign('workload_plotMinDate', $start);
     $this->smartyHelper->assign('workload_plotMaxDate', $end);
     $this->smartyHelper->assign('workload_Legend', $legend);
 }
 public function getSmartyObject()
 {
     $timestamp = Tools::getStartEndKeys($this->execData['MEE']);
     $start = Tools::formatDate("%Y-%m-01", Tools::date2timestamp($timestamp[0]));
     $end = Tools::formatDate("%Y-%m-01", strtotime($timestamp[1] . " +1 month"));
     $jsonMEE = Tools::array2plot($this->execData['MEE']);
     $jsonEE = Tools::array2plot($this->execData['EE']);
     $graphData = "[{$jsonMEE},{$jsonEE}]";
     #$graphDataColors = '["#fcbdbd", "#c2dfff"]';
     $labels = '["MgrEffortEstim ReliabilityRate", "EffortEstim ReliabilityRate"]';
     $tableData = array();
     foreach ($this->execData['MEE'] as $date => $prodRateMEE) {
         $prodRateEE = $this->execData['EE'][$date];
         $timestamp = Tools::date2timestamp($date);
         $formattedDate = Tools::formatDate("%B %Y", $timestamp);
         $tableData[$formattedDate] = array('prodRateMEE' => round($prodRateMEE, 2), 'prodRateEE' => round($prodRateEE, 2));
     }
     return array('prodRate_history_data' => $graphData, 'prodRate_history_dataLabels' => $labels, 'prodRate_history_plotMinDate' => $start, 'prodRate_history_plotMaxDate' => $end, 'prodRate_tableData' => $tableData);
 }
 public function execute()
 {
     $backlogList = $this->issue->getBacklogHistory();
     $formattedBlList = array();
     foreach ($backlogList as $t => $b) {
         $formattedBlList[Tools::formatDate("%Y-%m-%d", $t)] = $b;
     }
     // Graph start/stop dates
     reset($formattedBlList);
     $plotMinDate = key($formattedBlList);
     end($formattedBlList);
     $plotMaxDate = key($formattedBlList);
     // Calculate a nice week interval
     $minTimestamp = Tools::date2timestamp($plotMinDate);
     $maxTimestamp = Tools::date2timestamp($plotMaxDate);
     $nbWeeks = ($maxTimestamp - $minTimestamp) / 60 / 60 / 24 / 7;
     $interval = ceil($nbWeeks / 10);
     $jqplotData = Tools::array2plot($formattedBlList);
     $this->execData = array('issueBacklogVariationIndicator_interval' => $interval, 'issueBacklogVariationIndicator_plotMinDate' => $plotMinDate, 'issueBacklogVariationIndicator_plotMaxDate' => $plotMaxDate, 'issueBacklogVariationIndicator_jqplotYaxisLabel' => T_('Backlog (days)'), 'issueBacklogVariationIndicator_jqplotData' => $jqplotData, 'issueBacklogVariationIndicator_tableData' => $formattedBlList);
     return $this->execData;
 }
Example #12
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);
    }
}
Example #13
0
 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 {
             $team = TeamCache::getInstance()->getTeam($this->teamid);
             // if first call to this page
             if (!array_key_exists('nextForm', $_POST)) {
                 $activeMembers = $team->getActiveMembers();
                 if ($this->session_user->isTeamManager($this->teamid)) {
                     $this->smartyHelper->assign('users', SmartyTools::getSmartyArray($activeMembers, $this->session_userid));
                 } else {
                     // developper & manager can add timeTracks
                     if (array_key_exists($this->session_userid, $activeMembers)) {
                         $_POST['userid'] = $this->session_userid;
                         $_POST['nextForm'] = "addHolidaysForm";
                         //$_POST['days'] = 'dayid';
                     }
                 }
             }
             $nextForm = Tools::getSecurePOSTStringValue('nextForm', '');
             if ($nextForm == "addHolidaysForm") {
                 $userid = Tools::getSecurePOSTIntValue('userid', $this->session_userid);
                 $managed_user = UserCache::getInstance()->getUser($userid);
                 // dates
                 $startdate = Tools::getSecurePOSTStringValue('startdate', date("Y-m-d"));
                 $enddate = Tools::getSecurePOSTStringValue('enddate', '');
                 $defaultBugid = Tools::getSecurePOSTIntValue('bugid', 0);
                 $action = Tools::getSecurePOSTStringValue('action', '');
                 $duration = Tools::getSecurePOSTNumberValue('duree', 0);
                 if ("addHolidays" == $action) {
                     // TODO add tracks !
                     $job = Tools::getSecurePOSTStringValue('job');
                     $duration = Tools::getSecurePOSTNumberValue('duree');
                     $holydays = Holidays::getInstance();
                     $keyvalue = Tools::getSecurePOSTStringValue('checkedDays');
                     $checkedDaysList = Tools::doubleExplode(':', ',', $keyvalue);
                     $startTimestamp = Tools::date2timestamp($startdate);
                     $endTimestamp = Tools::date2timestamp($enddate);
                     // save to DB
                     $weekday = date('l', strtotime($startdate));
                     $timestamp = $startTimestamp;
                     while ($timestamp <= $endTimestamp) {
                         // check if not a fixed holiday
                         if (!$holydays->isHoliday($timestamp)) {
                             // check existing timetracks on $timestamp and adjust duration
                             $availabletime = $managed_user->getAvailableTime($timestamp);
                             // not imput more than possible
                             if ($duration >= $availabletime) {
                                 $imput = $availabletime;
                             } else {
                                 $imput = $duration;
                             }
                             // check if weekday checkbox is checked
                             if (1 == $checkedDaysList[$weekday]) {
                                 if ($duration > 0) {
                                     if (self::$logger->isDebugEnabled()) {
                                         self::$logger->debug(date("Y-m-d", $timestamp) . " duration {$imput} job {$job}");
                                     }
                                     TimeTrack::create($managed_user->getId(), $defaultBugid, $job, $timestamp, $imput, $this->session_userid);
                                 }
                             }
                         }
                         $timestamp = strtotime("+1 day", $timestamp);
                         $weekday = date('l', strtotime(date("Y-m-d", $timestamp)));
                     }
                     // We redirect to holidays report, so the user can verify his holidays
                     header('Location:holidays_report.php');
                 }
                 $this->smartyHelper->assign('startDate', $startdate);
                 $this->smartyHelper->assign('endDate', $enddate);
                 if ($this->session_userid != $managed_user->getId()) {
                     $this->smartyHelper->assign('otherrealname', $managed_user->getRealname());
                 }
                 // Get Team SideTasks Project List
                 $projList = $team->getProjects(true, false);
                 foreach ($projList as $pid => $pname) {
                     // we want only SideTasks projects
                     try {
                         if (!$team->isSideTasksProject($pid)) {
                             unset($projList[$pid]);
                         }
                     } catch (Exception $e) {
                         self::$logger->error("project {$pid}: " . $e->getMessage());
                     }
                 }
                 $extproj_id = Config::getInstance()->getValue(Config::id_externalTasksProject);
                 $extProj = ProjectCache::getInstance()->getProject($extproj_id);
                 $projList[$extproj_id] = $extProj->getName();
                 $defaultProjectid = Tools::getSecurePOSTIntValue('projectid', 0);
                 if ($defaultBugid != 0 && $action == 'setBugId') {
                     // find ProjectId to update categories
                     $issue = IssueCache::getInstance()->getIssue($defaultBugid);
                     $defaultProjectid = $issue->getProjectId();
                 }
                 $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projList, $defaultProjectid));
                 $this->smartyHelper->assign('issues', $this->getIssues($defaultProjectid, $projList, $extproj_id, $defaultBugid));
                 $this->smartyHelper->assign('jobs', $this->getJobs($defaultProjectid, $projList));
                 $this->smartyHelper->assign('duration', SmartyTools::getSmartyArray(TimeTrackingTools::getDurationList($team->getId()), $duration));
                 $this->smartyHelper->assign('userid', $managed_user->getId());
             }
         }
     }
 }
Example #14
0
 protected function display()
 {
     if (Tools::isConnectedUser()) {
         $teamList = NULL;
         // leadedTeams only, except Admins: they can edit all teams
         if ($this->session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) {
             $teamList = Team::getTeams(true);
         } else {
             $teamList = $this->session_user->getLeadedTeamList(true);
         }
         if (count($teamList) > 0) {
             if (isset($_POST['deletedteam'])) {
                 $teamidToDelete = Tools::getSecurePOSTIntValue("deletedteam");
                 if (array_key_exists($teamidToDelete, $teamList)) {
                     $retCode = Team::delete($teamidToDelete);
                     if (!$retCode) {
                         $this->smartyHelper->assign('error', T_("Couldn't delete the team"));
                     } else {
                         if ($teamidToDelete == $_SESSION['teamid']) {
                             unset($_SESSION['teamid']);
                             $this->updateTeamSelector();
                         }
                         unset($teamList[$teamidToDelete]);
                     }
                 }
             }
             // use the teamid set in the form, if not defined (first page call) use session teamid
             if (isset($_POST['displayed_teamid'])) {
                 $displayed_teamid = Tools::getSecurePOSTIntValue('displayed_teamid');
             } else {
                 if (isset($_SESSION['teamid']) && array_key_exists($_SESSION['teamid'], $teamList)) {
                     $displayed_teamid = $_SESSION['teamid'];
                 } else {
                     $teamIds = array_keys($teamList);
                     if (count($teamIds) > 0) {
                         $displayed_teamid = $teamIds[0];
                     } else {
                         $displayed_teamid = 0;
                     }
                 }
             }
             $this->smartyHelper->assign('availableTeams', SmartyTools::getSmartyArray($teamList, $displayed_teamid));
             if (array_key_exists($displayed_teamid, $teamList)) {
                 $team = TeamCache::getInstance()->getTeam($displayed_teamid);
                 if ($displayed_teamid != Config::getInstance()->getValue(Config::id_adminTeamId)) {
                     $this->smartyHelper->assign('allowDeleteTeam', 1);
                 }
                 // ----------- actions ----------
                 $action = isset($_POST['action']) ? $_POST['action'] : '';
                 if ($action == "updateTeamLeader") {
                     $teamleader_id = Tools::getSecurePOSTIntValue('leaderid');
                     if (!$team->setLeader($teamleader_id)) {
                         $this->smartyHelper->assign('error', T_("Couldn't update the team leader"));
                     } else {
                         // --- add teamLeader as Mantis manager of the SideTaskProject
                         //$leader = UserCache::getInstance()->getUser($teamleader_id);
                         //$access_level = 70; // TODO mantis manager
                         //$leader->setProjectAccessLevel($stproj_id, $access_level);
                     }
                 } elseif ($action == "updateTeamCreationDate") {
                     $formatedDate = Tools::getSecurePOSTStringValue("date_createTeam");
                     $date_create = Tools::date2timestamp($formatedDate);
                     if (!$team->setCreationDate($date_create)) {
                         $this->smartyHelper->assign('error', T_("Couldn't update the creation date"));
                     }
                 } elseif ($action == "setTeamEnabled") {
                     $isTeamEnabled = 0 == Tools::getSecurePOSTIntValue("isTeamEnabled") ? false : true;
                     if (!$team->setEnabled($isTeamEnabled)) {
                         $this->smartyHelper->assign('error', T_("Couldn't enable/disable team"));
                     }
                 } elseif ($action == "addTeamMember") {
                     $memberid = Tools::getSecurePOSTIntValue('memberid');
                     $memberAccess = Tools::getSecurePOSTIntValue('member_access');
                     $formatedDate = Tools::getSecurePOSTStringValue("date1");
                     $arrivalTimestamp = Tools::date2timestamp($formatedDate);
                     try {
                         // save to DB
                         $team->addMember($memberid, $arrivalTimestamp, $memberAccess);
                         // CodevTT administrators can manage ExternalTasksProject in Mantis
                         if (Config::getInstance()->getValue(Config::id_adminTeamId) == $team->getId()) {
                             $newUser = UserCache::getInstance()->getUser($memberid);
                             $extProjId = Config::getInstance()->getValue(Config::id_externalTasksProject);
                             $access_level = 70;
                             // TODO mantis manager
                             $newUser->setProjectAccessLevel($extProjId, $access_level);
                         }
                     } catch (Exception $e) {
                         $this->smartyHelper->assign('error', "Couldn't add user {$memberid} to the team");
                     }
                 } elseif ($action == "setMemberDepartureDate") {
                     $formatedDate = Tools::getSecurePOSTStringValue("date2");
                     $departureTimestamp = Tools::date2timestamp($formatedDate);
                     $memberid = Tools::getSecurePOSTIntValue('memberid');
                     $team->setMemberDepartureDate($memberid, $departureTimestamp);
                 } elseif ($action == 'addMembersFrom') {
                     $src_teamid = Tools::getSecurePOSTIntValue('f_src_teamid');
                     // add all members declared in Team $src_teamid (same dates, same access)
                     // except if already declared
                     $team->addMembersFrom($src_teamid);
                 } elseif ($action == 'removeIssueTooltip') {
                     $projectid = Tools::getSecurePOSTIntValue('projectid');
                     $project = ProjectCache::getInstance()->getProject($projectid);
                     $project->setIssueTooltipFields(NULL, $displayed_teamid);
                 } elseif ($action == 'setConsistencyCheck') {
                     $keyvalue = Tools::getSecurePOSTStringValue('checkItems');
                     $checkList = Tools::doubleExplode(':', ',', $keyvalue);
                     $team->setConsistencyCheckList($checkList);
                 } elseif ($action == 'setGeneralPrefs') {
                     $keyvalue = Tools::getSecurePOSTStringValue('checkItems');
                     $checkList = Tools::doubleExplode(':', ',', $keyvalue);
                     $team->setGeneralPrefsList($checkList);
                 } elseif ($action == 'createSideTaskProject') {
                     $stprojName = Tools::getSecurePOSTStringValue('stprojName');
                     $stproj_id = $team->createSideTaskProject($stprojName);
                     if ($stproj_id > 0) {
                         $stproj = ProjectCache::getInstance()->getProject($stproj_id);
                         // add teamLeader as Mantis manager of the SideTaskProject
                         $leader = UserCache::getInstance()->getUser($team->getLeaderId());
                         $access_level = 70;
                         // TODO mantis manager
                         $leader->setProjectAccessLevel($stproj_id, $access_level);
                         // add SideTaskProject Categories
                         $stproj->addCategoryProjManagement(T_("Project Management"));
                         $stproj->addCategoryInactivity(T_("Inactivity"));
                         $stproj->addCategoryIncident(T_("Incident"));
                         $stproj->addCategoryTools(T_("Tools"));
                         $stproj->addCategoryWorkshop(T_("Team Workshop"));
                     }
                 } elseif (isset($_POST["deleteValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('deleteValue');
                     unset($duration[$duration_value]);
                     if (count($duration) == 0) {
                         Config::deleteValue(Config::id_durationList, array(0, 0, $displayed_teamid, 0, 0, 0));
                     } else {
                         Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                     }
                 } elseif (isset($_POST["addValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('addValue');
                     $duration_display = Tools::getSecurePOSTStringValue('addDisplay');
                     $duration[$duration_value] = $duration_display;
                     Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                 } elseif (isset($_POST["updateValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('updateValue');
                     $duration_display = Tools::getSecurePOSTStringValue('updateDisplay');
                     $duration[$duration_value] = $duration_display;
                     Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                 } elseif (isset($_POST["deletememberid"])) {
                     $memberid = Tools::getSecurePOSTIntValue('deletememberid');
                     $query = "DELETE FROM `codev_team_user_table` WHERE id = {$memberid};";
                     $result = SqlWrapper::getInstance()->sql_query($query);
                     if (!$result) {
                         $this->smartyHelper->assign('error', T_("Couldn't delete the member of the team"));
                     }
                 } elseif (isset($_POST['addedprojectid'])) {
                     $projectid = Tools::getSecurePOSTIntValue('addedprojectid');
                     if (0 != $projectid) {
                         $projecttype = Tools::getSecurePOSTIntValue('project_type');
                         try {
                             // prepare Project to CoDev (associate with CoDev customFields if needed)
                             // WARN: Project constructor cannot be used in here.
                             Project::prepareProjectToCodev($projectid);
                             // save to DB
                             if (!$team->addProject($projectid, $projecttype)) {
                                 $this->smartyHelper->assign('error', T_("Couldn't add the project to the team"));
                             }
                         } catch (Exception $e) {
                             $this->smartyHelper->assign('error', T_("Couldn't add the project to the team"));
                         }
                     }
                 } elseif (isset($_POST['deletedprojectid'])) {
                     $projectid = Tools::getSecurePOSTIntValue('deletedprojectid');
                     if (!$team->removeProject($projectid)) {
                         $this->smartyHelper->assign('error', T_("Could NOT remove the project from the team"));
                     }
                 } elseif (isset($_POST['addedastreinte_id'])) {
                     $onduty_id = Tools::getSecurePOSTIntValue('addedastreinte_id');
                     if (0 != $onduty_id) {
                         $team->addOnDutyTask($onduty_id);
                     }
                 } elseif (isset($_POST['deletedastreinte_id'])) {
                     $onduty_id = Tools::getSecurePOSTIntValue('deletedastreinte_id');
                     $team->removeOnDutyTask($onduty_id);
                 }
                 $this->smartyHelper->assign('team', $team);
                 $smartyUserList = array();
                 $userList = User::getUsers();
                 $selectedUserid = $team->getLeaderId();
                 foreach ($userList as $id => $name) {
                     $u = UserCache::getInstance()->getUser($id);
                     $uname = $u->getRealname();
                     if (empty($uname)) {
                         $uname = $name;
                     }
                     $smartyUserList[$id] = array('id' => $id, 'name' => $uname, 'selected' => $id == $selectedUserid);
                 }
                 $this->smartyHelper->assign('users', $smartyUserList);
                 $this->smartyHelper->assign('date', date("Y-m-d", $team->getDate()));
                 $this->smartyHelper->assign('accessLevel', Team::$accessLevelNames);
                 $this->smartyHelper->assign('arrivalDate', date("Y-m-d", time()));
                 $this->smartyHelper->assign('departureDate', date("Y-m-d", time()));
                 $this->smartyHelper->assign('teamMembers', $this->getTeamMembers($displayed_teamid));
                 $this->smartyHelper->assign('teamEnabled', $team->isEnabled());
                 $this->smartyHelper->assign('otherProjects', $team->getOtherProjects());
                 $this->smartyHelper->assign('typeNames', Project::$typeNames);
                 $this->smartyHelper->assign('teamProjects', $this->getTeamProjects($displayed_teamid));
                 $this->smartyHelper->assign('onDutyCandidates', $this->getOnDutyCandidates($team, $team->getTrueProjects()));
                 $this->smartyHelper->assign('onDutyTasks', $this->getOnDutyTasks($team));
                 $this->smartyHelper->assign('duration', TimeTrackingTools::getDurationList($displayed_teamid));
                 $projectList = $this->getTooltipProjectCandidates($team);
                 $this->smartyHelper->assign('tooltipProjectCandidates', $projectList);
                 $this->smartyHelper->assign('issueTooltips', $this->getIssueTooltips($projectList, $displayed_teamid));
                 $this->smartyHelper->assign('itemSelection_openDialogBtLabel', T_('Configure Tooltips'));
                 $consistencyChecks = $this->getConsistencyChecks($team);
                 $this->smartyHelper->assign('consistencyChecks', $consistencyChecks);
                 $teamGeneralPrefs = $this->getTeamGeneralPrefs($team);
                 $this->smartyHelper->assign('teamGeneralPrefs', $teamGeneralPrefs);
             }
         }
     }
 }
 $action = Tools::getSecureGETStringValue('action');
 $dashboardId = Tools::getSecureGETStringValue('dashboardId');
 if (!isset($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId])) {
     $logger->error("PluginDataProvider not set (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider not set");
 }
 $pluginDataProvider = unserialize($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId]);
 if (FALSE == $pluginDataProvider) {
     $logger->error("PluginDataProvider unserialize error (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider unserialize error");
 }
 $smartyHelper = new SmartyHelper();
 if ('getLoadPerUserIndicator' == $action) {
     // TODO do not log exception if date = 01-01-1970
     $startTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("loadPerUser_startdate"));
     $endTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("loadPerUser_enddate"));
     $attributesJsonStr = Tools::getSecureGETStringValue('attributesJsonStr');
     $attributesArray = json_decode(stripslashes($attributesJsonStr), true);
     $showSidetasks = 'on' != $attributesArray[LoadPerUserIndicator::OPTION_SHOW_SIDETASKS] ? false : true;
     //$logger->error("showSidetasks = ".var_export($showSidetasks, true).' attr '.$attributesArray[LoadPerUserIndicator::OPTION_SHOW_SIDETASKS]);
     // update dataProvider
     $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
     $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_END_TIMESTAMP, $endTimestamp);
     $indicator = new LoadPerUserIndicator($pluginDataProvider);
     // override plugin settings with current attributes
     $indicator->setPluginSettings(array(LoadPerUserIndicator::OPTION_SHOW_SIDETASKS => $showSidetasks));
     $indicator->execute();
     $data = $indicator->getSmartyVariablesForAjax();
     // construct the html table
     foreach ($data as $smartyKey => $smartyVariable) {
         $smartyHelper->assign($smartyKey, $smartyVariable);
Example #16
0
 /**
  * Action on 'Save' button
  *
  * @param CommandSet $cmdset
  */
 private function updateCommandSetInfo($cmdset)
 {
     // TODO check sc_teamid in grantedTeams
     $cset_teamid = Tools::getSecurePOSTIntValue('cset_teamid');
     if ($cset_teamid != $this->teamid) {
         // switch team (because you won't find the SC in current team's contract list)
         $_SESSION['teamid'] = $cset_teamid;
         $this->updateTeamSelector();
     }
     $cmdset->setTeamid($cset_teamid);
     $formattedValue = Tools::escape_string($_POST['commandsetName']);
     $cmdset->setName($formattedValue);
     $formattedValue = Tools::escape_string($_POST['commandsetReference']);
     $cmdset->setReference($formattedValue);
     $formattedValue = Tools::escape_string($_POST['commandsetDesc']);
     $cmdset->setDesc($formattedValue);
     $formattedValue = Tools::escape_string($_POST['commandsetDate']);
     if ('' != $formattedValue) {
         $cmdset->setDate(Tools::date2timestamp($formattedValue));
     }
     $cmdset->setCost(SmartyTools::checkNumericValue($_POST['commandsetCost'], true));
     $cmdset->setBudgetDays(SmartyTools::checkNumericValue($_POST['commandsetBudget'], true));
 }
Example #17
0
 public function addIssue($cat_id, $issueSummary, $issueDesc, $issueStatus)
 {
     $today = Tools::date2timestamp(date("Y-m-d"));
     $priority = 10;
     $reproducibility = 100;
     $formattedIssueDesc = SqlWrapper::sql_real_escape_string($issueDesc);
     $query = "INSERT INTO `mantis_bug_text_table`  (`description`, `steps_to_reproduce`, `additional_information`) VALUES ('" . $formattedIssueDesc . "', '', '');";
     $result = SqlWrapper::getInstance()->sql_query($query);
     if (!$result) {
         echo "<span style='color:red'>ERROR: Query FAILED</span>";
         exit;
     }
     $bug_text_id = SqlWrapper::getInstance()->sql_insert_id();
     $formattedIssueSummary = SqlWrapper::sql_real_escape_string($issueSummary);
     $query = "INSERT INTO `mantis_bug_table` (`project_id`, `category_id`, `summary`, `priority`, `reproducibility`, `status`, `bug_text_id`, `date_submitted`, `last_updated`) " . "VALUES ({$this->id},{$cat_id},'{$formattedIssueSummary}',{$priority},{$reproducibility},{$issueStatus},{$bug_text_id},{$today},{$today});";
     $result = SqlWrapper::getInstance()->sql_query($query);
     if (!$result) {
         echo "<span style='color:red'>ERROR: Query FAILED</span>";
         exit;
     }
     $bugt_id = SqlWrapper::getInstance()->sql_insert_id();
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("addIssue(): project_id={$this->id}, category_id={$cat_id}, priority={$priority}, reproducibility={$reproducibility}, status={$issueStatus}, bug_text_id={$bug_text_id}, date_submitted={$today}, last_updated={$today}");
     }
     return $bugt_id;
 }
if (Tools::isConnectedUser() && filter_input(INPUT_GET, 'action')) {
    $logger = Logger::getLogger("HelloWorldIndicator_ajax");
    $action = Tools::getSecureGETStringValue('action');
    $dashboardId = Tools::getSecureGETStringValue('dashboardId');
    if (!isset($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId])) {
        $logger->error("PluginDataProvider not set (dashboardId = {$dashboardId}");
        Tools::sendBadRequest("PluginDataProvider not set");
    }
    $pluginDataProvider = unserialize($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId]);
    if (FALSE == $pluginDataProvider) {
        $logger->error("PluginDataProvider unserialize error (dashboardId = {$dashboardId}");
        Tools::sendBadRequest("PluginDataProvider unserialize error");
    }
    $smartyHelper = new SmartyHelper();
    if ('getHelloWorldIndicator' == $action) {
        $startTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("helloWorld_startdate"));
        // update dataProvider
        $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
        $indicator = new HelloWorldIndicator($pluginDataProvider);
        $indicator->execute();
        $data = $indicator->getSmartyVariablesForAjax();
        // construct the html table
        foreach ($data as $smartyKey => $smartyVariable) {
            $smartyHelper->assign($smartyKey, $smartyVariable);
            #$logger->debug("key $smartyKey = ".var_export($smartyVariable, true));
        }
        $html = $smartyHelper->fetch(HelloWorldIndicator::getSmartySubFilename());
        $data['helloWorld_htmlContent'] = $html;
        // return html & chart data
        $jsonData = json_encode($data);
        echo $jsonData;
Example #19
0
 protected function display()
 {
     $this->smartyHelper->assign('activeGlobalMenuItem', 'Admin');
     if (Tools::isConnectedUser()) {
         if (!$this->session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) {
             $this->smartyHelper->assign('accessDenied', TRUE);
         } else {
             if (isset($_POST['team_name'])) {
                 // Form user selections
                 $team_name = Tools::getSecurePOSTStringValue('team_name');
                 $team_desc = Tools::getSecurePOSTStringValue('team_desc', '');
                 $teamleader_id = Tools::getSecurePOSTStringValue('teamleader_id');
                 $formatedDate = date("Y-m-d", time());
                 $now = Tools::date2timestamp($formatedDate);
                 // 1) --- create new Team
                 $teamid = Team::create($team_name, $team_desc, $teamleader_id, $now);
                 if ($teamid > 0) {
                     $team = TeamCache::getInstance()->getTeam($teamid);
                     // --- add teamLeader as 'manager'
                     $team->addMember($teamleader_id, $now, Team::accessLevel_manager);
                     // 2) --- add ExternalTasksProject
                     $team->addExternalTasksProject();
                     $stproj_name = Tools::getSecurePOSTStringValue("stproj_name");
                     if (isset($_POST['cb_createSideTaskProj'])) {
                         // 3) --- add <team> SideTaskProject
                         $stproj_id = $team->createSideTaskProject($stproj_name);
                         if ($stproj_id < 0) {
                             self::$logger->error("SideTaskProject creation FAILED");
                             echo "<span style='color:red'>ERROR: SideTaskProject creation FAILED</span>";
                             exit;
                         } else {
                             $stproj = ProjectCache::getInstance()->getProject($stproj_id);
                             // --- add teamLeader as Mantis manager of the SideTaskProject
                             $leader = UserCache::getInstance()->getUser($teamleader_id);
                             $access_level = 70;
                             // TODO mantis manager
                             $leader->setProjectAccessLevel($stproj_id, $access_level);
                             // 4) --- add SideTaskProject Categories
                             $stproj->addCategoryProjManagement(T_("Project Management"));
                             if (isset($_POST['cb_catInactivity'])) {
                                 $stproj->addCategoryInactivity(T_("Inactivity"));
                             }
                             if (isset($_POST['cb_catIncident'])) {
                                 $stproj->addCategoryIncident(T_("Incident"));
                             }
                             if (isset($_POST['cb_catTools'])) {
                                 $stproj->addCategoryTools(T_("Tools"));
                             }
                             if (isset($_POST['cb_catOther'])) {
                                 $stproj->addCategoryWorkshop(T_("Team Workshop"));
                             }
                             // 5) --- add SideTaskProject default SideTasks
                             if (isset($_POST['cb_taskProjManagement'])) {
                                 $stproj->addIssueProjManagement(Tools::getSecurePOSTStringValue('task_projManagement'));
                             }
                             if (isset($_POST['cb_taskMeeting'])) {
                                 $stproj->addIssueProjManagement(Tools::getSecurePOSTStringValue('task_meeting'));
                             }
                             if (isset($_POST['cb_taskIncident'])) {
                                 $stproj->addIssueIncident(Tools::getSecurePOSTStringValue('task_incident'));
                             }
                             if (isset($_POST['cb_taskTools'])) {
                                 $stproj->addIssueTools(Tools::getSecurePOSTStringValue('task_tools'));
                             }
                             if (isset($_POST['cb_taskOther'])) {
                                 $stproj->addIssueWorkshop(Tools::getSecurePOSTStringValue('task_other1'));
                             }
                         }
                     }
                 }
                 // 6) --- open EditTeam Page
                 header('Location: edit_team.php?teamid=' . $teamid);
             } else {
                 $this->smartyHelper->assign('users', SmartyTools::getSmartyArray(User::getUsers(), $this->session_userid));
             }
         }
     }
 }
 /**
  *
  * @return type
  */
 public function getSmartyVariables($isAjaxCall = false)
 {
     $timestamp = Tools::getStartEndKeys($this->execData['MEE']);
     $start = Tools::formatDate("%Y-%m-01", Tools::date2timestamp($timestamp[0]));
     $end = Tools::formatDate("%Y-%m-01", strtotime($timestamp[1] . " +1 month"));
     $jsonMEE = Tools::array2plot($this->execData['MEE']);
     $jsonEE = Tools::array2plot($this->execData['EE']);
     $graphData = "[{$jsonMEE},{$jsonEE}]";
     #$graphDataColors = '["#fcbdbd", "#c2dfff"]';
     $labels = '["MgrEffortEstim ReliabilityRate", "EffortEstim ReliabilityRate"]';
     $tableData = array();
     foreach ($this->execData['MEE'] as $date => $prodRateMEE) {
         $prodRateEE = $this->execData['EE'][$date];
         $timestamp = Tools::date2timestamp($date);
         $formattedDate = Tools::formatDate("%Y-%m-%d", $timestamp);
         $tableData[$formattedDate] = array('prodRateMEE' => round($prodRateMEE, 2), 'prodRateEE' => round($prodRateEE, 2));
     }
     $smartyVariables = array('effortEstimReliabilityIndicator2_tableData' => $tableData, 'effortEstimReliabilityIndicator2_jqplotData' => $graphData, 'effortEstimReliabilityIndicator2_dataLabels' => $labels, 'effortEstimReliabilityIndicator2_plotMinDate' => $start, 'effortEstimReliabilityIndicator2_plotMaxDate' => $end, 'effortEstimReliabilityIndicator2_' . self::OPTION_INTERVAL => $this->interval);
     if (false == $isAjaxCall) {
         $smartyVariables['effortEstimReliabilityIndicator2_ajaxFile'] = self::getSmartySubFilename();
         $smartyVariables['effortEstimReliabilityIndicator2_ajaxPhpURL'] = self::getAjaxPhpURL();
     }
     return $smartyVariables;
 }
Example #21
0
 /**
  * Action on 'Save' button
  *
  * @param ServiceContract $contract
  */
 private function updateServiceContractInfo($contract)
 {
     // TODO check sc_teamid in grantedTeams
     $sc_teamid = Tools::getSecurePOSTIntValue('sc_teamid');
     if ($sc_teamid != $this->teamid) {
         // switch team (because you won't find the SC in current team's contract list)
         $_SESSION['teamid'] = $sc_teamid;
         $this->updateTeamSelector();
     }
     $contract->setTeamid($sc_teamid);
     $formattedValue = Tools::getSecurePOSTStringValue('servicecontractName');
     $contract->setName($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('servicecontractReference', '');
     $contract->setReference($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('servicecontractVersion', '');
     $contract->setVersion($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('servicecontractReporter', '');
     $contract->setReporter($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('servicecontractDesc', '');
     $contract->setDesc($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('serviceContractStartDate', '');
     if ('' != $formattedValue) {
         $contract->setStartDate(Tools::date2timestamp($formattedValue));
     }
     $formattedValue = Tools::getSecurePOSTStringValue('serviceContractEndDate', '');
     if ('' != $formattedValue) {
         $contract->setEndDate(Tools::date2timestamp($formattedValue));
     }
     $contract->setState(SmartyTools::checkNumericValue($_POST['servicecontractState'], true));
 }
 $logger = Logger::getLogger("TimetrackDetailsIndicator_ajax");
 $action = Tools::getSecureGETStringValue('action');
 $dashboardId = Tools::getSecureGETStringValue('dashboardId');
 if (!isset($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId])) {
     $logger->error("PluginDataProvider not set (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider not set");
 }
 $pluginDataProvider = unserialize($_SESSION[PluginDataProviderInterface::SESSION_ID . $dashboardId]);
 if (FALSE == $pluginDataProvider) {
     $logger->error("PluginDataProvider unserialize error (dashboardId = {$dashboardId}");
     Tools::sendBadRequest("PluginDataProvider unserialize error");
 }
 $smartyHelper = new SmartyHelper();
 if ('getTimetrackDetailsIndicator' == $action) {
     $startTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("timetrackDetails_startdate"));
     $endTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("timetrackDetails_enddate"));
     $displayedTeam = Tools::getSecureGETIntValue("timetrackDetails_displayedTeam", 0);
     // update dataProvider
     $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
     $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_END_TIMESTAMP, $endTimestamp);
     $indicator = new TimetrackDetailsIndicator($pluginDataProvider);
     // override plugin settings with current attributes
     $indicator->setPluginSettings(array(TimetrackDetailsIndicator::OPTION_DISPLAYED_TEAM => $displayedTeam));
     $indicator->execute();
     $data = $indicator->getSmartyVariablesForAjax();
     // construct the html table
     foreach ($data as $smartyKey => $smartyVariable) {
         $smartyHelper->assign($smartyKey, $smartyVariable);
     }
     $html = $smartyHelper->fetch(TimetrackDetailsIndicator::getSmartySubFilename());
     $data['timetrackDetails_htmlContent'] = $html;
Example #23
0
 /**
  * team members (exept Observers) working on this team at $startTimestamp
  * or during the period.
  *
  * @param int $startTimestamp date (if NULL, today)
  * @param int $endTimestamp date (if NULL, $startTimestamp)
  * @return string[]
  */
 public function getActiveMembers($startTimestamp = NULL, $endTimestamp = NULL, $userRealName = FALSE)
 {
     if (NULL == $startTimestamp) {
         // if $startTimestamp not defined, get current active members
         $startTimestamp = Tools::date2timestamp(date("Y-m-d", time()));
         $endTimestamp = $startTimestamp;
     } else {
         // if $endTimestamp not defined, get members active at $startTimestamp
         if (NULL == $endTimestamp) {
             $endTimestamp = $startTimestamp;
         }
     }
     $query = "SELECT user.id, user.username, user.realname " . "FROM `mantis_user_table` as user " . "JOIN `codev_team_user_table` as team_user ON user.id = team_user.user_id " . "AND team_user.team_id={$this->id} " . "AND team_user.access_level IN (" . self::accessLevel_dev . ', ' . self::accessLevel_manager . ') ' . "AND team_user.arrival_date <= {$endTimestamp} " . "AND (team_user.departure_date = 0 OR team_user.departure_date >= {$startTimestamp}) " . "ORDER BY user.username;";
     $result = SqlWrapper::getInstance()->sql_query($query);
     if (!$result) {
         echo "<span style='color:red'>ERROR: Query FAILED</span>";
         exit;
     }
     $mList = array();
     while ($row = SqlWrapper::getInstance()->sql_fetch_object($result)) {
         $mList[$row->id] = $userRealName ? $row->realname : $row->username;
     }
     return $mList;
 }
Example #24
0
 /**
  *  STATUS   | BEGIN                | END
  *  open     | firstAckDate         | previousIssueEndDate + getBacklog()
  *  analyzed | firstAckDate         | previousIssueEndDate + getBacklog()
  *  ack      | firstAckDate         | previousIssueEndDate + getBacklog()
  *  feedback | previousIssueEndDate | previousIssueEndDate + getBacklog()
  *  new      | previousIssueEndDate | previousIssueEndDate + getBacklog()
  *
  * @param Issue[] $issueList
  * @return array[]
  */
 private function dispatchCurrentIssues(array $issueList)
 {
     $teamDispatchInfo = array();
     // $teamDispatchInfo[userid] = array(endTimestamp, $availTimeOnEndTimestamp)
     $today = Tools::date2timestamp(date("Y-m-d", time()));
     foreach ($issueList as $issue) {
         $user = UserCache::getInstance()->getUser($issue->getHandlerId());
         // init user history
         if (!array_key_exists($issue->getHandlerId(), $teamDispatchInfo)) {
             // let's assume 'today' being the endTimestamp of previous activity
             $teamDispatchInfo[$issue->getHandlerId()] = array($today, $user->getAvailableTime($today));
         }
         // find backlogStartDate
         $teamDispatchInfo[$issue->getHandlerId()] = $this->findBacklogStartDate($issue, $teamDispatchInfo[$issue->getHandlerId()]);
         $backlogStartDate = $teamDispatchInfo[$issue->getHandlerId()][0];
         // find startDate
         $startDate = $this->findStartDate($issue, $backlogStartDate);
         // compute endDate
         // the arrivalDate depends on the dateOfInsertion and the available time on that day
         $teamDispatchInfo[$issue->getHandlerId()] = $issue->computeEstimatedDateOfArrival($teamDispatchInfo[$issue->getHandlerId()][0], $teamDispatchInfo[$issue->getHandlerId()][1]);
         $endDate = $teamDispatchInfo[$issue->getHandlerId()][0];
         if (self::$logger->isDebugEnabled()) {
             self::$logger->debug("issue " . $issue->getId() . " : user " . $issue->getHandlerId() . " status " . $issue->getCurrentStatus() . " startDate " . date("Y-m-d", $startDate) . " tmpDate=" . date("Y-m-d", $backlogStartDate) . " endDate " . date("Y-m-d", $endDate) . " RAF=" . $issue->getDuration());
             self::$logger->debug("issue " . $issue->getId() . " : left last Day = " . $teamDispatchInfo[$issue->getHandlerId()][1]);
         }
         // activitiesByUser
         $activity = new GanttActivity($issue->getId(), $issue->getHandlerId(), $startDate, $endDate);
         if (!array_key_exists($issue->getHandlerId(), $this->activitiesByUser)) {
             $this->activitiesByUser[$issue->getHandlerId()] = array();
         }
         $this->activitiesByUser[$issue->getHandlerId()][] = $activity;
         if (self::$logger->isDebugEnabled()) {
             self::$logger->debug("add to activitiesByUser[" . $issue->getHandlerId() . "]: " . $activity->toString() . "  (resolved)");
         }
     }
     return $this->activitiesByUser;
 }
Example #25
0
File: date.php Project: fg-ok/codev
    echo 'jQuery("#datepicker").datepicker("setDate" ,"' . $defaultDate1 . '");';
    echo '});';
    echo '</script>';
    echo '<input type="text" id="datepicker" class="datepicker" name="date" maxlength="10" size="10" title="Date" />';
    echo "&nbsp;<input type=submit value='Convert to Timestamp' />\n";
    echo "</form>\n";
    echo "</div>";
}
function setTimestampToDateForm($timestamp)
{
    echo "<div class=left>";
    // Create form
    echo "<form id='form2' name='form2' method='post' action='{$_SERVER['PHP_SELF']}'>\n";
    echo "Timestamp: <input name='timestamp' type='text' id='timestamp' value='{$timestamp}'>\n";
    echo "&nbsp;<input type=submit value='Convert to Date'>\n";
    echo "</form>\n";
    echo "</div>";
}
// =========== MAIN ==========
echo '<html><head><base href="' . Tools::getServerRootURL() . '/" /></head><body>';
$date1 = Tools::getSecurePOSTStringValue("date", date("Y-m-d", time()));
setCalendarToDateForm($date1);
echo "<br/>";
$timestamp = Tools::getSecurePOSTIntValue("timestamp", 0);
setTimestampToDateForm($timestamp);
if (isset($_POST["date"])) {
    $timestamp = Tools::date2timestamp($date1);
    echo "<br/>{$formatedDate} => {$timestamp}<br/>";
} elseif (isset($_POST["timestamp"])) {
    echo "<br/>{$timestamp} => " . date("Y-m-d H:i:s", $timestamp) . "<br/>";
}
*/
require '../../path.inc.php';
// Note: i18n is included by the Controler class, but Ajax dos not use it...
require_once 'i18n/i18n.inc.php';
if (Tools::isConnectedUser() && isset($_GET['action'])) {
    $teamid = isset($_SESSION['teamid']) ? $_SESSION['teamid'] : 0;
    $logger = Logger::getLogger("LoadPerProjCategoryIndicator_ajax");
    $action = Tools::getSecureGETStringValue('action', '');
    if (!empty($action)) {
        $smartyHelper = new SmartyHelper();
        if ($action == 'getLoadPerProjCategoryIndicator') {
            if (isset($_SESSION[PluginDataProviderInterface::SESSION_ID])) {
                $pluginDataProvider = unserialize($_SESSION[PluginDataProviderInterface::SESSION_ID]);
                if (FALSE != $pluginDataProvider) {
                    $startTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("loadPerProjCategory_startdate"));
                    $endTimestamp = Tools::date2timestamp(Tools::getSecureGETStringValue("loadPerProjCategory_enddate"));
                    $attributesJsonStr = Tools::getSecureGETStringValue('attributesJsonStr');
                    $attributesArray = json_decode(stripslashes($attributesJsonStr), true);
                    $selectedProject = $attributesArray['projectid'];
                    $isDisplayTasks = $attributesArray['isDisplayTasks'];
                    // update dataProvider
                    $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_START_TIMESTAMP, $startTimestamp);
                    $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_END_TIMESTAMP, $endTimestamp);
                    $pluginDataProvider->setParam(PluginDataProviderInterface::PARAM_PROJECT_ID, $selectedProject);
                    $indicator = new LoadPerProjCategoryIndicator($pluginDataProvider);
                    // override plugin settings with current attributes
                    $indicator->setPluginSettings(array(LoadPerProjCategoryIndicator::OPTION_DISPLAY_TASKS => $isDisplayTasks));
                    $indicator->execute();
                    $data = $indicator->getSmartyVariablesForAjax();
                    // construct the html table
                    foreach ($data as $smartyKey => $smartyVariable) {
Example #27
0
/**
 * create Admin team & add to codev_config_table
 * @param string $name
 * @param int $leader_id
 * @return int
 */
function createAdminTeam($name, $leader_id)
{
    $now = time();
    $formatedDate = date("Y-m-d", $now);
    $today = Tools::date2timestamp($formatedDate);
    // create admin team
    $teamId = Team::getIdFromName($name);
    if (-1 == $teamId) {
        $teamId = Team::create($name, T_("CodevTT Administrators team"), $leader_id, $today);
    }
    if (-1 != $teamId) {
        // --- add to codev_config_table
        Config::getInstance()->setQuiet(true);
        Config::getInstance()->setValue(Config::id_adminTeamId, $teamId, Config::configType_int);
        Config::getInstance()->setQuiet(false);
        // add leader as member
        $adminTeam = TeamCache::getInstance()->getTeam($teamId);
        $adminTeam->addMember($leader_id, $today, Team::accessLevel_dev);
        $adminTeam->setEnabled(false);
        // add default ExternalTasksProject
        // TODO does Admin team needs ExternalTasksProject ?
        $adminTeam->addExternalTasksProject();
        // NOTE: CodevTT Admin team does not need any side task project.
    } else {
        echo "ERROR: {$name} team creation failed</br>";
    }
    return $teamId;
}
Example #28
0
 public static function writeConfigFile()
 {
     // TODO workaround
     $file = self::$config_file;
     $general = array();
     $install_timestamp = NULL == self::$codevInstall_timestamp ? Tools::date2timestamp(date("Y-m-d")) : self::$codevInstall_timestamp;
     $general['codevInstall_timestamp'] = $install_timestamp;
     $general['codevtt_logfile'] = self::$codevtt_logfile;
     $general['homepage_title'] = self::$homepage_title;
     $general['logo_image'] = self::$logoImageDefault;
     $general['codevtt_output_dir'] = self::$codevOutputDir;
     $general['codevtt_dir'] = self::$codevRootDir;
     $general['mantis_dir'] = self::$mantisPath;
     $general['mantis_url'] = self::$mantisURL;
     $general['codevtt_url'] = self::$codevURL;
     $database = array();
     $database['db_mantis_host'] = self::$db_mantis_host;
     $database['db_mantis_database'] = self::$db_mantis_database;
     $database['db_mantis_user'] = self::$db_mantis_user;
     $database['db_mantis_pass'] = self::$db_mantis_pass;
     $mantis = array();
     $mantis['status_enum_string'] = self::$statusNames ? Tools::doubleImplode(':', ',', self::$statusNames) : ' ';
     $mantis['priority_enum_string'] = self::$priority_names ? Tools::doubleImplode(':', ',', self::$priority_names) : ' ';
     $mantis['resolution_enum_string'] = self::$resolution_names ? Tools::doubleImplode(':', ',', self::$resolution_names) : ' ';
     $mantis['severity_enum_string'] = self::$severity_names ? Tools::doubleImplode(':', ',', self::$severity_names) : ' ';
     $mantis['bug_resolved_status_threshold'] = self::$bug_resolved_status_threshold;
     $mantis['status_enum_workflow'] = json_encode(self::$status_enum_workflow);
     // array to jsonStr
     $status = array();
     $status[] = '; Note: CodevTT needs some status to be defined (new, feedback, open, closed)';
     $status[] = '; please add equivalences in accordance to your workflow.';
     $status[] = '; ex: status_open = 50 (assigned)';
     $status['status_new'] = self::$status_new;
     $status['status_feedback'] = self::$status_feedback;
     #$status['status_acknowledged'] = self::$status_acknowledged;
     $status['status_open'] = self::$status_open;
     $status['status_closed'] = self::$status_closed;
     $resolution = array();
     $resolution['resolution_fixed'] = self::$resolution_fixed;
     $resolution['resolution_reopened'] = self::$resolution_reopened;
     $relationships = array();
     $relationships['relationship_constrained_by'] = self::$relationship_constrained_by;
     // BUG_CUSTOM_RELATIONSHIP_CONSTRAINED_BY;
     $relationships['relationship_constrains'] = self::$relationship_constrains;
     // BUG_CUSTOM_RELATIONSHIP_CONSTRAINS;
     $perf = array();
     $perf[] = '; display tooltips on only the x last_updated issues.';
     $perf[] = '; set to 0 to display all tooltips.';
     $perf['max_tooltips_per_page'] = self::$maxTooltipsPerPage;
     $doodles = array();
     $doodles[] = '; logo_image_startDate_endDate = "images/doodle_logo.png" (date "MMdd")';
     foreach (self::$doodles as $key => $value) {
         $doodles[$key] = $value;
     }
     $timesheets = array();
     $timesheets['task_duration_list'] = self::$taskDurationList ? Tools::doubleImplode(':', ',', self::$taskDurationList) : ' ';
     $internet = array();
     if (!empty(self::$proxy)) {
         $internet['proxy'] = self::$proxy;
     } else {
         $internet[] = ';proxy = "proxy:8080"';
     }
     $internet['check_latest_version'] = self::$isCheckLatestVersion;
     $dashboards = array();
     foreach (self::$dashboardDefaultPlugins as $key => $value) {
         $dashboards[$key] = implode(',', $value);
     }
     $emailSettings = array();
     $emailSettings[] = '; --- cronjob (every Friday at 2:00 AM):';
     $emailSettings[] = '; --- 0 2 * * 5 php /var/www/html/codevtt/tools/send_timesheet_emails.php';
     foreach (self::$emailSettings as $key => $val) {
         $emailSettings[$key] = $val;
     }
     $ini_array = array();
     $ini_array[] = '; This file is part of CodevTT.';
     $ini_array[] = '; - The Variables in here can be customized to your needs';
     $ini_array[] = '; - This file has been generated during install on ' . date("D d M Y H:i");
     $ini_array[] = '';
     $ini_array['general'] = $general;
     $ini_array[] = '';
     $ini_array['database'] = $database;
     $ini_array[] = '';
     $ini_array['mantis'] = $mantis;
     $ini_array[] = '';
     $ini_array['status'] = $status;
     $ini_array[] = '';
     $ini_array['resolution'] = $resolution;
     $ini_array[] = '';
     $ini_array['relationships'] = $relationships;
     $ini_array[] = '';
     $ini_array['perf'] = $perf;
     $ini_array[] = '';
     $ini_array['doodles'] = $doodles;
     $ini_array[] = '';
     $ini_array['timesheets'] = $timesheets;
     $ini_array[] = '';
     $ini_array['internet'] = $internet;
     $ini_array[] = '';
     $ini_array['dashboardDefaultPlugins'] = $dashboards;
     $ini_array[] = '';
     $ini_array['email'] = $emailSettings;
     $ini_array[] = '';
     return Tools::write_php_ini($ini_array, $file);
     #return Tools::write_php_ini($ini_array, "/tmp/toto.ini");
 }
Example #29
0
 protected function display()
 {
     if (Tools::isConnectedUser()) {
         // only teamMembers can access this page
         if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid) || $this->session_user->isTeamObserver($this->teamid) || !$this->session_user->isTeamMember($this->teamid)) {
             $this->smartyHelper->assign('accessDenied', TRUE);
         } else {
             $team = TeamCache::getInstance()->getTeam($this->teamid);
             $teamMembers = $team->getActiveMembers(NULL, NULL, TRUE);
             $managed_userid = Tools::getSecurePOSTIntValue('userid', $this->session_userid);
             if ($this->session_user->isTeamManager($this->teamid)) {
                 // session_user is Manager, let him choose the teamMember he wants to manage
                 $this->smartyHelper->assign('users', $teamMembers);
                 $this->smartyHelper->assign('selectedUser', $managed_userid);
                 $this->smartyHelper->assign("isManager", true);
             }
             // display AddTrack Page
             $year = Tools::getSecurePOSTIntValue('year', date('Y'));
             $managed_user = UserCache::getInstance()->getUser($managed_userid);
             // Need to be Manager to handle other users
             if ($managed_userid != $this->session_userid) {
                 if (!$this->session_user->isTeamManager($this->teamid) || !array_key_exists($managed_userid, $teamMembers)) {
                     self::$logger->error(' SECURITY ALERT changeManagedUser: session_user ' . $this->session_userid . " is not allowed to manage user {$managed_userid}");
                     Tools::sendForbiddenAccess();
                 }
             }
             // developper & manager can add timeTracks
             $mTeamList = $managed_user->getDevTeamList();
             $managedTeamList = $managed_user->getManagedTeamList();
             $teamList = $mTeamList + $managedTeamList;
             $action = Tools::getSecurePOSTStringValue('action', '');
             $weekid = Tools::getSecurePOSTIntValue('weekid', date('W'));
             $defaultDate = Tools::getSecurePOSTStringValue('date', date("Y-m-d", time()));
             $defaultBugid = Tools::getSecurePOSTIntValue('bugid', 0);
             $defaultProjectid = Tools::getSecurePOSTIntValue('projectid', 0);
             $job = Tools::getSecurePOSTIntValue('job', 0);
             $duration = Tools::getSecurePOSTNumberValue('duree', 0);
             if ("addTrack" == $action) {
                 self::$logger->debug("addTrack: called from form1");
                 // TODO merge addTrack & addTimetrack actions !
                 // called by form1 when no backlog has to be set.
                 // updateBacklogDialogBox must not raise up,
                 // track must be added, backlog & status must NOT be updated
                 $timestamp = Tools::date2timestamp($defaultDate);
                 $defaultBugid = Tools::getSecurePOSTIntValue('bugid');
                 $job = Tools::getSecurePOSTStringValue('job');
                 $duration = Tools::getSecurePOSTNumberValue('duree');
                 // dialogBox is not called, then track must be saved to DB
                 $trackid = TimeTrack::create($managed_userid, $defaultBugid, $job, $timestamp, $duration, $this->session_userid);
                 if (self::$logger->isDebugEnabled()) {
                     self::$logger->debug("Track {$trackid} added  : userid={$managed_userid} bugid={$defaultBugid} job={$job} duration={$duration} timestamp={$timestamp}");
                 }
                 // Don't show job and duration after add track
                 $job = 0;
                 $duration = 0;
                 $defaultProjectid = Tools::getSecurePOSTIntValue('projectid');
             } elseif ("addTimetrack" == $action) {
                 // updateBacklogDialogbox with 'addTimetrack' action
                 // add track AND update backlog & status & handlerId
                 // TODO merge addTrack & addTimetrack actions !
                 self::$logger->debug("addTimetrack: called from the updateBacklogDialogBox");
                 // add timetrack (all values mandatory)
                 $defaultDate = Tools::getSecurePOSTStringValue('trackDate');
                 $defaultBugid = Tools::getSecurePOSTIntValue('bugid');
                 $job = Tools::getSecurePOSTIntValue('trackJobid');
                 $duration = Tools::getSecurePOSTNumberValue('timeToAdd');
                 $handlerId = Tools::getSecurePOSTNumberValue('handlerid');
                 // check jobid (bug happens sometime...
                 if (0 == $job) {
                     $this->smartyHelper->assign('error', T_("Timetrack not added: Job has not specified."));
                     self::$logger->error("Add track : FAILED. issue={$defaultBugid}, jobid={$job}, duration={$duration} date={$defaultDate}");
                 }
                 // check bug_id (this happens when user uses the 'back' button of the browser ?)
                 if (0 == $defaultBugid) {
                     self::$logger->error("Add track : FAILED. issue=0, jobid={$job}, duration={$duration} date={$defaultDate}");
                 } else {
                     $timestamp = 0 !== $defaultDate ? Tools::date2timestamp($defaultDate) : 0;
                     $trackid = TimeTrack::create($managed_userid, $defaultBugid, $job, $timestamp, $duration, $this->session_userid);
                     if (self::$logger->isDebugEnabled()) {
                         self::$logger->debug("Track {$trackid} added  : userid={$managed_userid} bugid={$defaultBugid} job={$job} duration={$duration} timestamp={$timestamp}");
                     }
                     $issue = IssueCache::getInstance()->getIssue($defaultBugid);
                     // setBacklog
                     $formattedBacklog = Tools::getSecurePOSTNumberValue('backlog');
                     $issue->setBacklog($formattedBacklog);
                     // setStatus
                     $newStatus = Tools::getSecurePOSTIntValue('statusid');
                     $issue->setStatus($newStatus);
                     // set handlerId
                     if ($handlerId != $issue->getHandlerId()) {
                         // TODO security check (userid exists/valid ?)
                         $issue->setHandler($handlerId);
                     }
                     $defaultProjectid = $issue->getProjectId();
                 }
                 // Don't show job and duration after add track
                 $job = 0;
                 $duration = 0;
             } elseif ("deleteTrack" == $action) {
                 $trackid = Tools::getSecurePOSTIntValue('trackid');
                 $timeTrack = TimeTrackCache::getInstance()->getTimeTrack($trackid);
                 $defaultBugid = $timeTrack->getIssueId();
                 $duration = $timeTrack->getDuration();
                 $job = $timeTrack->getJobId();
                 $defaultDate = date("Y-m-d", $timeTrack->getDate());
                 // delete track
                 if (!$timeTrack->remove()) {
                     $this->smartyHelper->assign('error', T_("Failed to delete the timetrack !"));
                     self::$logger->error("Delete track {$trackid}  : FAILED.");
                 }
                 if (0 == $defaultBugid) {
                     self::$logger->error("Delete track : bug_id=0");
                     $defaultProjectid = 0;
                 } else {
                     try {
                         // pre-set form fields
                         $issue = IssueCache::getInstance()->getIssue($defaultBugid);
                         $defaultProjectid = $issue->getProjectId();
                         // if project not defined for current team, do not pre-set form fields.
                         if (!in_array($defaultProjectid, array_keys($team->getProjects()))) {
                             $defaultProjectid = 0;
                             $defaultBugid = 0;
                         }
                     } catch (Exception $e) {
                         $defaultProjectid = 0;
                         $defaultBugid = 0;
                     }
                 }
             } elseif ("setBugId" == $action) {
                 // pre-set form fields
                 // find ProjectId to update categories
                 $defaultBugid = Tools::getSecurePOSTIntValue('bugid');
                 $issue = IssueCache::getInstance()->getIssue($defaultBugid);
                 $defaultProjectid = $issue->getProjectId();
             } elseif ("setFiltersAction" == $action) {
                 $isFilter_onlyAssignedTo = isset($_POST["cb_onlyAssignedTo"]) ? '1' : '0';
                 $isFilter_hideResolved = isset($_POST["cb_hideResolved"]) ? '1' : '0';
                 $managed_user->setTimetrackingFilter('onlyAssignedTo', $isFilter_onlyAssignedTo);
                 $managed_user->setTimetrackingFilter('hideResolved', $isFilter_hideResolved);
                 if ($defaultBugid != 0) {
                     $issue = IssueCache::getInstance()->getIssue($defaultBugid);
                     $defaultProjectid = $issue->getProjectId();
                 }
             }
             // Display user name
             $this->smartyHelper->assign('managedUser_realname', $managed_user->getRealname());
             $this->smartyHelper->assign('userid', $managed_userid);
             // display Track Form
             $this->smartyHelper->assign('date', $defaultDate);
             // All projects except disabled
             $projList = $team->getProjects(true, false);
             $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projList, $defaultProjectid));
             $this->smartyHelper->assign('defaultProjectid', $defaultProjectid);
             $this->smartyHelper->assign('defaultBugid', $defaultBugid);
             $this->smartyHelper->assign('weekid', $weekid);
             $this->smartyHelper->assign('year', $year);
             $isOnlyAssignedTo = '0' == $managed_user->getTimetrackingFilter('onlyAssignedTo') ? false : true;
             $this->smartyHelper->assign('isOnlyAssignedTo', $isOnlyAssignedTo);
             $isHideResolved = '0' == $managed_user->getTimetrackingFilter('hideResolved') ? false : true;
             $this->smartyHelper->assign('isHideResolved', $isHideResolved);
             $availableIssues = TimeTrackingTools::getIssues($this->teamid, $defaultProjectid, $isOnlyAssignedTo, $managed_user->getId(), $projList, $isHideResolved, $defaultBugid);
             $this->smartyHelper->assign('issues', $availableIssues);
             $this->smartyHelper->assign('jobs', SmartyTools::getSmartyArray(TimeTrackingTools::getJobs($defaultProjectid, $this->teamid), $job));
             $this->smartyHelper->assign('duration', SmartyTools::getSmartyArray(TimeTrackingTools::getDurationList($this->teamid), $duration));
             $this->smartyHelper->assign('weeks', SmartyTools::getWeeks($weekid, $year));
             $this->smartyHelper->assign('years', SmartyTools::getYears($year, 1));
             $weekDates = Tools::week_dates($weekid, $year);
             $startTimestamp = $weekDates[1];
             $endTimestamp = mktime(23, 59, 59, date("m", $weekDates[7]), date("d", $weekDates[7]), date("Y", $weekDates[7]));
             $timeTracking = new TimeTracking($startTimestamp, $endTimestamp, $this->teamid);
             $incompleteDays = array_keys($timeTracking->checkCompleteDays($managed_userid, TRUE));
             $missingDays = $timeTracking->checkMissingDays($managed_userid);
             $errorDays = array_merge($incompleteDays, $missingDays);
             $smartyWeekDates = TimeTrackingTools::getSmartyWeekDates($weekDates, $errorDays);
             // UTF8 problems in smarty, date encoding needs to be done in PHP
             $this->smartyHelper->assign('weekDates', array($smartyWeekDates[1], $smartyWeekDates[2], $smartyWeekDates[3], $smartyWeekDates[4], $smartyWeekDates[5]));
             $this->smartyHelper->assign('weekEndDates', array($smartyWeekDates[6], $smartyWeekDates[7]));
             $weekTasks = TimeTrackingTools::getWeekTask($weekDates, $this->teamid, $managed_userid, $timeTracking, $errorDays);
             $this->smartyHelper->assign('weekTasks', $weekTasks["weekTasks"]);
             $this->smartyHelper->assign('dayTotalElapsed', $weekTasks["totalElapsed"]);
             $timeTrackingTuples = $this->getTimetrackingTuples($managed_userid, $timeTracking);
             $this->smartyHelper->assign('weekTimetrackingTuples', $timeTrackingTuples['current']);
             $this->smartyHelper->assign('timetrackingTuples', $timeTrackingTuples['future']);
             // ConsistencyCheck
             $consistencyErrors = $this->getConsistencyErrors($managed_userid, $this->teamid);
             if (count($consistencyErrors) > 0) {
                 $this->smartyHelper->assign('ccheckErrList', $consistencyErrors);
                 $this->smartyHelper->assign('ccheckButtonTitle', count($consistencyErrors) . ' ' . T_("Errors"));
                 $this->smartyHelper->assign('ccheckBoxTitle', count($consistencyErrors) . ' ' . T_("days are incomplete or undefined"));
             }
             $this->smartyHelper->assign('isForbidAddTimetracksOnClosed', 1 == $team->getGeneralPreference('forbidAddTimetracksOnClosed') ? true : false);
         }
     }
 }
Example #30
0
 /**
  * @param Command $cmd
  */
 private function updateCmdInfo(Command $cmd)
 {
     // TODO check cmd_teamid in grantedTeams
     $cmd_teamid = Tools::getSecurePOSTIntValue('cmd_teamid');
     if ($cmd_teamid != $this->teamid) {
         // switch team (because you won't find the cmd in current team's contract list)
         $_SESSION['teamid'] = $cmd_teamid;
         $this->updateTeamSelector();
     }
     $cmd->setTeamid($cmd_teamid);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdName');
     // TODO UGLY WORKAROUND: command name cannot contain commas (,) because it is used as field separator in FilterManager
     $formattedValue = str_replace(",", ' ', $formattedValue);
     $cmd->setName($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdReference', '');
     $cmd->setReference($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdVersion', '');
     $cmd->setVersion($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdReporter', '');
     $cmd->setReporter($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdDesc', '');
     $cmd->setDesc($formattedValue);
     $formattedValue = Tools::getSecurePOSTStringValue('cmdStartDate', '');
     if ('' != $formattedValue) {
         $cmd->setStartDate(Tools::date2timestamp($formattedValue));
     }
     $formattedValue = Tools::getSecurePOSTStringValue('cmdDeadline', '');
     if ('' != $formattedValue) {
         $cmd->setDeadline(Tools::date2timestamp($formattedValue));
     }
     $cmd->setState(SmartyTools::checkNumericValue($_POST['cmdState'], true));
     $cmd->setAverageDailyRate(SmartyTools::checkNumericValue($_POST['cmdAverageDailyRate'], true));
     $cmd->setTotalSoldDays(SmartyTools::checkNumericValue($_POST['cmdTotalSoldDays'], true));
 }