ColumnSerializer   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
lcom 2
cbo 3
dl 0
loc 54
ccs 26
cts 26
cp 1
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B serialize() 0 30 6
A formatData() 0 4 1
1
<?php
2
3
namespace leandrogehlen\exporter\serializers;
4
5
/**
6
 * Formats the given data into an column size or separator char response content.
7
 *
8
 * @author Leandro Guindani Gehlen <[email protected]>
9
 */
10
class ColumnSerializer extends Serializer
11
{
12
    /**
13
     * @var string the column separator
14
     */
15
    public $delimiter;
16
17
    /**
18
     * @var string the line break
19
     */
20
    public $lineBreak = "\n";
21
22
    /**
23
     * @inheritdoc
24
     */
25 6
    public function serialize($sessions, $master = [])
26
    {
27 6
        $data = [];
28 6
        foreach ($sessions as $session) {
29 6
            if ($session->visible) {
30 6
                $i = 0;
31 6
                $provider = $this->exporter->findProvider($session->provider);
32 5
                $rows = $this->executeProvider($provider, $master);
33
34 4
                foreach ($rows as $row) {
35
36 4
                    $record = [];
37 4
                    foreach ($session->columns as $column) {
38 4
                        $value = $this->extractValue($column, $row);
39 4
                        $record[] = $value;
40 4
                    }
41
42 3
                    $record = implode($this->delimiter, $record);
43 3
                    $data[] = $this->beforeSerializeRow($record, $session);
44 2
                    $children = $this->serialize($session->sessions, $row);
45
46 2
                    foreach ($children as $item) {
47 1
                        $data[] = $item;
48 2
                    }
49 2
                    $session->rows = $i++;
50 2
                }
51 2
            }
52 2
        }
53 2
        return $data;
54
    }
55
56
    /**
57
     * @inheritdoc
58
     */
59 2
    public function formatData($data)
60
    {
61 2
        return implode($this->lineBreak, $data);
62
    }
63
}
64