Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3671 | 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
 
3775 efrain 126
        /**
127
         *
128
         * @param string $uuid
129
         * @return Post
130
         */
131
        public function fetchOneByUuidAnyStatus($uuid)
132
        {
133
            $prototype = new Post();
134
            $select = $this->sql->select(self::_TABLE);
135
            $select->where->equalTo('uuid', $uuid);
136
 
137
            return $this->executeFetchOneObject($select, $prototype);
138
        }
139
 
3671 efrain 140
 
1 www 141
 
3671 efrain 142
        /**
143
         *
144
         * @param string $uuid
145
         * @param int $network_id
146
         * @return Post
147
         */
148
        public function fetchOneByUuidAndNetworkId($uuid, $network_id)
149
        {
150
            $prototype = new Post();
151
            $select = $this->sql->select(self::_TABLE);
152
            $select->where->equalTo('uuid', $uuid);
153
            $select->where->equalTo('network_id', $network_id);
154
 
155
            return $this->executeFetchOneObject($select, $prototype);
1 www 156
        }
157
 
158
 
3671 efrain 159
        /**
160
         *
161
         * @param Post $post
162
         * @return boolean
163
         */
164
        public function insert($post)
165
        {
166
            $hydrator = new ObjectPropertyHydrator();
167
            $values = $hydrator->extract($post);
168
            $values = $this->removeEmpty($values);
169
 
170
            $insert = $this->sql->insert(self::_TABLE);
171
            $insert->values($values);
172
 
173
            $result = $this->executeInsert($insert);
174
            if($result) {
175
                $post->id = $this->lastInsertId;
176
            }
177
 
178
            return $result;
179
 
180
        }
1 www 181
 
3671 efrain 182
        /**
183
         *
184
         * @param Post $post
185
         * @return boolean
186
         */
187
        public function update($post)
188
        {
189
            $hydrator = new ObjectPropertyHydrator();
190
            $values = $hydrator->extract($post);
191
            $values = $this->removeEmpty($values);
192
 
193
            $update = $this->sql->update(self::_TABLE);
194
            $update->set($values);
195
            $update->where->equalTo('id', $post->id);
196
 
197
            return $this->executeUpdate($update);
198
        }
1 www 199
 
3671 efrain 200
        /**
201
         *
202
         * @param Post $post
203
         * @return boolean
204
         */
205
        public function delete($post)
206
        {
207
            $delete = $this->sql->delete(self::_TABLE);
208
            $delete->where->equalTo('id', $post->id);
209
 
210
            return $this->executeDelete($delete);
211
 
212
        }
1 www 213
 
3671 efrain 214
        /**
215
         *
216
         * @param string $search
217
         * @param int $network_id
218
         * @param int $page
219
         * @param int $records_per_page
220
         * @param string $order_field
221
         * @param string $order_direction
222
         * @return Paginator
223
         */
224
        public function fetchAllDataTable($search, $network_id, $page = 1, $records_per_page = 10, $order_field= 'title', $order_direction = 'ASC')
225
        {
226
            $prototype = new Post();
227
            $select = $this->sql->select(self::_TABLE);
228
            $select->where->notEqualTo('status', Post::STATUS_DELETE);
229
            $select->where->equalTo('network_id', $network_id);
230
 
231
            if($search) {
232
                $select->like('title', '%' . $search . '%');
233
            }
234
            $select->order($order_field . ' ' . $order_direction);
235
 
236
 
237
 
238
            $hydrator   = new ObjectPropertyHydrator();
239
            $resultset  = new HydratingResultSet($hydrator, $prototype);
240
 
241
            $adapter = new DbSelect($select, $this->sql, $resultset);
242
            $paginator = new Paginator($adapter);
243
            $paginator->setItemCountPerPage($records_per_page);
244
            $paginator->setCurrentPageNumber($page);
245
 
246
 
247
            return $paginator;
1 www 248
        }
249
 
250
 
251
 
252
}