From c0f29e406fa2f44fdf52924fee5c7777aecbb3de Mon Sep 17 00:00:00 2001 From: nathan Date: Mon, 3 Apr 2023 09:35:22 -0600 Subject: [PATCH] Infolog: When creating an event from an infolog, don't send an invalid category ID. Fixes validation error when saving the event. --- infolog/inc/class.infolog_ui.inc.php | 34 +++++++++++++++++++--------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/infolog/inc/class.infolog_ui.inc.php b/infolog/inc/class.infolog_ui.inc.php index e051c0e595..8126b7ef01 100644 --- a/infolog/inc/class.infolog_ui.inc.php +++ b/infolog/inc/class.infolog_ui.inc.php @@ -669,21 +669,33 @@ class infolog_ui { return $data; } - $event = array_merge($data,array( - 'category' => $GLOBALS['egw']->categories->check_list(Acl::READ, $infolog['info_cat']), - 'priority' => $infolog['info_priority'] + 1, - 'public' => $infolog['info_access'] != 'private', - 'title' => $infolog['info_subject'], - 'description' => $infolog['info_des'], - 'location' => $infolog['info_location'], - 'start' => $infolog['info_startdate'], - 'end' => $infolog['info_enddate'] ? $infolog['info_enddate'] : $infolog['info_datecompleted'] + $event = array_merge($data, array( + 'category' => $GLOBALS['egw']->categories->check_list(Acl::READ, $infolog['info_cat']), + 'priority' => $infolog['info_priority'] + 1, + 'public' => $infolog['info_access'] != 'private', + 'title' => $infolog['info_subject'], + 'description' => $infolog['info_des'], + 'location' => $infolog['info_location'], + 'start' => $infolog['info_startdate'], + 'end' => $infolog['info_enddate'] ? $infolog['info_enddate'] : $infolog['info_datecompleted'] )); unset($event['entry_id']); - if (!$event['end']) $event['end'] = $event['start'] + (int) $GLOBALS['egw_info']['user']['preferences']['calendar']['defaultlength']*60; + if(!$event['end']) + { + $event['end'] = $event['start'] + (int)$GLOBALS['egw_info']['user']['preferences']['calendar']['defaultlength'] * 60; + } // Match Api\Categories by name - $event['category'] = $GLOBALS['egw']->categories->name2id(Api\Categories::id2name($infolog['info_cat'])); + if($infolog['info_cat']) + { + $event['category'] = $GLOBALS['egw']->categories->name2id(Api\Categories::id2name($infolog['info_cat'])); + } + if(!$event['category'] || $event['category'] === '0') + { + // No matching category found, don't send an invalid category + unset($event['category']); + } + // make current user the owner of the new event, not the selected calendar, if current user has rights for it $event['owner'] = $user = $GLOBALS['egw_info']['user']['account_id'];