From a7c103ad009eb6ab172fc8099ecbf9a1b8be5e5b Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Mon, 18 Feb 2013 13:17:23 +0100 Subject: [PATCH] (bug 45069) wfParseUrl() no longer produces a PHP notice if passed a "mailto:" URL without address Calling wfParseUrl( 'mailto:' ) or wfParseUrl( 'mailto:?subject=...' ) was resulting in the following PHP errors: PHP Notice: Undefined index: path in includes/GlobalFunctions.php on line 813 PHP Notice: Undefined index: path in includes/GlobalFunctions.php on line 814 Now the existence of that key is checked and if missing an empty string is set so for consistency of the returned value. The fix is based on the snippet provided on https://www.mediawiki.org/wiki/Thread:Project:Support_desk/GLobafunctions.php_wfParseUrl_choking_on_url Change-Id: Ife07d6e2a364a7cafda387cf7ed9cd71c2b68ef8 --- RELEASE-NOTES-1.21 | 2 ++ includes/GlobalFunctions.php | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/RELEASE-NOTES-1.21 b/RELEASE-NOTES-1.21 index 7e062189b6..f49a4b01a8 100644 --- a/RELEASE-NOTES-1.21 +++ b/RELEASE-NOTES-1.21 @@ -169,6 +169,8 @@ production. * (bug 43964) Invalid value of "link" parameter in no longer produces a fatal error. * (bug 44775) The username field is not pre-filled when creating an account. +* (bug 45069) wfParseUrl() no longer produces a PHP notice if passed a "mailto:" + URL without address === API changes in 1.21 === * prop=revisions can now report the contentmodel and contentformat. diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 3fa816fc80..739003a0af 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -809,9 +809,14 @@ function wfParseUrl( $url ) { if ( !isset( $bits['host'] ) ) { $bits['host'] = ''; - /* parse_url loses the third / for file:///c:/ urls (but not on variants) */ - if ( substr( $bits['path'], 0, 1 ) !== '/' ) { - $bits['path'] = '/' . $bits['path']; + // bug 45069 + if ( isset( $bits['path'] ) ) { + /* parse_url loses the third / for file:///c:/ urls (but not on variants) */ + if ( substr( $bits['path'], 0, 1 ) !== '/' ) { + $bits['path'] = '/' . $bits['path']; + } + } else { + $bits['path'] = ''; } } -- 2.20.1