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()) { // Admins only $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); if ($session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) { $projectList = $this->getProjectList(false); if (isset($_POST['projectid']) && array_key_exists($_POST['projectid'], $projectList)) { $projectid = Tools::getSecurePOSTIntValue('projectid'); $_SESSION['projectid'] = $projectid; } elseif (isset($_SESSION['projectid']) && array_key_exists($_SESSION['projectid'], $projectList)) { $projectid = $_SESSION['projectid']; } else { $projectIds = array_keys($projectList); if (count($projectIds) > 0) { $projectid = $projectIds[0]; } else { $projectid = 0; } } $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projectList, $projectid)); // display current workflow if (0 != $projectid) { $clone_projectid = Tools::getSecurePOSTIntValue('clone_projectid', 0); if ($clone_projectid == $projectid || !array_key_exists($clone_projectid, $projectList)) { $clone_projectid = 0; } $action = Tools::getSecurePOSTStringValue('action', ''); if ("cloneToProject" == $action) { #echo "Clone $projectid ---> $clone_projectid<br>"; $errMsg = Project::cloneAllProjectConfig($projectid, $clone_projectid); $this->smartyHelper->assign('msg', 'Clone to project : ' . $errMsg); } elseif ("cloneFromProject" == $action) { #echo "Clone $clone_projectid ---> $projectid<br>"; $errMsg = Project::cloneAllProjectConfig($clone_projectid, $projectid); $this->smartyHelper->assign('msg', 'Clone from project : ' . $errMsg); } unset($projectList[$projectid]); $this->smartyHelper->assign('cloneProjects', SmartyTools::getSmartyArray($projectList, $clone_projectid)); $proj = ProjectCache::getInstance()->getProject($projectid); $this->smartyHelper->assign('currentProjectId', $projectid); $this->smartyHelper->assign('defaultProjectId', $clone_projectid); $this->smartyHelper->assign('currentProjectName', $proj->getName()); $this->smartyHelper->assign('disabled', 0 == $clone_projectid); $projectsInfo = array(); $projectsInfo[] = $this->getProjectInfo($proj, "tabsProject"); if (0 != $clone_projectid) { $cproj = ProjectCache::getInstance()->getProject($clone_projectid); $this->smartyHelper->assign('defaultProjectName', $cproj->getName()); $projectsInfo[] = $this->getProjectInfo($cproj, "tabsCloneProject"); } $this->smartyHelper->assign('projectsInfo', $projectsInfo); } } } }
protected function display() { if (Tools::isConnectedUser()) { $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); // Admins only if ($session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) { $this->smartyHelper->assign('access', true); $is_modified = Tools::getSecurePOSTStringValue('is_modified', 'false'); // init // 'is_modified' is used because it's not possible to make a difference // between an unchecked checkBox and an unset checkbox variable if ("false" == $is_modified) { $isBackup = true; } else { $isBackup = $_POST['cb_backup']; } $filename = Tools::getSecurePOSTStringValue('backup_filename', "codevtt_backup_" . date("Ymd") . ".sql"); $this->smartyHelper->assign('isBackup', $isBackup); $this->smartyHelper->assign('filename', $filename); if (isset($_POST['cb_backup'])) { $result = true; if ($isBackup) { $result = SqlWrapper::getInstance()->sql_dump($filename) && $this->saveConfigFiles(); $this->smartyHelper->assign('backupResult', $result); } $this->smartyHelper->assign('stepOneResult', $result); if ($result) { $prjList = $this->displayProjectsToRemove(); $this->smartyHelper->assign('projects', $prjList); } $this->smartyHelper->assign('stepTwoResult', $result); if ($result) { $result = $this->removeCustomFields(); } $this->smartyHelper->assign('stepThreeResult', $result); if ($result) { $result = Tools::execSQLscript2("uninstall.sql"); } $this->smartyHelper->assign('stepFourResult', $result); if ($result) { $result = $this->deleteConfigFiles(); } $this->smartyHelper->assign('stepFiveResult', $result); if ($result) { $result = $this->removeCustomMenuItem('CodevTT'); } $this->smartyHelper->assign('stepSixResult', $result); } else { Config::setQuiet(true); $this->smartyHelper->assign('codevReportsDir', Constants::$codevOutputDir . DIRECTORY_SEPARATOR . 'reports'); Config::setQuiet(false); $this->smartyHelper->assign('is_modified', $is_modified); } } } }
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 { $action = filter_input(INPUT_POST, 'action'); if (empty($action)) { $action = 'display'; } $pm = PluginManager::getInstance(); // === ACTIONS ===================================================== if ('enablePlugin' == $action) { $pluginName = Tools::getSecurePOSTStringValue('pluginName'); $pm->enablePlugin($pluginName); } else { if ('disablePlugin' == $action) { $pluginName = Tools::getSecurePOSTStringValue('pluginName'); $pm->disablePlugin($pluginName); } else { if ('discoverNewPlugins' == $action) { try { Tools::createClassMap(); $pm->discoverNewPlugins(); //$this->smartyHelper->assign('infoMsg', T_('Found xx new plugins !')); } catch (Exception $e) { $this->smartyHelper->assign('errorMsg', T_('Could not create classmap: ') . $e->getMessage()); } } } } // === DISPLAY ===================================================== // set values to display plugin table $plugins = $pm->getPlugins(); $formattedPlugins = array(); foreach ($plugins as $plugin) { $className = $plugin['className']; $formated_domains = array(); foreach ($plugin['domains'] as $domName) { array_push($formated_domains, T_($domName)); } //sort($formated_domains); $formated_categories = array(); foreach ($plugin['categories'] as $catName) { array_push($formated_categories, T_($catName)); } //sort($formated_categories); $formattedPlugins[$className] = array('name' => $plugin['displayedName'], 'status' => $plugin['status'], 'statusName' => pluginManager::getStatusName($plugin['status']), 'domains' => implode(',<br>', $formated_domains), 'categories' => implode(',<br>', $formated_categories), 'version' => $plugin['version'], 'description' => $plugin['description']); } $this->smartyHelper->assign('availablePlugins', $formattedPlugins); } } }
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); return; } $year = Tools::getSecurePOSTIntValue('year', date('Y')); $displayed_teamid = 0; if (isset($_POST['displayed_teamid'])) { $displayed_teamid = Tools::getSecurePOSTIntValue('displayed_teamid', 0); } else { $displayed_teamid = $this->teamid; } // --- Filters $filtersStr = Tools::getSecurePOSTStringValue('checkedFilters', ''); if (!empty($filtersStr)) { $filters = Tools::doubleExplode(':', ',', $filtersStr); } else { $filters = array('isExternalTasks' => 1, 'isSidetasksInactivity' => 1); } $filterInfo = array(); $filterInfo[] = array('filterId' => 'isExternalTasks', 'filterName' => T_('External Tasks'), 'isChecked' => $filters['isExternalTasks']); $filterInfo[] = array('filterId' => 'isSidetasksInactivity', 'filterName' => T_('Sidetasks Inactivity'), 'isChecked' => $filters['isSidetasksInactivity']); $this->smartyHelper->assign('filterInfo', $filterInfo); $this->smartyHelper->assign('checkedFilters', $filtersStr); // --- $teams = SmartyTools::getSmartyArray($this->teamList, $displayed_teamid); #$teams = SmartyTools::getSmartyArray(Team::getTeams(),$displayed_teamid); $this->smartyHelper->assign('availableTeams', $teams); $this->smartyHelper->assign('years', SmartyTools::getYears($year, 2)); if ($displayed_teamid == 0 && count($teams) > 0) { $teamids = array_keys($teams); $displayed_teamid = $teamids[0]; } $team = TeamCache::getInstance()->getTeam($displayed_teamid); $users = $team->getUsers(); $months = array(); for ($i = 1; $i <= 12; $i++) { $monthTimestamp = mktime(0, 0, 0, $i, 1, $year); $nbDaysInMonth = date("t", $monthTimestamp); $endMonthTimestamp = strtotime("last day of this month", $monthTimestamp); $months[$i] = array("name" => Tools::formatDate("%B %Y", $monthTimestamp), "idcaption" => Tools::formatDate("%B", $monthTimestamp), "days" => $this->getDays($nbDaysInMonth, $i, $year), "users" => $this->getDaysUsers($i, $year, $displayed_teamid, $users, $nbDaysInMonth, $filters), "workdays" => Holidays::getInstance()->getWorkdays($monthTimestamp, $endMonthTimestamp), "filename_csv" => date("Ym", $monthTimestamp) . '_' . str_replace(' ', '_', $team->getName()) . '_holidays.csv'); } $this->smartyHelper->assign('months', $months); } }
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()) { // 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); } } } }
protected function display() { if (Tools::isConnectedUser()) { $teamList = $this->session_user->getTeamList(); // only teamMembers & observers can access this page if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid)) { $this->smartyHelper->assign('accessDenied', TRUE); } else { $pageWidth = Tools::getSecurePOSTIntValue('width', Tools::getSecureGETIntValue('width', 0)); $this->smartyHelper->assign('width', $pageWidth); if (array_key_exists($this->teamid, $teamList)) { $this->smartyHelper->assign('consistencyErrors', $this->getConsistencyErrors($this->teamid)); $team = TeamCache::getInstance()->getTeam($this->teamid); $isManager = $this->session_user->isTeamManager($this->teamid); $isObserver = $this->session_user->isTeamObserver($this->teamid); $this->smartyHelper->assign('isManager', $isManager || $isObserver); // display backlog (unassigned tasks) $unassignedIssues = $team->getUnassignedTasks(); $unassigendSel = new IssueSelection("unassigned from team {$this->teamid}"); $unassigendSel->addIssueList($unassignedIssues); $this->smartyHelper->assign('unassigned_nbIssues', $unassigendSel->getNbIssues()); $this->smartyHelper->assign('unassigned_MEE', $unassigendSel->mgrEffortEstim); $this->smartyHelper->assign('unassigned_EE', $unassigendSel->effortEstim + $unassigendSel->effortAdd); // get planningOptions $keyvalue = Tools::getSecurePOSTStringValue('planningOptions', ''); if (!empty($keyvalue)) { $planningOptions = Tools::doubleExplode(':', ',', $keyvalue); $this->session_user->setPlanningOptions($this->teamid, $planningOptions); } $this->smartyHelper->assign('planningOptions', $this->getPlanningOptions()); $today = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $graphSize = "undefined" != $pageWidth ? $pageWidth - 150 : 800; $allTasksLists = array(); $workloads = array(); $teamMembers = $team->getUsers(); $nbDaysToDisplay = 0; foreach ($teamMembers as $user) { $workload = 0; // show only developper's & manager's tasks if (!$user->isTeamDeveloper($this->teamid) && !$user->isTeamManager($this->teamid)) { if (self::$logger->isDebugEnabled()) { self::$logger->debug("user " . $user->getId() . " excluded from scheduled users on team {$this->teamid}"); } continue; } if (NULL != $user->getDepartureDate($this->teamid) && $user->getDepartureDate($this->teamid) < $today) { continue; } $scheduledTaskList = ScheduledTask::scheduleUser($user, $today, $this->teamid, TRUE); foreach ($scheduledTaskList as $scheduledTask) { $workload += $scheduledTask->getDuration(); } $nbDaysToDisplay = $nbDaysToDisplay < $workload ? $workload : $nbDaysToDisplay; $allTasksLists[$user->getName()] = $scheduledTaskList; $workloads[$user->getName()] = $workload; } $dayPixSize = 0 != $nbDaysToDisplay ? $graphSize / $nbDaysToDisplay : 0; $dayPixSize = round($dayPixSize); #echo "DEBUG dayPixSize = $dayPixSize<br/>\n"; $this->smartyHelper->assign('planning', $this->getPlanning($nbDaysToDisplay, $dayPixSize, $allTasksLists, $workloads, $this->teamid, $this->session_userid, $isManager)); $this->smartyHelper->assign('colors', array("green" => T_("onTime"), "red" => T_("NOT onTime"), "blue" => T_("no deadLine"), "grey" => T_("monitored"))); $this->smartyHelper->assign('dayPixSize', $dayPixSize - 1); } } } }
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()) { // 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); } } }
/** * Display HTML 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); #$this->smartyHelper->assign('isManager', $isManager); $tmpTeamList = array($this->teamid => $this->teamList[$this->teamid]); $projList = $this->session_user->getProjectList($tmpTeamList, true, false); reset($projList); $projectid = key($projList); $odtTemplate = NULL; $action = Tools::getSecurePOSTStringValue('action', ''); if ('downloadODT' == $action) { $projectid = Tools::getSecurePOSTIntValue('projectid', NULL); $formattedCategories = Tools::getSecurePOSTStringValue('categoryList', NULL); $formattedStatuses = Tools::getSecurePOSTStringValue('statusList', NULL); $formattedReporters = Tools::getSecurePOSTStringValue('reporterList', NULL); $formattedHandlers = Tools::getSecurePOSTStringValue('handlerList', NULL); $odtBasename = Tools::getSecurePOSTStringValue('templateFile', NULL); $odtTemplate = Constants::$codevRootDir . '/odt_templates/' . $odtBasename; } $this->smartyHelper->assign('odtTemplates', $this->getTemplates(NULL, basename($odtTemplate))); $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projList, $projectid)); $selectedCategories = empty($formattedCategories) ? array(0) : explode(',', $formattedCategories); $this->smartyHelper->assign('categories', $this->getProjectCategories($projectid, $selectedCategories)); $selectedStatusList = empty($formattedStatuses) ? array(0) : explode(',', $formattedStatuses); $this->smartyHelper->assign('statuses', $this->getProjectStatusList($projectid, $selectedStatusList)); $selectedReporters = empty($formattedReporters) ? array(0) : explode(',', $formattedReporters); $this->smartyHelper->assign('reporters', $this->getTeamMembers($selectedReporters)); $selectedHandlers = empty($formattedHandlers) ? array(0) : explode(',', $formattedHandlers); $this->smartyHelper->assign('handlers', $this->getTeamMembers($selectedHandlers)); if ('downloadODT' == $action) { $iSel = $this->getIssueSelection($projectid, $formattedCategories, $formattedReporters, $formattedHandlers, $formattedStatuses); #echo implode(',', array_keys($iSel->getIssueList())).'<br>'; $odfFilepath = $this->generateODT($iSel, $projectid, $odtTemplate); $this->smartyHelper->assign('odtFilename', basename($odfFilepath)); } } } }
$originPage = "install_step2.php"; $default_path_mantis = dirname(BASE_PATH) . DIRECTORY_SEPARATOR . "mantis"; // "/var/www/html/mantis"; $hostname = Tools::isWindowsServer() ? php_uname('n') : getHostName(); $default_url_mantis = 'http://' . $hostname . '/mantis'; // 'http://'.$_SERVER['HTTP_HOST'].'/mantis'; // getHostByName(getHostName()) $default_url_codevtt = 'http://' . $hostname . '/codevtt'; // 'http://'.$_SERVER['HTTP_HOST'].'/codevtt'; // getHostByName(getHostName()) $filename_strings = "strings_english.txt"; $filename_custom_strings = "custom_strings_inc.php"; $filename_custom_constants = "custom_constants_inc.php"; $filename_custom_relationships = "custom_relationships_inc.php"; $path_mantis = Tools::getSecurePOSTStringValue('path_mantis', $default_path_mantis); $url_mantis = Tools::getSecurePOSTStringValue('url_mantis', $default_url_mantis); $url_codevtt = Tools::getSecurePOSTStringValue('url_codevtt', $default_url_codevtt); $action = Tools::getSecurePOSTStringValue('action', ''); #displayStepInfo(); #echo "<hr align='left' width='20%'/>\n"; displayForm($originPage, $path_mantis, stripslashes($url_mantis), stripslashes($url_codevtt)); if ("proceedStep2" == $action) { if (!file_exists($path_mantis)) { echo "<span class='error_font'>Path to mantis " . $path_mantis . " doesn't exist</span><br/>"; exit; } if (!is_writable($path_mantis)) { echo "<span class='error_font'>Path to mantis " . $path_mantis . " is NOT writable</span><br/>"; exit; } // ---- load mantis configuration files to extract the information $filename_constant_inc = $path_mantis . DIRECTORY_SEPARATOR . "core" . DIRECTORY_SEPARATOR . "constant_inc.php"; if (file_exists($filename_constant_inc)) {
/** * @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)); }
/** * 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)); }
} elseif ($action == 'getUpdateBacklogData') { // get info to display the updateBacklog dialogbox // (when clicking on the backlog value in WeekTaskDetails) // OR clicking the addTrack button in addTrack form (form1) $bugid = Tools::getSecurePOSTIntValue('bugid'); $job = Tools::getSecurePOSTIntValue('trackJobid', 0); $issue = IssueCache::getInstance()->getIssue($bugid); $project = ProjectCache::getInstance()->getProject($issue->getProjectId()); if ($job == Jobs::JOB_SUPPORT || ($project->isSideTasksProject(array($teamid)) || $project->isExternalTasksProject())) { // no backlog update for this task $data = array('diagnostic' => 'BacklogUpdateNotNeeded'); $updateBacklogJsonData = json_encode($data); } else { $managedUserid = Tools::getSecurePOSTIntValue('userid', 0); $trackDuration = Tools::getSecurePOSTNumberValue('trackDuration', 0); $trackDate = Tools::getSecurePOSTStringValue('trackDate', 0); $updateBacklogJsonData = TimeTrackingTools::getUpdateBacklogJsonData($bugid, $job, $teamid, $managedUserid, $trackDate, $trackDuration); } // return data echo $updateBacklogJsonData; } else { if ($action == 'updateBacklog') { // updateBacklogDoalogbox with 'updateBacklog' action $bugid = Tools::getSecurePOSTIntValue('bugid'); $issue = IssueCache::getInstance()->getIssue($bugid); $formattedBacklog = Tools::getSecurePOSTNumberValue('backlog'); $issue->setBacklog($formattedBacklog); // setStatus $newStatus = Tools::getSecurePOSTNumberValue('statusid'); $issue->setStatus($newStatus); // return data
$data = array('widget' => $widget, 'statusMsg' => 'SUCCESS'); $jsonData = json_encode($data); } catch (Exception $e) { $logger->error("addDashboardPlugin error: " . $e->getMessage()); $logger->error("addDashboardPlugin stacktrace: " . $e->getTraceAsString()); $jsonData = json_encode(array('statusMsg' => T_('ERROR: could not get plugin widget'))); } echo $jsonData; } else { if ($action == 'saveDashboardSettings') { $dashboardId = Tools::getSecurePOSTStringValue('dashboardId'); $userid = $_SESSION['userid']; $teamid = $_SESSION['teamid']; try { // dashboardSettingsJsonStr is a json string containing dashboard & indicator settings. $dashboardSettingsJsonStr = Tools::getSecurePOSTStringValue('dashboardSettingsJsonStr'); $dashboardSettings = json_decode(stripslashes($dashboardSettingsJsonStr), true); //$logger->error("dashboardSettings = " . var_export($dashboardSettings, true)); $dashboard = new Dashboard($dashboardId); $dashboard->saveSettings($dashboardSettings, $teamid, $userid); // TODO // if user is team admin or manager, save also settings for [team] // so that team users will have a default setting for the team. //$dashboard->saveSettings($settings, $teamid); $jsonData = json_encode(array('statusMsg' => 'SUCCESS')); } catch (Exception $e) { $logger->error("saveDashboardSettings error: " . $e->getMessage()); $logger->error("saveDashboardSettings stacktrace: " . $e->getTraceAsString()); $jsonData = json_encode(array('statusMsg' => T_('ERROR: could not save dashboard settings, please contact your administrator'))); } echo $jsonData;
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/>"; }
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); } } } }
$isJob3 = true; $isJob4 = true; $isJob5 = true; } else { $isJob2 = $_POST['cb_job2']; $isJob3 = $_POST['cb_job3']; $isJob4 = $_POST['cb_job4']; $isJob5 = $_POST['cb_job5']; } $task_otherActivity = isset($_POST['task_otherActivity']) ? $_POST['task_otherActivity'] : T_("Other external activity"); $task_leave = isset($_POST['task_leave']) ? $_POST['task_leave'] : T_("Leave"); $task_sickleave = isset($_POST['task_sickleave']) ? $_POST['task_sickleave'] : T_("Sick Leave"); $job2 = Tools::getSecurePOSTStringValue('job2', T_("Analyse")); $job3 = Tools::getSecurePOSTStringValue('job3', T_("Development")); $job4 = Tools::getSecurePOSTStringValue('job4', T_("Tests")); $job5 = Tools::getSecurePOSTStringValue('job5', T_("Documentation")); $job_support = "Support"; $job_sideTasks = "N/A"; $job2_color = isset($_POST['job2_color']) ? $_POST['job2_color'] : "FFCD85"; $job3_color = isset($_POST['job3_color']) ? $_POST['job3_color'] : "C2DFFF"; $job4_color = isset($_POST['job4_color']) ? $_POST['job4_color'] : "92C5FC"; $job5_color = isset($_POST['job5_color']) ? $_POST['job5_color'] : "E0F57A"; $jobSupport_color = isset($_POST['jobSupport_color']) ? $_POST['jobSupport_color'] : "A8FFBD"; $jobNA_color = isset($_POST['jobNA_color']) ? $_POST['jobNA_color'] : "A8FFBD"; $statusList = getStatusList(); $status_new = isset($_POST['status_new']) ? $_POST['status_new'] : 10; $status_feedback = isset($_POST['status_feedback']) ? $_POST['status_feedback'] : 20; $status_open = isset($_POST['status_open']) ? $_POST['status_open'] : 50; $status_closed = isset($_POST['status_closed']) ? $_POST['status_closed'] : 90; $admin_id = isset($_POST['codevttAdmin']) ? $_POST['codevttAdmin'] : 1; $groupExtID = isset($_POST['groupExtID']) ? $_POST['groupExtID'] : 'createExtID';
protected function display() { // Drifted tasks if (Tools::isConnectedUser()) { $isAdmin = $this->session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId)); $isManager = $this->session_user->isTeamManager($this->teamid); // check codevtt version if (1 == Constants::$isCheckLatestVersion) { try { if ($isAdmin || $isManager && date('d') < 4) { $latestVersionInfo = Tools::getLatestVersionInfo(3); if (FALSE !== $latestVersionInfo) { if (Config::codevVersion != $latestVersionInfo['version']) { $this->smartyHelper->assign('latestVersionInfo', $latestVersionInfo); } } } } catch (Exception $e) { // version check should never break CodevTT usage... // (no log, even logs could raise errors) } } // if CodevTT installed since at least 6 month, // then display FairPlay message every 3 month (mar, jun, sep, dec) during 3 days. if (($isManager || $isAdmin) && 0 == date('m') % 3 && date('d') > 27 && time() - Constants::$codevInstall_timestamp > 60 * 60 * 24 * 180) { $this->smartyHelper->assign('displayFairPlay', true); $this->smartyHelper->assign('codevInstall_date', date('Y-m-d', Constants::$codevInstall_timestamp)); } if ($isAdmin) { // check global configuration $cerrList = ConsistencyCheck2::checkMantisDefaultProjectWorkflow(); // add more checks here if (count($cerrList) > 0) { $systemConsistencyErrors = array(); foreach ($cerrList as $cerr) { $systemConsistencyErrors[] = array('severity' => $cerr->getLiteralSeverity(), 'desc' => $cerr->desc); } $this->smartyHelper->assign('systemConsistencyErrors', $systemConsistencyErrors); } } // updateBacklog DialogBox if (isset($_POST['bugid'])) { $bugid = Tools::getSecurePOSTStringValue('bugid'); $backlog = Tools::getSecurePOSTStringValue('backlog', ''); $issue = IssueCache::getInstance()->getIssue($bugid); $issue->setBacklog($backlog); } $driftedTasks = $this->getIssuesInDrift(); if (isset($driftedTasks)) { $this->smartyHelper->assign('driftedTasks', $driftedTasks); } // Consistency errors $consistencyErrors = $this->getConsistencyErrors(); // no specific Mgr errors right now #$consistencyErrorsMgr = $this->getConsistencyErrorsMgr($this->session_user); #$consistencyErrors = array_merge($consistencyErrors, $consistencyErrorsMgr); if (count($consistencyErrors) > 0) { $this->smartyHelper->assign('consistencyErrorsTitle', count($consistencyErrors) . ' ' . T_("Errors in your Tasks")); $this->smartyHelper->assign('consistencyErrors', $consistencyErrors); } } }
protected function display() { if (Tools::isConnectedUser()) { // Admins only $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); if ($session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) { $this->smartyHelper->assign('jobType', Job::$typeNames); $action = Tools::getSecurePOSTStringValue('action', 'none'); if ('addJob' == $action) { $job_name = Tools::getSecurePOSTStringValue('job_name'); $job_type = Tools::getSecurePOSTStringValue('job_type'); $job_color = Tools::getSecurePOSTStringValue('job_color'); // TODO check if not already in table ! // save to DB Jobs::create($job_name, $job_type, $job_color); } elseif ('addAssociationProject' == $action) { // Add Job to selected projects $job_id = Tools::getSecurePOSTIntValue('job_id'); $proj = explode(",", Tools::getSecurePOSTStringValue('formattedProjects')); foreach ($proj as $project_id) { // TODO check if not already in table ! // save to DB $query = "INSERT INTO `codev_project_job_table` (`project_id`, `job_id`) VALUES ('" . $project_id . "','" . $job_id . "');"; $result = SqlWrapper::getInstance()->sql_query($query); if (!$result) { $this->smartyHelper->assign('error', T_("Couldn't add the job association")); } } } elseif ('deleteJob' == $action) { $job_id = Tools::getSecurePOSTIntValue('job_id'); if (Jobs::JOB_NA == $job_id || Jobs::JOB_SUPPORT == $job_id) { $this->smartyHelper->assign('error', T_("This job must not be deleted.")); } else { $query = "DELETE FROM `codev_project_job_table` WHERE job_id = " . $job_id . ';'; $result = SqlWrapper::getInstance()->sql_query($query); if (!$result) { $this->smartyHelper->assign('error', T_("Couldn't remove the job association")); } $query = "DELETE FROM `codev_job_table` WHERE id = {$job_id};"; $result = SqlWrapper::getInstance()->sql_query($query); if (!$result) { $this->smartyHelper->assign('error', T_("Couldn't delete the job")); } } } elseif ('deleteJobProjectAssociation' == $action) { $asso_id = Tools::getSecurePOSTIntValue('asso_id'); $query = "DELETE FROM `codev_project_job_table` WHERE id = " . $asso_id . ';'; $result = SqlWrapper::getInstance()->sql_query($query); if (!$result) { $this->smartyHelper->assign('error', T_("Couldn't remove the job association")); } } $jobs = $this->getJobs(); $this->smartyHelper->assign('jobs', $jobs); //$this->smartyHelper->assign('assignedJobs', $this->getAssignedJobs($jobs)); $this->smartyHelper->assign('assignedJobs', $jobs); $projects = Project::getProjects(); $this->smartyHelper->assign('projects', $projects); $this->smartyHelper->assign('tuples', $this->getAssignedJobTuples($projects)); } } }
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)); } } } }
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 { // if cmdid set in URL, use it. else: // use the commandsetid set in the form, if not defined (first page call) use session commandsetid $cmdid = 0; if (isset($_POST['cmdid'])) { $cmdid = Tools::getSecurePOSTIntValue('cmdid'); $_SESSION['cmdid'] = $cmdid; } else { if (isset($_GET['cmdid'])) { $cmdid = Tools::getSecureGETIntValue('cmdid'); $_SESSION['cmdid'] = $cmdid; } else { if (isset($_SESSION['cmdid'])) { $cmdid = $_SESSION['cmdid']; } } } if (!array_key_exists($this->teamid, $this->teamList)) { $this->teamid = 0; $cmdid = 0; } 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); } } $action = Tools::getSecurePOSTStringValue('action', ''); // --- CmdStateFilters if ('setCmdStateFilters' == $action) { $cmdStateFiltersStr = Tools::getSecurePOSTStringValue('checkedCmdStateFilters'); $this->session_user->setCmdStateFilters($cmdStateFiltersStr, $this->teamid); } else { $cmdStateFiltersStr = $this->session_user->getCmdStateFilters($this->teamid); } if (!empty($cmdStateFiltersStr)) { $cmdStateFilters = Tools::doubleExplode(':', ',', $cmdStateFiltersStr); $this->smartyHelper->assign('isCmdStateFilter', true); } else { $cmdStateFilters = array(); } $cmdStateFilterInfo = array(); foreach (Command::$stateNames as $stateId => $stateName) { $cmdStateFilterInfo[$stateId] = array('stateId' => $stateId, 'stateName' => $stateName, 'isChecked' => array_key_exists($stateId, $cmdStateFilters) ? $cmdStateFilters[$stateId] : 1); } $this->smartyHelper->assign('cmdStateFilterInfo', $cmdStateFilterInfo); // --- commands combobox $commands = $this->getCommands($this->teamid, $cmdid, $cmdStateFilters); $this->smartyHelper->assign('commands', $commands); // check if current cmd should be hidden if (!array_key_exists($cmdid, $commands)) { $cmdid = 0; } // ------ Display Command if (0 != $cmdid) { $cmd = CommandCache::getInstance()->getCommand($cmdid); if ($cmd->getTeamid() == $this->teamid) { $this->smartyHelper->assign('commandid', $cmdid); // get selected filters if (isset($_GET['selectedFilters'])) { $selectedFilters = Tools::getSecureGETStringValue('selectedFilters'); } else { $selectedFilters = $this->session_user->getCommandFilters($cmdid); } // cleanup filters (remove empty lines) $filterList = explode(',', $selectedFilters); $filterList = array_filter($filterList, create_function('$a', 'return $a!="";')); $selectedFilters = implode(',', $filterList); CommandTools::displayCommand($this->smartyHelper, $cmd, $isManager || $isObserver, $selectedFilters); // ConsistencyCheck $consistencyErrors = $this->getConsistencyErrors($cmd); if (count($consistencyErrors) > 0) { $this->smartyHelper->assign('ccheckButtonTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckBoxTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckErrList', $consistencyErrors); } // check if sold days warning should be displayed if (0 != $cmd->getTotalSoldDays()) { $checkTotalSoldDays = $cmd->getTotalSoldDays() - $cmd->getIssueSelection()->mgrEffortEstim - $cmd->getProvisionDays(); $checkTotalSoldDays = round($checkTotalSoldDays, 2); if (0 !== checkTotalSoldDays) { $this->smartyHelper->assign('checkTotalSoldDays', $checkTotalSoldDays); } } // access rights if ($isManager || $this->session_user->isTeamLeader($cmd->getTeamid())) { $this->smartyHelper->assign('isEditGranted', true); } // WBS $this->smartyHelper->assign('wbsRootId', $cmd->getWbsid()); // indicator_plugins (old style plugins - deprecated) $this->smartyHelper->assign('detailedChargesIndicatorFile', DetailedChargesIndicator::getSmartyFilename()); // Dashboard CommandTools::dashboardSettings($this->smartyHelper, $cmd, $this->session_userid); } } else { unset($_SESSION['commandsetid']); unset($_SESSION['servicecontractid']); if ('displayCommand' == $action) { header('Location:command_edit.php?cmdid=0'); } } } } }
GNU General Public License for more details. You should have received a copy of the GNU General Public License along with CodevTT. If not, see <http://www.gnu.org/licenses/>. */ 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($_POST['action']) || isset($_POST['action']))) { if (isset($_POST['action'])) { if ($_POST['action'] == 'saveProvisionChanges') { if (isset($_SESSION['cmdid'])) { $cmdid = $_SESSION['cmdid']; if (0 != $cmdid) { // <provid>:<isInCheckBudget>, $imploded = Tools::getSecurePOSTStringValue("isInCheckBudgetImploded"); $provisions = Tools::doubleExplode(':', ',', $imploded); try { // save Provision changes foreach ($provisions as $provid => $isInCheckBudget) { $prov = new CommandProvision($provid); // securityCheck: does provid belong to this command ? if ($cmdid == $prov->getCommandId()) { $prov->setIsInCheckBudget($isInCheckBudget); } else { // LOG SECURITY ERROR !! Tools::sendBadRequest("Provision {$provid} does not belong to Command {$cmdid} !"); } } } catch (Exception $e) { Tools::sendBadRequest(T_("Provisions updated FAILED !"));