Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| 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\ResultSet\HydratingResultSet;
9
use Laminas\Paginator\Paginator;
10
use Laminas\Paginator\Adapter\DbSelect;
11
use LeadersLinked\Mapper\Common\MapperCommon;
12
use Laminas\Db\Sql\Expression;
13
use Laminas\Db\Sql\Select;
14
 
15
class LogMapper extends MapperCommon
16
{
17
    const _TABLE = 'tbl_logs';
18
 
19
 
20
    /**
21
     *
22
     * @var LogMapper
23
     */
24
    private static $_instance;
25
 
26
    /**
27
     *
28
     * @param AdapterInterface $adapter
29
     */
30
    private function __construct($adapter)
31
    {
32
        parent::__construct($adapter);
33
    }
34
 
35
    /**
36
     *
37
     * @param AdapterInterface $adapter
38
     * @return \LeadersLinked\Mapper\LogMapper
39
     */
40
    public static function getInstance($adapter)
41
    {
42
        if(self::$_instance == null) {
43
            self::$_instance = new LogMapper($adapter);
44
        }
45
        return self::$_instance;
46
    }
47
 
48
 
49
 
50
    /**
51
     *
52
     * @param string $search
53
     * @param int $page
54
     * @param int $records_per_page
55
     * @param string $order_field
56
     * @param string $order_direction
57
     * @return Paginator
58
     */
59
    public function fetchAllDataTable($search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
60
    {
61
        $select = $this->sql->select();
62
        $select->columns(['priority_name', 'message', 'ip', 'added_on']);
63
        $select->from(['l' => self::_TABLE]);
64
        $select->join(['u' => UserMapper::_TABLE], 'l.user_id = u.id', ['user' => new Expression("CONCAT(u.first_name, '', u.last_name)")], Select::JOIN_LEFT_OUTER);
65
 
66
        if($search) {
67
            $select->where->like('first_name', '%' . $search . '%')->or->like('last_name', '%' . $search . '%')->or->like('message', '%' . $search . '%');
68
        }
69
 
70
        $select->order($order_field . ' ' . $order_direction);
71
        $resultset  = new HydratingResultSet();
72
 
73
        $adapter = new DbSelect($select, $this->sql, $resultset);
74
        $paginator = new Paginator($adapter);
75
        $paginator->setItemCountPerPage($records_per_page);
76
        $paginator->setCurrentPageNumber($page);
77
 
78
 
79
        return $paginator;
80
    }
81
 
82
}