From dfe783e13932b2300cfa062c9433a25f9b63fdbb Mon Sep 17 00:00:00 2001 From: Philippe GODOT Date: Wed, 16 Sep 2020 15:44:52 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20en=20place=20calcul=20dur=C3=A9e=20total?= =?UTF-8?q?=20et=20dur=C3=A9e=20priv=C3=A9e=20=C3=A0=20partir=20du=20champ?= =?UTF-8?q?=20actiontime=20de=20la=20table=20ticketstasks=20plut=C3=B4t=20?= =?UTF-8?q?que=20celui=20de=20la=20table=20tickets.=20Prise=20en=20compte?= =?UTF-8?q?=20de=20la=20permission=20voir=20les=20t=C3=A2ches=20priv=C3=A9?= =?UTF-8?q?es=20dans=20ce=20calcul=20ainsi=20que=20du=20param=C3=A8tre=20o?= =?UTF-8?q?nlypublicTasks=20du=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #42 @2h --- ajax/get_tickets_actiontime.php | 58 +++++++++++++++++++++++++-------- inc/ticket.class.php | 14 +++++--- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/ajax/get_tickets_actiontime.php b/ajax/get_tickets_actiontime.php index e17c167..e2e3e24 100644 --- a/ajax/get_tickets_actiontime.php +++ b/ajax/get_tickets_actiontime.php @@ -7,25 +7,57 @@ Session::checkLoginUser(); -if ($_SERVER['REQUEST_METHOD'] == 'POST' - && !empty($_POST['ticket_ids']) - && is_array($_POST['ticket_ids']) +if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['ticket_ids']) && is_array($_POST['ticket_ids']) ) { - $ticket = new Ticket(); - - $tickets = $ticket->find([ 'id' => $_POST['ticket_ids'] ]); + $onlypublicTasks = PluginProjectbridgeConfig::getConfValueByName('CountOnlyPublicTasks'); $tickets_actiontime = []; - foreach ($tickets as $ticket_data) { - $actiontime = (int) $ticket_data['actiontime']; + foreach ($_POST['ticket_ids'] as $ticketID) { + $whereConditionsArray = []; + $totalActiontime = 0; + $whereConditionsArray = ['tickets_id' => $ticketID]; + //if ($onlypublicTasks) { + if ( !Session::haveRight("task", CommonITILTask::SEEPRIVATE) || $onlypublicTasks) { + $whereConditionsArray['is_private'] = 0; + } + + $iterator = $DB->request([ + 'SELECT' => new QueryExpression('SUM(' . TicketTask::getTable() . '.actiontime) AS duration'), + 'FROM' => TicketTask::getTable(), + 'WHERE' => $whereConditionsArray + ]); + if ($row = $iterator->next()) { + $totalActiontime = (int) $row['duration']; + } + if (!empty($totalActiontime)) { + $totalActiontime = round($totalActiontime / 3600 * 100, 1) / 100; + } + + $tickets_actiontime[$ticketID]['totalDuration'] = $totalActiontime; + + // récupération durée privée + $privateActiontime = 0; + if (Session::haveRight("task", CommonITILTask::SEEPRIVATE) && !$onlypublicTasks) { + $whereConditionsArray['is_private'] = 1; + $iterator = $DB->request([ + 'SELECT' => new QueryExpression('SUM(' . TicketTask::getTable() . '.actiontime) AS duration'), + 'FROM' => TicketTask::getTable(), + 'WHERE' => $whereConditionsArray + ]); + if ($row = $iterator->next()) { + $privateActiontime = (int) $row['duration']; + } + if (!empty($privateActiontime)) { + $privateActiontime = round($privateActiontime / 3600 * 100, 1) / 100; + } + } + + $tickets_actiontime[$ticketID]['privateDuration'] = $privateActiontime; + } + - if (!empty($actiontime)) { - $actiontime = round($actiontime / 3600 * 100) / 100; - } - $tickets_actiontime[$ticket_data['id']] = $actiontime; - } echo json_encode($tickets_actiontime); } diff --git a/inc/ticket.class.php b/inc/ticket.class.php index bbfd06d..9844342 100644 --- a/inc/ticket.class.php +++ b/inc/ticket.class.php @@ -186,10 +186,11 @@ private static function _getProjectList() { */ public static function postShowTask(ProjectTask $project_task) { global $CFG_GLPI; + $onlypublicTasks = PluginProjectbridgeConfig::getConfValueByName('CountOnlyPublicTasks'); $get_tickets_actiontime_url = PLUGIN_PROJECTBRIDGE_WEB_DIR . '/ajax/get_tickets_actiontime.php'; $js_block = ' - debugger; + //debugger; var current_table_cell, table_parent, @@ -243,12 +244,17 @@ public static function postShowTask(ProjectTask $project_task) { current_table_cell = $("td.left:nth-child(2)", current_row); current_ticket_id = getTicketIdFromCell(current_table_cell); current_action_time = 0; + private_action_time = 0; if (tickets_actiontime[current_ticket_id] !== undefined) { - current_action_time = tickets_actiontime[current_ticket_id]; + current_action_time = tickets_actiontime[current_ticket_id]["totalDuration"]; + private_action_time = tickets_actiontime[current_ticket_id]["privateDuration"]; + } + if(private_action_time > 0) { + current_row.append("" + current_action_time + " heure(s) dont " + private_action_time + " heures privées"); + }else { + current_row.append("" + current_action_time + " heure(s) "); } - - current_row.append("" + current_action_time + " heure(s)"); } else if (idx == 0) { current_table_cell = $("th", current_row); current_table_cell.attr("colspan", parseInt(current_table_cell.attr("colspan")) + 1);