mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-01 08:50:50 +00:00
a3e534ff19
db2e76b99c
load stubs in config
81 lines
3.0 KiB
PHP
81 lines
3.0 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Ssch\TYPO3Rector\FileProcessor\Resources\Icons;
|
|
|
|
use Rector\Core\Contract\Processor\FileProcessorInterface;
|
|
use Rector\Core\ValueObject\Application\File;
|
|
use Rector\Core\ValueObject\Configuration;
|
|
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
|
|
use Ssch\TYPO3Rector\Contract\FileProcessor\Resources\IconRectorInterface;
|
|
use Ssch\TYPO3Rector\Helper\FilesFinder;
|
|
use RectorPrefix20210722\Symplify\SmartFileSystem\SmartFileSystem;
|
|
/**
|
|
* @changelog https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/8.3/Feature-77349-AdditionalLocationsForExtensionIcons.html
|
|
* @see \Ssch\TYPO3Rector\Tests\FileProcessor\Resources\Icons\IconsProcessor\IconsProcessorTest
|
|
*/
|
|
final class IconsFileProcessor implements \Rector\Core\Contract\Processor\FileProcessorInterface
|
|
{
|
|
/**
|
|
* @var \Ssch\TYPO3Rector\Helper\FilesFinder
|
|
*/
|
|
private $filesFinder;
|
|
/**
|
|
* @var \Symplify\SmartFileSystem\SmartFileSystem
|
|
*/
|
|
private $smartFileSystem;
|
|
/**
|
|
* @var mixed[]
|
|
*/
|
|
private $iconsRector;
|
|
/**
|
|
* @param IconRectorInterface[] $iconsRector
|
|
*/
|
|
public function __construct(\Ssch\TYPO3Rector\Helper\FilesFinder $filesFinder, \RectorPrefix20210722\Symplify\SmartFileSystem\SmartFileSystem $smartFileSystem, array $iconsRector)
|
|
{
|
|
$this->filesFinder = $filesFinder;
|
|
$this->smartFileSystem = $smartFileSystem;
|
|
$this->iconsRector = $iconsRector;
|
|
}
|
|
/**
|
|
* @param \Rector\Core\ValueObject\Application\File $file
|
|
* @param \Rector\Core\ValueObject\Configuration $configuration
|
|
*/
|
|
public function process($file, $configuration) : void
|
|
{
|
|
foreach ($this->iconsRector as $iconRector) {
|
|
$iconRector->refactorFile($file);
|
|
}
|
|
}
|
|
/**
|
|
* @param \Rector\Core\ValueObject\Application\File $file
|
|
* @param \Rector\Core\ValueObject\Configuration $configuration
|
|
*/
|
|
public function supports($file, $configuration) : bool
|
|
{
|
|
$smartFileInfo = $file->getSmartFileInfo();
|
|
if (\strpos($smartFileInfo->getFilename(), 'ext_icon') === \false) {
|
|
return \false;
|
|
}
|
|
$extEmConfSmartFileInfo = $this->filesFinder->findExtEmConfRelativeFromGivenFileInfo($smartFileInfo);
|
|
if (null === $extEmConfSmartFileInfo) {
|
|
return \false;
|
|
}
|
|
if (\Rector\Testing\PHPUnit\StaticPHPUnitEnvironment::isPHPUnitRun()) {
|
|
return \true;
|
|
}
|
|
return !$this->smartFileSystem->exists($this->createIconPath($file));
|
|
}
|
|
public function getSupportedFileExtensions() : array
|
|
{
|
|
return ['png', 'gif', 'svg'];
|
|
}
|
|
private function createIconPath(\Rector\Core\ValueObject\Application\File $file) : string
|
|
{
|
|
$smartFileInfo = $file->getSmartFileInfo();
|
|
$realPath = $smartFileInfo->getRealPathDirectory();
|
|
$relativeTargetFilePath = \sprintf('/Resources/Public/Icons/Extension.%s', $smartFileInfo->getExtension());
|
|
return $realPath . $relativeTargetFilePath;
|
|
}
|
|
}
|