forked from extern/egroupware
fix big chunk of PHP 8.0 warnings
This commit is contained in:
parent
3f5af3eeb2
commit
b1af39be37
@ -166,8 +166,8 @@ class Sql
|
||||
$data['account_id'] = -$data['account_id'];
|
||||
$data['mailAllowed'] = true;
|
||||
}
|
||||
if (!$data['account_firstname']) $data['account_firstname'] = $data['account_lid'];
|
||||
if (!$data['account_lastname'])
|
||||
if (empty($data['account_firstname'])) $data['account_firstname'] = $data['account_lid'];
|
||||
if (empty($data['account_lastname']))
|
||||
{
|
||||
$data['account_lastname'] = $data['account_type'] == 'g' ? 'Group' : 'User';
|
||||
// if we call lang() before the translation-class is correctly setup,
|
||||
@ -177,7 +177,7 @@ class Sql
|
||||
$data['account_lastname'] = lang($data['account_lastname']);
|
||||
}
|
||||
}
|
||||
if (!$data['account_fullname']) $data['account_fullname'] = $data['account_firstname'].' '.$data['account_lastname'];
|
||||
if (empty($data['account_fullname'])) $data['account_fullname'] = $data['account_firstname'].' '.$data['account_lastname'];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ class Acl
|
||||
*/
|
||||
function __construct($account_id = null)
|
||||
{
|
||||
if (is_object($GLOBALS['egw_setup']->db))
|
||||
if (isset($GLOBALS['egw_setup']) && is_object($GLOBALS['egw_setup']->db))
|
||||
{
|
||||
$this->db = $GLOBALS['egw_setup']->db;
|
||||
}
|
||||
@ -481,6 +481,10 @@ class Acl
|
||||
'acl_appname' => $appname,
|
||||
),__LINE__,__FILE__) as $row)
|
||||
{
|
||||
if (!isset($rights[$row['acl_location']]))
|
||||
{
|
||||
$rights[$row['acl_location']] = 0;
|
||||
}
|
||||
$rights[$row['acl_location']] |= $row['acl_rights'];
|
||||
}
|
||||
return $rights;
|
||||
|
@ -232,7 +232,7 @@ class Asyncservice
|
||||
{
|
||||
if ((string)$t == '*') $t = '*/1';
|
||||
|
||||
list($one,$inc) = $arr = explode('/',$t);
|
||||
list($one,$inc) = $arr = explode('/',$t)+[null,null];
|
||||
|
||||
if (!(is_numeric($one) && count($arr) == 1 ||
|
||||
count($arr) == 2 && is_numeric($inc)))
|
||||
@ -247,7 +247,7 @@ class Asyncservice
|
||||
}
|
||||
else
|
||||
{
|
||||
list($min,$max) = $arr = explode('-',$one);
|
||||
list($min,$max) = $arr = explode('-',$one)+[null,null];
|
||||
if (empty($one) || $one == '*')
|
||||
{
|
||||
$min = $min_unit[$u];
|
||||
|
@ -207,8 +207,8 @@ class Contacts extends Contacts\Storage
|
||||
$this->default_private = substr($GLOBALS['egw_info']['user']['preferences']['addressbook']['add_default'] ?? '',-1) == 'p';
|
||||
if ($this->default_addressbook > 0 && $this->default_addressbook != $this->user &&
|
||||
($this->default_private ||
|
||||
$this->default_addressbook == (int)$GLOBALS['egw']->preferences->forced['addressbook']['add_default'] ||
|
||||
$this->default_addressbook == (int)$GLOBALS['egw']->preferences->default['addressbook']['add_default']))
|
||||
$this->default_addressbook == (int)($GLOBALS['egw']->preferences->forced['addressbook']['add_default'] ?? 0) ||
|
||||
$this->default_addressbook == (int)($GLOBALS['egw']->preferences->default['addressbook']['add_default'] ?? 0)))
|
||||
{
|
||||
$this->default_addressbook = $this->user; // admin set a default or forced pref for personal addressbook
|
||||
}
|
||||
|
@ -1601,7 +1601,7 @@ class Db
|
||||
}
|
||||
if (empty($column_definitions))
|
||||
{
|
||||
$column_definitions = $this->column_definitions;
|
||||
$column_definitions = $this->column_definitions ?? null;
|
||||
}
|
||||
if ($this->Debug) echo "<p>db::column_data_implode('$glue',".print_r($array,True).",'$use_key',".print_r($only,True).",<pre>".print_r($column_definitions,True)."</pre>\n";
|
||||
|
||||
@ -2164,7 +2164,7 @@ class Db
|
||||
}
|
||||
if (is_array($where))
|
||||
{
|
||||
$where = $this->column_data_implode(' AND ',$where,True,False,$table_def['fd']);
|
||||
$where = $this->column_data_implode(' AND ',$where,True,False, $table_def ? $table_def['fd'] : null);
|
||||
}
|
||||
if (self::$tablealiases && isset(self::$tablealiases[$table]))
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ class Applications
|
||||
*/
|
||||
function __construct($account_id = '')
|
||||
{
|
||||
if (is_object($GLOBALS['egw_setup']) && is_object($GLOBALS['egw_setup']->db))
|
||||
if (isset($GLOBALS['egw_setup']) && is_object($GLOBALS['egw_setup']->db))
|
||||
{
|
||||
$this->db = $GLOBALS['egw_setup']->db;
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ class Grid extends Box
|
||||
{
|
||||
$cname = self::form_name($cname, $this->id, $expand);
|
||||
}
|
||||
if($cname && (!empty($expand['cname']) && $expand['cname'] !== $cname || !$expand['cname']))
|
||||
if ($cname && (empty($expand['cname']) || $expand['cname'] !== $cname))
|
||||
{
|
||||
$expand['cont'] =& self::get_array(self::$request->content, $cname);
|
||||
$expand['cname'] = $cname;
|
||||
|
@ -87,7 +87,7 @@ class Link extends Etemplate\Widget
|
||||
// ToDo: implement on client-side
|
||||
if (!$attrs['help']) self::setElementAttribute($form_name, 'help', 'view this linked entry in its application');
|
||||
|
||||
if($attrs['type'] == 'link-list')
|
||||
if (!empty($attrs['type']) && $attrs['type'] === 'link-list')
|
||||
{
|
||||
$app = $value['to_app'];
|
||||
$id = $value['to_id'];
|
||||
|
@ -317,10 +317,10 @@ class Select extends Etemplate\Widget
|
||||
{
|
||||
// Check selection preference, we may be able to skip reading some data
|
||||
$select_pref = $GLOBALS['egw_info']['user']['preferences']['common']['account_selection'];
|
||||
if($this->attrs['type'] == 'select-account' && !$GLOBALS['egw_info']['user']['apps']['admin'] && $select_pref == 'none')
|
||||
if($this->attrs['type'] == 'select-account' && empty($GLOBALS['egw_info']['user']['apps']['admin']) && $select_pref == 'none')
|
||||
{
|
||||
// Preserve but do not send the value if preference is 'none'
|
||||
self::$request->preserv[$this->id] = self::$request->content[$this->id];
|
||||
self::$request->preserv[$this->id] = self::$request->content[$this->id] ?? null;
|
||||
unset(self::$request->content[$this->id]);
|
||||
$this->attrs['readonly'] = true;
|
||||
}
|
||||
@ -335,7 +335,7 @@ class Select extends Etemplate\Widget
|
||||
if (!isset($form_names_done[$form_name]) &&
|
||||
($type_options = self::typeOptions($this,
|
||||
// typeOptions thinks # of rows is the first thing in options
|
||||
(!empty($this->attrs['rows']) && !empty($this->attrs['options']) && strpos($this->attrs['options'], $this->attrs['rows']) !== 0 ? $this->attrs['rows'].','.$this->attrs['options'] : $this->attrs['options']),
|
||||
(!empty($this->attrs['rows']) && !empty($this->attrs['options']) && strpos($this->attrs['options'], $this->attrs['rows']) !== 0 ? $this->attrs['rows'].','.$this->attrs['options'] : ($this->attrs['options']??null)),
|
||||
$no_lang, $this->attrs['readonly'] ?? false, self::get_array(self::$request->content, $form_name), $form_name)))
|
||||
{
|
||||
self::fix_encoded_options($type_options);
|
||||
|
@ -85,7 +85,7 @@ class Tabbox extends Etemplate\Widget
|
||||
{
|
||||
foreach($this->children[1]->children as $tab)
|
||||
{
|
||||
if($readonlys[$tab->id])
|
||||
if (!empty($readonlys[$tab->id]))
|
||||
{
|
||||
$tab->attrs['disabled'] = $readonlys[$tab->id];
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class Vfs extends File
|
||||
$form_name = self::form_name($cname, $this->id, $expand ? $expand : array('cont'=>self::$request->content));
|
||||
if (!empty($this->attrs['path']))
|
||||
{
|
||||
$path = self::expand_name($this->attrs['path'],$expand['c'], $expand['row'], $expand['c_'], $expand['row_'], $expand['cont']);
|
||||
$path = self::expand_name($this->attrs['path'], $expand['c']??null, $expand['row'], $expand['c_']??null, $expand['row_']??null, $expand['cont']);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -70,17 +70,17 @@ class Html
|
||||
{
|
||||
$additionalQuote="";//at the end, ...
|
||||
// only one " at the end is found. chance is, it is not belonging to the URL
|
||||
if ($match[5]==';' && (strlen($match[4])-6) >=0 && strpos($match[4],'"',strlen($match[4])-6)!==false && strpos(substr($match[4],0,strlen($match[4])-6),'"')===false)
|
||||
if (!empty($match[5]) && $match[5]===';' && (strlen($match[4])-6) >=0 && strpos($match[4],'"',strlen($match[4])-6)!==false && strpos(substr($match[4],0,strlen($match[4])-6),'"')===false)
|
||||
{
|
||||
$match[4] = substr($match[4],0,strpos($match[4],'"',strlen($match[4])-6));
|
||||
$additionalQuote = """;
|
||||
}
|
||||
// if there is quoted stuff within the URL then we have at least one more " in match[4], so chance is the last " is matched by the one within
|
||||
if ($match[5]==';' && (strlen($match[4])-6) >=0 && strpos($match[4],'"',strlen($match[4])-6)!==false && strpos(substr($match[4],0,strlen($match[4])-6),'"')!==false)
|
||||
if (!empty($match[5]) && $match[5]===';' && (strlen($match[4])-6) >=0 && strpos($match[4],'"',strlen($match[4])-6)!==false && strpos(substr($match[4],0,strlen($match[4])-6),'"')!==false)
|
||||
{
|
||||
$match[4] .= $match[5];
|
||||
}
|
||||
if ($match[5]==';'&&$match[4]==""")
|
||||
if (!empty($match[5]) && $match[5]===';' && $match[4]===""")
|
||||
{
|
||||
$match[4] ='';
|
||||
$additionalQuote = """;
|
||||
@ -101,18 +101,18 @@ class Html
|
||||
$result4 = preg_replace_callback( $Expr, function ($match) {
|
||||
//error_log(__METHOD__.__LINE__.array2string($match));
|
||||
$match += [null,null,null,null];
|
||||
if ($match[4]==';' && (strlen($match[3])-4) >=0 && strpos($match[3],'>',strlen($match[3])-4)!==false)
|
||||
if (!empty($match[4]) && $match[4]===';' && (strlen($match[3])-4) >=0 && strpos($match[3],'>',strlen($match[3])-4)!==false)
|
||||
{
|
||||
$match[3] = substr($match[3],0,strpos($match[3],'>',strlen($match[3])-4));
|
||||
$match[4] = ">";
|
||||
}
|
||||
if ($match[4]==';'&&$match[3]==">")
|
||||
if (!empty($match[4]) && $match[4]===';' && $match[3]==">")
|
||||
{
|
||||
$match[3] ='';
|
||||
$match[4] = ">";
|
||||
}
|
||||
//error_log(__METHOD__.__LINE__.array2string($match));
|
||||
return $match[1]."<a href=\"https://www".$match[2].$match[3]."\" target=\"_blank\">"."www".$match[2].$match[3]."</a>".$match[4];
|
||||
return $match[1]."<a href=\"https://www".$match[2].$match[3]."\" target=\"_blank\">"."www".$match[2].$match[3]."</a>".($match[4]??'');
|
||||
}, $result3 );
|
||||
}
|
||||
return $result4;
|
||||
|
@ -182,7 +182,7 @@ class Image
|
||||
}
|
||||
$app_map =& $map['vfs'];
|
||||
if (true) $app_map = array();
|
||||
if (($dir = $GLOBALS['egw_info']['server']['vfs_image_dir']) && Vfs::file_exists($dir) && Vfs::is_readable($dir))
|
||||
if (!empty($dir = $GLOBALS['egw_info']['server']['vfs_image_dir']) && Vfs::file_exists($dir) && Vfs::is_readable($dir))
|
||||
{
|
||||
foreach(Vfs::find($dir) as $img)
|
||||
{
|
||||
|
@ -1527,7 +1527,7 @@ class Link extends Link\Storage
|
||||
{
|
||||
self::notify('update',$link['app'],$link['id'],$app,$id,$link_id,$data);
|
||||
}
|
||||
if($data[Link::OLD_LINK_TITLE] && Json\Response::isJSONResponse())
|
||||
if (!empty($data[Link::OLD_LINK_TITLE]) && Json\Response::isJSONResponse())
|
||||
{
|
||||
// Update client side with new title
|
||||
Json\Response::get()->apply('egw.link_title_callback',array(array($app => array($id => self::title($app, $id)))));
|
||||
|
@ -213,7 +213,7 @@ class Mail
|
||||
}
|
||||
if ($_oldImapServerObject instanceof Mail\Imap)
|
||||
{
|
||||
if (!is_object(self::$instances[$_profileID]))
|
||||
if (!isset(self::$instances[$_profileID]))
|
||||
{
|
||||
self::$instances[$_profileID] = new Mail('utf-8',false,$_profileID,false,$_reuseCache);
|
||||
}
|
||||
@ -1113,7 +1113,7 @@ class Mail
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($this->icServer->acc_folder_sent));
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($this->icServer->acc_folder_draft));
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($this->icServer->acc_folder_template));
|
||||
self::$specialUseFolders = $_specialUseFolders[$this->icServer->ImapServerId];
|
||||
self::$specialUseFolders = $_specialUseFolders[$this->icServer->ImapServerId] ?? [];
|
||||
if (isset($_specialUseFolders[$this->icServer->ImapServerId]) && !empty($_specialUseFolders[$this->icServer->ImapServerId]))
|
||||
return $_specialUseFolders[$this->icServer->ImapServerId];
|
||||
$_specialUseFolders[$this->icServer->ImapServerId]=array();
|
||||
|
@ -154,10 +154,10 @@ class Imap extends Horde_Imap_Client_Socket implements Imap\PushIface
|
||||
$this->params = $params;
|
||||
$this->isAdminConnection = $_adminConnection;
|
||||
$this->enableSieve = (boolean)$this->params['acc_sieve_enabled'];
|
||||
$this->loginType = $this->params['acc_imap_logintype'];
|
||||
$this->domainName = $this->params['acc_domain'];
|
||||
$this->loginType = $this->params['acc_imap_logintype'] ?? null;
|
||||
$this->domainName = $this->params['acc_domain'] ?? null;
|
||||
|
||||
if (is_null($_timeout)) $_timeout = $this->params['acc_imap_timeout']?$this->params['acc_imap_timeout']:self::getTimeOut ();
|
||||
if (is_null($_timeout)) $_timeout = $this->params['acc_imap_timeout']??self::getTimeOut ();
|
||||
|
||||
// Horde use locale for translation of error messages
|
||||
// need to set LC_CTYPE for charachter classification (eg. Umlauts)
|
||||
|
@ -1554,7 +1554,7 @@ class Session
|
||||
{
|
||||
foreach(explode('&', $extravars) as $expr)
|
||||
{
|
||||
list($var,$val) = explode('=', $expr,2);
|
||||
list($var,$val) = explode('=', $expr,2)+[null,null];
|
||||
if (strpos($val,'%26') != false) $val = str_replace('%26','&',$val); // make sure to not double encode &
|
||||
if (substr($var,-2) == '[]')
|
||||
{
|
||||
|
@ -965,7 +965,7 @@ class Base
|
||||
}
|
||||
}
|
||||
$num_rows = 0; // as spec. in max_matches in the user-prefs
|
||||
if (is_array($start)) list($start,$num_rows) = $start;
|
||||
if (is_array($start)) list($start,$num_rows) = $start+[null,null];
|
||||
|
||||
// fix GROUP BY clause to contain all non-aggregate selected columns
|
||||
if ($order_by && stripos($order_by,'GROUP BY') !== false)
|
||||
@ -1106,8 +1106,8 @@ class Base
|
||||
$query[$db_col] = '';
|
||||
}
|
||||
}
|
||||
elseif ($wildcard || $criteria[$col][0] == '!' ||
|
||||
is_string($criteria[$col]) && (strpos($criteria[$col],'*')!==false || strpos($criteria[$col],'?')!==false))
|
||||
elseif ($wildcard || is_string($criteria[$col]) && ($criteria[$col][0] == '!' ||
|
||||
(strpos($criteria[$col],'*') !== false || strpos($criteria[$col],'?') !== false)))
|
||||
{
|
||||
// if search pattern alread contains a wildcard, do NOT add further ones automatic
|
||||
if (is_string($criteria[$col]) && (strpos($criteria[$col],'*')!==false || strpos($criteria[$col],'?')!==false))
|
||||
|
@ -62,7 +62,7 @@ class History
|
||||
$this->appname = $appname ?: $GLOBALS['egw_info']['flags']['currentapp'];
|
||||
$this->user = $user ?: $GLOBALS['egw_info']['user']['account_id'];
|
||||
|
||||
if(is_object($GLOBALS['egw_setup']->db))
|
||||
if (isset($GLOBALS['egw_setup']) && is_object($GLOBALS['egw_setup']->db))
|
||||
{
|
||||
$this->db = $GLOBALS['egw_setup']->db;
|
||||
}
|
||||
|
@ -2832,7 +2832,7 @@ abstract class Merge
|
||||
);
|
||||
|
||||
// Check for a configured preferred directory
|
||||
if(($pref = $GLOBALS['egw_info']['user']['preferences'][$this->get_app()][Merge::PREF_STORE_LOCATION]) && Vfs::is_writable($pref))
|
||||
if(!empty($pref = $GLOBALS['egw_info']['user']['preferences'][$this->get_app()][Merge::PREF_STORE_LOCATION]) && Vfs::is_writable($pref))
|
||||
{
|
||||
$target = $pref;
|
||||
}
|
||||
|
@ -435,7 +435,7 @@ abstract class Tracking
|
||||
$this->historylog = new History($this->app, $this->user);
|
||||
}
|
||||
// log user-agent and session-action
|
||||
if ($GLOBALS['egw_info']['server']['log_user_agent_action'] && ($changed_fields || !$old))
|
||||
if (!empty($GLOBALS['egw_info']['server']['log_user_agent_action']) && ($changed_fields || !$old))
|
||||
{
|
||||
$this->historylog->add('user_agent_action', $data[$this->id_field],
|
||||
$_SERVER['HTTP_USER_AGENT'], $_SESSION[Api\Session::EGW_SESSION_VAR]['session_action']);
|
||||
@ -509,7 +509,7 @@ abstract class Tracking
|
||||
$changed_fields = array();
|
||||
foreach($this->field2history as $name => $status)
|
||||
{
|
||||
if (!$old[$name] && !$data[$name]) continue; // treat all sorts of empty equally
|
||||
if (empty($old[$name]) && empty($data[$name])) continue; // treat all sorts of empty equally
|
||||
|
||||
if ($name[0] == '#' && !isset($data[$name])) continue; // no set customfields are not stored, therefore not changed
|
||||
|
||||
@ -544,7 +544,7 @@ abstract class Tracking
|
||||
}
|
||||
foreach($data as $name => $value)
|
||||
{
|
||||
if ($name[0] == '#' && $name[1] == '#' && $value !== $old[$name])
|
||||
if (isset($name[0]) && $name[0] == '#' && $name[1] == '#' && $value !== $old[$name])
|
||||
{
|
||||
$changed_fields[] = $name;
|
||||
}
|
||||
@ -843,7 +843,7 @@ abstract class Tracking
|
||||
$notification->set_reply_to($reply_to);
|
||||
$notification->set_subject($subject);
|
||||
$notification->set_links(array($link));
|
||||
$notification->set_popupdata($link['app'], $link);
|
||||
$notification->set_popupdata($link?$link['app']:null, $link);
|
||||
if ($attachments && is_array($attachments))
|
||||
{
|
||||
$notification->set_attachments($attachments);
|
||||
@ -938,9 +938,9 @@ abstract class Tracking
|
||||
$sender = $name ? $name.' <'.$email.'>' : $email;
|
||||
}
|
||||
}
|
||||
elseif(!$sender)
|
||||
elseif (!$sender)
|
||||
{
|
||||
$sender = 'EGroupware '.lang($this->app).' <noreply@'.$GLOBALS['egw_info']['server']['mail_suffix'].'>';
|
||||
$sender = 'EGroupware '.lang($this->app).' <noreply@'.($GLOBALS['egw_info']['server']['mail_suffix']??'nodomain.org').'>';
|
||||
}
|
||||
//echo "<p>".__METHOD__."()='".htmlspecialchars($sender)."'</p>\n";
|
||||
return $sender;
|
||||
|
@ -283,7 +283,7 @@ class Translation
|
||||
self::add_app($apps);
|
||||
}
|
||||
$phrase = static::translate($message, $vars);
|
||||
if($old_lang)
|
||||
if (!empty($old_lang))
|
||||
{
|
||||
$GLOBALS['egw_info']['user']['preferences']['common']['lang'] = $old_lang;
|
||||
self::init(true);
|
||||
|
@ -427,7 +427,7 @@ class Vfs extends Vfs\Base
|
||||
self::_check_add($options,$path,$result);
|
||||
}
|
||||
if ($is_dir && (!isset($options['maxdepth']) || ($options['maxdepth'] > 0 &&
|
||||
$options['depth'] < $options['maxdepth'])) &&
|
||||
($options['depth'] ?? 0) < $options['maxdepth'])) &&
|
||||
($dir = @opendir($path, $context)))
|
||||
{
|
||||
while(($fname = readdir($dir)) !== false)
|
||||
@ -1296,7 +1296,7 @@ class Vfs extends Vfs\Base
|
||||
$b = explode('/',$b_str);
|
||||
$ret = implode('/',array_merge($a,$b));
|
||||
}
|
||||
return $ret.($query ? (strpos($url,'?')===false ? '?' : '&').$query : '');
|
||||
return $ret.(isset($query) ? (strpos($url,'?')===false ? '?' : '&').$query : '');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2043,7 +2043,7 @@ class Vfs extends Vfs\Base
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret = ($context ? copy($tmp_name, self::PREFIX.$target, $context) :
|
||||
$ret = (isset($context) ? copy($tmp_name, self::PREFIX.$target, $context) :
|
||||
copy($tmp_name, self::PREFIX.$target)) ?
|
||||
self::stat($target) : false;
|
||||
}
|
||||
|
@ -573,7 +573,7 @@ class Base
|
||||
{
|
||||
return __CLASS__;
|
||||
}
|
||||
list($app, $app_scheme) = explode('.', $scheme);
|
||||
list($app, $app_scheme) = explode('.', $scheme)+[null,null];
|
||||
foreach(array(
|
||||
empty($app_scheme) ? 'EGroupware\\Api\\Vfs\\' . ucfirst($scheme) . '\\StreamWrapper' : // streamwrapper in Api\Vfs
|
||||
'EGroupware\\' . ucfirst($app) . '\\Vfs\\' . ucfirst($app_scheme) . '\\StreamWrapper',
|
||||
|
@ -262,7 +262,7 @@ class StreamWrapper extends LinksParent
|
||||
if($path[0] != '/')
|
||||
{
|
||||
if (strpos($path,'?') !== false) $query = Vfs::parse_url($path,PHP_URL_QUERY);
|
||||
$path = Vfs::parse_url($path,PHP_URL_PATH).($query ? '?'.$query : '');
|
||||
$path = Vfs::parse_url($path,PHP_URL_PATH).(!empty($query) ? '?'.$query : '');
|
||||
}
|
||||
list(,$apps,$app,$id) = explode('/',$path);
|
||||
|
||||
|
@ -310,7 +310,7 @@ class StreamWrapper extends Api\Db\Pdo implements Vfs\StreamWrapperIface
|
||||
{
|
||||
if (self::LOG_LEVEL > 1) error_log(__METHOD__." fopen (may create a directory? mkdir) ($this->opened_fs_id,$mode,$options)");
|
||||
// if creating a new file as root eg. via (docker exec) filemanager/cli.php do NOT create files unreadable by webserver
|
||||
if ($new_file && function_exists('posix_getuid') && !posix_getuid())
|
||||
if (!empty($new_file) && function_exists('posix_getuid') && !posix_getuid())
|
||||
{
|
||||
umask(0666);
|
||||
}
|
||||
@ -1628,7 +1628,7 @@ GROUP BY A.fs_id';
|
||||
// first check our stat-cache for the ids
|
||||
foreach(self::$stat_cache as $path => $stat)
|
||||
{
|
||||
if (($key = array_search($stat['fs_id'],$ids)) !== false)
|
||||
if ($stat && ($key = array_search($stat['fs_id'],$ids)) !== false)
|
||||
{
|
||||
$pathes[$stat['fs_id']] = $path;
|
||||
unset($ids[$key]);
|
||||
@ -1948,7 +1948,7 @@ GROUP BY A.fs_id';
|
||||
}
|
||||
if (!is_array($path_ids))
|
||||
{
|
||||
$props = $props[$row['fs_id']] ? $props[$row['fs_id']] : array(); // return empty array for no props
|
||||
$props = isset($row) && !empty($props[$row['fs_id']]) ? $props[$row['fs_id']] : []; // return empty array for no props
|
||||
}
|
||||
elseif ($props && isset($stat) && is_array($id2path = self::id2path(array_keys($props)))) // need to map fs_id's to pathes
|
||||
{
|
||||
|
@ -209,7 +209,7 @@ class StreamWrapper extends Base implements StreamWrapperIface
|
||||
// are we requested to treat the opened file as new file (only for files opened NOT for reading)
|
||||
if ($mode[0] != 'r' && !$this->opened_stream_is_new && $this->context &&
|
||||
($opts = stream_context_get_options($this->context)) &&
|
||||
$opts['options'][self::SCHEME]['treat_as_new'])
|
||||
!empty($opts['options'][self::SCHEME]['treat_as_new']))
|
||||
{
|
||||
$this->opened_stream_is_new = true;
|
||||
//error_log(__METHOD__."($path,$mode,...) stat=$stat, context=".array2string($opts)." --> ".array2string($this->opened_stream_is_new));
|
||||
@ -994,7 +994,7 @@ class StreamWrapper extends Base implements StreamWrapperIface
|
||||
if (Vfs::$user != $GLOBALS['egw_info']['user']['account_id'])
|
||||
{
|
||||
$prefs = new Api\Preferences(Vfs::$user);
|
||||
$vfs_fstab = $prefs->data['common']['vfs_fstab'];
|
||||
$vfs_fstab = $prefs->data['common']['vfs_fstab'] ?? [];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -117,7 +117,7 @@ trait UserContextTrait
|
||||
}
|
||||
|
||||
// if we check writable and have a readonly mount --> return false, as backends dont know about r/o url parameter
|
||||
if ($check == Vfs::WRITABLE && Vfs\StreamWrapper::url_is_readonly($stat['url']))
|
||||
if ($check == Vfs::WRITABLE && Vfs\StreamWrapper::url_is_readonly($stat['url'] ?? null))
|
||||
{
|
||||
//error_log(__METHOD__."(path=$path, check=writable, ...) failed because mount is readonly");
|
||||
return false;
|
||||
@ -125,7 +125,7 @@ trait UserContextTrait
|
||||
|
||||
// check if we use an EGroupwre stream wrapper, or a stock php one
|
||||
// if it's not an EGroupware one, we can NOT use uid, gid and mode!
|
||||
if (($scheme = Vfs::parse_url($stat['url'], PHP_URL_SCHEME)) && !(class_exists(Vfs::scheme2class($scheme))))
|
||||
if (($scheme = Vfs::parse_url($stat['url'] ?? null, PHP_URL_SCHEME)) && !(class_exists(Vfs::scheme2class($scheme))))
|
||||
{
|
||||
switch($check)
|
||||
{
|
||||
|
@ -193,7 +193,7 @@ class filemanager_merge extends Api\Storage\Merge
|
||||
if(is_array($link))
|
||||
{
|
||||
// Directories have their internal protocol in path here
|
||||
if($link['path'] && strpos($link['path'], '://') !== false) $link['path'] = $file['path'];
|
||||
if (!empty($link['path']) && strpos($link['path'], '://') !== false) $link['path'] = $file['path'];
|
||||
$link = Api\Session::link('/index.php', $link);
|
||||
}
|
||||
else
|
||||
@ -215,7 +215,7 @@ class filemanager_merge extends Api\Storage\Merge
|
||||
if(!$value) $value = '';
|
||||
$info['$$' . ($prefix ? $prefix . '/' : '') . $key . '$$'] = $value;
|
||||
}
|
||||
if($app_placeholders)
|
||||
if (!empty($app_placeholders) && is_array($app_placeholders))
|
||||
{
|
||||
$info = array_merge($app_placeholders, $info);
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
list($c_fields, $c_selects, $links, $methods) = self::$cf_parse_cache[$appname];
|
||||
|
||||
// Add in any fields that are keys to another app
|
||||
foreach((array)$fields['links'] as $link_field => $app)
|
||||
foreach($fields['links'] ?? [] as $link_field => $app)
|
||||
{
|
||||
if(is_numeric($link_field)) continue;
|
||||
$links[$link_field] = $app;
|
||||
@ -332,7 +332,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
// Not quite a recursive merge, since only one level
|
||||
foreach($fields as $type => &$list)
|
||||
{
|
||||
if($c_fields[$type])
|
||||
if (!empty($c_fields[$type]))
|
||||
{
|
||||
$list = array_merge($c_fields[$type], $list);
|
||||
unset($c_fields[$type]);
|
||||
@ -341,7 +341,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
$fields += $c_fields;
|
||||
$selects += $c_selects;
|
||||
}
|
||||
foreach((array)$fields['select'] as $name)
|
||||
foreach($fields['select'] ?? [] as $name)
|
||||
{
|
||||
if($record->$name != null && is_array($selects) && $selects[$name])
|
||||
{
|
||||
@ -366,7 +366,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
$record->$name = '';
|
||||
}
|
||||
}
|
||||
foreach((array)$fields['links'] as $name) {
|
||||
foreach($fields['links'] ?? [] as $name) {
|
||||
if($record->$name) {
|
||||
if(is_numeric($record->$name) && !$links[$name]) {
|
||||
$link = Link::get_link($record->$name);
|
||||
@ -387,7 +387,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
$record->$name = '';
|
||||
}
|
||||
}
|
||||
foreach((array)$fields['select-account'] as $name) {
|
||||
foreach($fields['select-account'] ?? [] as $name) {
|
||||
// Compare against null to deal with empty arrays
|
||||
if ($record->$name !== null) {
|
||||
if(is_array($record->$name)) {
|
||||
@ -405,25 +405,25 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
$record->$name = '';
|
||||
}
|
||||
}
|
||||
foreach((array)$fields['select-bool'] as $name) {
|
||||
foreach($fields['select-bool'] ?? [] as $name) {
|
||||
if($record->$name !== null) {
|
||||
$record->$name = $record->$name ? lang('Yes') : lang('No');
|
||||
}
|
||||
}
|
||||
foreach((array)$fields['date-time'] as $name) {
|
||||
foreach($fields['date-time'] ?? [] as $name) {
|
||||
//if ($record->$name) $record->$name = date('Y-m-d H:i:s',$record->$name); // Standard date format
|
||||
if ($record->$name && !is_numeric($record->$name)) $record->$name = strtotime($record->$name); // Custom fields stored as string
|
||||
if ($record->$name && is_numeric($record->$name)) $record->$name = date($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'] . ' '.
|
||||
($GLOBALS['egw_info']['user']['preferences']['common']['timeformat'] == '24' ? 'H:i:s' : 'h:i:s a'),$record->$name); // User date format
|
||||
if (!$record->$name) $record->$name = '';
|
||||
}
|
||||
foreach((array)$fields['date'] as $name) {
|
||||
foreach($fields['date'] ?? [] as $name) {
|
||||
//if ($record->$name) $record->$name = date('Y-m-d',$record->$name); // Standard date format
|
||||
if ($record->$name && !is_numeric($record->$name)) $record->$name = strtotime($record->$name); // Custom fields stored as string
|
||||
if ($record->$name && is_numeric($record->$name)) $record->$name = date($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'], $record->$name); // User date format
|
||||
if (!$record->$name) $record->$name = '';
|
||||
}
|
||||
foreach((array)$fields['float'] as $name)
|
||||
foreach($fields['float'] ?? [] as $name)
|
||||
{
|
||||
static $dec_separator,$thousands_separator;
|
||||
if (is_null($dec_separator))
|
||||
@ -445,7 +445,7 @@ class importexport_export_csv implements importexport_iface_export_record
|
||||
}
|
||||
|
||||
// Some custom methods for conversion
|
||||
foreach((array)$methods as $name => $method) {
|
||||
foreach($methods ?? [] as $name => $method) {
|
||||
if ($record->$name)
|
||||
{
|
||||
if(is_string($method))
|
||||
|
@ -784,9 +784,9 @@ class infolog_so
|
||||
'event' => 'calendar'
|
||||
);
|
||||
// query children independent of action
|
||||
if ((string)$query['col_filter']['info_id_parent'] === '')
|
||||
if (empty($query['col_filter']['info_id_parent']))
|
||||
{
|
||||
$action = isset($action2app[$query['action']]) ? $action2app[$query['action']] : $query['action'];
|
||||
$action = isset($action2app[$query['action']]) ? $action2app[$query['action']] : ($query['action'] ?? null);
|
||||
if ($action)
|
||||
{
|
||||
$links = Link\Storage::get_links($action=='sp'?'infolog':$action,
|
||||
@ -833,10 +833,10 @@ class infolog_so
|
||||
$ordermethod = 'ORDER BY info_datemodified DESC'; // newest first
|
||||
}
|
||||
$filtermethod = $no_acl ? '1=1' : $this->aclFilter($query['filter']);
|
||||
if (!$query['col_filter']['info_status']) $filtermethod .= $this->statusFilter($query['filter']);
|
||||
if (empty($query['col_filter']['info_status'])) $filtermethod .= $this->statusFilter($query['filter']);
|
||||
$filtermethod .= $this->dateFilter($query['filter']);
|
||||
$cfcolfilter=0;
|
||||
if (is_array($query['col_filter']))
|
||||
if (isset($query['col_filter']) && is_array($query['col_filter']))
|
||||
{
|
||||
foreach($query['col_filter'] as $col => $data)
|
||||
{
|
||||
@ -894,15 +894,15 @@ class infolog_so
|
||||
}
|
||||
//echo "<p>filtermethod='$filtermethod'</p>";
|
||||
|
||||
if ((int)$query['cat_id'])
|
||||
if (!empty($query['cat_id']) && (int)$query['cat_id'])
|
||||
{
|
||||
$categories = new Api\Categories('','infolog');
|
||||
$cats = $categories->return_all_children((int)$query['cat_id']);
|
||||
$filtermethod .= ' AND info_cat'.(count($cats)>1? ' IN ('.implode(',',$cats).') ' : '='.(int)$query['cat_id']);
|
||||
}
|
||||
$join = $distinct = '';
|
||||
if ($query['query']) $query['search'] = $query['query']; // allow both names
|
||||
if ($query['search']) // we search in _from, _subject, _des and _extra_value for $query
|
||||
if (!empty($query['query'])) $query['search'] = $query['query']; // allow both names
|
||||
if (!empty($query['search'])) // we search in _from, _subject, _des and _extra_value for $query
|
||||
{
|
||||
$columns = array('info_from','info_location','info_subject');
|
||||
// at the moment MaxDB 7.5 cant cast nor search text columns, it's suppost to change in 7.6
|
||||
@ -924,7 +924,7 @@ class infolog_so
|
||||
$join .= " LEFT JOIN $this->users_table attendees ON main.info_id=attendees.info_id AND attendees.info_res_deleted IS NULL";
|
||||
$group_by = ' GROUP BY main.info_id ';
|
||||
// check if $query['append'] already contains a GROUP BY clause
|
||||
if (stripos($query['append'], 'group by') !== false)
|
||||
if (!empty($query['append']) && stripos($query['append'], 'group by') !== false)
|
||||
{
|
||||
$query['append'] .= ',main.info_id ';
|
||||
}
|
||||
@ -943,7 +943,7 @@ class infolog_so
|
||||
$ids = array( );
|
||||
if ($action == '' || $action == 'sp' || count($links))
|
||||
{
|
||||
$sql_query = "FROM $this->info_table main $join WHERE ($filtermethod $pid $sql_query) $link_extra";
|
||||
$sql_query = "FROM $this->info_table main $join WHERE ($filtermethod $pid ".($sql_query ?? '').') '.($link_extra??'');
|
||||
#error_log("infolog.so.search:\n" . print_r($sql_query, true));
|
||||
|
||||
if ($this->db->Type == 'mysql' && (float)$this->db->ServerInfo['version'] >= 4.0)
|
||||
@ -984,7 +984,7 @@ class infolog_so
|
||||
$cols .= ','.$this->db->group_concat('attendees.info_res_attendee').' AS info_cc';
|
||||
$rs = $this->db->query($sql='SELECT '.$mysql_calc_rows.' '.$distinct.' '.$cols.' '.$info_customfield.' '.$sql_query.
|
||||
$query['append'].$ordermethod,__LINE__,__FILE__,
|
||||
(int) $query['start'],isset($query['start']) ? (int) $query['num_rows'] : -1,false,Api\Db::FETCH_ASSOC);
|
||||
(int)($query['start']??0),isset($query['start']) ? (int) $query['num_rows'] : -1,false,Api\Db::FETCH_ASSOC);
|
||||
//echo "<p>db::query('$sql',,,".(int)$query['start'].','.(isset($query['start']) ? (int) $query['num_rows'] : -1).")</p>\n";
|
||||
|
||||
if ($mysql_calc_rows)
|
||||
@ -1011,7 +1011,7 @@ class infolog_so
|
||||
$ids[$info['info_id']] = $info;
|
||||
}
|
||||
static $index_load_cfs = null;
|
||||
if (is_null($index_load_cfs) && $query['col_filter']['info_type'])
|
||||
if (is_null($index_load_cfs) && !empty($query['col_filter']['info_type']))
|
||||
{
|
||||
$config_data = Api\Config::read('infolog');
|
||||
$index_load_cfs = $config_data['index_load_cfs'];
|
||||
|
Loading…
Reference in New Issue
Block a user