Rev 1 | Rev 4113 | Ir a la última revisión | 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){$connectionMapper = ConnectionMapper:: getInstance($this->adapter);$connectionIds = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);$contacts = [];if($connectionIds) {$userMapper = UserMapper::getInstance($this->adapter);$users = $userMapper->fetchAllByIds($connectionIds);$userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);$user_blocked_ids = $userBlockedMapper->fetchAllBlockedReturnIds($user_id);foreach($users as $user){if(in_array($user->id, $user_blocked_ids)) {continue;}$username = trim($user->first_name . ' ' . $user->last_name);$status = $user->online ? 'LABEL_ONLINE' : 'LABEL_OFFLINE';array_push($contacts, ['id' => $user->uuid, 'uuid' => $user->uuid, 'status'=> $status,'name'=> $username, 'image' => $user->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]);}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;}}