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 b837a0235e
commit d2c85cfe86
16 changed files with 55 additions and 54 deletions

View File

@ -183,12 +183,12 @@ class addressbook_ui extends addressbook_bo
$msg = '';
}
}
if ($_content['nm']['rows']['infolog'])
if (!empty($_content['nm']['rows']['infolog']))
{
$org = key($_content['nm']['rows']['infolog']);
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']);
}
@ -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)
$this->check_shared_with($content['shared']);
$button = @key($content['button']);
$button = @key($content['button'] ?? []);
unset($content['button']);
$content['private'] = (int) ($content['owner'] && substr($content['owner'],-1) == 'p');
$content['owner'] = (string) (int) $content['owner'];
@ -2988,7 +2988,7 @@ class addressbook_ui extends addressbook_bo
if(is_array($content))
{
$button = is_array($content['button']) ? key($content['button']) : "";
$button = key($content['button'] ?? []);
switch ($button)
{
case 'vcard':
@ -3071,7 +3071,7 @@ class addressbook_ui extends addressbook_bo
$_GET['contact_id'] = array_shift($rows);
$_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)))
{
Egw::redirect_link('/index.php',array(

View File

@ -139,7 +139,7 @@ class admin_categories
$button = 'delete';
$delete_subs = $content['delete']['subs']?true:false;
}
else
elseif (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
@ -564,7 +564,7 @@ class admin_categories
{
$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]))
{
@ -680,7 +680,7 @@ class admin_categories
{
$cmd = new admin_cmd_delete_category(
$cat_id,
key($content['button']) == 'delete_sub',
key($content['button'] ?? []) == 'delete_sub',
$content['admin_cmd']
);
$cmd->run();

View File

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

View File

@ -212,7 +212,7 @@ class admin_mail
public function autoconfig(array $content)
{
// 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']);
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)
{
if (isset($content['button']))
if (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
@ -482,7 +482,7 @@ class admin_mail
);
$content['msg'] = $msg;
if (isset($content['button']))
if (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
@ -619,7 +619,7 @@ class admin_mail
);
$content['msg'] = $msg;
if (isset($content['button']))
if (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
@ -835,7 +835,7 @@ class admin_mail
{
$content['called_for'] = (int)$_GET['account_id'];
$content['accounts'] = iterator_to_array(Mail\Account::search($content['called_for']));
if ($content['accounts'])
if (!empty($content['accounts']))
{
$content['acc_id'] = key($content['accounts']);
//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_use_default', !$is_multiple);
if (isset($content['button']))
if (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);

View File

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

View File

@ -93,7 +93,7 @@ class calendar_uilist extends calendar_ui
// handle a single button like actions
foreach(array('delete','timesheet','document') as $button)
{
if ($_content['nm']['rows'][$button])
if (!empty($_content['nm']['rows'][$button]))
{
$id = key($_content['nm']['rows'][$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']));
}
}
elseif(isset($content['button']))
elseif(!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
@ -205,7 +205,7 @@ class filemanager_select
$sel_options['mime'] = $content['options-mime'];
}
elseif(isset($content['apps']))
elseif(!empty($content['apps']))
{
$app = key($content['apps']);
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']);
}
if ($content['button'])
{
if ($content['button'])
if (!empty($content['button']))
{
$button = key($content['button']);
unset($content['button']);
}
switch ($button)
{
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']);
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'];
unset($fields['create']);
if ($fields['delete'])
if (!empty($fields['delete']))
{
$delete = key($fields['delete']);
unset($fields['delete']);
@ -178,7 +178,7 @@ class infolog_customfields extends admin_customfields
$create = $status['create'];
unset($status['create']);
if ($status['delete'])
if (!empty($status['delete']))
{
$delete = key($status['delete']);
unset($status['delete']);
@ -276,7 +276,7 @@ class infolog_customfields extends admin_customfields
unset($this->status[$content['type2']]);
unset($this->status['defaults'][$content['type2']]);
unset($this->group_owners[$content['type2']]);
$content['type2'] = key($this->content_types);
$content['type2'] = key($this->content_types ?? []);
// save changes to repository
$this->save_repository();

View File

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

View File

@ -831,7 +831,7 @@ class infolog_ui
{
$popup =& $values;
}
$values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action']);
$values['nm']['multi_action'] .= '_' . key($popup[$multi_action . '_action'] ?? []);
if($multi_action == 'link')
{
$popup[$multi_action] = $popup['link']['app'] . ':'.$popup['link']['id'];
@ -2498,7 +2498,7 @@ class infolog_ui
if($content)
{
// Save
$button = key($content['button']);
$button = key($content['button'] ?? []);
if($button == 'save' || $button == 'apply')
{
$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';
//error_log(__METHOD__."(".array2string($content).")");
if ($content['button'])
if (!empty($content['button']))
{
$button = key($content['button']);
$appname = $content['old_appname'] ? $content['old_appname'] : 'common';

View File

@ -176,7 +176,7 @@ class resources_acl_ui
$content = array('data' => array());
}
}
elseif ($content['button'])
elseif (!empty($content['button']))
{
$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;
$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;
if($register_code && $registration = registration_bo::confirm($register_code)) {
// Get calendar through link
@ -48,14 +49,16 @@ class resources_reserve {
$planner_date = mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start']));
$readonlys['__ALL__'] = true;
$content = array(
'resource' => key($data['participant_types']['r']),
'resource' => key($data['participant_types']['r'] ?? []),
'date' => $data['start'],
'time' => $data['start'] - mktime(0,0,0,date('m',$data['start']),date('d',$data['start']),date('Y',$data['start'])),
'quantity' => 0
);
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>';
} else {
}
else
{
$data['msg']= '<div class="confirm">'.lang('Unable to process confirmation.').'</div>';
}
}

View File

@ -38,7 +38,7 @@ $db_backup = new Api\Db\Backup();
$asyncservice = new Api\Asyncservice();
// download a backup, has to be before any output !!!
if ($_POST['download'])
if (!empty($_POST['download']))
{
$file = key($_POST['download']);
$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));
}
// delete a backup
if ($_POST['delete'])
if (!empty($_POST['delete']))
{
$file = key($_POST['delete']);
$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));
}
// rename a backup
if ($_POST['rename'])
if (!empty($_POST['rename']))
{
$file = key($_POST['rename']);
$new_name = $_POST['new_name'][$file];
@ -190,7 +190,7 @@ if ($_POST['rename'])
}
}
// restore a backup
if ($_POST['restore'])
if (!empty($_POST['restore']))
{
$file = key($_POST['restore']);
$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
if ($_POST['schedule'])
if (!empty($_POST['schedule']))
{
$asyncservice->set_timer($_POST['times'],'db_backup-'.implode(':',$_POST['times']),'admin.admin_db_backup.do_backup','');
}
// cancel a scheduled backup
if (is_array($_POST['cancel']))
if (!empty($_POST['cancel']) && is_array($_POST['cancel']))
{
$id = key($_POST['cancel']);
$asyncservice->cancel_timer($id);

View File

@ -879,8 +879,8 @@ class timesheet_ui extends timesheet_bo
{
$etpl = new Etemplate('timesheet.index');
if ($_GET['msg']) $msg = $_GET['msg'];
if ($content['nm']['rows']['delete'])
if (!empty($_GET['msg'])) $msg = $_GET['msg'];
if (!empty($content['nm']['rows']['delete']))
{
$ts_id = key($content['nm']['rows']['delete']);
if ($this->delete($ts_id))
@ -892,13 +892,13 @@ class timesheet_ui extends timesheet_bo
$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']);
$content['nm']['action'] = 'document';
$content['nm']['selected'] = array($id);
}
if ($content['nm']['action'])
if (!empty($content['nm']['action']))
{
// remove sum-* rows from checked rows
$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');
}
}
if (isset($content['statis']['delete']))
if (!empty($content['statis']['delete']))
{
$id = key($content['statis']['delete']);
if (isset($this->status_labels_config[$id]))