fix PHP 8.0 errors: key(): Argument #1 ($array) must be of type array, null given

guarding key() from calling with null eg. $button = key($content['button']) --> key($content['button'] ?? []) or check before !empty($content['button'])
This commit is contained in:
Ralf Becker 2021-10-06 16:07:47 +02:00
parent 8c47c14b8d
commit 9345152c98
16 changed files with 55 additions and 54 deletions

View File

@ -183,12 +183,12 @@ class addressbook_ui extends addressbook_bo
$msg = ''; $msg = '';
} }
} }
if ($_content['nm']['rows']['infolog']) if (!empty($_content['nm']['rows']['infolog']))
{ {
$org = key($_content['nm']['rows']['infolog']); $org = key($_content['nm']['rows']['infolog']);
return $this->infolog_org_view($org); return $this->infolog_org_view($org);
} }
if ($_content['nm']['rows']['view']) // show all contacts of an organisation if (!empty($_content['nm']['rows']['view'])) // show all contacts of an organisation
{ {
$grouped_view = key($_content['nm']['rows']['view']); $grouped_view = key($_content['nm']['rows']['view']);
} }
@ -2260,7 +2260,7 @@ class addressbook_ui extends addressbook_bo
// remove invalid shared-with entries (should not happen, as we validate already on client-side) // remove invalid shared-with entries (should not happen, as we validate already on client-side)
$this->check_shared_with($content['shared']); $this->check_shared_with($content['shared']);
$button = @key($content['button']); $button = @key($content['button'] ?? []);
unset($content['button']); unset($content['button']);
$content['private'] = (int) ($content['owner'] && substr($content['owner'],-1) == 'p'); $content['private'] = (int) ($content['owner'] && substr($content['owner'],-1) == 'p');
$content['owner'] = (string) (int) $content['owner']; $content['owner'] = (string) (int) $content['owner'];
@ -2988,7 +2988,7 @@ class addressbook_ui extends addressbook_bo
if(is_array($content)) if(is_array($content))
{ {
$button = key($content['button']); $button = key($content['button'] ?? []);
switch ($button) switch ($button)
{ {
case 'vcard': case 'vcard':
@ -3071,7 +3071,7 @@ class addressbook_ui extends addressbook_bo
$_GET['contact_id'] = array_shift($rows); $_GET['contact_id'] = array_shift($rows);
$_GET['index'] = 0; $_GET['index'] = 0;
} }
$contact_id = $_GET['contact_id'] ? $_GET['contact_id'] : ((int)$_GET['account_id'] ? 'account:'.(int)$_GET['account_id'] : 0); $contact_id = $_GET['contact_id'] ?? ((int)$_GET['account_id'] ? 'account:'.(int)$_GET['account_id'] : 0);
if(!$contact_id || !is_array($content = $this->read($contact_id))) if(!$contact_id || !is_array($content = $this->read($contact_id)))
{ {
Egw::redirect_link('/index.php',array( Egw::redirect_link('/index.php',array(

View File

@ -139,7 +139,7 @@ class admin_categories
$button = 'delete'; $button = 'delete';
$delete_subs = $content['delete']['subs']?true:false; $delete_subs = $content['delete']['subs']?true:false;
} }
else elseif (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);
@ -564,7 +564,7 @@ class admin_categories
{ {
$content = array_merge($content,$content[$action.'_popup']); $content = array_merge($content,$content[$action.'_popup']);
} }
$content['nm']['action'] .= '_' . key($content[$action . '_action']); $content['nm']['action'] .= '_' . key($content[$action . '_action'] ?? []);
if(is_array($content[$action])) if(is_array($content[$action]))
{ {
@ -680,7 +680,7 @@ class admin_categories
{ {
$cmd = new admin_cmd_delete_category( $cmd = new admin_cmd_delete_category(
$cat_id, $cat_id,
key($content['button']) == 'delete_sub', key($content['button'] ?? []) == 'delete_sub',
$content['admin_cmd'] $content['admin_cmd']
); );
$cmd->run(); $cmd->run();

View File

@ -70,7 +70,7 @@ class admin_cmds
} }
$content['nm']['actions'] = self::cmd_actions(); $content['nm']['actions'] = self::cmd_actions();
} }
elseif ($content['nm']['rows']['delete']) elseif (!empty($content['nm']['rows']['delete']))
{ {
$id = key($content['nm']['rows']['delete']); $id = key($content['nm']['rows']['delete']);
unset($content['nm']['rows']); unset($content['nm']['rows']);

View File

@ -212,7 +212,7 @@ class admin_mail
public function autoconfig(array $content) public function autoconfig(array $content)
{ {
// user pressed [Skip IMAP] --> jump to SMTP config // user pressed [Skip IMAP] --> jump to SMTP config
if ($content['button'] && key($content['button']) == 'skip_imap') if (!empty($content['button']) && key($content['button']) === 'skip_imap')
{ {
unset($content['button']); unset($content['button']);
if (!isset($content['acc_smtp_host'])) $content['acc_smtp_host'] = ''; // do manual mode right away if (!isset($content['acc_smtp_host'])) $content['acc_smtp_host'] = ''; // do manual mode right away
@ -361,7 +361,7 @@ class admin_mail
*/ */
public function folder(array $content, $msg='', Horde_Imap_Client_Socket $imap=null) public function folder(array $content, $msg='', Horde_Imap_Client_Socket $imap=null)
{ {
if (isset($content['button'])) if (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);
@ -482,7 +482,7 @@ class admin_mail
); );
$content['msg'] = $msg; $content['msg'] = $msg;
if (isset($content['button'])) if (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);
@ -619,7 +619,7 @@ class admin_mail
); );
$content['msg'] = $msg; $content['msg'] = $msg;
if (isset($content['button'])) if (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);
@ -835,7 +835,7 @@ class admin_mail
{ {
$content['called_for'] = (int)$_GET['account_id']; $content['called_for'] = (int)$_GET['account_id'];
$content['accounts'] = iterator_to_array(Mail\Account::search($content['called_for'])); $content['accounts'] = iterator_to_array(Mail\Account::search($content['called_for']));
if ($content['accounts']) if (!empty($content['accounts']))
{ {
$content['acc_id'] = key($content['accounts']); $content['acc_id'] = key($content['accounts']);
//error_log(__METHOD__.__LINE__.'.'.array2string($content['acc_id'])); //error_log(__METHOD__.__LINE__.'.'.array2string($content['acc_id']));
@ -949,7 +949,7 @@ class admin_mail
$tpl->disableElement('notify_save_default', !$is_multiple || !$edit_access); $tpl->disableElement('notify_save_default', !$is_multiple || !$edit_access);
$tpl->disableElement('notify_use_default', !$is_multiple); $tpl->disableElement('notify_use_default', !$is_multiple);
if (isset($content['button'])) if (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);

View File

@ -313,7 +313,7 @@ class calendar_uiforms extends calendar_ui
$msg = $this->export($content['id'],true); $msg = $this->export($content['id'],true);
} }
// delete a recur-exception // delete a recur-exception
if ($content['recur_exception']['delete_exception']) if (!empty($content['recur_exception']['delete_exception']))
{ {
$date = key($content['recur_exception']['delete_exception']); $date = key($content['recur_exception']['delete_exception']);
// eT2 converts time to // eT2 converts time to
@ -338,7 +338,7 @@ class calendar_uiforms extends calendar_ui
$update_type = 'edit'; $update_type = 'edit';
} }
// delete an alarm // delete an alarm
if ($content['alarm']['delete_alarm']) if (!empty($content['alarm']['delete_alarm']))
{ {
$id = key($content['alarm']['delete_alarm']); $id = key($content['alarm']['delete_alarm']);
//echo "delete alarm $id"; _debug_array($content['alarm']['delete_alarm']); //echo "delete alarm $id"; _debug_array($content['alarm']['delete_alarm']);
@ -2250,7 +2250,7 @@ class calendar_uiforms extends calendar_ui
$readonlys['button[reject]'] = $readonlys['button[cancel]'] = true; $readonlys['button[reject]'] = $readonlys['button[cancel]'] = true;
} }
} }
else elseif (!empty($event['button']))
{ {
//_debug_array($event); //_debug_array($event);
$button = key($event['button']); $button = key($event['button']);
@ -2908,7 +2908,7 @@ class calendar_uiforms extends calendar_ui
{ {
throw new Api\Exception\NoPermission\Admin(); throw new Api\Exception\NoPermission\Admin();
} }
if ($_content) if (!empty($_content['button']))
{ {
$button = key($_content['button']); $button = key($_content['button']);
unset($_content['button']); unset($_content['button']);

View File

@ -93,7 +93,7 @@ class calendar_uilist extends calendar_ui
// handle a single button like actions // handle a single button like actions
foreach(array('delete','timesheet','document') as $button) foreach(array('delete','timesheet','document') as $button)
{ {
if ($_content['nm']['rows'][$button]) if (!empty($_content['nm']['rows'][$button]))
{ {
$id = key($_content['nm']['rows'][$button]); $id = key($_content['nm']['rows'][$button]);
$_content['nm']['action'] = $button; $_content['nm']['action'] = $button;

View File

@ -106,11 +106,11 @@ class filemanager_select
} }
} }
$content['mime'] = key($sel_options['mime']); $content['mime'] = key($sel_options['mime'] ?? []);
error_log(array2string($content['options-mime'])); error_log(array2string($content['options-mime']));
} }
} }
elseif(isset($content['button'])) elseif(!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
unset($content['button']); unset($content['button']);
@ -205,7 +205,7 @@ class filemanager_select
$sel_options['mime'] = $content['options-mime']; $sel_options['mime'] = $content['options-mime'];
} }
elseif(isset($content['apps'])) elseif(!empty($content['apps']))
{ {
$app = key($content['apps']); $app = key($content['apps']);
if ($app == 'home') $content['path'] = filemanager_ui::get_home_dir(); if ($app == 'home') $content['path'] = filemanager_ui::get_home_dir();

View File

@ -573,13 +573,11 @@ class filemanager_ui
{ {
$content['nm']['path'] = urldecode($content['nm']['path']); $content['nm']['path'] = urldecode($content['nm']['path']);
} }
if ($content['button']) if (!empty($content['button']))
{ {
if ($content['button']) $button = key($content['button']);
{ unset($content['button']);
$button = key($content['button']);
unset($content['button']);
}
switch ($button) switch ($button)
{ {
case 'upload': case 'upload':
@ -1347,9 +1345,9 @@ class filemanager_ui
} }
} }
} }
elseif ($content['eacl'] && $content['is_owner']) elseif (!empty($content['eacl']) && !empty($content['is_owner']))
{ {
if ($content['eacl']['delete']) if (!empty($content['eacl']['delete']))
{ {
$ino_owner = key($content['eacl']['delete']); $ino_owner = key($content['eacl']['delete']);
list(, $owner) = explode('-',$ino_owner,2); // $owner is a group and starts with a minus! list(, $owner) = explode('-',$ino_owner,2); // $owner is a group and starts with a minus!

View File

@ -94,7 +94,7 @@ class infolog_customfields extends admin_customfields
$create = $fields['create']; $create = $fields['create'];
unset($fields['create']); unset($fields['create']);
if ($fields['delete']) if (!empty($fields['delete']))
{ {
$delete = key($fields['delete']); $delete = key($fields['delete']);
unset($fields['delete']); unset($fields['delete']);
@ -178,7 +178,7 @@ class infolog_customfields extends admin_customfields
$create = $status['create']; $create = $status['create'];
unset($status['create']); unset($status['create']);
if ($status['delete']) if (!empty($status['delete']))
{ {
$delete = key($status['delete']); $delete = key($status['delete']);
unset($status['delete']); unset($status['delete']);
@ -276,7 +276,7 @@ class infolog_customfields extends admin_customfields
unset($this->status[$content['type2']]); unset($this->status[$content['type2']]);
unset($this->status['defaults'][$content['type2']]); unset($this->status['defaults'][$content['type2']]);
unset($this->group_owners[$content['type2']]); unset($this->group_owners[$content['type2']]);
$content['type2'] = key($this->content_types); $content['type2'] = key($this->content_types ?? []);
// save changes to repository // save changes to repository
$this->save_repository(); $this->save_repository();

View File

@ -116,7 +116,7 @@ class infolog_favorite_portlet extends home_favorite_portlet
{ {
$popup =& $values; $popup =& $values;
} }
$values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action']); $values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action'] ?? []);
if($multi_action == 'link') if($multi_action == 'link')
{ {
$popup[$multi_action] = $popup['link']['app'] . ':'.$popup['link']['id']; $popup[$multi_action] = $popup['link']['app'] . ':'.$popup['link']['id'];

View File

@ -831,7 +831,7 @@ class infolog_ui
{ {
$popup =& $values; $popup =& $values;
} }
$values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action']); $values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action'] ?? []);
if($multi_action == 'link') if($multi_action == 'link')
{ {
$popup[$multi_action] = $popup['link']['app'] . ':'.$popup['link']['id']; $popup[$multi_action] = $popup['link']['app'] . ':'.$popup['link']['id'];
@ -2498,7 +2498,7 @@ class infolog_ui
if($content) if($content)
{ {
// Save // Save
$button = key($content['button']); $button = key($content['button'] ?? []);
if($button == 'save' || $button == 'apply') if($button == 'save' || $button == 'apply')
{ {
$this->bo->responsible_edit = array('info_status','info_percent','info_datecompleted'); $this->bo->responsible_edit = array('info_status','info_percent','info_datecompleted');

View File

@ -68,7 +68,7 @@ class preferences_settings
{ {
$is_admin = $content['is_admin'] || $content['type'] != 'user'; $is_admin = $content['is_admin'] || $content['type'] != 'user';
//error_log(__METHOD__."(".array2string($content).")"); //error_log(__METHOD__."(".array2string($content).")");
if ($content['button']) if (!empty($content['button']))
{ {
$button = key($content['button']); $button = key($content['button']);
$appname = $content['old_appname'] ? $content['old_appname'] : 'common'; $appname = $content['old_appname'] ? $content['old_appname'] : 'common';

View File

@ -176,7 +176,7 @@ class resources_acl_ui
$content = array('data' => array()); $content = array('data' => array());
} }
} }
elseif ($content['button']) elseif (!empty($content['button']))
{ {
$cats = new Categories($content['owner'] ? $content['owner'] : Categories::GLOBAL_ACCOUNT,'resources'); $cats = new Categories($content['owner'] ? $content['owner'] : Categories::GLOBAL_ACCOUNT,'resources');

View File

@ -32,7 +32,8 @@ class resources_reserve {
$display_days = $_GET['planner_days'] ? $_GET['planner_days'] : 3; $display_days = $_GET['planner_days'] ? $_GET['planner_days'] : 3;
$planner_date = $_GET['date'] ? $_GET['date'] : strtotime('yesterday',$content['date'] ? $content['date'] : time()); $planner_date = $_GET['date'] ? $_GET['date'] : strtotime('yesterday',$content['date'] ? $content['date'] : time());
if($_GET['confirm']) { if(!empty($_GET['confirm']))
{
$register_code = ($_GET['confirm'] && preg_match('/^[0-9a-f]{32}$/',$_GET['confirm'])) ? $_GET['confirm'] : false; $register_code = ($_GET['confirm'] && preg_match('/^[0-9a-f]{32}$/',$_GET['confirm'])) ? $_GET['confirm'] : false;
if($register_code && $registration = registration_bo::confirm($register_code)) { if($register_code && $registration = registration_bo::confirm($register_code)) {
// Get calendar through link // Get calendar through link
@ -48,17 +49,19 @@ class resources_reserve {
$planner_date = mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start'])); $planner_date = mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start']));
$readonlys['__ALL__'] = true; $readonlys['__ALL__'] = true;
$content = array( $content = array(
'resource' => key($data['participant_types']['r']), 'resource' => key($data['participant_types']['r'] ?? []),
'date' => $data['start'], 'date' => $data['start'],
'time' => $data['start'] - mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start'])), 'time' => $data['start'] - mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start'])),
'quantity' => 0 'quantity' => 0
); );
calendar_so::split_status($data['participant_types']['r'][$content['resource']], $content['quantity'],$role); calendar_so::split_status($data['participant_types']['r'][$content['resource']], $content['quantity'],$role);
$data['msg']= '<div class="confirm">'.lang('Registration confirmed %1', Api\DateTime::to($data['start'])) .'</div>'; $data['msg']= '<div class="confirm">'.lang('Registration confirmed %1', Api\DateTime::to($data['start'])) .'</div>';
} else { }
else
{
$data['msg']= '<div class="confirm">'.lang('Unable to process confirmation.').'</div>'; $data['msg']= '<div class="confirm">'.lang('Unable to process confirmation.').'</div>';
} }
} }
$this->tmpl->read('resources.sitemgr_book'); $this->tmpl->read('resources.sitemgr_book');

View File

@ -38,7 +38,7 @@ $db_backup = new Api\Db\Backup();
$asyncservice = new Api\Asyncservice(); $asyncservice = new Api\Asyncservice();
// download a backup, has to be before any output !!! // download a backup, has to be before any output !!!
if ($_POST['download']) if (!empty($_POST['download']))
{ {
$file = key($_POST['download']); $file = key($_POST['download']);
$file = $db_backup->backup_dir.'/'.basename($file); // basename to now allow to change the dir $file = $db_backup->backup_dir.'/'.basename($file); // basename to now allow to change the dir
@ -166,7 +166,7 @@ if ($_POST['upload'] && is_array($_FILES['uploaded']) && !$_FILES['uploaded']['e
sprintf('%3.1f MB (%d)',$_FILES['uploaded']['size']/(1024*1024),$_FILES['uploaded']['size']).$md5)); sprintf('%3.1f MB (%d)',$_FILES['uploaded']['size']/(1024*1024),$_FILES['uploaded']['size']).$md5));
} }
// delete a backup // delete a backup
if ($_POST['delete']) if (!empty($_POST['delete']))
{ {
$file = key($_POST['delete']); $file = key($_POST['delete']);
$file = $db_backup->backup_dir.'/'.basename($file); // basename to not allow to change the dir $file = $db_backup->backup_dir.'/'.basename($file); // basename to not allow to change the dir
@ -174,7 +174,7 @@ if ($_POST['delete'])
if (unlink($file)) $setup_tpl->set_var('error_msg',lang("backup '%1' deleted",$file)); if (unlink($file)) $setup_tpl->set_var('error_msg',lang("backup '%1' deleted",$file));
} }
// rename a backup // rename a backup
if ($_POST['rename']) if (!empty($_POST['rename']))
{ {
$file = key($_POST['rename']); $file = key($_POST['rename']);
$new_name = $_POST['new_name'][$file]; $new_name = $_POST['new_name'][$file];
@ -190,7 +190,7 @@ if ($_POST['rename'])
} }
} }
// restore a backup // restore a backup
if ($_POST['restore']) if (!empty($_POST['restore']))
{ {
$file = key($_POST['restore']); $file = key($_POST['restore']);
$file = $db_backup->backup_dir.'/'.basename($file); // basename to not allow to change the dir $file = $db_backup->backup_dir.'/'.basename($file); // basename to not allow to change the dir
@ -217,12 +217,12 @@ if ($_POST['restore'])
} }
} }
// create a new scheduled backup // create a new scheduled backup
if ($_POST['schedule']) if (!empty($_POST['schedule']))
{ {
$asyncservice->set_timer($_POST['times'],'db_backup-'.implode(':',$_POST['times']),'admin.admin_db_backup.do_backup',''); $asyncservice->set_timer($_POST['times'],'db_backup-'.implode(':',$_POST['times']),'admin.admin_db_backup.do_backup','');
} }
// cancel a scheduled backup // cancel a scheduled backup
if (is_array($_POST['cancel'])) if (!empty($_POST['cancel']) && is_array($_POST['cancel']))
{ {
$id = key($_POST['cancel']); $id = key($_POST['cancel']);
$asyncservice->cancel_timer($id); $asyncservice->cancel_timer($id);

View File

@ -879,8 +879,8 @@ class timesheet_ui extends timesheet_bo
{ {
$etpl = new Etemplate('timesheet.index'); $etpl = new Etemplate('timesheet.index');
if ($_GET['msg']) $msg = $_GET['msg']; if (!empty($_GET['msg'])) $msg = $_GET['msg'];
if ($content['nm']['rows']['delete']) if (!empty($content['nm']['rows']['delete']))
{ {
$ts_id = key($content['nm']['rows']['delete']); $ts_id = key($content['nm']['rows']['delete']);
if ($this->delete($ts_id)) if ($this->delete($ts_id))
@ -892,13 +892,13 @@ class timesheet_ui extends timesheet_bo
$msg = lang('Error deleting the entry!!!'); $msg = lang('Error deleting the entry!!!');
} }
} }
if (is_array($content) && isset($content['nm']['rows']['document'])) // handle insert in default document button like an action if (is_array($content) && !empty($content['nm']['rows']['document'])) // handle insert in default document button like an action
{ {
$id = @key($content['nm']['rows']['document']); $id = @key($content['nm']['rows']['document']);
$content['nm']['action'] = 'document'; $content['nm']['action'] = 'document';
$content['nm']['selected'] = array($id); $content['nm']['selected'] = array($id);
} }
if ($content['nm']['action']) if (!empty($content['nm']['action']))
{ {
// remove sum-* rows from checked rows // remove sum-* rows from checked rows
$content['nm']['selected'] = array_filter($content['nm']['selected'], function($id) $content['nm']['selected'] = array_filter($content['nm']['selected'], function($id)
@ -1309,7 +1309,7 @@ class timesheet_ui extends timesheet_bo
$GLOBALS['egw']->redirect_link('/admin/index.php', null, 'admin'); $GLOBALS['egw']->redirect_link('/admin/index.php', null, 'admin');
} }
} }
if (isset($content['statis']['delete'])) if (!empty($content['statis']['delete']))
{ {
$id = key($content['statis']['delete']); $id = key($content['statis']['delete']);
if (isset($this->status_labels_config[$id])) if (isset($this->status_labels_config[$id]))