Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1 | Rev 3639 | 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
    {
40
        $connectionMapper = ConnectionMapper:: getInstance($this->adapter);
41
        $connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);
42
 
43
        $contacts = [];
44
        if($connectionIds) {
45
 
46
            $userMapper = UserMapper::getInstance($this->adapter);
47
            $users = $userMapper->fetchAllByIds($connectionIds);
48
 
49
 
50
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
51
            $user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user_id);
52
 
53
 
54
 
55
            foreach($users as $user)
56
            {
57
                if(in_array($user->id, $user_blocked_ids)) {
58
                    continue;
59
                }
60
 
61
                $username = trim($user->first_name . ' ' . $user->last_name);
3086 efrain 62
                $status = $user->online ? 'LABEL_ONLINE' : 'LABEL_OFFLINE';
1 www 63
 
3086 efrain 64
 
1 www 65
                array_push($contacts, ['id' => $user->uuid, 'uuid' => $user->uuid, 'status'=> $status,'name'=> $username, 'image' => $user->image]);
66
 
67
            }
68
        }
69
 
70
        $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
71
 
72
        $groups = [];
73
        $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
74
        $results= $chatGroupUserMapper->fetchAllByUserId($user_id);
75
 
76
 
77
 
78
 
79
 
80
 
81
 
82
 
83
 
84
        if(is_array($results)) {
85
            foreach ($results as $r) {
86
 
87
                $chatGroup = $chatGroupMapper->fetchOne($r->group_id);
88
                if($chatGroup) {
89
                    array_push($groups, ['id' => $chatGroup->uuid,   'name' => $chatGroup->name,  'owner' => $r->owner == ChatGroupUser::OWNER_YES ]);
90
                }
91
 
92
            }
93
        }
94
 
95
 
96
        return $this->getView()->render('helpers/chat.phtml', ['contacts' => $contacts, 'groups' => $groups, 'user_id' => $user_id]);
97
    }
98
 
99
    private function isInactiveConnection(string $timestamp)
100
    {
101
        if(empty($timestamp)) {
102
            return true;
103
        }
104
 
105
        $now = date('Y-m-d H:i:s');
106
        $datetime1=date_create($now);
107
        $datetime2=date_create($timestamp);
108
        $diff=date_diff($datetime1, $datetime2);
109
 
110
        if($diff->y > 0 || $diff->m > 0 || $diff->d > 0 || $diff->h > 0 || $diff->i > 0) {
111
            return true;
112
        }
113
 
114
 
115
        return ($diff->s) > 15 ? true : false;
116
 
117
    }
118
}