From 49da5267a908cec8fe6af937c758bbb261336d39 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Sat, 27 Aug 2016 21:38:41 +0200 Subject: [PATCH] Use temporary file as cache --- apps/theming/lib/Controller/ThemingController.php | 12 ++++++++++-- .../tests/Controller/ThemingControllerTest.php | 8 ++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index faf59e4bb1..24fa10e89a 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -39,6 +39,7 @@ use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; use OCA\Theming\Util; +use OCP\ITempManager; /** * Class ThemingController @@ -60,6 +61,8 @@ class ThemingController extends Controller { private $config; /** @var IRootFolder */ private $rootFolder; + /** @var ITempManager */ + private $tempManager; /** * ThemingController constructor. @@ -72,6 +75,7 @@ class ThemingController extends Controller { * @param ITimeFactory $timeFactory * @param IL10N $l * @param IRootFolder $rootFolder + * @param ITempManager $tempManager */ public function __construct( $appName, @@ -81,7 +85,8 @@ class ThemingController extends Controller { Util $util, ITimeFactory $timeFactory, IL10N $l, - IRootFolder $rootFolder + IRootFolder $rootFolder, + ITempManager $tempManager ) { parent::__construct($appName, $request); @@ -91,6 +96,7 @@ class ThemingController extends Controller { $this->l = $l; $this->config = $config; $this->rootFolder = $rootFolder; + $this->tempManager = $tempManager; } /** @@ -199,14 +205,16 @@ class ThemingController extends Controller { // Optimize the image since some people may upload images that will be // either to big or are not progressive rendering. + $tmpFile = $this->tempManager->getTemporaryFile(); if(function_exists('imagescale')) { // FIXME: Once PHP 5.5.0 is a requirement the above check can be removed $image = imagescale($image, 1920); } imageinterlace($image, 1); - imagejpeg($image, $target->fopen('w'), 75); + imagejpeg($image, $tmpFile, 75); imagedestroy($image); + stream_copy_to_stream(fopen($tmpFile, 'r'), $target->fopen('w')); $this->template->set('backgroundMime', $newBackgroundLogo['type']); $name = $newBackgroundLogo['name']; } diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 3e49fa9206..60f1ecbf6f 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -32,6 +32,7 @@ use OCP\Files\IRootFolder; use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; +use OCP\ITempManager; use Test\TestCase; use OCA\Theming\ThemingDefaults; @@ -52,6 +53,8 @@ class ThemingControllerTest extends TestCase { private $themingController; /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ private $rootFolder; + /** @var ITempManager */ + private $tempManager; public function setUp() { $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); @@ -64,10 +67,10 @@ class ThemingControllerTest extends TestCase { ->getMock(); $this->l10n = $this->getMockBuilder('OCP\IL10N')->getMock(); $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock(); - $this->timeFactory->expects($this->any()) ->method('getTime') ->willReturn(123); + $this->tempManager = \OC::$server->getTempManager(); $this->themingController = new ThemingController( 'theming', @@ -77,7 +80,8 @@ class ThemingControllerTest extends TestCase { $this->util, $this->timeFactory, $this->l10n, - $this->rootFolder + $this->rootFolder, + $this->tempManager ); return parent::setUp();