Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3639 | Rev 4124 | 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\Helper;
5
 
6
use Laminas\View\Helper\AbstractHelper;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use LeadersLinked\Mapper\ConnectionMapper;
9
use LeadersLinked\Mapper\UserMapper;
10
use LeadersLinked\Mapper\ChatGroupMapper;
11
use LeadersLinked\Mapper\UserBlockedMapper;
12
use LeadersLinked\Mapper\ChatGroupUserMapper;
13
use LeadersLinked\Model\ChatGroupUser;
14
 
15
class ChatHelper extends AbstractHelper
16
{
17
    /**
18
     *
19
     * @var AdapterInterface
20
     */
21
    private $adapter;
22
 
23
 
24
    /**
25
     *
26
     * @param AdapterInterface $adapter
27
     */
28
    public function __construct($adapter)
29
    {
30
        $this->adapter      = $adapter;
31
    }
32
 
33
    /**
34
     *
35
     * @param int $user_id
36
     * @return string
37
     */
38
    public function __invoke($user_id)
39
    {
3639 efrain 40
 
41
 
1 www 42
        $connectionMapper = ConnectionMapper:: getInstance($this->adapter);
43
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);
44
 
45
        $contacts = [];
46
        if($connectionIds) {
47
 
48
            $userMapper = UserMapper::getInstance($this->adapter);
49
            $users = $userMapper->fetchAllByIds($connectionIds);
50
 
51
 
52
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
53
            $user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user_id);
54
 
55
 
56
 
57
            foreach($users as $user)
58
            {
59
                if(in_array($user->id, $user_blocked_ids)) {
60
                    continue;
61
                }
62
 
63
                $username = trim($user->first_name . ' ' . $user->last_name);
3086 efrain 64
                $status = $user->online ? 'LABEL_ONLINE' : 'LABEL_OFFLINE';
1 www 65
 
3086 efrain 66
 
1 www 67
                array_push($contacts, ['id' => $user->uuid, 'uuid' => $user->uuid, 'status'=> $status,'name'=> $username, 'image' => $user->image]);
68
 
69
            }
70
        }
71
 
72
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
73
 
74
        $groups = [];
75
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
76
        $results= $chatGroupUserMapper->fetchAllByUserId($user_id);
77
 
78
 
79
 
80
 
81
 
82
 
83
 
84
 
85
 
86
        if(is_array($results)) {
87
            foreach ($results as $r) {
88
 
89
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
90
                if($chatGroup) {
91
                    array_push($groups, ['id' => $chatGroup->uuid,   'name' => $chatGroup->name,  'owner' => $r->owner == ChatGroupUser::OWNER_YES ]);
92
                }
93
 
94
            }
95
        }
96
 
97
 
4113 efrain 98
        return $this->getView()->render('helpers/chat.phtml', ['contacts' => $contacts, 'groups' => $groups, 'user_id' => $user_id, ['timezone' => $user->timezone]]);
1 www 99
    }
100
 
101
    private function isInactiveConnection(string $timestamp)
102
    {
103
        if(empty($timestamp)) {
104
            return true;
105
        }
106
 
107
        $now = date('Y-m-d H:i:s');
108
        $datetime1=date_create($now);
109
        $datetime2=date_create($timestamp);
110
        $diff=date_diff($datetime1, $datetime2);
111
 
112
        if($diff->y > 0 || $diff->m > 0 || $diff->d > 0 || $diff->h > 0 || $diff->i > 0) {
113
            return true;
114
        }
115
 
116
 
117
        return ($diff->s) > 15 ? true : false;
118
 
119
    }
120
}