Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3128 | Rev 3141 | 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
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Mapper;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Db\Sql\Expression;
9
use Laminas\Log\LoggerInterface;
10
use LeadersLinked\Mapper\Common\MapperCommon;
11
use LeadersLinked\Model\Feed;
1904 nelberth 12
use LeadersLinked\Model\Topic;
1 www 13
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
1858 nelberth 14
use Laminas\Paginator\Paginator;
1859 nelberth 15
use Laminas\Db\ResultSet\HydratingResultSet;
1860 nelberth 16
use Laminas\Paginator\Adapter\DbSelect;
1904 nelberth 17
use LeadersLinked\Mapper\TopicMapper;
1 www 18
 
19
class FeedMapper extends MapperCommon
20
{
21
    const _TABLE = 'tbl_feeds';
22
 
23
 
24
    /**
25
     *
26
     * @var FeedMapper
27
     */
28
    private static $_instance;
29
 
30
    /**
31
     *
32
     * @param AdapterInterface $adapter
33
     */
34
    private function __construct($adapter)
35
    {
36
        parent::__construct($adapter);
37
    }
38
 
39
    /**
40
     *
41
     * @param AdapterInterface $adapter
42
     * @return \LeadersLinked\Mapper\FeedMapper
43
     */
44
    public static function getInstance($adapter)
45
    {
46
        if(self::$_instance == null) {
47
            self::$_instance = new FeedMapper($adapter);
48
        }
49
        return self::$_instance;
50
    }
51
 
52
    /*
53
    public function fetchCountSharesByFeedId(int $shared_feed_id)
54
    {
55
        $select = $this->sql->select(self::_TABLE);
56
        $select->columns(['total' => new Expression('COUNT(*)') ]);
57
        $select->where->equalTo('shared_feed_id', $shared_feed_id);
58
 
59
        $record = $this->executeFetchOneArray($select);
60
        return $record['total'];
61
    }*/
62
 
63
    /**
64
     *
65
     * @param int $id
66
     * @return Feed
67
     */
68
    public function fetchOne($id)
2154 eleazar 69
    {
70
        $prototype = new Feed();
1 www 71
        $select = $this->sql->select(self::_TABLE);
72
        $select->where->equalTo('id', $id);
2163 eleazar 73
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
2156 eleazar 74
        //$select->getSqlString($this->adapter->platform);
2110 eleazar 75
 
76
        return $this->executeFetchOneObject($select, $prototype);
77
    }
78
 
79
     /**
80
     *
81
     * @param int $id
82
     * @return Feed
83
     */
84
    public function fetchOneNonDeleted($id)
85
    {
86
        $select = $this->sql->select(self::_TABLE);
87
        $select->where->equalTo('id', $id);
88
        $select->where->equalTo('type', Feed::TYPE_MYT_QUESTION);
2109 eleazar 89
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
1 www 90
 
91
        $prototype = new Feed();
92
        return $this->executeFetchOneObject($select, $prototype);
93
    }
94
 
95
    /**
96
     *
97
     * @param int $feed_uuid
98
     * @return Feed
99
     */
100
    public function fetchOneByUuid($uuid)
2150 eleazar 101
    {   $prototype = new Feed();
1 www 102
        $select = $this->sql->select(self::_TABLE);
103
        $select->where->equalTo('uuid', $uuid);
2163 eleazar 104
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
2155 eleazar 105
        //$select->getSqlString($this->adapter->platform);
2150 eleazar 106
 
1 www 107
        return $this->executeFetchOneObject($select, $prototype);
108
    }
109
 
110
    /**
111
     *
242 efrain 112
     * @return Feed[]
113
     */
114
    public function fetchAllTypeVideo()
115
    {
116
        $select = $this->sql->select(self::_TABLE);
117
        $select->where->equalTo('file_type', Feed::FILE_TYPE_VIDEO);
118
 
119
        //echo $select->getSqlString($this->adapter->platform);
120
 
121
        $prototype = new Feed();
122
        return $this->executeFetchAllObject($select, $prototype);
123
    }
1776 nelberth 124
 
125
    public function fetchAllTypeCalendar($highPerformanceTeamsGroups_id)
126
    {
127
        $select = $this->sql->select(self::_TABLE);
128
        $select->where->equalTo('file_type', Feed::FILE_TYPE_MEETING);
129
 
130
        $select->where->equalTo('high_performance_group_id',$highPerformanceTeamsGroups_id);
131
        //echo $select->getSqlString($this->adapter->platform);
132
 
133
        $prototype = new Feed();
134
        return $this->executeFetchAllObject($select, $prototype);
135
    }
242 efrain 136
 
1869 nelberth 137
    public function fetchAllDataTableForo($search, $page = 1, $records_per_page = 10, $order_field= 'added_on', $order_direction = 'DESC', $topic_id)
1855 nelberth 138
    {
139
        $prototype = new Feed();
140
        $select = $this->sql->select(self::_TABLE);
141
        $select->where->equalTo('topic_id', $topic_id);
1882 nelberth 142
        $select->where->equalTo('status', Feed::STATUS_PUBLISHED);
1855 nelberth 143
        if($search) {
144
            $select->where->like('title', '%' . $search . '%');
145
        }
146
        $select->order($order_field . ' ' . $order_direction);
147
 
148
 
149
 
150
        $hydrator   = new ObjectPropertyHydrator();
151
        $resultset  = new HydratingResultSet($hydrator, $prototype);
152
 
153
        $adapter = new DbSelect($select, $this->sql, $resultset);
154
        $paginator = new Paginator($adapter);
155
        $paginator->setItemCountPerPage($records_per_page);
156
        $paginator->setCurrentPageNumber($page);
157
 
158
 
159
        return $paginator;
160
    }
1907 nelberth 161
    public function fetchFiveForoJoinTopic($group_id,$topic_type)
1904 nelberth 162
    {
163
        $prototype = new Feed();
1910 nelberth 164
        $select = $this->sql->select();
1930 nelberth 165
        $select->from(['f' => self::_TABLE]);
166
        $select->join(['t' => TopicMapper::_TABLE], 't.id = f.topic_id ', []);
1923 nelberth 167
        $select->where->equalTo('f.high_performance_group_id', $group_id);
168
        $select->where->equalTo('f.status', Feed::STATUS_PUBLISHED);
1924 nelberth 169
        $select->where->equalTo('f.type', Feed::TYPE_HPTG);
1923 nelberth 170
        $select->where->equalTo('t.type', $topic_type);
171
        $select->where->equalTo('t.status', Topic::STATUS_ACTIVE);
1922 nelberth 172
 
173
        $select->order('added_on DESC');
1904 nelberth 174
 
175
        $hydrator   = new ObjectPropertyHydrator();
176
        $resultset  = new HydratingResultSet($hydrator, $prototype);
177
 
178
        $adapter = new DbSelect($select, $this->sql, $resultset);
179
        $paginator = new Paginator($adapter);
180
        $paginator->setItemCountPerPage(5);
181
        $paginator->setCurrentPageNumber(1);
182
 
183
 
184
        return $paginator;
185
    }
242 efrain 186
    /**
187
     *
1 www 188
     * @param int $shared_feed_id
189
     * @return int
190
     */
191
    public function fetchCountSharedByFeedId($shared_feed_id)
192
    {
193
        $select = $this->sql->select(self::_TABLE);
194
        $select->columns(['total' => new Expression('COUNT(*)') ]);
195
        $select->where->equalTo('shared_feed_id', $shared_feed_id);
196
 
197
        $record = $this->executeFetchOneArray($select);
198
        return $record['total'];
199
    }
200
 
201
 
202
    /**
203
     *
204
     * @param Feed $feed
205
     * @return boolean
206
     */
207
    public function update($feed)
208
    {
209
        $hydrator = new ObjectPropertyHydrator();
210
        $values = $hydrator->extract($feed);
211
        $values = $this->removeEmpty($values);
212
 
213
        $update = $this->sql->update(self::_TABLE);
214
        $update->set($values);
215
        $update->where->equalTo('id', $feed->id);
216
 
424 geraldo 217
 
218
 
1 www 219
        return $this->executeUpdate($update);
220
    }
221
 
222
    /**
223
     *
224
     * @param Feed $feed
225
     * @return boolean
226
     */
227
    public function insert($feed)
228
    {
229
        $hydrator = new ObjectPropertyHydrator();
230
        $values = $hydrator->extract($feed);
428 geraldo 231
        $values = $this->removeEmpty($values);
1 www 232
 
233
        $insert = $this->sql->insert(self::_TABLE);
421 geraldo 234
        $insert->values($values);
1986 eleazar 235
        //echo $insert->getSqlString($this->adapter->platform); exit;
1 www 236
 
237
        $response = $this->executeInsert($insert);
238
        if($response) {
239
            $feed->id = $this->lastInsertId;
240
        }
241
 
426 geraldo 242
        return $values;
1 www 243
    }
244
 
245
    /**
246
     *
247
     * @param int $id
248
     * @return int
249
     */
250
    public function fetchTotalComments($id)
251
    {
252
        $select = $this->sql->select(self::_TABLE);
253
        $select->columns(['total_comments']);
254
        $select->where->equalTo('id', $id);
255
 
256
        $record = $this->executeFetchOneArray($select);
257
        return $record['total_comments'];
258
    }
259
 
260
    /**
261
     *
262
     * @param int $feed_id
263
     * @return boolean
264
     */
265
     /*
266
    public function incTotalComments($id)
267
    {
268
 
269
        $update = $this->sql->update(self::_TABLE);
270
        $update->set(['total_comments' => new Expression('total_comments + 1')]);
271
        $update->where->equalTo('id', $id);
272
 
273
        return $this->executeUpdate($update);
274
    }
275
    */
276
 
277
    /**
278
     *
279
     * @param int $feed_id
280
     * @return boolean
281
     */
282
    public function incTotalShared($id)
283
    {
284
        $update = $this->sql->update(self::_TABLE);
285
        $update->set(['total_shared' => new Expression('total_shared + 1')]);
286
        $update->where->equalTo('id', $id);
287
 
288
        return $this->executeUpdate($update);
289
    }
290
 
291
    /**
292
     *
293
     * @param int $id
294
     * @return int
295
     */
296
    public function fetchTotalShared($id)
297
    {
298
        $select = $this->sql->select(self::_TABLE);
299
        $select->columns(['total_shared']);
300
        $select->where->equalTo('id', $id);
301
 
302
        $record = $this->executeFetchOneArray($select);
303
        return $record['total_shared'];
304
    }
305
 
306
    /**
307
     *
308
     * @param int $feed_id
309
     * @return boolean
310
     */
311
    public function delete($feed_id)
312
    {
313
        $update = $this->sql->update(self::_TABLE);
314
        $update->set([
315
            'status' => Feed::STATUS_DELETED
316
        ]);
317
        $update->where->equalTo('id', $feed_id);
318
 
319
        return $this->executeUpdate($update);
320
    }
1980 eleazar 321
 
2012 eleazar 322
    /**
1980 eleazar 323
     *
2012 eleazar 324
     * @return Feed
1980 eleazar 325
     */
2012 eleazar 326
    public function fetchAllByMytQuestion()
1980 eleazar 327
    {
328
        $prototype = new Feed();
2012 eleazar 329
 
1980 eleazar 330
        $select = $this->sql->select(self::_TABLE);
1987 eleazar 331
        $select->where->equalTo('type', Feed::TYPE_MYT_QUESTION);
1988 eleazar 332
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
2137 eleazar 333
        $select->order('added_on DESC');
1980 eleazar 334
 
2012 eleazar 335
        return $this->executeFetchAllObject($select, $prototype);
1980 eleazar 336
    }
2011 eleazar 337
 
2051 eleazar 338
    /**
339
     *
340
     * @return Feed
341
     */
2072 eleazar 342
    public function fetchAllByMytAnswer($related_feed)
2051 eleazar 343
    {
344
        $prototype = new Feed();
345
 
346
        $select = $this->sql->select(self::_TABLE);
2072 eleazar 347
        $select->where->equalTo('related_feed', $related_feed);
2051 eleazar 348
        $select->where->equalTo('type', Feed::TYPE_MYT_ANSWER);
349
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
350
        $select->order('title');
351
 
352
        return $this->executeFetchAllObject($select, $prototype);
353
    }
354
 
2490 eleazar 355
      /**
356
     *
357
     * @return Feed
358
     */
359
    public function fetchAllByTopicId($topic_id)
360
    {
361
        $prototype = new Feed();
362
 
363
        $select = $this->sql->select(self::_TABLE);
364
        $select->where->equalTo('topic_id', $topic_id);
365
        $select->order('title');
366
 
367
        return $this->executeFetchAllObject($select, $prototype);
368
    }
369
 
2054 eleazar 370
    /**
371
     *
372
     * @return Feed
373
     */
374
    public function fetchAllByMytAnswerComented()
375
    {
376
        $prototype = new Feed();
377
 
378
        $select = $this->sql->select(self::_TABLE);
379
        $select->where->equalTo('type', Feed::TYPE_MYT_ANSWER);
380
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
381
        $select->order('title');
382
 
2056 eleazar 383
        return $this->executeFetchAllObject($select, $prototype);
2054 eleazar 384
    }
385
 
2237 eleazar 386
     /**
387
     *
388
     * @return Feed
389
     */
3140 kerby 390
    public function fetchAllByDevelop($allowEdit)
2237 eleazar 391
    {
392
        $prototype = new Feed();
393
 
394
        $select = $this->sql->select(self::_TABLE);
395
        $select->where->equalTo('type', Feed::TYPE_DC);
396
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
3140 kerby 397
 
398
        if(!$allowEdit){
399
            $select->where->equalTo('status', Feed::STATUS_PUBLISHED);
400
        }
401
 
3128 kerby 402
        $select->order('added_on DESC');
2237 eleazar 403
 
404
        return $this->executeFetchAllObject($select, $prototype);
405
    }
3032 kerby 406
    /**
407
     *
408
     * @return Feed
409
     */
3140 kerby 410
    public function fetchAllByDevelopAndCategoryId($id, $allowEdit)
3032 kerby 411
    {
412
        $prototype = new Feed();
2237 eleazar 413
 
3032 kerby 414
        $select = $this->sql->select(self::_TABLE);
415
        $select->where->equalTo('type', Feed::TYPE_DC);
416
        $select->where->equalTo('topic_id', $id);
417
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
3140 kerby 418
        if (!$allowEdit) {
419
            $select->where->equalTo('status', Feed::STATUS_PUBLISHED);
420
        }
421
 
3032 kerby 422
        $select->order('added_on DESC');
423
 
424
        return $this->executeFetchAllObject($select, $prototype);
425
    }
426
 
427
 
2337 eleazar 428
     /**
429
     *
430
     * @return Feed
431
     */
432
    public function fetchAllByDevelopInternContent()
433
    {
434
        $prototype = new Feed();
435
 
436
        $select = $this->sql->select(self::_TABLE);
437
        $select->where->equalTo('type', Feed::TYPE_DC);
2489 eleazar 438
        //$select->where->equalTo('link_media', 'cesa');
2488 eleazar 439
        $select->where->isNotNull('file_type');
2337 eleazar 440
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
441
        $select->order('title');
2482 eleazar 442
        //echo $insert->getSqlString($this->adapter->platform); exit;
2337 eleazar 443
        return $this->executeFetchAllObject($select, $prototype);
444
    }
445
 
446
      /**
447
     *
448
     * @return Feed
449
     */
450
    public function fetchAllByDevelopExternContent()
451
    {
452
        $prototype = new Feed();
453
 
454
        $select = $this->sql->select(self::_TABLE);
455
        $select->where->equalTo('type', Feed::TYPE_DC);
456
        $select->where->notEqualTo('status', Feed::STATUS_DELETED);
457
        $select->where->notEqualTo('link_media', 'cesa');
458
        $select->order('title');
459
 
460
        return $this->executeFetchAllObject($select, $prototype);
461
    }
462
 
1 www 463
}