diff --git a/plugins/kolab_addressbook/drivers/kolab/kolab_contacts.php b/plugins/kolab_addressbook/drivers/kolab/kolab_contacts.php --- a/plugins/kolab_addressbook/drivers/kolab/kolab_contacts.php +++ b/plugins/kolab_addressbook/drivers/kolab/kolab_contacts.php @@ -385,7 +385,7 @@ $this->sortindex = array_merge($this->sortindex, $local_sortindex); } } - else if (is_array($this->filter['ids'])) { + else if ($this->filter && is_array($this->filter['ids'])) { $ids = $this->filter['ids']; if (count($ids)) { $uids = array_map(array($this, 'id2uid'), $this->filter['ids']); @@ -1134,13 +1134,13 @@ switch ($this->sort_col) { case 'name': - $str = $rec['name'] . $rec['prefix']; + $str = ($rec['name'] ?? null) . ($rec['prefix'] ?? null); case 'firstname': - $str .= $rec['firstname'] . $rec['middlename'] . $rec['surname']; + $str .= ($rec['firstname'] ?? null) . ($rec['middlename'] ?? null) . ($rec['surname'] ?? null); break; case 'surname': - $str = $rec['surname'] . $rec['firstname'] . $rec['middlename']; + $str = ($rec['surname'] ?? null) . ($rec['firstname'] ?? null) . ($rec['middlename'] ?? null); break; default: @@ -1148,7 +1148,9 @@ break; } - $str .= is_array($rec['email']) ? $rec['email'][0] : $rec['email']; + if ($rec['email'] ?? null) { + $str .= is_array($rec['email']) ? $rec['email'][0] : $rec['email']; + } return mb_strtolower($str); } @@ -1262,7 +1264,7 @@ // convert email, website, phone values foreach (array('email'=>'address', 'website'=>'url', 'phone'=>'number') as $col => $propname) { - if (is_array($record[$col])) { + if (is_array($record[$col] ?? null)) { $values = $record[$col]; unset($record[$col]); foreach ((array)$values as $i => $val) { @@ -1272,7 +1274,7 @@ } } - if (is_array($record['address'])) { + if (is_array($record['address'] ?? null)) { $addresses = $record['address']; unset($record['address']); foreach ($addresses as $i => $adr) { @@ -1288,7 +1290,7 @@ } // photo is stored as separate attachment - if ($record['photo'] && strlen($record['photo']) < 255 && !empty($record['_attachments'][$record['photo']])) { + if (($record['photo'] ?? null) && strlen($record['photo']) < 255 && !empty($record['_attachments'][$record['photo']])) { $att = $record['_attachments'][$record['photo']]; // only fetch photo content if requested if ($this->action == 'photo') { diff --git a/plugins/kolab_addressbook/kolab_addressbook.php b/plugins/kolab_addressbook/kolab_addressbook.php --- a/plugins/kolab_addressbook/kolab_addressbook.php +++ b/plugins/kolab_addressbook/kolab_addressbook.php @@ -240,7 +240,7 @@ $source = $data[$id]; $is_collapsed = strpos($this->rc->config->get('collapsed_abooks',''), '&'.rawurlencode($id).'&') !== false; - if ($folder->virtual) { + if (!empty($folder->virtual)) { $source = $this->driver->abook_prop($folder->id, $folder); } else if (empty($source)) { diff --git a/plugins/kolab_auth/kolab_auth.php b/plugins/kolab_auth/kolab_auth.php --- a/plugins/kolab_auth/kolab_auth.php +++ b/plugins/kolab_auth/kolab_auth.php @@ -656,7 +656,7 @@ // User name for identity (first log in) foreach ((array)$name_attr as $field) { - $name = is_array($record[$field]) ? $record[$field][0] : $record[$field]; + $name = is_array($record[$field] ?? null) ? $record[$field][0] : ($record[$field] ?? null); if (!empty($name)) { $this->data['user_name'] = $name; break; diff --git a/plugins/kolab_files/lib/kolab_files_engine.php b/plugins/kolab_files/lib/kolab_files_engine.php --- a/plugins/kolab_files/lib/kolab_files_engine.php +++ b/plugins/kolab_files/lib/kolab_files_engine.php @@ -28,6 +28,7 @@ private $rc; private $url; private $url_srv; + private $filetypes_style; private $timeout = 600; private $files_sort_cols = array('name', 'mtime', 'size'); private $sessions_sort_cols = array('name'); @@ -145,7 +146,7 @@ $this->rc->output->set_env('files_api_version', $caps['VERSION'] ?? 3); $this->rc->output->set_env('files_user', $this->rc->get_user_name()); - if ($caps['DOCEDIT']) { + if ($caps['DOCEDIT'] ?? false) { $this->plugin->add_label('declinednotice', 'invitednotice', 'acceptedownernotice', 'declinedownernotice', 'requestednotice', 'acceptednotice', 'declinednotice', 'more', 'accept', 'decline', 'join', 'status', 'when', 'file', 'comment', @@ -729,7 +730,7 @@ { $prefix = 'kolab_' . $type . '_'; $c_prefix = 'kolab_files_' . ($type != 'files' ? $type : '') . '_'; - $skin_path = $_SESSION['skin_path']; + $skin_path = $_SESSION['skin_path'] ?? null; // check to see if we have some settings for sorting $sort_col = $_SESSION[$prefix . 'sort_col']; @@ -789,7 +790,7 @@ 'title' => $this->plugin->gettext('sortby') ), $col_name); } - else if ($col_name[0] != '<') { + else if (empty($col_name) || $col_name[0] != '<') { $col_name = '' . $col_name . ''; } @@ -870,7 +871,7 @@ $attrib['id'] = 'filepreviewframe'; } - if ($frame = $this->file_data['viewer']['frame']) { + if ($frame = ($this->file_data['viewer']['frame'] ?? null)) { return $frame; } @@ -895,6 +896,7 @@ $attrib['src'] = $href; $attrib['onload'] = 'kolab_files_frame_load(this)'; + $form = null; // editor requires additional arguments via POST if (!empty($this->file_data['viewer']['post'])) { $attrib['src'] = 'program/resources/blank.gif'; @@ -966,8 +968,8 @@ */ public function get_api_token($configure = true) { - $token = $_SESSION['kolab_files_token']; - $time = $_SESSION['kolab_files_time']; + $token = $_SESSION['kolab_files_token'] ?? null; + $time = $_SESSION['kolab_files_time'] ?? null; if ($token && time() - $this->timeout < $time) { if (time() - $time <= $this->timeout / 2) { @@ -1059,7 +1061,7 @@ } } - if ($_SESSION['kolab_files_caps']['MANTICORE'] || $_SESSION['kolab_files_caps']['WOPI']) { + if (($_SESSION['kolab_files_caps']['MANTICORE'] ?? false) || ($_SESSION['kolab_files_caps']['WOPI'] ?? false)) { $_SESSION['kolab_files_caps']['DOCEDIT'] = true; $_SESSION['kolab_files_caps']['DOCTYPE'] = $_SESSION['kolab_files_caps']['MANTICORE'] ? 'manticore' : 'wopi'; } @@ -1135,8 +1137,8 @@ // Configure session $query = array( 'method' => 'configure', - 'timezone' => $prefs['timezone'] ?: $this->rc->config->get('timezone'), - 'date_format' => $prefs['date_long'] ?: $this->rc->config->get('date_long', 'Y-m-d H:i'), + 'timezone' => $prefs['timezone'] ?? $this->rc->config->get('timezone'), + 'date_format' => $prefs['date_long'] ?? $this->rc->config->get('date_long', 'Y-m-d H:i'), ); $request = $this->get_request($query, $token); @@ -1643,11 +1645,13 @@ $placeholder = $this->rc->output->asset_url('program/resources/blank.gif'); - if ($this->file_data['viewer']['wopi']) { + $editor_type = null; + $got_editor = null; + if ($this->file_data['viewer']['wopi'] ?? false) { $editor_type = 'wopi'; $got_editor = ($viewer & 4); } - else if ($this->file_data['viewer']['manticore']) { + else if ($this->file_data['viewer']['manticore'] ?? false) { $editor_type = 'manticore'; $got_editor = ($viewer & 4); } diff --git a/plugins/kolab_folders/kolab_folders.php b/plugins/kolab_folders/kolab_folders.php --- a/plugins/kolab_folders/kolab_folders.php +++ b/plugins/kolab_folders/kolab_folders.php @@ -324,7 +324,7 @@ $ctype = trim(rcube_utils::get_input_value('_ctype', rcube_utils::INPUT_POST)); $subtype = trim(rcube_utils::get_input_value('_subtype', rcube_utils::INPUT_POST)); $mbox = $args['record']['name']; - $old_mbox = $args['record']['oldname']; + $old_mbox = $args['record']['oldname'] ?? null; $subscribe = $args['record']['subscribe']; if (empty($ctype)) { diff --git a/plugins/kolab_notes/kolab_notes.php b/plugins/kolab_notes/kolab_notes.php --- a/plugins/kolab_notes/kolab_notes.php +++ b/plugins/kolab_notes/kolab_notes.php @@ -95,7 +95,7 @@ } // add 'Append note' item to message menu - if ($this->api->output->type == 'html' && $_REQUEST['_rel'] != 'note') { + if ($this->api->output->type == 'html' && ($_REQUEST['_rel'] ?? null) != 'note') { $this->api->add_content(html::tag('li', array('role' => 'menuitem'), $this->api->output->button(array( 'command' => 'append-kolab-note', @@ -112,7 +112,7 @@ } } - if (!$this->rc->output->ajax_call && !$this->rc->output->env['framed']) { + if (!$this->rc->output->ajax_call && !($this->rc->output->env['framed'] ?? null)) { $this->load_ui(); } @@ -243,7 +243,7 @@ 'parent' => $parent_id, ); } - else if ($folder->virtual) { + else if (!empty($folder->virtual)) { $lists[$list_id] = array( 'id' => $list_id, 'name' => $fullname, diff --git a/plugins/libkolab/lib/kolab_ldap.php b/plugins/libkolab/lib/kolab_ldap.php --- a/plugins/libkolab/lib/kolab_ldap.php +++ b/plugins/libkolab/lib/kolab_ldap.php @@ -457,7 +457,7 @@ $entry['displayname'] = rcube_addressbook::compose_search_name( $entry, $entry['email'], - $entry['name'], + $entry['name'] ?? null, $this->conf['kolab_auth_user_displayname'] ); } diff --git a/plugins/libkolab/lib/kolab_storage.php b/plugins/libkolab/lib/kolab_storage.php --- a/plugins/libkolab/lib/kolab_storage.php +++ b/plugins/libkolab/lib/kolab_storage.php @@ -624,7 +624,7 @@ } } - if ($data = $metadata[$folder]) { + if ($data = $metadata[$folder] ?? null) { if (($name = $data[self::NAME_KEY_PRIVATE]) || ($name = $data[self::NAME_KEY_SHARED])) { return $name; } @@ -649,6 +649,7 @@ $found = false; $namespace = self::$imap->get_namespace(); + $prefix = null; if (!empty($namespace['shared'])) { foreach ($namespace['shared'] as $ns) { @@ -910,7 +911,7 @@ // Filter folders list foreach ($folders as $idx => $folder) { - $type = $folderdata[$folder]; + $type = $folderdata[$folder] ?? null; if ($filter == 'mail' && empty($type)) { continue; @@ -964,7 +965,7 @@ $folders = self::$imap->list_folders_subscribed($root, $mbox); // add temporarily subscribed folders - if ($filter != 'mail' && self::$with_tempsubs && is_array($_SESSION['kolab_subscribed_folders'])) { + if ($filter != 'mail' && self::$with_tempsubs && is_array($_SESSION['kolab_subscribed_folders'] ?? null)) { $folders = array_unique(array_merge($folders, $_SESSION['kolab_subscribed_folders'])); } @@ -1695,7 +1696,7 @@ } $token = $folder_id; - if ($domain && strpos($find, '@') === false) { + if ($domain && strpos($token, '@') === false) { $token .= '@' . $domain; } diff --git a/plugins/libkolab/lib/kolab_storage_dav_folder.php b/plugins/libkolab/lib/kolab_storage_dav_folder.php --- a/plugins/libkolab/lib/kolab_storage_dav_folder.php +++ b/plugins/libkolab/lib/kolab_storage_dav_folder.php @@ -440,7 +440,7 @@ if (!is_array($objects)) { rcube::raise_error([ 'code' => 900, - 'message' => "Failed to fetch {$href}" + 'message' => "Failed to fetch {$this->href}" ], true); return false; } diff --git a/plugins/libkolab/lib/kolab_storage_folder_api.php b/plugins/libkolab/lib/kolab_storage_folder_api.php --- a/plugins/libkolab/lib/kolab_storage_folder_api.php +++ b/plugins/libkolab/lib/kolab_storage_folder_api.php @@ -225,7 +225,7 @@ { // color is defined in folder METADATA $metadata = $this->get_metadata(); - if (($color = $metadata[kolab_storage::COLOR_KEY_PRIVATE]) || ($color = $metadata[kolab_storage::COLOR_KEY_SHARED])) { + if (($color = $metadata[kolab_storage::COLOR_KEY_PRIVATE] ?? null) || ($color = $metadata[kolab_storage::COLOR_KEY_SHARED] ?? null)) { return $color; } diff --git a/plugins/libkolab/lib/kolab_storage_folder_virtual.php b/plugins/libkolab/lib/kolab_storage_folder_virtual.php --- a/plugins/libkolab/lib/kolab_storage_folder_virtual.php +++ b/plugins/libkolab/lib/kolab_storage_folder_virtual.php @@ -23,8 +23,6 @@ */ class kolab_storage_folder_virtual extends kolab_storage_folder_api { - public $virtual = true; - protected $displayname; public function __construct($name, $dispname, $ns, $parent = '') @@ -34,6 +32,7 @@ $this->namespace = $ns; $this->parent = $parent; $this->displayname = $dispname; + $this->virtual = true; } /** diff --git a/plugins/libkolab/libkolab.php b/plugins/libkolab/libkolab.php --- a/plugins/libkolab/libkolab.php +++ b/plugins/libkolab/libkolab.php @@ -379,7 +379,7 @@ 'reset-command' => 'non-existing-command', ); - if ($attrib['label-domain'] && !strpos($attrib['buttontitle'], '.')) { + if (($attrib['label-domain'] ?? null) && !strpos($attrib['buttontitle'], '.')) { $attrib['buttontitle'] = $attrib['label-domain'] . '.' . $attrib['buttontitle']; } diff --git a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php --- a/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php +++ b/plugins/tasklist/drivers/kolab/tasklist_kolab_driver.php @@ -150,7 +150,7 @@ 'owner' => $folder->get_owner(), 'parentfolder' => $folder->get_parent(), 'default' => $folder->default, - 'virtual' => $folder->virtual, + 'virtual' => !empty($folder->virtual), 'children' => true, // TODO: determine if that folder indeed has child folders 'subscribed' => (bool)$folder->is_subscribed(), 'removable' => !$folder->default, @@ -224,7 +224,7 @@ 'parent' => $parent_id, ); } - else if ($folder->virtual) { + else if (!empty($folder->virtual)) { $lists[$list_id] = array( 'id' => $list_id, 'name' => $fullname,