Parameters   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
c 1
b 0
f 0
lcom 1
cbo 2
dl 0
loc 40
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A add() 0 8 2
A get() 0 8 2
A decode() 0 12 3
1
<?php
2
3
namespace Ddeboer\Imap;
4
5
use Ddeboer\Transcoder\Transcoder;
6
7
class Parameters
8
{
9
    protected $parameters = [];
10
    
11
    public function __construct(array $parameters = [])
12
    {
13
        $this->add($parameters);
14
    }
15
    
16
    public function add(array $parameters = [])
17
    {
18
        foreach ($parameters as $parameter) {
19
            $key = strtolower($parameter->attribute);
20
            $value = $this->decode($parameter->value);
21
            $this->parameters[$key] = $value;
22
        }
23
    }
24
    
25
    public function get($key)
26
    {
27
        if (isset($this->parameters[$key])) {
28
            return $this->parameters[$key];
29
        }
30
        
31
        return null;
32
    }
33
    
34
    protected function decode($value)
35
    {
36
        $decoded = '';
37
        $parts = imap_mime_header_decode($value);
38
        foreach ($parts as $part) {
39
            $charset = 'default' == $part->charset ? 'auto' : $part->charset;
40
            // imap_utf8 doesn't seem to work properly, so use Transcoder instead
41
            $decoded .= Transcoder::create()->transcode($part->text, $charset);
42
        }
43
        
44
        return $decoded;
45
    }
46
}
47