diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index e09e49a8..a6f304a0 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -945,7 +945,7 @@ class kolab_calendar extends kolab_storage_folder_api $out = ''; if (is_array($prop)) { foreach ($prop as $key => $val) { - if (is_numeric($key)) { + if (is_numeric($key) || is_array($val)) { $out .= self::_complex2string($val); } else if (!in_array($key, $ignorekeys)) { diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 67f83a21..76d1974d 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -227,7 +227,7 @@ class kolab_driver extends calendar_driver } } - if ($cal->subscriptions) { + if (!empty($cal->subscriptions)) { $calendars[$cal->id]['subscribed'] = $cal->is_subscribed(); } } diff --git a/plugins/kolab_activesync/kolab_activesync_ui.php b/plugins/kolab_activesync/kolab_activesync_ui.php index c0a557a1..50d20033 100644 --- a/plugins/kolab_activesync/kolab_activesync_ui.php +++ b/plugins/kolab_activesync/kolab_activesync_ui.php @@ -109,14 +109,14 @@ class kolab_activesync_ui public function folder_subscriptions($attrib = []) { - if (!$attrib['id']) { + if (empty($attrib['id'])) { $attrib['id'] = 'foldersubscriptions'; } // group folders by type (show only known types) $folder_groups = ['mail' => [], 'contact' => [], 'event' => [], 'task' => [], 'note' => []]; $folder_types = kolab_storage::folders_typedata(); - $use_fieldsets = rcube_utils::get_boolean($attrib['use-fieldsets']); + $use_fieldsets = rcube_utils::get_boolean($attrib['use-fieldsets'] ?? ''); $imei = $this->device['_id']; $subscribed = []; diff --git a/plugins/libcalendaring/lib/libcalendaring_itip.php b/plugins/libcalendaring/lib/libcalendaring_itip.php index 99290167..f30a235f 100644 --- a/plugins/libcalendaring/lib/libcalendaring_itip.php +++ b/plugins/libcalendaring/lib/libcalendaring_itip.php @@ -617,6 +617,7 @@ class libcalendaring_itip $rsvp_status = 'unknown'; $rsvp_buttons = ''; + $title = ''; // pass some metadata about the event and trigger the asynchronous status check $changed = !empty($event['changed']) && is_object($event['changed']) ? $event['changed'] : $message_date; diff --git a/plugins/libkolab/lib/kolab_date_recurrence.php b/plugins/libkolab/lib/kolab_date_recurrence.php index 2aaf5888..fe30f8f1 100644 --- a/plugins/libkolab/lib/kolab_date_recurrence.php +++ b/plugins/libkolab/lib/kolab_date_recurrence.php @@ -199,7 +199,7 @@ class kolab_date_recurrence $event['start'] = $start; $event['recurrence']['INTERVAL'] = $interval; - if ($event['recurrence']['COUNT']) { + if (!empty($event['recurrence']['COUNT'])) { // Increase count so we do not stop the loop to early $event['recurrence']['COUNT'] += 100; } diff --git a/plugins/libkolab/lib/kolab_format_contact.php b/plugins/libkolab/lib/kolab_format_contact.php index 82e5bee3..25d5ebf6 100644 --- a/plugins/libkolab/lib/kolab_format_contact.php +++ b/plugins/libkolab/lib/kolab_format_contact.php @@ -350,7 +350,7 @@ class kolab_format_contact extends kolab_format $teltypes = array_flip($this->phonetypes); for ($i=0; $i < $tels->size(); $i++) { $tel = $tels->get($i); - $object['phone'][] = array('number' => $tel->number(), 'type' => $teltypes[$tel->types()]); + $object['phone'][] = ['number' => $tel->number(), 'type' => $teltypes[$tel->types()] ?? null]; } $object['notes'] = $this->obj->note(); diff --git a/plugins/libkolab/lib/kolab_format_task.php b/plugins/libkolab/lib/kolab_format_task.php index 398c8da4..74693dd6 100644 --- a/plugins/libkolab/lib/kolab_format_task.php +++ b/plugins/libkolab/lib/kolab_format_task.php @@ -53,7 +53,9 @@ class kolab_format_task extends kolab_format_xcal // set common xcal properties parent::set($object); - $this->obj->setPercentComplete(intval($object['complete'])); + $object['complete'] = (int) ($object['complete'] ?? 0); + + $this->obj->setPercentComplete($object['complete']); $status = kolabformat::StatusUndefined; if ($object['complete'] == 100 && !array_key_exists('status', $object)) diff --git a/plugins/libkolab/lib/kolab_storage.php b/plugins/libkolab/lib/kolab_storage.php index 65d965e8..6388a92c 100644 --- a/plugins/libkolab/lib/kolab_storage.php +++ b/plugins/libkolab/lib/kolab_storage.php @@ -516,8 +516,8 @@ class kolab_storage self::setup(); $folder = rcube_charset::convert($prop['name'], RCUBE_CHARSET, 'UTF7-IMAP'); - $oldfolder = $prop['oldname']; // UTF7 - $parent = $prop['parent']; // UTF7 + $oldfolder = $prop['oldname'] ?? ''; // UTF7 + $parent = $prop['parent'] ?? ''; // UTF7 $delimiter = self::$imap->get_hierarchy_delimiter(); if (strlen($oldfolder)) { @@ -1083,7 +1083,7 @@ class kolab_storage array_pop($path); $parent_parent = join($delim, $path); - if (!$refs[$parent]) { + if (empty($refs[$parent])) { if ($folder->type && self::folder_type($parent) == $folder->type) { $refs[$parent] = new kolab_storage_folder($parent, $folder->type, $folder->type); $refs[$parent]->parent = $parent_parent; @@ -1095,6 +1095,7 @@ class kolab_storage $name = kolab_storage::object_name($parent); $refs[$parent] = new kolab_storage_folder_virtual($parent, $name, $folder->get_namespace(), $parent_parent); } + $parents[] = $refs[$parent]; } } @@ -1259,7 +1260,7 @@ class kolab_storage } return in_array($folder, self::$subscriptions) || - ($temp && in_array($folder, (array)$_SESSION['kolab_subscribed_folders'])); + ($temp && in_array($folder, $_SESSION['kolab_subscribed_folders'] ?? [])); } /** @@ -1727,7 +1728,7 @@ class kolab_storage } if (empty($user) && ($ldap = self::ldap())) { - $user = $ldap->get_user_record($token, $_SESSION['imap_host']); + $user = $ldap->get_user_record($token, $_SESSION['imap_host'] ?? ''); if (!empty($user)) { $keys = array('displayname', 'name', 'mail'); // supported keys diff --git a/plugins/libkolab/lib/kolab_storage_cache_contact.php b/plugins/libkolab/lib/kolab_storage_cache_contact.php index 754bdd3e..4bd3ec1a 100644 --- a/plugins/libkolab/lib/kolab_storage_cache_contact.php +++ b/plugins/libkolab/lib/kolab_storage_cache_contact.php @@ -37,7 +37,7 @@ class kolab_storage_cache_contact extends kolab_storage_cache $sql_data = parent::_serialize($object); $sql_data['type'] = $object['_type']; - $email = is_array($object['email'] ?? null) ? $object['email'][0] : ($object['email'] ?? ''); + $email = is_array($object['email'] ?? null) ? ($object['email'][0] ?? '') : ($object['email'] ?? ''); // columns for sorting $sql_data['name'] = rcube_charset::clean(($object['name'] ?? '') . ($object['prefix'] ?? '')); diff --git a/plugins/libkolab/lib/kolab_storage_config.php b/plugins/libkolab/lib/kolab_storage_config.php index e5bdf451..4deeacc8 100644 --- a/plugins/libkolab/lib/kolab_storage_config.php +++ b/plugins/libkolab/lib/kolab_storage_config.php @@ -552,7 +552,7 @@ class kolab_storage_config $tag['members'] = array_merge($tag['members'], $members); // add UIDs into the result - $result[$folder] = array_unique(array_merge((array)$result[$folder], $uids)); + $result[$folder] = array_unique(array_merge((array) ($result[$folder] ?? []), $uids)); } }