| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.houseland.info/application/controllers/admin/ |
Upload File : |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* @property Tickets_model $tickets_model
*/
class Tickets extends AdminController
{
public function __construct()
{
parent::__construct();
if (get_option('access_tickets_to_none_staff_members') == 0 && !is_staff_member()) {
redirect(admin_url());
}
$this->load->model('tickets_model');
}
public function index($status = '', $userid = '')
{
close_setup_menu();
if (!is_numeric($status)) {
$status = '';
}
$data['table'] = App_table::find('tickets');
if ($this->input->is_ajax_request()) {
if (!$this->input->post('via_ticket')) {
$tableParams = [
'status' => $status,
'userid' => $userid,
];
} else {
// request for othes tickets when single ticket is opened
$tableParams = [
'userid' => $this->input->post('via_ticket_userid'),
'via_ticket' => $this->input->post('via_ticket'),
];
if ($tableParams['userid'] == 0) {
unset($tableParams['userid']);
$tableParams['by_email'] = $this->input->post('via_ticket_email');
}
}
$data['table']->output($tableParams);
}
$data['chosen_ticket_status'] = $status;
$data['weekly_tickets_opening_statistics'] = json_encode($this->tickets_model->get_weekly_tickets_opening_statistics());
$data['title'] = _l('support_tickets');
$this->load->model('departments_model');
$data['statuses'] = $this->tickets_model->get_ticket_status();
$data['staff_deparments_ids'] = $this->departments_model->get_staff_departments(get_staff_user_id(), true);
$data['departments'] = $this->departments_model->get();
$data['priorities'] = $this->tickets_model->get_priority();
$data['services'] = $this->tickets_model->get_service();
$data['ticket_assignees'] = $this->tickets_model->get_tickets_assignes_disctinct();
$data['bodyclass'] = 'tickets-page';
add_admin_tickets_js_assets();
$data['default_tickets_list_statuses'] = hooks()->apply_filters('default_tickets_list_statuses', [1, 2, 4]);
$this->load->view('admin/tickets/list', $data);
}
public function add($userid = false)
{
if ($this->input->post()) {
$data = $this->input->post();
$data['message'] = html_purify($this->input->post('message', false));
$id = $this->tickets_model->add($data, get_staff_user_id());
if ($id) {
set_alert('success', _l('new_ticket_added_successfully', $id));
redirect(admin_url('tickets/ticket/' . $id));
}
}
if ($userid !== false) {
$data['userid'] = $userid;
$data['client'] = $this->clients_model->get($userid);
}
// Load necessary models
$this->load->model('knowledge_base_model');
$this->load->model('departments_model');
$data['departments'] = $this->departments_model->get();
$data['predefined_replies'] = $this->tickets_model->get_predefined_reply();
$data['priorities'] = $this->tickets_model->get_priority();
$data['services'] = $this->tickets_model->get_service();
$whereStaff = [];
if (get_option('access_tickets_to_none_staff_members') == 0) {
$whereStaff['is_not_staff'] = 0;
}
$data['staff'] = $this->staff_model->get('', $whereStaff);
$data['articles'] = $this->knowledge_base_model->get();
$data['bodyclass'] = 'ticket';
$data['title'] = _l('new_ticket');
if ($this->input->get('project_id') && $this->input->get('project_id') > 0) {
// request from project area to create new ticket
$data['project_id'] = $this->input->get('project_id');
$data['userid'] = get_client_id_by_project_id($data['project_id']);
if (total_rows(db_prefix() . 'contacts', ['active' => 1, 'userid' => $data['userid']]) == 1) {
$contact = $this->clients_model->get_contacts($data['userid']);
if (isset($contact[0])) {
$data['contact'] = $contact[0];
}
}
} elseif ($this->input->get('contact_id') && $this->input->get('contact_id') > 0 && $this->input->get('userid')) {
$contact_id = $this->input->get('contact_id');
if (total_rows(db_prefix() . 'contacts', ['active' => 1, 'id' => $contact_id]) == 1) {
$contact = $this->clients_model->get_contact($contact_id);
if ($contact) {
$data['contact'] = (array) $contact;
}
}
}
add_admin_tickets_js_assets();
$this->load->view('admin/tickets/add', $data);
}
public function delete($ticketid)
{
if (!$ticketid) {
redirect(admin_url('tickets'));
}
if (!can_staff_delete_ticket()) {
access_denied('delete ticket');
}
$response = $this->tickets_model->delete($ticketid);
if ($response == true) {
set_alert('success', _l('deleted', _l('ticket')));
} else {
set_alert('warning', _l('problem_deleting', _l('ticket_lowercase')));
}
// ensure if deleted from single ticket page, user is redirected to index
if (str_contains(previous_url(), 'ticket/' . $ticketid)) {
redirect(admin_url('tickets'));
return;
}
redirect(previous_url() ?: $_SERVER['HTTP_REFERER']);
}
public function delete_attachment($id)
{
if (is_admin() || (!is_admin() && get_option('allow_non_admin_staff_to_delete_ticket_attachments') == '1')) {
if (get_option('staff_access_only_assigned_departments') == 1 && !is_admin()) {
$attachment = $this->tickets_model->get_ticket_attachment($id);
$ticket = $this->tickets_model->get_ticket_by_id($attachment->ticketid);
$this->load->model('departments_model');
$staff_departments = $this->departments_model->get_staff_departments(get_staff_user_id(), true);
if (!in_array($ticket->department, $staff_departments)) {
set_alert('danger', _l('ticket_access_by_department_denied'));
redirect(admin_url('access_denied'));
}
}
$this->tickets_model->delete_ticket_attachment($id);
}
redirect(previous_url() ?: $_SERVER['HTTP_REFERER']);
}
public function update_staff_replying($ticketId, $userId = '')
{
if ($this->input->is_ajax_request()) {
echo json_encode(['success' => $this->tickets_model->update_staff_replying($ticketId, $userId)]);
die;
}
}
public function check_staff_replying($ticketId)
{
if ($this->input->is_ajax_request()) {
$ticket = $this->tickets_model->get_staff_replying($ticketId);
$isAnotherReplying = $ticket->staff_id_replying !== null && $ticket->staff_id_replying !== get_staff_user_id();
echo json_encode([
'is_other_staff_replying' => $isAnotherReplying,
'message' => $isAnotherReplying ? e(_l('staff_is_currently_replying', get_staff_full_name($ticket->staff_id_replying))) : '',
]);
die;
}
}
public function ticket($id)
{
if (!$id) {
redirect(admin_url('tickets/add'));
}
$data['ticket'] = $this->tickets_model->get_ticket_by_id($id);
$data['merged_tickets'] = $this->tickets_model->get_merged_tickets_by_primary_id($id);
if (!$data['ticket']) {
blank_page(_l('ticket_not_found'));
}
if (get_option('staff_access_only_assigned_departments') == 1) {
if (!is_admin()) {
$this->load->model('departments_model');
$staff_departments = $this->departments_model->get_staff_departments(get_staff_user_id(), true);
if (!in_array($data['ticket']->department, $staff_departments)) {
set_alert('danger', _l('ticket_access_by_department_denied'));
redirect(admin_url('access_denied'));
}
}
}
if ($this->input->post()) {
$returnToTicketList = false;
$data = $this->input->post();
if (isset($data['ticket_add_response_and_back_to_list'])) {
$returnToTicketList = true;
unset($data['ticket_add_response_and_back_to_list']);
}
$data['message'] = html_purify($this->input->post('message', false));
$replyid = $this->tickets_model->add_reply($data, $id, get_staff_user_id());
if ($replyid) {
set_alert('success', _l('replied_to_ticket_successfully', $id));
}
if (!$returnToTicketList) {
redirect(admin_url('tickets/ticket/' . $id));
} else {
set_ticket_open(0, $id);
redirect(admin_url('tickets'));
}
}
// Load necessary models
$this->load->model('knowledge_base_model');
$this->load->model('departments_model');
$data['statuses'] = $this->tickets_model->get_ticket_status();
$data['statuses']['callback_translate'] = 'ticket_status_translate';
$data['departments'] = $this->departments_model->get();
$data['predefined_replies'] = $this->tickets_model->get_predefined_reply();
$data['priorities'] = $this->tickets_model->get_priority();
$data['services'] = $this->tickets_model->get_service();
$whereStaff = [];
if (get_option('access_tickets_to_none_staff_members') == 0) {
$whereStaff['is_not_staff'] = 0;
}
$data['staff'] = $this->staff_model->get('', $whereStaff);
$data['articles'] = $this->knowledge_base_model->get();
$data['ticket_replies'] = $this->tickets_model->get_ticket_replies($id);
$data['bodyclass'] = 'top-tabs ticket single-ticket';
$data['title'] = $data['ticket']->subject;
$data['ticket']->ticket_notes = $this->misc_model->get_notes($id, 'ticket');
add_admin_tickets_js_assets();
$this->load->view('admin/tickets/single', $data);
}
public function edit_message()
{
if (!can_staff_edit_ticket_message()) {
access_denied();
}
if ($this->input->post()) {
$data = $this->input->post();
$data['data'] = html_purify($this->input->post('data', false));
if ($data['type'] == 'reply') {
$this->db->where('id', $data['id']);
$this->db->update(db_prefix() . 'ticket_replies', [
'message' => $data['data'],
]);
} elseif ($data['type'] == 'ticket') {
$this->db->where('ticketid', $data['id']);
$this->db->update(db_prefix() . 'tickets', [
'message' => $data['data'],
]);
}
if ($this->db->affected_rows() > 0) {
set_alert('success', _l('ticket_message_updated_successfully'));
}
redirect(admin_url('tickets/ticket/' . $data['main_ticket']));
}
}
public function delete_ticket_reply($ticket_id, $reply_id)
{
if (!$reply_id) {
redirect(admin_url('tickets'));
}
if (!can_staff_delete_ticket_reply()) {
access_denied('delete ticket');
}
$response = $this->tickets_model->delete_ticket_reply($ticket_id, $reply_id);
if ($response == true) {
set_alert('success', _l('deleted', _l('ticket_reply')));
} else {
set_alert('warning', _l('problem_deleting', _l('ticket_reply')));
}
redirect(admin_url('tickets/ticket/' . $ticket_id));
}
public function change_status_ajax($id, $status)
{
if ($this->input->is_ajax_request()) {
echo json_encode($this->tickets_model->change_ticket_status($id, $status));
}
}
public function update_single_ticket_settings()
{
if ($this->input->post()) {
$this->session->mark_as_flash('active_tab');
$this->session->mark_as_flash('active_tab_settings');
if ($this->input->post('merge_ticket_ids') !== 0) {
$ticketsToMerge = explode(',', $this->input->post('merge_ticket_ids'));
$alreadyMergedTickets = $this->tickets_model->get_already_merged_tickets($ticketsToMerge);
if (count($alreadyMergedTickets) > 0) {
echo json_encode([
'success' => false,
'message' => _l('cannot_merge_tickets_with_ids', implode(',', $alreadyMergedTickets)),
]);
die();
}
}
$success = $this->tickets_model->update_single_ticket_settings($this->input->post());
if ($success) {
$this->session->set_flashdata('active_tab', true);
$this->session->set_flashdata('active_tab_settings', true);
if (get_option('staff_access_only_assigned_departments') == 1) {
$ticket = $this->tickets_model->get_ticket_by_id($this->input->post('ticketid'));
$this->load->model('departments_model');
$staff_departments = $this->departments_model->get_staff_departments(get_staff_user_id(), true);
if (!in_array($ticket->department, $staff_departments) && !is_admin()) {
set_alert('success', _l('ticket_settings_updated_successfully_and_reassigned', $ticket->department_name));
echo json_encode([
'success' => $success,
'department_reassigned' => true,
]);
die();
}
}
set_alert('success', _l('ticket_settings_updated_successfully'));
}
echo json_encode([
'success' => $success,
]);
die();
}
}
// Priorities
/* Get all ticket priorities */
public function priorities()
{
if (!is_admin()) {
access_denied('Ticket Priorities');
}
$data['priorities'] = $this->tickets_model->get_priority();
$data['title'] = _l('ticket_priorities');
$this->load->view('admin/tickets/priorities/manage', $data);
}
/* Add new priority od update existing*/
public function priority()
{
if (!is_admin()) {
access_denied('Ticket Priorities');
}
if ($this->input->post()) {
if (!$this->input->post('id')) {
$id = $this->tickets_model->add_priority($this->input->post());
if ($id) {
set_alert('success', _l('added_successfully', _l('ticket_priority')));
}
} else {
$data = $this->input->post();
$id = $data['id'];
unset($data['id']);
$success = $this->tickets_model->update_priority($data, $id);
if ($success) {
set_alert('success', _l('updated_successfully', _l('ticket_priority')));
}
}
die;
}
}
/* Delete ticket priority */
public function delete_priority($id)
{
if (!is_admin()) {
access_denied('Ticket Priorities');
}
if (!$id) {
redirect(admin_url('tickets/priorities'));
}
$response = $this->tickets_model->delete_priority($id);
if (is_array($response) && isset($response['referenced'])) {
set_alert('warning', _l('is_referenced', _l('ticket_priority_lowercase')));
} elseif ($response == true) {
set_alert('success', _l('deleted', _l('ticket_priority')));
} else {
set_alert('warning', _l('problem_deleting', _l('ticket_priority_lowercase')));
}
redirect(admin_url('tickets/priorities'));
}
/* List all ticket predefined replies */
public function predefined_replies()
{
if (!is_admin()) {
access_denied('Predefined Replies');
}
if ($this->input->is_ajax_request()) {
$aColumns = [
'name',
];
$sIndexColumn = 'id';
$sTable = db_prefix() . 'tickets_predefined_replies';
$result = data_tables_init($aColumns, $sIndexColumn, $sTable, [], [], [
'id',
]);
$output = $result['output'];
$rResult = $result['rResult'];
foreach ($rResult as $aRow) {
$row = [];
for ($i = 0; $i < count($aColumns); $i++) {
$_data = $aRow[$aColumns[$i]];
if ($aColumns[$i] == 'name') {
$_data = '<a href="' . admin_url('tickets/predefined_reply/' . $aRow['id']) . '">' . e($_data) . '</a>';
}
$row[] = $_data;
}
$options = '<div class="tw-flex tw-items-center tw-space-x-3">';
$options .= '<a href="' . admin_url('tickets/predefined_reply/' . $aRow['id']) . '" class="tw-text-neutral-500 hover:tw-text-neutral-700 focus:tw-text-neutral-700">
<i class="fa-regular fa-pen-to-square fa-lg"></i>
</a>';
$options .= '<a href="' . admin_url('tickets/delete_predefined_reply/' . $aRow['id']) . '"
class="tw-mt-px tw-text-neutral-500 hover:tw-text-neutral-700 focus:tw-text-neutral-700 _delete">
<i class="fa-regular fa-trash-can fa-lg"></i>
</a>';
$options .= '</div>';
$row[] = $options;
$output['aaData'][] = $row;
}
echo json_encode($output);
die();
}
$data['title'] = _l('predefined_replies');
$this->load->view('admin/tickets/predefined_replies/manage', $data);
}
public function get_predefined_reply_ajax($id)
{
echo json_encode($this->tickets_model->get_predefined_reply($id));
}
public function ticket_change_data()
{
if ($this->input->is_ajax_request()) {
$contact_id = $this->input->post('contact_id');
echo json_encode([
'contact_data' => $this->clients_model->get_contact($contact_id),
'customer_has_projects' => customer_has_projects(get_user_id_by_contact_id($contact_id)),
]);
}
}
/* Add new reply or edit existing */
public function predefined_reply($id = '')
{
if (!is_admin() && get_option('staff_members_save_tickets_predefined_replies') == '0') {
access_denied('Predefined Reply');
}
if ($this->input->post()) {
$data = $this->input->post();
$data['message'] = html_purify($this->input->post('message', false));
$ticketAreaRequest = isset($data['ticket_area']);
if (isset($data['ticket_area'])) {
unset($data['ticket_area']);
}
if ($id == '') {
$id = $this->tickets_model->add_predefined_reply($data);
if (!$ticketAreaRequest) {
if ($id) {
set_alert('success', _l('added_successfully', _l('predefined_reply')));
redirect(admin_url('tickets/predefined_reply/' . $id));
}
} else {
echo json_encode(['success' => $id ? true : false, 'id' => $id]);
die;
}
} else {
$success = $this->tickets_model->update_predefined_reply($data, $id);
if ($success) {
set_alert('success', _l('updated_successfully', _l('predefined_reply')));
}
redirect(admin_url('tickets/predefined_reply/' . $id));
}
}
if ($id == '') {
$title = _l('add_new', _l('predefined_reply_lowercase'));
} else {
$predefined_reply = $this->tickets_model->get_predefined_reply($id);
$data['predefined_reply'] = $predefined_reply;
$title = _l('edit', _l('predefined_reply_lowercase')) . ' ' . $predefined_reply->name;
}
$data['title'] = $title;
$this->load->view('admin/tickets/predefined_replies/reply', $data);
}
/* Delete ticket reply from database */
public function delete_predefined_reply($id)
{
if (!is_admin()) {
access_denied('Delete Predefined Reply');
}
if (!$id) {
redirect(admin_url('tickets/predefined_replies'));
}
$response = $this->tickets_model->delete_predefined_reply($id);
if ($response == true) {
set_alert('success', _l('deleted', _l('predefined_reply')));
} else {
set_alert('warning', _l('problem_deleting', _l('predefined_reply_lowercase')));
}
redirect(admin_url('tickets/predefined_replies'));
}
// Ticket statuses
/* Get all ticket statuses */
public function statuses()
{
if (!is_admin()) {
access_denied('Ticket Statuses');
}
$data['statuses'] = $this->tickets_model->get_ticket_status();
$data['title'] = 'Ticket statuses';
$this->load->view('admin/tickets/tickets_statuses/manage', $data);
}
/* Add new or edit existing status */
public function status()
{
if (!is_admin()) {
access_denied('Ticket Statuses');
}
if ($this->input->post()) {
if (!$this->input->post('id')) {
$id = $this->tickets_model->add_ticket_status($this->input->post());
if ($id) {
set_alert('success', _l('added_successfully', _l('ticket_status')));
}
} else {
$data = $this->input->post();
$id = $data['id'];
unset($data['id']);
$success = $this->tickets_model->update_ticket_status($data, $id);
if ($success) {
set_alert('success', _l('updated_successfully', _l('ticket_status')));
}
}
die;
}
}
/* Delete ticket status from database */
public function delete_ticket_status($id)
{
if (!is_admin()) {
access_denied('Ticket Statuses');
}
if (!$id) {
redirect(admin_url('tickets/statuses'));
}
$response = $this->tickets_model->delete_ticket_status($id);
if (is_array($response) && isset($response['default'])) {
set_alert('warning', _l('cant_delete_default', _l('ticket_status_lowercase')));
} elseif (is_array($response) && isset($response['referenced'])) {
set_alert('danger', _l('is_referenced', _l('ticket_status_lowercase')));
} elseif ($response == true) {
set_alert('success', _l('deleted', _l('ticket_status')));
} else {
set_alert('warning', _l('problem_deleting', _l('ticket_status_lowercase')));
}
redirect(admin_url('tickets/statuses'));
}
/* List all ticket services */
public function services()
{
if (!is_admin()) {
access_denied('Ticket Services');
}
if ($this->input->is_ajax_request()) {
$aColumns = [
'serviceid',
'name',
];
$sIndexColumn = 'serviceid';
$sTable = db_prefix() . 'services';
$result = data_tables_init($aColumns, $sIndexColumn, $sTable, [], [], [
'serviceid',
]);
$output = $result['output'];
$rResult = $result['rResult'];
foreach ($rResult as $aRow) {
$row = [];
for ($i = 0; $i < count($aColumns); $i++) {
$_data = $aRow[$aColumns[$i]];
if ($aColumns[$i] == 'name') {
$_data = '<a href="#" onclick="edit_service(this,' . $aRow['serviceid'] . ');return false" data-name="' . $aRow['name'] . '">' . $_data . '</a>';
}
$row[] = $_data;
}
$options = icon_btn('#', 'fa-regular fa-pen-to-square', 'btn-default', [
'data-name' => $aRow['name'],
'onclick' => 'edit_service(this,' . $aRow['serviceid'] . '); return false;',
]);
$row[] = $options .= icon_btn('tickets/delete_service/' . $aRow['serviceid'], 'fa fa-remove', 'btn-danger _delete');
$output['aaData'][] = $row;
}
echo json_encode($output);
die();
}
$data['title'] = _l('services');
$this->load->view('admin/tickets/services/manage', $data);
}
/* Add new service od delete existing one */
public function service($id = '')
{
if (!is_admin() && get_option('staff_members_save_tickets_predefined_replies') == '0') {
access_denied('Ticket Services');
}
if ($this->input->post()) {
$post_data = $this->input->post();
if (!$this->input->post('id')) {
$requestFromTicketArea = isset($post_data['ticket_area']);
if (isset($post_data['ticket_area'])) {
unset($post_data['ticket_area']);
}
$id = $this->tickets_model->add_service($post_data);
if (!$requestFromTicketArea) {
if ($id) {
set_alert('success', _l('added_successfully', _l('service')));
}
} else {
echo json_encode(['success' => $id ? true : false, 'id' => $id, 'name' => $post_data['name']]);
}
} else {
$id = $post_data['id'];
unset($post_data['id']);
$success = $this->tickets_model->update_service($post_data, $id);
if ($success) {
set_alert('success', _l('updated_successfully', _l('service')));
}
}
die;
}
}
/* Delete ticket service from database */
public function delete_service($id)
{
if (!is_admin()) {
access_denied('Ticket Services');
}
if (!$id) {
redirect(admin_url('tickets/services'));
}
$response = $this->tickets_model->delete_service($id);
if (is_array($response) && isset($response['referenced'])) {
set_alert('warning', _l('is_referenced', _l('service_lowercase')));
} elseif ($response == true) {
set_alert('success', _l('deleted', _l('service')));
} else {
set_alert('warning', _l('problem_deleting', _l('service_lowercase')));
}
redirect(admin_url('tickets/services'));
}
public function block_sender()
{
if ($this->input->post()) {
$this->load->model('spam_filters_model');
$sender = $this->input->post('sender');
$success = $this->spam_filters_model->add(['type' => 'sender', 'value' => $sender], 'tickets');
if ($success) {
set_alert('success', _l('sender_blocked_successfully'));
}
}
}
public function bulk_action()
{
hooks()->do_action('before_do_bulk_action_for_tickets');
if ($this->input->post()) {
$ids = $this->input->post('ids');
$is_admin = is_admin();
$staffCanDeleteTicket = can_staff_delete_ticket();
if (!is_array($ids)) {
return;
}
if ($this->input->post('merge_tickets')) {
$primary_ticket = $this->input->post('primary_ticket');
$status = $this->input->post('primary_ticket_status');
if ($this->tickets_model->is_merged($primary_ticket)) {
set_alert('warning', _l('cannot_merge_into_merged_ticket'));
return;
}
$total_merged = $this->tickets_model->merge($primary_ticket, $status, $ids);
} elseif ($this->input->post('mass_delete')) {
$total_deleted = 0;
if ($is_admin || $staffCanDeleteTicket) {
foreach ($ids as $id) {
if ($this->tickets_model->delete($id)) {
$total_deleted++;
}
}
} else {
ajax_access_denied();
return;
}
} else {
$status = $this->input->post('status');
$department = $this->input->post('department');
$service = $this->input->post('service');
$priority = $this->input->post('priority');
$tags = $this->input->post('tags');
foreach ($ids as $id) {
if ($status) {
$this->db->where('ticketid', $id);
$this->db->update(db_prefix() . 'tickets', [
'status' => $status,
]);
}
if ($department) {
$this->db->where('ticketid', $id);
$this->db->update(db_prefix() . 'tickets', [
'department' => $department,
]);
}
if ($priority) {
$this->db->where('ticketid', $id);
$this->db->update(db_prefix() . 'tickets', [
'priority' => $priority,
]);
}
if ($service) {
$this->db->where('ticketid', $id);
$this->db->update(db_prefix() . 'tickets', [
'service' => $service,
]);
}
if ($tags) {
handle_tags_save($tags, $id, 'ticket');
}
}
}
if ($this->input->post('mass_delete')) {
set_alert('success', _l('total_tickets_deleted', $total_deleted));
} elseif ($this->input->post('merge_tickets') && $total_merged > 0) {
set_alert('success', _l('tickets_merged'));
}
}
}
}