X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FPHPVersionCheck.php;h=3f08a37cf41ba51a916ca7c4ba81bddcb51c6fa4;hb=a2acc632dc62994870692df399f00824397c3607;hp=aee2a0cb92844bc54e9c44d85d441e60fb00d82d;hpb=f96aaf6833d052d10d46af47540fff995362433e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/PHPVersionCheck.php b/includes/PHPVersionCheck.php index aee2a0cb92..3f08a37cf4 100644 --- a/includes/PHPVersionCheck.php +++ b/includes/PHPVersionCheck.php @@ -20,15 +20,23 @@ // phpcs:disable Generic.Arrays.DisallowLongArraySyntax,PSR2.Classes.PropertyDeclaration,MediaWiki.Usage.DirUsage // phpcs:disable Squiz.Scope.MemberVarScope.Missing,Squiz.Scope.MethodScope.Missing +// @phan-file-suppress PhanPluginDuplicateConditionalNullCoalescing /** * Check PHP Version, as well as for composer dependencies in entry points, * and display something vaguely comprehensible in the event of a totally * unrecoverable error. + * + * @note Since we can't rely on anything external, the minimum PHP versions + * and MW current version are hardcoded in this class. + * + * @note This class uses setter methods instead of a constructor so that + * it can be compatible with PHP 4, PHP 5 and PHP 7 (without warnings). + * * @class */ class PHPVersionCheck { /* @var string The number of the MediaWiki version used. */ - var $mwVersion = '1.33'; + var $mwVersion = '1.34'; /* @var array A mapping of PHP functions to PHP extensions. */ var $functionsExtensionsMapping = array( @@ -41,29 +49,35 @@ class PHPVersionCheck { ); /** - * @var string Which entry point we are protecting. One of: - * - index.php - * - load.php - * - api.php - * - mw-config/index.php - * - cli + * @var string $format The format used for errors. One of "text" or "html" + */ + var $format = 'text'; + + /** + * @var string $scriptPath */ - var $entryPoint = null; + var $scriptPath = '/'; /** - * @param string $entryPoint Which entry point we are protecting. One of: - * - index.php - * - load.php - * - api.php - * - mw-config/index.php - * - cli + * Set the format used for errors. + * + * @param string $format One of "text" or "html" */ - function setEntryPoint( $entryPoint ) { - $this->entryPoint = $entryPoint; + function setFormat( $format ) { + $this->format = $format; } /** - * Returns the version of the installed PHP implementation. + * Set the script path used for images in HTML-formatted errors. + * + * @param string $scriptPath + */ + function setScriptPath( $scriptPath ) { + $this->scriptPath = $scriptPath; + } + + /** + * Return the version of the installed PHP implementation. * * @param string $impl By default, the function returns the info of the currently installed PHP * implementation. Using this parameter the caller can decide, what version info will be @@ -97,7 +111,7 @@ class PHPVersionCheck { 'version' => PHP_VERSION, 'vendor' => 'the PHP Group', 'upstreamSupported' => '5.6.0', - 'minSupported' => '7.0.0', + 'minSupported' => '7.0.13', 'upgradeURL' => 'https://secure.php.net/downloads.php', ); } @@ -236,14 +250,8 @@ HTML; * @return string */ function getIndexErrorOutput( $title, $longHtml, $shortText ) { - $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] ); - if ( $this->entryPoint == 'mw-config/index.php' ) { - $dirname = dirname( $pathinfo['dirname'] ); - } else { - $dirname = $pathinfo['dirname']; - } $encLogo = - htmlspecialchars( str_replace( '//', '/', $dirname . '/' ) . + htmlspecialchars( str_replace( '//', '/', $this->scriptPath . '/' ) . 'resources/assets/mediawiki.png' ); $shortHtml = htmlspecialchars( $shortText ); @@ -308,23 +316,13 @@ HTML; * @param string $longHtml */ function triggerError( $title, $shortText, $longText, $longHtml ) { - switch ( $this->entryPoint ) { - case 'cli': - $finalOutput = $longText; - break; - case 'index.php': - case 'mw-config/index.php': - $this->outputHTMLHeader(); - $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText ); - break; - case 'load.php': - $this->outputHTMLHeader(); - $finalOutput = "/* $shortText */"; - break; - default: - $this->outputHTMLHeader(); - // Handle everything that's not index.php - $finalOutput = $shortText; + if ( $this->format === 'html' ) { + // Used by index.php and mw-config/index.php + $this->outputHTMLHeader(); + $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText ); + } else { + // Used by Maintenance.php (CLI) + $finalOutput = $longText; } echo "$finalOutput\n"; @@ -336,12 +334,13 @@ HTML; * Check PHP version and that external dependencies are installed, and * display an informative error if either condition is not satisfied. * - * @note Since we can't rely on anything, the minimum PHP versions and MW current - * version are hardcoded here. + * @param string $format One of "text" or "html" + * @param string $scriptPath Used when an error is formatted as HTML. */ -function wfEntryPointCheck( $entryPoint ) { +function wfEntryPointCheck( $format = 'text', $scriptPath = '/' ) { $phpVersionCheck = new PHPVersionCheck(); - $phpVersionCheck->setEntryPoint( $entryPoint ); + $phpVersionCheck->setFormat( $format ); + $phpVersionCheck->setScriptPath( $scriptPath ); $phpVersionCheck->checkRequiredPHPVersion(); $phpVersionCheck->checkVendorExistence(); $phpVersionCheck->checkExtensionExistence();