2016-01-13 22:08:08 -05:00
< ? php
2016-03-09 21:59:24 -05:00
function get_events ( $start , $end , $hesk_settings , $staff = true ) {
2016-05-29 19:05:28 -04:00
global $hesk_settings , $hesklang ;
2016-05-29 02:03:53 -04:00
2016-07-21 22:06:33 -04:00
$start_time_sql = " CONVERT_TZ(FROM_UNIXTIME( " . hesk_dbEscape ( $start ) . " / 1000), @@session.time_zone, '+00:00') " ;
$end_time_sql = " CONVERT_TZ(FROM_UNIXTIME( " . hesk_dbEscape ( $end ) . " / 1000), @@session.time_zone, '+00:00') " ;
2017-06-01 12:26:54 -04:00
$sql = " SELECT `events`.*, `categories`.`name` AS `category_name`, `categories`.`background_color` AS `background_color`,
`categories` . `foreground_color` AS `foreground_color` , `categories` . `display_border_outline` AS `display_border` " ;
2016-03-10 22:04:08 -05:00
if ( $staff ) {
$sql .= " ,`reminders`.`amount` AS `reminder_value`, `reminders`.`unit` AS `reminder_unit` " ;
}
$sql .= " FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event` AS `events`
2016-02-13 22:11:20 -05:00
INNER JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` AS `categories`
2016-03-10 21:56:52 -05:00
ON `events` . `category` = `categories` . `id` " ;
2016-03-10 22:04:08 -05:00
2016-03-10 21:56:52 -05:00
if ( $staff ) {
$sql .= " LEFT JOIN ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event_reminder` AS `reminders` ON
`reminders` . `user_id` = " . intval( $_SESSION['id'] ) . " AND `reminders` . `event_id` = `events` . `id` " ;
}
2016-11-22 21:03:36 -05:00
$sql .= " WHERE NOT (`end` < { $start_time_sql } OR `start` > { $end_time_sql } ) AND `categories`.`usage` <> 1 " ;
2016-03-09 21:59:24 -05:00
if ( ! $staff ) {
$sql .= " AND `categories`.`type` = '0' " ;
}
2016-01-13 22:08:08 -05:00
$rs = hesk_dbQuery ( $sql );
2016-06-24 14:05:26 +00:00
$events = array ();
2016-01-13 22:08:08 -05:00
while ( $row = hesk_dbFetchAssoc ( $rs )) {
2016-04-26 08:59:54 -04:00
// Skip the event if the user does not have access to it
2016-05-30 15:45:45 -04:00
if ( $staff && ! $_SESSION [ 'isadmin' ] && ! in_array ( $row [ 'category' ], $_SESSION [ 'categories' ])) {
2016-04-26 08:59:54 -04:00
continue ;
}
mfh_log_debug ( 'Calendar' , " Creating event with id: { $row [ 'id' ] } " , '' );
2016-01-26 21:55:59 -05:00
$event [ 'type' ] = 'CALENDAR' ;
2016-01-13 22:08:08 -05:00
$event [ 'id' ] = intval ( $row [ 'id' ]);
2016-01-26 08:59:33 -05:00
$event [ 'startTime' ] = $row [ 'start' ];
$event [ 'endTime' ] = $row [ 'end' ];
$event [ 'allDay' ] = $row [ 'all_day' ] ? true : false ;
$event [ 'title' ] = $row [ 'name' ];
2016-01-13 22:08:08 -05:00
$event [ 'location' ] = $row [ 'location' ];
$event [ 'comments' ] = $row [ 'comments' ];
2016-02-13 22:11:20 -05:00
$event [ 'categoryId' ] = $row [ 'category' ];
$event [ 'categoryName' ] = $row [ 'category_name' ];
2017-06-01 12:26:54 -04:00
$event [ 'backgroundColor' ] = $row [ 'background_color' ];
$event [ 'foregroundColor' ] = $row [ 'foreground_color' ];
$event [ 'displayBorder' ] = $row [ 'display_border' ];
2016-03-10 22:04:08 -05:00
if ( $staff ) {
$event [ 'reminderValue' ] = $row [ 'reminder_value' ];
2016-03-30 15:12:14 -04:00
$event [ 'reminderUnits' ] = $row [ 'reminder_unit' ];
2016-03-10 22:04:08 -05:00
}
2016-01-13 22:08:08 -05:00
$events [] = $event ;
}
2016-03-09 21:59:24 -05:00
if ( $staff ) {
2016-05-23 21:48:46 -04:00
$old_time_setting = $hesk_settings [ 'timeformat' ];
$hesk_settings [ 'timeformat' ] = 'Y-m-d' ;
$current_date = hesk_date ();
$hesk_settings [ 'timeformat' ] = $old_time_setting ;
2017-06-01 12:26:54 -04:00
$sql = " SELECT `trackid`, `subject`, `due_date`, `category`, `categories`.`name` AS `category_name`, `categories`.`background_color` AS `background_color`,
`categories` . `foreground_color` AS `foreground_color` , `categories` . `display_border_outline` AS `display_border` ,
2016-05-30 15:45:45 -04:00
CASE WHEN `due_date` < '{$current_date}' THEN 1 ELSE 0 END AS `overdue` , `owner` . `name` AS `owner_name` , `tickets` . `owner` AS `owner_id` ,
`tickets` . `priority` AS `priority`
2016-03-09 21:59:24 -05:00
FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "tickets` AS `tickets`
INNER JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` AS `categories`
ON `categories` . `id` = `tickets` . `category`
2016-05-23 21:48:46 -04:00
AND `categories` . `usage` <> 2
2016-05-29 19:05:28 -04:00
LEFT JOIN `" . hesk_dbEscape($hesk_settings['db_pfix']) . "users` AS `owner`
ON `tickets` . `owner` = `owner` . `id`
2016-06-03 11:56:03 +00:00
WHERE `due_date` >= CONVERT_TZ ( FROM_UNIXTIME ( " . hesk_dbEscape( $start )
. " / 1000), @@session.time_zone, '+00:00')
AND `due_date` <= CONVERT_TZ ( FROM_UNIXTIME ( " . hesk_dbEscape( $end ) . " / 1000 ), @@ session . time_zone , '+00:00' )
2016-03-09 21:59:24 -05:00
AND `status` IN ( SELECT `id` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "statuses` WHERE `IsClosed` = 0 ) " ;
2016-01-26 21:55:59 -05:00
2016-03-09 21:59:24 -05:00
$rs = hesk_dbQuery ( $sql );
while ( $row = hesk_dbFetchAssoc ( $rs )) {
2016-04-26 08:59:54 -04:00
// Skip the ticket if the user does not have access to it
2016-05-30 15:45:45 -04:00
if ( ! hesk_checkPermission ( 'can_view_tickets' , 0 )
|| ( $row [ 'owner_id' ] && $row [ 'owner_id' ] != $_SESSION [ 'id' ] && ! hesk_checkPermission ( 'can_view_ass_others' , 0 ))
|| ( ! $row [ 'owner_id' ] && ! hesk_checkPermission ( 'can_view_unassigned' , 0 ))) {
2016-04-26 08:59:54 -04:00
continue ;
}
2016-03-09 21:59:24 -05:00
$event [ 'type' ] = 'TICKET' ;
$event [ 'trackingId' ] = $row [ 'trackid' ];
2016-05-29 19:05:28 -04:00
$event [ 'subject' ] = $row [ 'subject' ];
2016-05-30 22:05:52 -04:00
$event [ 'title' ] = $row [ 'subject' ];
2016-03-09 21:59:24 -05:00
$event [ 'startTime' ] = $row [ 'due_date' ];
$event [ 'url' ] = $hesk_settings [ 'hesk_url' ] . '/' . $hesk_settings [ 'admin_dir' ] . '/admin_ticket.php?track=' . $event [ 'trackingId' ];
$event [ 'categoryId' ] = $row [ 'category' ];
$event [ 'categoryName' ] = $row [ 'category_name' ];
2017-06-01 12:26:54 -04:00
$event [ 'backgroundColor' ] = $row [ 'background_color' ];
$event [ 'foregroundColor' ] = $row [ 'foreground_color' ];
$event [ 'displayBorder' ] = $row [ 'display_border' ];
2016-05-29 19:05:28 -04:00
$event [ 'owner' ] = $row [ 'owner_name' ];
$priorities = array (
0 => $hesklang [ 'critical' ],
1 => $hesklang [ 'high' ],
2 => $hesklang [ 'medium' ],
3 => $hesklang [ 'low' ]
);
$event [ 'priority' ] = $priorities [ $row [ 'priority' ]];
2016-03-09 21:59:24 -05:00
$events [] = $event ;
}
2016-01-26 21:55:59 -05:00
}
2016-01-13 22:08:08 -05:00
return $events ;
2016-01-19 13:19:12 -05:00
}
function create_event ( $event , $hesk_settings ) {
2016-04-26 08:59:54 -04:00
// Make sure the user can create events in this category
if ( ! $_SESSION [ 'isadmin' ] && ! in_array ( $event [ 'category' ], $_SESSION [ 'categories' ])) {
print_error ( 'Access Denied' , 'You cannot create an event in this category' );
}
2016-01-19 13:19:12 -05:00
2016-01-21 13:25:44 -05:00
$event [ 'start' ] = date ( 'Y-m-d H:i:s' , strtotime ( $event [ 'start' ]));
$event [ 'end' ] = date ( 'Y-m-d H:i:s' , strtotime ( $event [ 'end' ]));
2016-01-19 13:19:12 -05:00
$event [ 'all_day' ] = $event [ 'all_day' ] ? 1 : 0 ;
$sql = " INSERT INTO ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event` (`start`, `end`, `all_day`,
2016-02-13 22:11:20 -05:00
`name` , `location` , `comments` , `category` ) VALUES (
2016-01-19 13:19:12 -05:00
'" . hesk_dbEscape($event[' start ']) . "' , '" . hesk_dbEscape($event[' end ']) . "' , '" . hesk_dbEscape($event[' all_day ']) . "' ,
2016-11-23 21:58:08 -05:00
'" . hesk_dbEscape(addslashes($event[' title '])) . "' , '" . hesk_dbEscape(addslashes($event[' location '])) . "' , '" . hesk_dbEscape(addslashes($event[' comments '])) . "' ,
2016-02-13 22:11:20 -05:00
" . intval( $event['category'] ) . " ) " ;
2016-01-19 13:19:12 -05:00
hesk_dbQuery ( $sql );
2016-02-20 22:22:27 -05:00
$event_id = hesk_dbInsertID ();
if ( $event [ 'reminder_amount' ] != null ) {
$sql = " INSERT INTO ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event_reminder` (`user_id`, `event_id`,
`amount` , `unit` ) VALUES ( " . intval( $event['reminder_user'] ) . " , " . intval( $event_id ) . " , " . intval( $event['reminder_amount'] ) . " ,
" . intval( $event['reminder_units'] ) . " ) " ;
hesk_dbQuery ( $sql );
}
return $event_id ;
2016-01-19 13:19:12 -05:00
}
2016-01-26 10:26:56 -05:00
2016-01-26 13:13:08 -05:00
function update_event ( $event , $hesk_settings ) {
2016-04-26 08:59:54 -04:00
// Make sure the user can edit events in this category
if ( ! $_SESSION [ 'isadmin' ] && ! in_array ( $event [ 'category' ], $_SESSION [ 'categories' ])) {
print_error ( 'Access Denied' , 'You cannot edit an event in this category' );
}
2016-01-26 13:13:08 -05:00
$event [ 'start' ] = date ( 'Y-m-d H:i:s' , strtotime ( $event [ 'start' ]));
$event [ 'end' ] = date ( 'Y-m-d H:i:s' , strtotime ( $event [ 'end' ]));
if ( $event [ 'create_ticket_date' ] != null ) {
$event [ 'create_ticket_date' ] = date ( 'Y-m-d H:i:s' , strtotime ( $event [ 'create_ticket_date' ]));
}
$event [ 'all_day' ] = $event [ 'all_day' ] ? 1 : 0 ;
$event [ 'assign_to' ] = $event [ 'assign_to' ] != null ? intval ( $event [ 'assign_to' ]) : 'NULL' ;
$sql = " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event` SET `start` = ' " . hesk_dbEscape ( $event [ 'start' ])
. " ', `end` = ' " . hesk_dbEscape ( $event [ 'end' ]) . " ', `all_day` = ' " . hesk_dbEscape ( $event [ 'all_day' ]) . " ', `name` = ' "
2016-11-23 21:58:08 -05:00
. hesk_dbEscape ( addslashes ( $event [ 'title' ])) . " ', `location` = ' " . hesk_dbEscape ( addslashes ( $event [ 'location' ])) . " ', `comments` = ' "
. hesk_dbEscape ( addslashes ( $event [ 'comments' ])) . " ', `category` = " . intval ( $event [ 'category' ]) . " WHERE `id` = " . intval ( $event [ 'id' ]);
2016-01-26 13:13:08 -05:00
2016-03-29 22:12:39 -04:00
if ( $event [ 'reminder_amount' ] != null ) {
$delete_sql = " DELETE FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event_reminder` WHERE `event_id` = " . intval ( $event [ 'id' ])
. " AND `user_id` = " . intval ( $event [ 'reminder_user' ]);
hesk_dbQuery ( $delete_sql );
$insert_sql = " INSERT INTO ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event_reminder` (`user_id`, `event_id`,
`amount` , `unit` ) VALUES ( " . intval( $event['reminder_user'] ) . " , " . intval( $event['id'] ) . " , " . intval( $event['reminder_amount'] ) . " ,
" . intval( $event['reminder_units'] ) . " ) " ;
hesk_dbQuery ( $insert_sql );
}
2016-01-26 13:13:08 -05:00
hesk_dbQuery ( $sql );
}
2016-01-26 10:26:56 -05:00
function delete_event ( $id , $hesk_settings ) {
2016-04-26 08:59:54 -04:00
// Make sure the user can delete events in this category
$categoryRs = hesk_dbQuery ( 'SELECT `category` FROM `' . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . 'calendar_event` WHERE `id` = ' . intval ( $id ));
$category = hesk_dbFetchAssoc ( $categoryRs );
if ( ! $_SESSION [ 'isadmin' ] && ! in_array ( $category [ 'category' ], $_SESSION [ 'categories' ])) {
print_error ( 'Access Denied' , 'You cannot delete events in this category' );
}
2016-01-26 10:26:56 -05:00
$sql = " DELETE FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " calendar_event` WHERE `id` = " . intval ( $id );
hesk_dbQuery ( $sql );
}
2016-01-26 22:21:19 -05:00
function update_ticket_due_date ( $ticket , $hesk_settings ) {
2017-09-24 22:07:49 -04:00
$ticket_id_rs = hesk_dbQuery ( " SELECT `id` FROM ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` WHERE `trackid` = ' " . hesk_dbEscape ( $ticket [ 'trackid' ]) . " ' " );
$ticket_id = hesk_dbFetchAssoc ( $ticket_id_rs );
2016-04-12 13:27:03 -04:00
$due_date = 'NULL' ;
2017-09-24 22:07:49 -04:00
$language_key = 'audit_due_date_removed' ;
$audit_array = array ( 0 => $_SESSION [ 'name' ] . ' (' . $_SESSION [ 'user' ] . ')' );
2016-04-12 13:27:03 -04:00
if ( $ticket [ 'due_date' ] != NULL ) {
2017-09-24 22:07:49 -04:00
$audit_array = array (
0 => $_SESSION [ 'name' ] . ' (' . $_SESSION [ 'user' ] . ')' ,
1 => date ( 'Y-m-d H:i:s' , strtotime ( $ticket [ 'due_date' ]))
);
2016-04-12 13:27:03 -04:00
$due_date = " ' " . date ( 'Y-m-d H:i:s' , strtotime ( $ticket [ 'due_date' ])) . " ' " ;
2017-09-24 22:07:49 -04:00
$language_key = 'audit_due_date_changed' ;
2016-04-12 13:27:03 -04:00
}
2016-04-23 22:18:00 -04:00
$sql = " UPDATE ` " . hesk_dbEscape ( $hesk_settings [ 'db_pfix' ]) . " tickets` SET `due_date` = { $due_date } , `overdue_email_sent` = '0'
2016-01-26 22:21:19 -05:00
WHERE `trackid` = '" . hesk_dbEscape($ticket[' trackid ']) . "' " ;
2017-09-24 22:07:49 -04:00
mfh_insert_audit_trail_record ( $ticket_id [ 'id' ], 'TICKET' , $language_key , hesk_date (),
$audit_array );
2016-01-26 22:21:19 -05:00
hesk_dbQuery ( $sql );
}