AbstractConverter   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 79
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getExtension() 0 4 1
A __construct() 0 8 1
A escapeFilename() 0 11 1
1
<?php
2
3
namespace CodeBlog\ToWebP;
4
5
/**
6
 * Class AbstractConverter
7
 *
8
 * @author Whallysson Avelino <https://github.com/whallysson>
9
 * @package CodeBlog\ToWebP
10
 */
11
12
abstract class AbstractConverter
13
{
14
15
    /** @var */
16
    protected $source;
17
18
    /** @var */
19
    protected $destination;
20
21
    /** @var int */
22
    protected $quality;
23
24
    /** @var bool */
25
    protected $strip;
26
27
    /** @var string */
28
    protected $extension;
29
30
    /**
31
     * AbstractConverter constructor.
32
     * @param $source
33
     * @param $destination
34
     * @param int $quality
35
     * @param bool $stripMetadata
36
     */
37
    public function __construct($source, $destination, $quality = 85, $stripMetadata = false)
38
    {
39
        $this->source = $source;
40
        $this->destination = $destination;
41
        $this->quality = $quality;
42
        $this->strip = $stripMetadata;
43
44
        $this->extension = $this->getExtension($source);
45
    }
46
47
    /**
48
     * Forces every converter to implement the following functions:
49
     * `checkRequirements()` - checks if converter's requirements are met
50
     * `convert()` - converting given image to WebP
51
     *
52
     * @return mixed
53
     */
54
    abstract public function checkRequirements();
55
56
    /**
57
     * @return mixed
58
     */
59
    abstract public function convert();
60
61
    /**
62
     * Returns given file's extension
63
     *
64
     * @param string $filePath
65
     *
66
     * @return string
67
     */
68
    public function getExtension($filePath)
69
    {
70
        $fileExtension = pathinfo($filePath, PATHINFO_EXTENSION);
71
        return strtolower($fileExtension);
72
    }
73
74
    /**
75
     * Returns escaped version of string
76
     *
77
     * @param $string
78
     * @return mixed|string|string[]|null
79
     */
80
    public function escapeFilename($string)
81
    {
82
        // Escaping whitespaces & quotes
83
        $string = preg_replace('/\s/', '\\ ', $string);
84
        $string = filter_var($string, FILTER_SANITIZE_MAGIC_QUOTES);
85
86
        // Stripping control characters
87
        // see https://stackoverflow.com/questions/12769462/filter-flag-strip-low-vs-filter-flag-strip-high
88
        $string = filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
89
90
        return $string;
91
    }
92
93
}
94