public function execute() { if (Tools::isConnectedUser()) { $teamid = Tools::getSecureGETIntValue('teamid'); $startTimestamp = Tools::getSecureGETStringValue('startT'); $endTimestamp = Tools::getSecureGETStringValue('endT'); $projectIds = Tools::getSecureGETIntValue('projects', 0); if (0 != $projectIds) { $projectIds = explode(':', $projectIds); if (self::$logger->isDebugEnabled()) { self::$logger->debug("team <{$teamid}> projects = <{$projectIds}>"); } } else { if (self::$logger->isDebugEnabled()) { self::$logger->debug("team <{$teamid}> display all projects"); } $projectIds = array(); } /* INFO: the following 1 line are MANDATORY and fix the following error: * “The image <name> cannot be displayed because it contains errors” * Can't call ob_end_clean() if zlib.output_compression is ON */ if (!ini_get('zlib.output_compression')) { ob_end_clean(); } $graph = $this->getGanttGraph($teamid, $startTimestamp, $endTimestamp, $projectIds); // display graph $graph->Stroke(); SqlWrapper::getInstance()->logStats(); } else { Tools::sendForbiddenAccess(); } }
protected function display() { if (Tools::isConnectedUser()) { $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); $mTeamList = $session_user->getDevTeamList(); $lTeamList = $session_user->getLeadedTeamList(); $oTeamList = $session_user->getObservedTeamList(); $managedTeamList = $session_user->getManagedTeamList(); $teamList = $mTeamList + $lTeamList + $oTeamList + $managedTeamList; $defaultTeam = isset($_SESSION['teamid']) ? $_SESSION['teamid'] : 0; $teamid = Tools::getSecureGETIntValue('teamid', $defaultTeam); $_SESSION['teamid'] = $teamid; $this->smartyHelper->assign('teams', SmartyTools::getSmartyArray($teamList, $teamid)); // if current team is not in allowed list, do not display if (array_key_exists($teamid, $teamList)) { $team = TeamCache::getInstance()->getTeam($teamid); $start_year = date("Y", $team->getDate()); $start_month = date("m", $team->getDate()); $start_day = date("d", $team->getDate()); $statusNames = Config::getInstance()->getValue("statusNames"); ksort($statusNames); $this->smartyHelper->assign('statusNames', $statusNames); $periodStatsReport = new PeriodStatsReport($start_year, $start_month, $start_day, $teamid); $periodStatsList = $periodStatsReport->computeReport(); $periods = array(); foreach ($periodStatsList as $date => $ps) { $status = array(); foreach ($statusNames as $s => $sname) { $status[$s] = $ps->getStatusCount($s); } $periods[Tools::formatDate("%B %Y", $date)] = $status; } $this->smartyHelper->assign('periods', $periods); } } }
protected function updateTeamSelector() { if (Tools::isConnectedUser()) { // use the teamid set in the form, if not defined (first page call) use session teamid if (isset($_GET['teamid'])) { $this->teamid = Tools::getSecureGETIntValue('teamid'); $_SESSION['teamid'] = $this->teamid; } else { $this->teamid = isset($_SESSION['teamid']) ? $_SESSION['teamid'] : 0; } $this->smartyHelper->assign('teamid', $this->teamid); $this->session_userid = $_SESSION['userid']; $this->session_user = UserCache::getInstance()->getUser($_SESSION['userid']); $this->teamList = $this->session_user->getTeamList(); if (count($this->teamList) > 0) { $this->smartyHelper->assign('teams', SmartyTools::getSmartyArray($this->teamList, $_SESSION['teamid'])); } $this->session_user->setDefaultTeam($this->teamid); // used to disable some menu items if ($this->session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) { $this->smartyHelper->assign('isAdmin', true); } } }
public function execute() { if (Tools::isConnectedUser()) { header("Content-type: image/png"); $height = Tools::getSecureGETIntValue('height'); $width = Tools::getSecureGETIntValue('width'); $color = Tools::getSecureGETStringValue('color'); $strike = isset($_GET['strike']) ? TRUE : FALSE; // barrer le texte $text = isset($_GET['text']) ? $_GET['text'] : NULL; // image color $img = self::createGradiantImage($width, $height, $color); if ($strike) { self::createStrikeImage($img, $width, $height); } if ($text) { self::createText($img, $width, $height, $text); } imagepng($img); imagedestroy($img); } else { Tools::sendUnauthorizedAccess(); } }
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 { // use the servicecontractid set in the form, if not defined (first page call) use session servicecontractid $servicecontractid = 0; if (isset($_POST['servicecontractid'])) { $servicecontractid = Tools::getSecurePOSTIntValue('servicecontractid'); $_SESSION['servicecontractid'] = $servicecontractid; } else { if (isset($_GET['servicecontractid'])) { $servicecontractid = Tools::getSecureGETIntValue('servicecontractid'); $_SESSION['servicecontractid'] = $servicecontractid; } else { if (isset($_SESSION['servicecontractid'])) { $servicecontractid = $_SESSION['servicecontractid']; } } } // set TeamList (including observed teams) $oTeamList = $this->session_user->getObservedTeamList(); $mTeamList = $this->session_user->getManagedTeamList(); $teamList = $oTeamList + $mTeamList; // array_merge does not work ?! if (empty($teamList) || !array_key_exists($this->teamid, $teamList)) { // only managers (and observers) can access this page. return; } $isManager = $this->session_user->isTeamManager($this->teamid); $isObserver = $this->session_user->isTeamObserver($this->teamid); if ($isManager || $isObserver) { $this->smartyHelper->assign('isManager', true); } $this->smartyHelper->assign('servicecontracts', ServiceContractTools::getServiceContracts($this->teamid, $servicecontractid)); if (0 != $servicecontractid) { $servicecontract = ServiceContractCache::getInstance()->getServiceContract($servicecontractid); if ($this->teamid == $servicecontract->getTeamid()) { $this->smartyHelper->assign('servicecontractid', $servicecontractid); // get selected filters $selectedFilters = ""; if (isset($_GET['selectedFilters'])) { $selectedFilters = Tools::getSecureGETStringValue('selectedFilters'); } else { $selectedFilters = $this->session_user->getServiceContractFilters($servicecontractid); } ServiceContractTools::displayServiceContract($this->smartyHelper, $servicecontract, $isManager || $isObserver, $selectedFilters); // ConsistencyCheck $consistencyErrors = $this->getConsistencyErrors($servicecontract); if (0 != $consistencyErrors) { $this->smartyHelper->assign('ccheckButtonTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckBoxTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckErrList', $consistencyErrors); } // access rights if ($isManager || $this->session_user->isTeamLeader($servicecontract->getTeamid())) { $this->smartyHelper->assign('isEditGranted', true); } // old-style plugins (deprecated) $this->smartyHelper->assign('detailedChargesIndicatorFile', DetailedChargesIndicator::getSmartyFilename()); // Dashboard ServiceContractTools::dashboardSettings($this->smartyHelper, $servicecontract, $this->session_userid); } } else { unset($_SESSION['cmdid']); unset($_SESSION['commandsetid']); $action = filter_input(INPUT_POST, 'action'); if ('displayServiceContract' == $action) { header('Location:servicecontract_edit.php?servicecontractid=0'); } } } } }
CoDev-Timetracking is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with CoDev-Timetracking. 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($_GET['action']) || isset($_POST['action']))) { if (isset($_GET['action'])) { $smartyHelper = new SmartyHelper(); if ($_GET['action'] == 'updateDetailedCharges') { $servicecontractid = Tools::getSecureGETIntValue('selectFiltersSrcId'); $selectedFilters = Tools::getSecureGETStringValue('selectedFilters', ''); $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); $session_user->setServiceContractFilters($selectedFilters, $servicecontractid); $servicecontract = ServiceContractCache::getInstance()->getServiceContract($servicecontractid); $isManager = $session_user->isTeamManager($servicecontract->getTeamid()); $isObserver = $session_user->isTeamObserver($servicecontract->getTeamid()); // DetailedChargesIndicator $data = ServiceContractTools::getDetailedCharges($servicecontract, $isManager || $isObserver, $selectedFilters); foreach ($data as $smartyKey => $smartyVariable) { $smartyHelper->assign($smartyKey, $smartyVariable); } $smartyHelper->display(DetailedChargesIndicator::getSmartySubFilename()); } else { Tools::sendNotFoundAccess(); }
protected function display() { if (Tools::isConnectedUser()) { $user = UserCache::getInstance()->getUser($_SESSION['userid']); $teamid = $_SESSION['teamid']; $teamList = $user->getTeamList(); if (count($teamList) > 0) { // --- define the list of tasks the user can display // All projects from teams where I'm a Developper or Manager AND Observer $allProject[0] = T_('(all)'); $dTeamList = $user->getDevTeamList(); $devProjList = count($dTeamList) > 0 ? $user->getProjectList($dTeamList, true, false) : array(); $managedTeamList = $user->getManagedTeamList(); $managedProjList = count($managedTeamList) > 0 ? $user->getProjectList($managedTeamList, true, false) : array(); $oTeamList = $user->getObservedTeamList(); $observedProjList = count($oTeamList) > 0 ? $user->getProjectList($oTeamList, true, false) : array(); $projList = $allProject + $devProjList + $managedProjList + $observedProjList; // if 'support' is set in the URL, display graphs for 'with/without Support' $displaySupport = filter_input(INPUT_GET, 'support') ? true : false; if ($displaySupport) { $this->smartyHelper->assign('support', $displaySupport); } if (filter_input(INPUT_GET, 'bugid')) { $bug_id = Tools::getSecureGETIntValue('bugid', 0); } else { if (isset($_SESSION['bugid'])) { $bug_id = $_SESSION['bugid']; } else { $bug_id = 0; unset($_SESSION['bugid']); } } $bugs = NULL; $projects = NULL; if ($bug_id != 0) { try { $issue = IssueCache::getInstance()->getIssue($bug_id); $defaultProjectid = $issue->getProjectId(); $bugs = SmartyTools::getBugs($defaultProjectid, $bug_id); if (array_key_exists($defaultProjectid, $projList) && array_key_exists($bug_id, $bugs)) { $consistencyErrors = NULL; $ccheck = new ConsistencyCheck2(array($issue)); $cerrList = $ccheck->check(); if (0 != count($cerrList)) { foreach ($cerrList as $cerr) { $consistencyErrors[] = array('severity' => $cerr->getLiteralSeverity(), 'severityColor' => $cerr->getSeverityColor(), 'desc' => $cerr->desc); } $this->smartyHelper->assign('ccheckButtonTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckBoxTitle', count($consistencyErrors) . ' ' . T_("Errors")); $this->smartyHelper->assign('ccheckErrList', $consistencyErrors); } $this->smartyHelper->assign('isManager', $user->isTeamManager($teamid)); $this->smartyHelper->assign('isObserver', $user->isTeamObserver($teamid)); $isManagerView = array_key_exists($issue->getProjectId(), $managedProjList) ? true : false; $isObserverView = array_key_exists($issue->getProjectId(), $observedProjList) ? true : false; $this->smartyHelper->assign('issueGeneralInfo', IssueInfoTools::getIssueGeneralInfo($issue, $isManagerView || $isObserverView, $displaySupport)); $timeTracks = $issue->getTimeTracks(); $this->smartyHelper->assign('jobDetails', $this->getJobDetails($timeTracks)); $this->smartyHelper->assign('timeDrift', $this->getTimeDrift($issue)); $this->smartyHelper->assign('months', $this->getCalendar($issue, $timeTracks)); // set Commands I belong to $parentCmds = $this->getParentCommands($issue); $this->smartyHelper->assign('parentCommands', $parentCmds); $this->smartyHelper->assign('nbParentCommands', count($parentCmds)); } $projects = SmartyTools::getSmartyArray($projList, $defaultProjectid); $_SESSION['projectid'] = $defaultProjectid; $_SESSION['bugid'] = $bug_id; // Dashboard IssueInfoTools::dashboardSettings($this->smartyHelper, $issue, $this->session_userid, $this->teamid); } catch (Exception $e) { self::$logger->warn("issue {$bug_id} not found in mantis DB !"); unset($_SESSION['bugid']); } } else { try { $defaultProjectid = 0; if (isset($_SESSION['projectid']) && 0 != $_SESSION['projectid']) { $defaultProjectid = $_SESSION['projectid']; $bugs = SmartyTools::getBugs($defaultProjectid, $bug_id); } else { $bugs = SmartyTools::getBugs($defaultProjectid, $bug_id, $projList); } $projects = SmartyTools::getSmartyArray($projList, $defaultProjectid); } catch (Exception $e) { self::$logger->warn("issue {$bug_id} not found in mantis DB !"); unset($_SESSION['bugid']); } } $this->smartyHelper->assign('bugs', $bugs); $this->smartyHelper->assign('projects', $projects); } } }
protected function display() { if (Tools::isConnectedUser()) { $user = UserCache::getInstance()->getUser($_SESSION['userid']); $teamList = $user->getTeamList(); if (0 != count($teamList)) { // ---- select project // define the list of tasks the user can display // All projects from teams where I'm a Developper or Manager AND Observers $dTeamList = $user->getDevTeamList(); $devProjList = 0 == count($dTeamList) ? array() : $user->getProjectList($dTeamList); $managedTeamList = $user->getManagedTeamList(); $managedProjList = 0 == count($managedTeamList) ? array() : $user->getProjectList($managedTeamList); $oTeamList = $user->getObservedTeamList(); $observedProjList = 0 == count($oTeamList) ? array() : $user->getProjectList($oTeamList); $projList = $devProjList + $managedProjList + $observedProjList; if (isset($_GET['projectid'])) { $projectid = Tools::getSecureGETIntValue('projectid'); $_SESSION['projectid'] = $projectid; } else { if (isset($_SESSION['projectid'])) { $projectid = $_SESSION['projectid']; } else { $projectsid = array_keys($projList); $projectid = $projectsid[0]; } } // get selected filters if (isset($_GET['selectedFilters']) && NULL != $_GET['selectedFilters']) { $selectedFilters = Tools::getSecureGETStringValue('selectedFilters'); #echo "last = ".$selectedFilters[strlen($selectedFilters)-1]; if (',' == $selectedFilters[strlen($selectedFilters) - 1]) { $selectedFilters = substr($selectedFilters, 0, -1); // last char is a ',' } $filterList = explode(',', $selectedFilters); } else { $selectedFilters = ""; $filterList = array(); } $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projList, $projectid)); $project = ProjectCache::getInstance()->getProject($projectid); // ---- $availFilterList = array("ProjectVersionFilter" => "Project Version", "ProjectCategoryFilter" => "Project Category", "IssueExtIdFilter" => "Issue External ID", "IssuePublicPrivateFilter" => "Issue Public / Private", "IssueTagFilter" => "Issue Tags"); $selectedFilterList = array(); foreach ($filterList as $id) { $selectedFilterList[$id] = $availFilterList[$id]; unset($availFilterList[$id]); } // do the work ... $projectIssueSel = $project->getIssueSelection(); $filterMgr = new FilterManager($projectIssueSel, $filterList); $resultList = $filterMgr->execute(); $issueSelList = $filterMgr->explodeResults($resultList); $smatyObj = $this->getDetailedMgr($issueSelList, $filterList); $totalLine = array_shift($smatyObj); // first line is rootElem (TOTAL) $titleLine = array_pop($smatyObj); // last line is the table titles $this->smartyHelper->assign('availFilterList', $availFilterList); $this->smartyHelper->assign('selectedFilterList', $selectedFilterList); $this->smartyHelper->assign('selectedFilters', $selectedFilters); $this->smartyHelper->assign('nbFilters', count($filterList)); $this->smartyHelper->assign('filterResultsTitles', $titleLine); $this->smartyHelper->assign('filterResults', $smatyObj); $this->smartyHelper->assign('filterResultsTotal', $totalLine); } } }
CoDev-Timetracking is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with CoDev-Timetracking. 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($_GET['action']) || isset($_POST['action']))) { if (isset($_GET['action'])) { $smartyHelper = new SmartyHelper(); if ($_GET['action'] == 'updateDetailedCharges') { $cmdsetid = Tools::getSecureGETIntValue('selectFiltersSrcId'); $selectedFilters = Tools::getSecureGETStringValue('selectedFilters', ''); $session_user = UserCache::getInstance()->getUser($_SESSION['userid']); $session_user->setCommandSetFilters($selectedFilters, $cmdsetid); $cmdSet = CommandSetCache::getInstance()->getCommandSet($cmdsetid); $isManager = $session_user->isTeamManager($cmdSet->getTeamid()); $isObserver = $session_user->isTeamObserver($cmdSet->getTeamid()); // DetailedChargesIndicator $data = CommandSetTools::getDetailedCharges($cmdSet, $isManager || $isObserver, $selectedFilters); foreach ($data as $smartyKey => $smartyVariable) { $smartyHelper->assign($smartyKey, $smartyVariable); } $smartyHelper->display(DetailedChargesIndicator::getSmartySubFilename()); } else { Tools::sendNotFoundAccess(); }
if (!array_key_exists($cmd->getId(), $issueCmds) && $cmd->getState() < Command::state_closed) { $cmdList[$cmd->getId()] = $cmd->getName(); } } $jsonData = json_encode(array('statusMsg' => 'SUCCESS', 'cmdCandidates' => $cmdList)); } } // return ajax data echo $jsonData; } catch (Exception $e) { Tools::sendBadRequest("Error: getCmdCandidates bad values: user={$userid} issue={$bugid} cmd={$cmdid}"); } } else { if ('addToCmd' === $action) { $cmdid = Tools::getSecureGETIntValue('cmdid'); $bugid = Tools::getSecureGETIntValue('bugid'); $userid = $_SESSION['userid']; $teamid = $_SESSION['teamid']; try { // cmd,user,issue must exist // user must be manager // cmd must be in team's cmds // issue must be in team's projects $user = UserCache::getInstance()->getUser($userid); $cmd = CommandCache::getInstance()->getCommand($cmdid); $issue = IssueCache::getInstance()->getIssue($bugid); $team = TeamCache::getInstance()->getTeam($teamid); $prjList = $team->getProjects(); if (!$user->isTeamManager($teamid)) { $logger->error("addToCmd: NOT_MANAGER user={$userid} issue={$bugid} cmd={$cmdid}"); $jsonData = json_encode(array('statusMsg' => T_('Sorry, only managers can add tasks to commands')));
$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; // set JS libraries that must be load
protected function display() { if (Tools::isConnectedUser()) { if (0 == $this->teamid || $this->session_user->isTeamCustomer($this->teamid)) { $this->smartyHelper->assign('isEditGranted', FALSE); } else { // only managers can edit the SC $isManager = $this->session_user->isTeamManager($this->teamid); if (!$isManager) { return; } $this->smartyHelper->assign('isEditGranted', true); // use the servicecontractid set in the form, if not defined (first page call) use session servicecontractid $servicecontractid = 0; if (isset($_POST['servicecontractid'])) { $servicecontractid = Tools::getSecurePOSTIntValue('servicecontractid'); $_SESSION['servicecontractid'] = $servicecontractid; } else { if (isset($_GET['servicecontractid'])) { $servicecontractid = Tools::getSecureGETIntValue('servicecontractid'); $_SESSION['servicecontractid'] = $servicecontractid; } else { if (isset($_SESSION['servicecontractid'])) { $servicecontractid = $_SESSION['servicecontractid']; } } } $action = filter_input(INPUT_POST, 'action'); if (0 == $servicecontractid) { // CREATE service contract if ("createContract" == $action) { if (self::$logger->isDebugEnabled()) { self::$logger->debug("create new ServiceContract for team {$this->teamid}<br>"); } $contractName = Tools::getSecurePOSTStringValue('servicecontractName'); try { $servicecontractid = ServiceContract::create($contractName, $this->teamid); $contract = ServiceContractCache::getInstance()->getServiceContract($servicecontractid); } catch (Exception $e) { // Smartify echo "Can't create the ServiceContract because the ServiceContract name is already used"; } } // Display Empty Command Form // Note: this will be overridden by the 'update' section if the 'createCommandset' action has been called. $this->smartyHelper->assign('contractInfoFormBtText', T_('Create')); $this->smartyHelper->assign('contractInfoFormAction', 'createContract'); // Note: StateList is empty, uncomment following lines if ServiceContract::$stateNames is used //$this->smartyHelper->assign('servicecontractStateList', ServiceContractTools::getServiceContractStateList($contract)); } // Edited or created just before if (0 != $servicecontractid) { // UPDATE CMDSET $contract = ServiceContractCache::getInstance()->getServiceContract($servicecontractid); // Actions if ("addCommandSet" == $action) { # TODO $commandsetid = Tools::getSecurePOSTIntValue('commandsetid'); if (0 == $commandsetid) { #$_SESSION['commandsetid'] = 0; header('Location:command_edit.php?commandsetid=0'); } else { $contract->addCommandSet($commandsetid, CommandSet::type_general); } } else { if ("removeCmdSet" == $action) { $commandsetid = Tools::getSecurePOSTIntValue('commandsetid'); $contract->removeCommandSet($commandsetid); } else { if ("updateContractInfo" == $action) { $this->updateServiceContractInfo($contract); header('Location:servicecontract_info.php'); } else { if ("addProject" == $action) { # TODO $projectid = Tools::getSecurePOSTIntValue('projectid'); if (0 != $projectid) { $contract->addSidetaskProject($projectid, Project::type_sideTaskProject); } } else { if ("removeProject" == $action) { $projectid = Tools::getSecurePOSTIntValue('projectid'); $contract->removeSidetaskProject($projectid); } else { if ("deleteContract" == $action) { if (self::$logger->isDebugEnabled()) { self::$logger->debug("delete ServiceContract servicecontractid (" . $contract->getName() . ")"); } ServiceContract::delete($servicecontractid); unset($_SESSION['servicecontractid']); header('Location:servicecontract_info.php'); } } } } } } // Display ServiceContract $this->smartyHelper->assign('servicecontractid', $servicecontractid); $this->smartyHelper->assign('contractInfoFormBtText', T_('Save')); $this->smartyHelper->assign('contractInfoFormAction', 'updateContractInfo'); $commandsetCandidates = $this->getCmdSetCandidates($contract, $this->session_user); $this->smartyHelper->assign('commandsetCandidates', $commandsetCandidates); $projectCandidates = $this->getProjectCandidates($contract); $this->smartyHelper->assign('projectCandidates', $projectCandidates); $projects = $this->getProjects($contract); $this->smartyHelper->assign('projectList', $projects); $isManager = $this->session_user->isTeamManager($contract->getTeamid()); ServiceContractTools::displayServiceContract($this->smartyHelper, $contract, $isManager); } // you can create OR move SC only to managed teams $mTeamList = $this->session_user->getManagedTeamList(); $this->smartyHelper->assign('grantedTeams', SmartyTools::getSmartyArray($mTeamList, $this->teamid)); } } }
// if none defined, get all mantis statuses $statusNames = Constants::$statusNames; ksort($statusNames); } } $statusList[Constants::$status_new] = array('id' => Constants::$status_new, 'name' => Constants::$statusNames[Constants::$status_new], 'selected' => false); foreach ($statusNames as $id => $name) { if (Constants::$status_new != $id) { $statusList[] = array('id' => $id, 'name' => $name, 'selected' => false); } } return $statusList; } // ----------- MAIN ------------ if (Tools::isConnectedUser() && isset($_GET['action'])) { if (isset($_GET['action'])) { $smartyHelper = new SmartyHelper(); if ($_GET['action'] == 'updateProject') { $projectid = Tools::getSecureGETIntValue('projectid'); $categories = getProjectCategories($projectid); $statusList = getProjectStatusList($projectid); $response = array('categoryList' => $categories, 'statusList' => $statusList); $jsonResponse = Tools::array2json($response); echo "{$jsonResponse}"; } else { Tools::sendNotFoundAccess(); } } } else { Tools::sendUnauthorizedAccess(); }
$allProject[0] = T_('(all)'); $dTeamList = $user->getDevTeamList(); $devProjList = count($dTeamList) > 0 ? $user->getProjectList($dTeamList, true, $withDisabled) : array(); $managedTeamList = $user->getManagedTeamList(); $managedProjList = count($managedTeamList) > 0 ? $user->getProjectList($managedTeamList, true, $withDisabled) : array(); $oTeamList = $user->getObservedTeamList(); $observedProjList = count($oTeamList) > 0 ? $user->getProjectList($oTeamList, true, $withDisabled) : array(); $projList = $allProject + $devProjList + $managedProjList + $observedProjList; // WORKAROUND if ($_GET['bugid'] == 'null') { $_GET['bugid'] = 0; } $smartyHelper->assign('bugs', SmartyTools::getBugs(Tools::getSecureGETIntValue('projectid'), Tools::getSecureGETIntValue('bugid', 0), $projList)); $smartyHelper->display('form/bugSelector'); } elseif ($_GET['action'] == 'getYearsToNow') { $team = TeamCache::getInstance()->getTeam(Tools::getSecureGETIntValue('teamid')); $min_year = date("Y", $team->getDate()); $year = isset($_POST['year']) && $_POST['year'] > $min_year ? $_POST['year'] : $min_year; $smartyHelper->assign('years', SmartyTools::getYearsToNow($min_year, $year)); $smartyHelper->display('form/yearSelector'); } else { Tools::sendNotFoundAccess(); } } else { if ($_POST['action']) { if ($_POST['action'] == 'updateBacklogAction') { $issue = IssueCache::getInstance()->getIssue(Tools::getSecurePOSTIntValue('bugid')); $issue->setBacklog(Tools::getSecurePOSTNumberValue('backlog')); } else { Tools::sendNotFoundAccess(); }
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'); } } } } }
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 { $tmpTeamList = array($this->teamid => $this->teamList[$this->teamid]); $projList = $this->session_user->getProjectList($tmpTeamList, true, false); if (isset($_GET['projectid'])) { $projectid = Tools::getSecureGETIntValue('projectid'); $_SESSION['projectid'] = $projectid; } else { if (isset($_SESSION['projectid'])) { $projectid = $_SESSION['projectid']; } else { $projectsid = array_keys($projList); $projectid = $projectsid[0]; } } $this->smartyHelper->assign('projects', SmartyTools::getSmartyArray($projList, $projectid)); // if display project allowed if (in_array($projectid, array_keys($projList))) { $this->smartyHelper->assign('projectid', $projectid); // Managers can see detailed view $isManager = $this->session_user->isTeamManager($this->teamid); $isObserver = $this->session_user->isTeamObserver($this->teamid); $this->smartyHelper->assign("isManager", $isManager || $isObserver); $project = ProjectCache::getInstance()->getProject($projectid); $projectIssueSel = $project->getIssueSelection(); // --- FILTER TABS ------------- // get selected filters if (isset($_GET['selectedFilters'])) { $selectedFilters = Tools::getSecureGETStringValue('selectedFilters'); } else { $selectedFilters = $this->session_user->getProjectFilters($projectid); } // cleanup filters (remove empty lines) $filterList = explode(',', $selectedFilters); $filterList = array_filter($filterList, create_function('$a', 'return $a!="";')); $selectedFilters = implode(',', $filterList); // save user preferances $this->session_user->setProjectFilters($selectedFilters, $projectid); // TODO: get allFilters from config.ini $data = ProjectInfoTools::getDetailedCharges($projectid, $isManager || $isObserver, $selectedFilters); foreach ($data as $smartyKey => $smartyVariable) { $this->smartyHelper->assign($smartyKey, $smartyVariable); } // --- DRIFT TABS ------------------- $currentIssuesInDrift = NULL; $resolvedIssuesInDrift = NULL; foreach ($projectIssueSel->getIssuesInDrift($isManager || $isObserver) as $issue) { $smartyIssue = $this->getSmartyDirftedIssue($issue, $isManager || $isObserver); if (NULL != $smartyIssue) { if ($issue->isResolved()) { $resolvedIssuesInDrift[] = $smartyIssue; } else { $currentIssuesInDrift[] = $smartyIssue; } } } $this->smartyHelper->assign("currentIssuesInDrift", $currentIssuesInDrift); $this->smartyHelper->assign("resolvedIssuesInDrift", $resolvedIssuesInDrift); // indicator_plugins (old style plugins - deprecated) $this->smartyHelper->assign('detailedChargesIndicatorFile', DetailedChargesIndicator::getSmartyFilename()); // Dashboard ProjectInfoTools::dashboardSettings($this->smartyHelper, $project, $this->session_userid, $this->teamid); } } } }