GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

VendorLogoUploader::remove()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Odiseo\SyliusVendorPlugin\Uploader;
6
7
use Gaufrette\FilesystemInterface;
8
use Odiseo\SyliusVendorPlugin\Entity\VendorInterface;
9
use Symfony\Component\HttpFoundation\File\File;
10
use Webmozart\Assert\Assert;
11
12
final class VendorLogoUploader implements VendorLogoUploaderInterface
13
{
14
    /** @var FilesystemInterface */
15
    private $filesystem;
16
17
    public function __construct(
18
        FilesystemInterface $filesystem
19
    ) {
20
        $this->filesystem = $filesystem;
21
    }
22
23
    /**
24
     * {@inheritdoc}
25
     */
26
    public function upload(VendorInterface $vendor): void
27
    {
28
        if ($vendor->getLogoFile() === null) {
29
            return;
30
        }
31
32
        /** @var File $file */
33
        $file = $vendor->getLogoFile();
34
35
        if (null !== $vendor->getLogoName() && $this->has($vendor->getLogoName())) {
36
            $this->remove($vendor->getLogoName());
37
        }
38
39
        do {
40
            $path = $this->name($file);
41
        } while ($this->isAdBlockingProne($path) || $this->filesystem->has($path));
42
43
        $vendor->setLogoName($path);
44
45
        if ($vendor->getLogoName() === null) {
0 ignored issues
show
introduced by
The condition $vendor->getLogoName() === null is always false.
Loading history...
46
            return;
47
        }
48
49
        if (file_get_contents($file->getPathname()) === false) {
50
            return;
51
        }
52
53
        $this->filesystem->write(
54
            $vendor->getLogoName(),
55
            file_get_contents($file->getPathname()),
56
            true
57
        );
58
    }
59
60
    /**
61
     * {@inheritdoc}
62
     */
63
    public function remove(string $path): bool
64
    {
65
        if ($this->filesystem->has($path)) {
66
            return $this->filesystem->delete($path);
67
        }
68
69
        return false;
70
    }
71
72
    /**
73
     * @param string $path
74
     * @return bool
75
     */
76
    private function has(string $path): bool
77
    {
78
        return $this->filesystem->has($path);
79
    }
80
81
    /**
82
     * @param File $file
83
     * @return string
84
     */
85
    private function name(File $file): string
86
    {
87
        $name = \str_replace('.', '', \uniqid('', true));
88
        $extension = $file->guessExtension();
89
90
        if (\is_string($extension) && '' !== $extension) {
91
            $name = \sprintf('%s.%s', $name, $extension);
92
        }
93
94
        return $name;
95
    }
96
97
    /**
98
     * @param string $path
99
     * @return bool
100
     */
101
    private function isAdBlockingProne(string $path): bool
102
    {
103
        return strpos($path, 'ad') !== false;
104
    }
105
}
106