Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3639 | Rev 3775 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Mapper;
5
 
3671 efrain 6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Paginator\Paginator;
8
use LeadersLinked\Mapper\Common\MapperCommon;
1 www 9
use LeadersLinked\Model\Post;
10
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
11
use Laminas\Db\ResultSet\HydratingResultSet;
12
use Laminas\Paginator\Adapter\DbSelect;
13
 
3671 efrain 14
class PostMapper extends MapperCommon {
15
 
1 www 16
    const _TABLE = 'tbl_posts';
17
 
3671 efrain 18
 
1 www 19
    /**
20
     *
21
     * @var PostMapper
22
     */
23
    private static $_instance;
24
 
25
    /**
26
     *
27
     * @param AdapterInterface $adapter
28
     */
29
    private function __construct($adapter)
30
    {
31
        parent::__construct($adapter);
32
    }
33
 
34
    /**
35
     *
36
     * @param AdapterInterface $adapter
37
     * @return \LeadersLinked\Mapper\PostMapper
38
     */
39
    public static function getInstance($adapter)
40
    {
41
        if(self::$_instance == null) {
42
            self::$_instance = new PostMapper($adapter);
43
        }
44
        return self::$_instance;
45
    }
46
 
47
    /**
3671 efrain 48
     *
1 www 49
     * @return Post[]
50
     */
51
    public function fetchAll()
52
    {
3298 efrain 53
        $prototype = new Post();
1 www 54
        $select = $this->sql->select(self::_TABLE);
55
 
56
        return $this->executeFetchAllObject($select, $prototype);
57
    }
58
 
59
    /**
60
     *
61
     * @return Post[]
62
     */
3454 efrain 63
    public function fetchAllActive()
1 www 64
    {
3298 efrain 65
        $prototype = new Post();
1 www 66
        $select = $this->sql->select(self::_TABLE);
67
        $select->where->equalTo('status', Post::STATUS_ACTIVE);
68
        $select->order('date DESC');
69
 
70
 
71
        //echo $select->getSqlString($this->adapter->platform);
72
 
73
        return $this->executeFetchAllObject($select, $prototype);
74
    }
75
 
3639 efrain 76
 
77
 
1 www 78
    /**
79
     *
3639 efrain 80
     * @param int $network_id
81
     * @return Post[]
82
     */
83
    public function fetchAllActiveByNetworkId($network_id)
84
    {
85
        $prototype = new Post();
86
        $select = $this->sql->select(self::_TABLE);
3671 efrain 87
        $select->where->equalTo('network_id', $network_id);
3639 efrain 88
        $select->where->equalTo('status', Post::STATUS_ACTIVE);
89
        $select->order('date DESC');
90
 
91
 
92
        //echo $select->getSqlString($this->adapter->platform);
93
 
94
        return $this->executeFetchAllObject($select, $prototype);
95
 
1 www 96
    }
3671 efrain 97
        /**
98
         *
99
         * @param int $id
100
         * @return Post
101
         */
102
        public function fetchOne($id)
103
        {
104
            $prototype = new Post();
105
            $select = $this->sql->select(self::_TABLE);
106
            $select->where->equalTo('id', $id);
107
 
108
            return $this->executeFetchOneObject($select, $prototype);
109
        }
1 www 110
 
3639 efrain 111
 
3671 efrain 112
        /**
113
         *
114
         * @param string $uuid
115
         * @return Post
116
         */
117
        public function fetchOneByUuid($uuid)
118
        {
119
            $prototype = new Post();
120
            $select = $this->sql->select(self::_TABLE);
121
            $select->where->equalTo('uuid', $uuid);
122
 
123
            return $this->executeFetchOneObject($select, $prototype);
124
        }
1 www 125
 
3671 efrain 126
 
1 www 127
 
3671 efrain 128
        /**
129
         *
130
         * @param string $uuid
131
         * @param int $network_id
132
         * @return Post
133
         */
134
        public function fetchOneByUuidAndNetworkId($uuid, $network_id)
135
        {
136
            $prototype = new Post();
137
            $select = $this->sql->select(self::_TABLE);
138
            $select->where->equalTo('uuid', $uuid);
139
            $select->where->equalTo('network_id', $network_id);
140
 
141
            return $this->executeFetchOneObject($select, $prototype);
1 www 142
        }
143
 
144
 
3671 efrain 145
        /**
146
         *
147
         * @param Post $post
148
         * @return boolean
149
         */
150
        public function insert($post)
151
        {
152
            $hydrator = new ObjectPropertyHydrator();
153
            $values = $hydrator->extract($post);
154
            $values = $this->removeEmpty($values);
155
 
156
            $insert = $this->sql->insert(self::_TABLE);
157
            $insert->values($values);
158
 
159
            $result = $this->executeInsert($insert);
160
            if($result) {
161
                $post->id = $this->lastInsertId;
162
            }
163
 
164
            return $result;
165
 
166
        }
1 www 167
 
3671 efrain 168
        /**
169
         *
170
         * @param Post $post
171
         * @return boolean
172
         */
173
        public function update($post)
174
        {
175
            $hydrator = new ObjectPropertyHydrator();
176
            $values = $hydrator->extract($post);
177
            $values = $this->removeEmpty($values);
178
 
179
            $update = $this->sql->update(self::_TABLE);
180
            $update->set($values);
181
            $update->where->equalTo('id', $post->id);
182
 
183
            return $this->executeUpdate($update);
184
        }
1 www 185
 
3671 efrain 186
        /**
187
         *
188
         * @param Post $post
189
         * @return boolean
190
         */
191
        public function delete($post)
192
        {
193
            $delete = $this->sql->delete(self::_TABLE);
194
            $delete->where->equalTo('id', $post->id);
195
 
196
            return $this->executeDelete($delete);
197
 
198
        }
1 www 199
 
3671 efrain 200
        /**
201
         *
202
         * @param string $search
203
         * @param int $network_id
204
         * @param int $page
205
         * @param int $records_per_page
206
         * @param string $order_field
207
         * @param string $order_direction
208
         * @return Paginator
209
         */
210
        public function fetchAllDataTable($search, $network_id, $page = 1, $records_per_page = 10, $order_field= 'title', $order_direction = 'ASC')
211
        {
212
            $prototype = new Post();
213
            $select = $this->sql->select(self::_TABLE);
214
            $select->where->notEqualTo('status', Post::STATUS_DELETE);
215
            $select->where->equalTo('network_id', $network_id);
216
 
217
            if($search) {
218
                $select->like('title', '%' . $search . '%');
219
            }
220
            $select->order($order_field . ' ' . $order_direction);
221
 
222
 
223
 
224
            $hydrator   = new ObjectPropertyHydrator();
225
            $resultset  = new HydratingResultSet($hydrator, $prototype);
226
 
227
            $adapter = new DbSelect($select, $this->sql, $resultset);
228
            $paginator = new Paginator($adapter);
229
            $paginator->setItemCountPerPage($records_per_page);
230
            $paginator->setCurrentPageNumber($page);
231
 
232
 
233
            return $paginator;
1 www 234
        }
235
 
236
 
237
 
238
}