SlugFilter::filter()   B
last analyzed

Complexity

Conditions 7
Paths 24

Size

Total Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 8.5706
c 0
b 0
f 0
cc 7
nc 24
nop 1
1
<?php
2
3
namespace SilverStripe\Forms\Filter;
4
5
use SilverStripe\Forms\Filter;
6
use SilverStripe\View\Parsers\URLSegmentFilter;
7
8
class SlugFilter extends URLSegmentFilter implements Filter
9
{
10
    /**
11
     * @inheritdoc
12
     *
13
     * @see URLSegmentFilter::filter
14
     *
15
     * @param string $value
16
     *
17
     * @return string
18
     */
19
    public function filter($value)
20
    {
21
        if (!$this->getAllowMultibyte()) {
22
            $transliterator = $this->getTransliterator();
23
24
            if ($transliterator) {
25
                $value = $transliterator->toASCII($value);
26
            }
27
        }
28
29
        $replacements = $this->getReplacements();
30
31
        if ($this->getAllowMultibyte() && isset($replacements['/[^A-Za-z0-9\-]+/u'])) {
32
            unset($replacements['/[^A-Za-z0-9\-]+/u']);
33
        }
34
35
        foreach ($replacements as $regex => $replace) {
36
            $value = preg_replace($regex, $replace, $value);
37
        }
38
39
        if ($this->getAllowMultibyte()) {
40
            $value = rawurlencode($value);
41
        }
42
43
        return $value;
44
    }
45
}
46