Rev 4124 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Helper;use Laminas\View\Helper\AbstractHelper;use Laminas\Db\Adapter\AdapterInterface;use LeadersLinked\Mapper\ConnectionMapper;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Mapper\ChatGroupMapper;use LeadersLinked\Mapper\UserBlockedMapper;use LeadersLinked\Mapper\ChatGroupUserMapper;use LeadersLinked\Model\ChatGroupUser;class ChatHelper extends AbstractHelper{/**** @var AdapterInterface*/private $adapter;/**** @param AdapterInterface $adapter*/public function __construct($adapter){$this->adapter = $adapter;}/**** @param int $user_id* @return string*/public function __invoke($user_id){$userMapper = UserMapper::getInstance($this->adapter);$user = $userMapper->fetchOne($user_id);$connectionMapper = ConnectionMapper:: getInstance($this->adapter);$connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user->id);$contacts = [];if($connectionIds) {$userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);$user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user->id);$usersConnectetion = $userMapper->fetchAllByIds($connectionIds);foreach($usersConnectetion as $userConnectetion){if(in_array($userConnectetion->id, $user_blocked_ids)) {continue;}$username = trim($userConnectetion->first_name . ' ' . $userConnectetion->last_name);$status = $user->online ? 'LABEL_ONLINE' : 'LABEL_OFFLINE';array_push($contacts, ['id' => $userConnectetion->uuid, 'uuid' => $userConnectetion->uuid, 'status'=> $status,'name'=> $username, 'image' => $userConnectetion->image]);}}$chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);$groups = [];$chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);$results= $chatGroupUserMapper->fetchAllByUserId($user->id);if(is_array($results)) {foreach ($results as $r) {$chatGroup = $chatGroupMapper->fetchOne($r->group_id);if($chatGroup) {array_push($groups, ['id' => $chatGroup->uuid, 'name' => $chatGroup->name, 'owner' => $r->owner == ChatGroupUser::OWNER_YES ]);}}}return $this->getView()->render('helpers/chat.phtml', ['contacts' => $contacts, 'groups' => $groups, 'user_id' => $user->id, 'timezone' => $user->timezone]);}private function isInactiveConnection(string $timestamp){if(empty($timestamp)) {return true;}$now = date('Y-m-d H:i:s');$datetime1=date_create($now);$datetime2=date_create($timestamp);$diff=date_diff($datetime1, $datetime2);if($diff->y > 0 || $diff->m > 0 || $diff->d > 0 || $diff->h > 0 || $diff->i > 0) {return true;}return ($diff->s) > 15 ? true : false;}}