Skip to content

Commit

Permalink
Fix for issue #1277 (#1279)
Browse files Browse the repository at this point in the history
* Fix for issue #1277

* Fix CS

* Refactor fix for issue #1277

* Add missing return types

* Add withoutManipulations() helper method for Conversion.php

* Add test for the withoutManipulations method

* Add test for performManipulations early return

* Fix style
  • Loading branch information
nicolasbeauvais authored and freekmurze committed Nov 19, 2018
1 parent b375d35 commit 089ee07
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 11 deletions.
23 changes: 15 additions & 8 deletions src/Conversion/Conversion.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,20 @@ public function getManipulations(): Manipulations
return $this->manipulations;
}

public function removeManipulation(string $manipulationName)
public function removeManipulation(string $manipulationName) : self
{
$this->manipulations->removeManipulation($manipulationName);

return $this;
}

public function withoutManipulations() : self
{
$this->manipulations = new Manipulations();

return $this;
}

public function __call($name, $arguments)
{
if (! method_exists($this->manipulations, $name)) {
Expand All @@ -106,7 +113,7 @@ public function __call($name, $arguments)
*
* @return $this
*/
public function setManipulations($manipulations)
public function setManipulations($manipulations) : self
{
if ($manipulations instanceof Manipulations) {
$this->manipulations = $this->manipulations->mergeManipulations($manipulations);
Expand All @@ -126,7 +133,7 @@ public function setManipulations($manipulations)
*
* @return $this
*/
public function addAsFirstManipulations(Manipulations $manipulations)
public function addAsFirstManipulations(Manipulations $manipulations) : self
{
$manipulationSequence = $manipulations->getManipulationSequence()->toArray();

Expand All @@ -144,7 +151,7 @@ public function addAsFirstManipulations(Manipulations $manipulations)
*
* @return $this
*/
public function performOnCollections(...$collectionNames)
public function performOnCollections(...$collectionNames) : self
{
$this->performOnCollections = $collectionNames;

Expand Down Expand Up @@ -174,7 +181,7 @@ public function shouldBePerformedOn(string $collectionName): bool
*
* @return $this
*/
public function queued()
public function queued() : self
{
$this->performOnQueue = true;

Expand All @@ -186,7 +193,7 @@ public function queued()
*
* @return $this
*/
public function nonQueued()
public function nonQueued() : self
{
$this->performOnQueue = false;

Expand All @@ -198,7 +205,7 @@ public function nonQueued()
*
* @return $this
*/
public function nonOptimized()
public function nonOptimized() : self
{
$this->removeManipulation('optimize');

Expand All @@ -208,7 +215,7 @@ public function nonOptimized()
/**
* When creating the converted image, responsive images will be created as well.
*/
public function withResponsiveImages()
public function withResponsiveImages() : self
{
$this->generateResponsiveImages = true;

Expand Down
10 changes: 7 additions & 3 deletions src/FileManipulator.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,13 @@ public function performConversions(ConversionCollection $conversions, Media $med

$copiedOriginalFile = $imageGenerator->convert($copiedOriginalFile, $conversion);

$conversionResult = $this->performConversion($media, $conversion, $copiedOriginalFile);
$manipulationResult = $this->performManipulations($media, $conversion, $copiedOriginalFile);

$newFileName = pathinfo($media->file_name, PATHINFO_FILENAME).
'-'.$conversion->getName().
'.'.$conversion->getResultExtension(pathinfo($copiedOriginalFile, PATHINFO_EXTENSION));

$renamedFile = MediaLibraryFileHelper::renameInDirectory($conversionResult, $newFileName);
$renamedFile = MediaLibraryFileHelper::renameInDirectory($manipulationResult, $newFileName);

if ($conversion->shouldGenerateResponsiveImages()) {
app(ResponsiveImageGenerator::class)->generateResponsiveImagesForConversion(
Expand All @@ -119,8 +119,12 @@ public function performConversions(ConversionCollection $conversions, Media $med
$temporaryDirectory->delete();
}

public function performConversion(Media $media, Conversion $conversion, string $imageFile): string
public function performManipulations(Media $media, Conversion $conversion, string $imageFile): string
{
if ($conversion->getManipulations()->isEmpty()) {
return $imageFile;
}

$conversionTempFile = pathinfo($imageFile, PATHINFO_DIRNAME).'/'.str_random(16)
.$conversion->getName()
.'.'
Expand Down
10 changes: 10 additions & 0 deletions tests/Unit/Conversion/ConversionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,16 @@ public function it_can_remove_a_previously_set_manipulation()
$this->assertNull($this->conversion->getManipulations()->getManipulationArgument('format'));
}

/** @test */
public function it_can_remove_all_previously_set_manipulations()
{
$this->assertFalse($this->conversion->getManipulations()->isEmpty());

$this->conversion->withoutManipulations();

$this->assertTrue($this->conversion->getManipulations()->isEmpty());
}

/** @test */
public function it_will_use_the_extract_duration_parameter_if_it_was_given()
{
Expand Down
37 changes: 37 additions & 0 deletions tests/Unit/FileManipulatorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Spatie\MediaLibrary\Tests\Unit;

use Spatie\MediaLibrary\Tests\TestCase;
use Spatie\MediaLibrary\FileManipulator;
use Spatie\MediaLibrary\Conversion\Conversion;

class FileManipulatorTest extends TestCase
{
protected $conversionName = 'test';

/** @var \Spatie\MediaLibrary\Conversion\Conversion */
protected $conversion;

public function setUp()
{
parent::setUp();

$this->conversion = new Conversion($this->conversionName);
}

/** @test */
public function it_does_not_perform_manipulations_if_not_necessary()
{
$imageFile = $this->getTestJpg();
$media = $this->testModelWithoutMediaConversions->addMedia($this->getTestJpg())->toMediaCollection();

$conversionTempFile = (new FileManipulator)->performManipulations(
$media,
$this->conversion->withoutManipulations(),
$imageFile
);

$this->assertEquals($imageFile, $conversionTempFile);
}
}

0 comments on commit 089ee07

Please sign in to comment.