Move the include_path finding code to Fallback class.

Checking availability when calling, as only UserMailer uses it.
This commit is contained in:
Platonides 2011-02-26 22:37:58 +00:00
parent 36999e2bf9
commit ab3f4cf4b3
2 changed files with 22 additions and 7 deletions

View file

@ -173,5 +173,22 @@ class Fallback {
return false;
}
}
/**
* Fallback implementation of stream_resolve_include_path()
* Native stream_resolve_include_path is available for PHP 5 >= 5.3.2
* @param $filename String
* @return String
*/
public static function stream_resolve_include_path( $filename ) {
$pathArray = explode( PATH_SEPARATOR, get_include_path() );
foreach ( $pathArray as $path ) {
$fullFilename = $path . DIRECTORY_SEPARATOR . $filename;
if ( file_exists( $fullFilename ) ) {
return $fullFilename;
}
}
return false;
}
}
}

View file

@ -127,12 +127,10 @@ class UserMailer {
if ( is_array( $wgSMTP ) ) {
$found = false;
$pathArray = explode( PATH_SEPARATOR, get_include_path() );
foreach ( $pathArray as $path ) {
if ( file_exists( $path . DIRECTORY_SEPARATOR . 'Mail.php' ) ) {
$found = true;
break;
}
if ( function_exists( 'stream_resolve_include_path' ) ) {
$found = stream_resolve_include_path( 'Mail.php' );
} else {
$found = Fallback::stream_resolve_include_path( 'Mail.php' );
}
if ( !$found ) {
throw new MWException( 'PEAR mail package is not installed' );