MDL-75951 core: Update box/spout to address PHP 8.1 deprecation

This change is a direct pull from an upstream fix:
64a09a748d

This addresses the deprecation of auto_detect_line_endings in PHP 8.1.
This commit is contained in:
Andrew Nicols 2022-11-25 22:41:09 +08:00
parent 7f5f04dbc2
commit 743fc68b4f
2 changed files with 35 additions and 4 deletions

View File

@ -4,6 +4,11 @@ Description of Spout library import
* Only include the src/Spout directory.
* Update lib/thirdpartylibs.xml with the latest version.
2022/11/25
----------
Imported PHP 8.1 patch from OpenSpout/OpenSpout 4.8.1
https://github.com/openspout/openspout/commit/64a09a748d04992d63b38712599a9d8742bd77f7
2022/10/27
----------
Changes:
@ -36,4 +41,4 @@ by Ankit Agarwal <ankit.agrr@gmail.com>
2016/09/20
----------
Updated to v2.6.0 (MDL-56012)
by Adrian Greeve <adrian@moodle.com>
by Adrian Greeve <adrian@moodle.com>

View File

@ -3,6 +3,9 @@
namespace Box\Spout\Reader\CSV;
use Box\Spout\Common\Exception\IOException;
use Box\Spout\Common\Helper\GlobalFunctionsHelper;
use Box\Spout\Common\Manager\OptionsManagerInterface;
use Box\Spout\Reader\Common\Creator\InternalEntityFactoryInterface;
use Box\Spout\Reader\Common\Entity\Options;
use Box\Spout\Reader\CSV\Creator\InternalEntityFactory;
use Box\Spout\Reader\ReaderAbstract;
@ -22,6 +25,23 @@ class Reader extends ReaderAbstract
/** @var string Original value for the "auto_detect_line_endings" INI value */
protected $originalAutoDetectLineEndings;
/** @var bool Whether the code is running with PHP >= 8.1 */
private $isRunningAtLeastPhp81;
/**
* @param OptionsManagerInterface $optionsManager
* @param GlobalFunctionsHelper $globalFunctionsHelper
* @param InternalEntityFactoryInterface $entityFactory
*/
public function __construct(
OptionsManagerInterface $optionsManager,
GlobalFunctionsHelper $globalFunctionsHelper,
InternalEntityFactoryInterface $entityFactory
) {
parent::__construct($optionsManager, $globalFunctionsHelper, $entityFactory);
$this->isRunningAtLeastPhp81 = \version_compare(PHP_VERSION, '8.1.0') >= 0;
}
/**
* Sets the field delimiter for the CSV.
* Needs to be called before opening the reader.
@ -84,8 +104,11 @@ class Reader extends ReaderAbstract
*/
protected function openReader($filePath)
{
$this->originalAutoDetectLineEndings = \ini_get('auto_detect_line_endings');
\ini_set('auto_detect_line_endings', '1');
// "auto_detect_line_endings" is deprecated in PHP 8.1
if (!$this->isRunningAtLeastPhp81) {
$this->originalAutoDetectLineEndings = \ini_get('auto_detect_line_endings');
\ini_set('auto_detect_line_endings', '1');
}
$this->filePointer = $this->globalFunctionsHelper->fopen($filePath, 'r');
if (!$this->filePointer) {
@ -123,6 +146,9 @@ class Reader extends ReaderAbstract
$this->globalFunctionsHelper->fclose($this->filePointer);
}
\ini_set('auto_detect_line_endings', $this->originalAutoDetectLineEndings);
// "auto_detect_line_endings" is deprecated in PHP 8.1
if (!$this->isRunningAtLeastPhp81) {
\ini_set('auto_detect_line_endings', $this->originalAutoDetectLineEndings);
}
}
}