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)); } } }
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()); } } }
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.')); } }
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'); } } } }
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")); } } } } }
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); } } } } }
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); } } } }
/** * 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; }
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); } }
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()); } } } }
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);
/** * 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)); }
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;
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; }
/** * 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;
/** * 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; }
/** * 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; }
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 " <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 " <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) {
/** * 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; }
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"); }
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); } } }
/** * @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)); }