54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
 | 
						|
 | 
						|
use PhpOffice\PhpSpreadsheet\Shared\File;
 | 
						|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
 | 
						|
use PhpOffice\PhpSpreadsheet\Writer\Html;
 | 
						|
use PhpOffice\PhpSpreadsheetTests\Functional;
 | 
						|
 | 
						|
class CallbackTest extends Functional\AbstractFunctional
 | 
						|
{
 | 
						|
    public function yellowBody(string $html): string
 | 
						|
    {
 | 
						|
        $newstyle = <<<EOF
 | 
						|
<style type='text/css'>
 | 
						|
body {
 | 
						|
    background-color: yellow;
 | 
						|
}
 | 
						|
</style>
 | 
						|
 | 
						|
EOF;
 | 
						|
 | 
						|
        return preg_replace('@</head>@', "$newstyle</head>", $html);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSetAndReset(): void
 | 
						|
    {
 | 
						|
        $spreadsheet = new Spreadsheet();
 | 
						|
        $sheet = $spreadsheet->getActiveSheet();
 | 
						|
        $sheet->setCellValue('A1', '1');
 | 
						|
 | 
						|
        $writer = new Html($spreadsheet);
 | 
						|
        $html1 = $writer->generateHTMLall();
 | 
						|
        $writer->setEditHtmlCallback([$this, 'yellowBody']);
 | 
						|
        $html2 = $writer->generateHTMLall();
 | 
						|
        $writer->setEditHtmlCallback(null);
 | 
						|
        $html3 = $writer->generateHTMLall();
 | 
						|
 | 
						|
        self::assertFalse(strpos($html1, 'background-color: yellow'));
 | 
						|
        self::assertNotFalse(strpos($html2, 'background-color: yellow'));
 | 
						|
        self::assertFalse(strpos($html3, 'background-color: yellow'));
 | 
						|
        self::assertEquals($html3, $html1);
 | 
						|
 | 
						|
        $writer->setEditHtmlCallback([$this, 'yellowBody']);
 | 
						|
        $oufil = tempnam(File::sysGetTempDir(), 'phpspreadsheet-test');
 | 
						|
        $writer->save($oufil);
 | 
						|
        $html4 = file_get_contents($oufil);
 | 
						|
        unlink($oufil);
 | 
						|
        self::assertNotFalse(strpos($html4, 'background-color: yellow'));
 | 
						|
 | 
						|
        $this->writeAndReload($spreadsheet, 'Html');
 | 
						|
    }
 | 
						|
}
 |