}
}
- $defaultProtoWithoutSlashes = substr( $defaultProto, 0, -2 );
+ $defaultProtoWithoutSlashes = $defaultProto !== null ? substr( $defaultProto, 0, -2 ) : '';
if ( substr( $url, 0, 2 ) == '//' ) {
$url = $defaultProtoWithoutSlashes . $url;
if ( isset( $ctx['forwarded_for'] ) ||
isset( $ctx['client_ip'] ) ||
isset( $ctx['from'] ) ) {
+ // @phan-suppress-next-line PhanTypeArraySuspiciousNullable
$ctx['proxy'] = $_SERVER['REMOTE_ADDR'];
}
*
* @param array $cprefs Client's acceptable type list
* @param array $sprefs Server's offered types
- * @return string
+ * @return string|null
*
* @todo FIXME: Doesn't handle params like 'text/plain; charset=UTF-8'
* XXX: generalize to negotiate other stuff
+ * @todo The function appears unused. Is it worth to keep?
*/
function wfNegotiateType( $cprefs, $sprefs ) {
$combine = [];
*/
function wfPercent( $nr, $acc = 2, $round = true ) {
$ret = sprintf( "%.${acc}f", $nr );
- return $round ? round( $ret, $acc ) . '%' : "$ret%";
+ return $round ? round( (float)$ret, $acc ) . '%' : "$ret%";
}
/**
* including errors from limit.sh
* - profileMethod: By default this function will profile based on the calling
* method. Set this to a string for an alternative method to profile from
+ * @phan-param array{duplicateStderr?:bool,profileMethod?:string} $options
*
* @return string Collected stdout as a string
* @deprecated since 1.30 use class MediaWiki\Shell\Shell
* @param array $options Associative array of options:
* 'php': The path to the php executable
* 'wrapper': Path to a PHP wrapper to handle the maintenance script
+ * @phan-param array{php?:string,wrapper?:string} $options
* @return string
*/
function wfShellWikiCmd( $script, array $parameters = [], array $options = [] ) {
function wfTransactionalTimeLimit() {
global $wgTransactionalTimeLimit;
- $timeLimit = ini_get( 'max_execution_time' );
+ $timeLimit = (int)ini_get( 'max_execution_time' );
// Note that CLI scripts use 0
if ( $timeLimit > 0 && $wgTransactionalTimeLimit > $timeLimit ) {
set_time_limit( $wgTransactionalTimeLimit );