Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
Topic
0.00% covered (danger)
0.00%
0 / 49
0.00% covered (danger)
0.00%
0 / 4
210
0.00% covered (danger)
0.00%
0 / 1
 fetchList
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
6
 fetchPath
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
30
 fetchId
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
30
 readSearchResultList
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3/**
4 * @package ClientDldb
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsdldb\MySQL;
9
10use BO\Zmsdldb\MySQL\Entity\Topic as Entity;
11use BO\Zmsdldb\MySQL\Collection\Topics as Collection;
12use BO\Zmsdldb\Elastic\Topic as Base;
13
14/**
15  *
16  */
17class Topic extends Base
18{
19    public function fetchList()
20    {
21        try {
22            $sqlArgs = [$this->locale];
23            $sql = 'SELECT data_json FROM topic WHERE locale = ?';
24
25            $topiclist = new Collection();
26
27            $stm = $this->access()->prepare($sql);
28            $stm->execute($sqlArgs);
29            $stm->fetchAll(\PDO::FETCH_FUNC, function ($data_json) use ($topiclist) {
30                $topic = new \BO\Zmsdldb\MySQL\Entity\Topic();
31                $topic->offsetSet('data_json', $data_json);
32
33                $topiclist[$topic['id']] = $topic;
34            });
35
36            return $topiclist;
37        } catch (\Exception $e) {
38            throw $e;
39        }
40    }
41
42    /**
43     *
44     * @return Entity
45     */
46    public function fetchPath($topic_path)
47    {
48        try {
49            $sqlArgs = [$this->locale, (string)$topic_path];
50            $sql = 'SELECT data_json FROM topic WHERE locale = ? AND path = ?';
51
52            $stm = $this->access()->prepare($sql);
53            $stm->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\\BO\\Zmsdldb\\MySQL\\Entity\\Topic');
54            $stm->execute($sqlArgs);
55
56            if (!$stm || ($stm && $stm->rowCount() == 0)) {
57                return false;
58            }
59            $topic = $stm->fetch();
60            return $topic;
61        } catch (\Exception $e) {
62            throw $e;
63        }
64    }
65
66    /**
67     *
68     * @return Entity
69     */
70    public function fetchId($topicId)
71    {
72        try {
73            $sqlArgs = [$this->locale, (int)$topicId];
74            $sql = 'SELECT data_json FROM topic WHERE locale = ? AND id = ?';
75
76            $stm = $this->access()->prepare($sql);
77            $stm->setFetchMode(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, '\\BO\\Zmsdldb\\MySQL\\Entity\\Topic');
78            $stm->execute($sqlArgs);
79
80            if (!$stm || ($stm && $stm->rowCount() == 0)) {
81                return false;
82            }
83            $topic = $stm->fetch();
84            return $topic;
85        } catch (\Exception $e) {
86            throw $e;
87        }
88    }
89
90    public function readSearchResultList($query)
91    {
92        try {
93            #$query = '+' . implode(' +', explode(' ', $query));
94            $sqlArgs = [$this->locale, $this->locale, $query];
95            $sql = "SELECT t.data_json 
96            FROM search AS se
97            LEFT JOIN topic AS t ON t.id = se.object_id AND t.locale = ?
98            WHERE 
99                se.locale = ? AND MATCH (search_value) AGAINST (? IN BOOLEAN MODE)
100                AND (search_type IN ('name', 'keywords', 'titles')) AND entity_type='topic'
101             GROUP BY se.object_id
102            ";
103            /*
104            if (!empty($service_csv)) {
105                $ids = explode(',', $service_csv);
106                $qm = array_fill(0, count($ids), '?');
107                $sql .= ' AND se.object_id IN (' . implode(', ', $qm) . ')';
108                array_push($sqlArgs, ...$ids);
109            }*/
110            #print_r($sql);exit;
111
112            $topiclist = new Collection();
113
114            $stm = $this->access()->prepare($sql);
115            $stm->execute($sqlArgs);
116            $stm->fetchAll(\PDO::FETCH_FUNC, function ($data_json) use ($topiclist) {
117                $topic = new \BO\Zmsdldb\MySQL\Entity\Topic();
118                $topic->offsetSet('data_json', $data_json);
119
120                $topiclist[$topic['id']] = $topic;
121            });
122
123            return $topiclist;
124        } catch (\Exception $e) {
125            throw $e;
126        }
127    }
128}