diff --git a/main/inc/lib/TicketManager.php b/main/inc/lib/TicketManager.php index c839670b8ce..879544a3d35 100644 --- a/main/inc/lib/TicketManager.php +++ b/main/inc/lib/TicketManager.php @@ -801,7 +801,7 @@ public static function getTicketsByCurrentUser( if (empty($userInfo)) { return []; } - $isAdmin = UserManager::is_admin($userId); + $isAdmin = UserManager::is_admin($userId) || (api_get_configuration_value('allow_session_admin_manage_tickets_and_export_ticket_report') && api_is_session_admin($userId)); if (!isset($_GET['project_id'])) { return []; @@ -893,6 +893,7 @@ public static function getTicketsByCurrentUser( 'keyword_source' => 'ticket.source ', 'keyword_status' => 'ticket.status_id', 'keyword_priority' => 'ticket.priority_id', + 'keyword_created_by' => 'ticket.sys_insert_user_id', ]; foreach ($keywords as $keyword => $label) { @@ -1079,6 +1080,7 @@ public static function getTotalTicketsCurrentUser() 'keyword_source' => 'ticket.source', 'keyword_status' => 'ticket.status_id', 'keyword_priority' => 'ticket.priority_id', + 'keyword_created_by' => 'ticket.sys_insert_user_id', ]; foreach ($keywords as $keyword => $sqlLabel) { diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index d82a3da6d3e..40e5123c4f0 100644 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -729,6 +729,11 @@ // ALTER TABLE ticket_ticket ADD CONSTRAINT FK_EB5B2A0D6285C231 FOREIGN KEY (lp_id) REFERENCES c_lp (iid); // $_configuration['ticket_lp_quiz_info_add'] = false; +// Allow session admins to manage tickets settings and report like global admins +//$_configuration['allow_session_admin_manage_tickets_and_export_ticket_report'] = false; +// Show ticket created by the user insted of ticket assigned to the user on MyTicket page. +//$_configuration['ticket_show_ticket_created_by_user_on_my_ticket_page'] = false; + // Exercises configuration settings // Send only quiz answer notifications to course coaches and not general coach //$_configuration['block_quiz_mail_notification_general_coach'] = false; diff --git a/main/ticket/new_ticket.php b/main/ticket/new_ticket.php index 79555d3b3f5..132c1dc4ec1 100644 --- a/main/ticket/new_ticket.php +++ b/main/ticket/new_ticket.php @@ -373,7 +373,7 @@ function save_ticket() ] ); -if (api_is_platform_admin()) { +if (api_is_platform_admin() || (api_get_configuration_value('allow_session_admin_manage_tickets_and_export_ticket_report') && api_is_session_admin())) { $form->addSelectAjax( 'user_id', get_lang('Assign'), diff --git a/main/ticket/tickets.php b/main/ticket/tickets.php index 56c9a8845d8..c797d1fcca0 100644 --- a/main/ticket/tickets.php +++ b/main/ticket/tickets.php @@ -81,13 +81,13 @@ function display_advanced_search_form () { $data = [ [ '#', + get_lang('Status'), get_lang('Date'), get_lang('LastUpdate'), get_lang('Category'), - get_lang('User'), - get_lang('Program'), + get_lang('CreatedBy'), get_lang('AssignedTo'), - get_lang('Status'), + get_lang('Message'), get_lang('Description'), ], ]; @@ -128,7 +128,8 @@ function display_advanced_search_form () { $currentUrl = api_get_self().'?project_id='.$projectId; $user_id = api_get_user_id(); $isAllow = TicketManager::userIsAllowInProject(api_get_user_info(), $projectId); -$isAdmin = api_is_platform_admin(); +$allowSessionAdmin = api_get_configuration_value('allow_session_admin_manage_tickets_and_export_ticket_report') && api_is_session_admin(); +$isAdmin = api_is_platform_admin() || $allowSessionAdmin; $actionRight = ''; Display::display_header(get_lang('MyTickets')); @@ -145,6 +146,7 @@ function display_advanced_search_form () { 'keyword_unread', 'Tickets_per_page', 'Tickets_column', + 'keyword_created_by', ]; } $get_parameter = ''; @@ -190,6 +192,18 @@ function display_advanced_search_form () { foreach ($admins as $admin) { $selectAdmins[$admin['user_id']] = $admin['complete_name_with_username']; } + + $Createdby = UserManager::getUserListLike( + [], + ['username'], + true + ); + $selectcreated = [ + 0 => get_lang('Unassigned'), + ]; + foreach ($Createdby as $creator) { + $selectcreated[$creator['user_id']] = $creator['complete_name_with_username']; + } $status = TicketManager::get_all_tickets_status(); $selectStatus = []; foreach ($status as $stat) { @@ -227,7 +241,7 @@ function display_advanced_search_form () { ); // Add link - if (api_get_setting('ticket_allow_student_add') == 'true' || api_is_platform_admin()) { + if (api_get_setting('ticket_allow_student_add') == 'true' || api_is_platform_admin() || $allowSessionAdmin) { $extraParams = ''; if (isset($_GET['exerciseId']) && !empty($_GET['exerciseId'])) { @@ -250,7 +264,7 @@ function display_advanced_search_form () { ); } - if (api_is_platform_admin()) { + if (api_is_platform_admin() || $allowSessionAdmin) { $actionRight .= Display::url( Display::return_icon( 'export_excel.png', @@ -261,7 +275,9 @@ function display_advanced_search_form () { api_get_self().'?action=export'.$get_parameter.$get_parameter2.'&project_id='.$projectId, ['title' => get_lang('Export')] ); + } + if (api_is_platform_admin()) { $actionRight .= Display::url( Display::return_icon( 'settings.png', @@ -286,11 +302,16 @@ function display_advanced_search_form () { $ticketLabel = get_lang('AllTickets'); $url = api_get_path(WEB_CODE_PATH).'ticket/tickets.php?project_id='.$projectId; - if (!isset($_GET['keyword_assigned_to'])) { + if (!isset($_GET['keyword_assigned_to']) && !api_get_configuration_value('ticket_show_ticket_created_by_user_on_my_ticket_page')) { $ticketLabel = get_lang('MyTickets'); $url = api_get_path(WEB_CODE_PATH).'ticket/tickets.php?project_id='.$projectId.'&keyword_assigned_to='.api_get_user_id(); } + if (api_get_configuration_value('ticket_show_ticket_created_by_user_on_my_ticket_page') && !isset($_GET['keyword_created_by'])) { + $ticketLabel = get_lang('MyTickets'); + $url = api_get_path(WEB_CODE_PATH).'ticket/tickets.php?project_id='.$projectId.'&keyword_created_by='.api_get_user_id(); + } + $options = ''; $iconProject = Display::return_icon( 'project.png', @@ -342,6 +363,12 @@ function display_advanced_search_form () { ); $advancedSearchForm->addDateTimePicker('keyword_start_date_start', get_lang('Created')); $advancedSearchForm->addDateTimePicker('keyword_start_date_end', get_lang('Until')); + $advancedSearchForm->addSelect( + 'keyword_created_by', + get_lang('CreatedBy'), + $selectcreated, + ['placeholder' => get_lang('All')] + ); $advancedSearchForm->addSelect( 'keyword_assigned_to', get_lang('AssignedTo'), @@ -391,7 +418,8 @@ function display_advanced_search_form () { $table->set_header(1, get_lang('Status'), false); $table->set_header(2, get_lang('Date'), true); $table->set_header(3, get_lang('LastUpdate'), true); - $table->set_header(4, get_lang('Category')); + $table->set_header(4, get_lang('Category'), true); + $table->set_header(5, get_lang('CreatedBy'), true); } $table->display();