Xhgui_Saver_Pdo   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 1
dl 0
loc 103
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A save() 0 24 1
1
<?php
2
3
class Xhgui_Saver_Pdo implements Xhgui_Saver_Interface
4
{
5
    const TABLE_DDL = <<<SQL
6
7
CREATE TABLE IF NOT EXISTS "%s" (
8
  id               TEXT PRIMARY KEY,
9
  profile          TEXT           NOT NULL,
10
  url              TEXT           NULL,
11
  SERVER           TEXT           NULL,
12
  GET              TEXT           NULL,
13
  ENV              TEXT           NULL,
14
  simple_url       TEXT           NULL,
15
  request_ts       INTEGER        NOT NULL,
16
  request_ts_micro NUMERIC(15, 4) NOT NULL,
17
  request_date     DATE           NOT NULL,
18
  main_wt          INTEGER        NOT NULL,
19
  main_ct          INTEGER        NOT NULL,
20
  main_cpu         INTEGER        NOT NULL,
21
  main_mu          INTEGER        NOT NULL,
22
  main_pmu         INTEGER        NOT NULL
23
);
24
25
SQL;
26
27
    const INSERT_DML = <<<SQL
28
29
INSERT INTO "%s" (
30
  id,
31
  profile,
32
  url,
33
  SERVER,
34
  GET,
35
  ENV,
36
  simple_url,
37
  request_ts,
38
  request_ts_micro,
39
  request_date,
40
  main_wt,
41
  main_ct,
42
  main_cpu,
43
  main_mu,
44
  main_pmu
45
) VALUES (
46
  :id,
47
  :profile,
48
  :url,
49
  :SERVER,
50
  :GET,
51
  :ENV,
52
  :simple_url,
53
  :request_ts,
54
  :request_ts_micro,
55
  :request_date,
56
  :main_wt,
57
  :main_ct,
58
  :main_cpu,
59
  :main_mu,
60
  :main_pmu
61
);
62
63
SQL;
64
65
    /**
66
     * @var PDOStatement
67
     */
68
    private $stmt;
69
70
    /**
71
     * @param PDO    $pdo
72
     * @param string $table
73
     */
74
    public function __construct(PDO $pdo, $table)
75
    {
76
        $pdo->exec(sprintf(self::TABLE_DDL, $table));
77
78
        $this->stmt = $pdo->prepare(sprintf(self::INSERT_DML, $table));
79
    }
80
81
    public function save(array $data)
82
    {
83
        $main = $data['profile']['main()'];
84
85
        $this->stmt->execute(array(
86
            'id'               => Xhgui_Util::generateId(),
87
            'profile'          => json_encode($data['profile']),
88
            'url'              => $data['meta']['url'],
89
            'SERVER'           => json_encode($data['meta']['SERVER']),
90
            'GET'              => json_encode($data['meta']['get']),
91
            'ENV'              => json_encode($data['meta']['env']),
92
            'simple_url'       => $data['meta']['simple_url'],
93
            'request_ts'       => $data['meta']['request_ts']['sec'],
94
            'request_ts_micro' => "{$data['meta']['request_ts_micro']['sec']}.{$data['meta']['request_ts_micro']['usec']}",
95
            'request_date'     => $data['meta']['request_date'],
96
            'main_wt'          => $main['wt'],
97
            'main_ct'          => $main['ct'],
98
            'main_cpu'         => $main['cpu'],
99
            'main_mu'          => $main['mu'],
100
            'main_pmu'         => $main['pmu'],
101
        ));
102
103
        $this->stmt->closeCursor();
104
    }
105
}
106