| Línea 2... |
Línea 2... |
| 2 |
|
2 |
|
| Línea 3... |
Línea 3... |
| 3 |
declare(strict_types=1);
|
3 |
declare(strict_types=1);
|
| Línea 4... |
Línea 4... |
| 4 |
|
4 |
|
| 5 |
namespace LeadersLinked\Controller;
|
5 |
namespace LeadersLinked\Controller;
|
| 6 |
|
- |
|
| 7 |
use Laminas\Db\Adapter\AdapterInterface;
|
6 |
|
| - |
|
7 |
use LeadersLinked\Model\User;
|
| 8 |
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
|
8 |
use LeadersLinked\Library\Zoom;
|
| 9 |
use Laminas\Mvc\Controller\AbstractActionController;
|
9 |
use Laminas\Log\LoggerInterface;
|
| - |
|
10 |
use LeadersLinked\Model\Network;
|
| - |
|
11 |
use Laminas\View\Model\JsonModel;
|
| - |
|
12 |
use Laminas\View\Model\ViewModel;
|
| 10 |
use Laminas\Log\LoggerInterface;
|
13 |
use LeadersLinked\Model\ChatUser;
|
| 11 |
use Laminas\View\Model\JsonModel;
|
14 |
use LeadersLinked\Model\ChatGroup;
|
| 12 |
use Laminas\View\Model\ViewModel;
|
- |
|
| 13 |
use LeadersLinked\Library\Functions;
|
- |
|
| 14 |
use LeadersLinked\Mapper\UserMapper;
|
- |
|
| 15 |
use LeadersLinked\Mapper\ConnectionMapper;
|
- |
|
| 16 |
use LeadersLinked\Mapper\ChatMessageMapper;
|
- |
|
| 17 |
use LeadersLinked\Mapper\ChatGroupMapper;
|
15 |
use LeadersLinked\Model\Connection;
|
| 18 |
use LeadersLinked\Mapper\ChatGroupMessageMapper;
|
16 |
use LeadersLinked\Library\Functions;
|
| - |
|
17 |
use LeadersLinked\Mapper\UserMapper;
|
| - |
|
18 |
use LeadersLinked\Mapper\UtilMapper;
|
| - |
|
19 |
use LeadersLinked\Model\ChatMessage;
|
| - |
|
20 |
use LeadersLinked\Model\ZoomMeeting;
|
| - |
|
21 |
use LeadersLinked\Model\ChatGroupUser;
|
| - |
|
22 |
use Laminas\Db\Adapter\AdapterInterface;
|
| - |
|
23 |
use LeadersLinked\Form\Chat\ZoomAddForm;
|
| 19 |
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
|
24 |
use LeadersLinked\Mapper\ChatUserMapper;
|
| 20 |
use LeadersLinked\Mapper\ChatUserMapper;
|
- |
|
| 21 |
use LeadersLinked\Model\ChatMessage;
|
25 |
use LeadersLinked\Model\ZoomMeetingUser;
|
| 22 |
use LeadersLinked\Model\ChatGroupMessage;
|
- |
|
| 23 |
use LeadersLinked\Model\ChatGroupUserMessage;
|
- |
|
| 24 |
use LeadersLinked\Model\Connection;
|
26 |
use LeadersLinked\Mapper\ChatGroupMapper;
|
| - |
|
27 |
use LeadersLinked\Model\ChatGroupMessage;
|
| - |
|
28 |
use LeadersLinked\Mapper\ConnectionMapper;
|
| 25 |
use LeadersLinked\Model\ChatGroup;
|
29 |
use LeadersLinked\Form\CreateChatGroupForm;
|
| 26 |
use LeadersLinked\Model\ChatUser;
|
30 |
use LeadersLinked\Mapper\ChatMessageMapper;
|
| 27 |
use LeadersLinked\Form\CreateChatGroupForm;
|
31 |
use LeadersLinked\Mapper\ZoomMeetingMapper;
|
| - |
|
32 |
use LeadersLinked\Mapper\ChatGroupUserMapper;
|
| - |
|
33 |
use LeadersLinked\Model\ChatGroupUserMessage;
|
| - |
|
34 |
use LeadersLinked\Mapper\ZoomMeetingUserMapper;
|
| - |
|
35 |
use LeadersLinked\Mapper\ChatGroupMessageMapper;
|
| Línea 28... |
Línea 36... |
| 28 |
use LeadersLinked\Mapper\ChatGroupUserMapper;
|
36 |
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
|
| 29 |
use LeadersLinked\Model\ChatGroupUser;
|
37 |
use Laminas\Mvc\Controller\AbstractActionController;
|
| 30 |
use LeadersLinked\Mapper\UtilMapper;
|
38 |
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
|
| Línea 349... |
Línea 357... |
| 349 |
'url_send' => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
|
357 |
'url_send' => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
|
| 350 |
'url_upload' => $this->url()->fromRoute('chat/upload', ['id' => $user->uuid]),
|
358 |
'url_upload' => $this->url()->fromRoute('chat/upload', ['id' => $user->uuid]),
|
| 351 |
'url_mark_seen' => $this->url()->fromRoute('chat/mark-seen', ['id' => $user->uuid]),
|
359 |
'url_mark_seen' => $this->url()->fromRoute('chat/mark-seen', ['id' => $user->uuid]),
|
| 352 |
'url_mark_received' => $this->url()->fromRoute('chat/mark-received', ['id' => $user->uuid]),
|
360 |
'url_mark_received' => $this->url()->fromRoute('chat/mark-received', ['id' => $user->uuid]),
|
| 353 |
'url_get_all_messages' => $this->url()->fromRoute('chat/get-all-messages', ['id' => $user->uuid]),
|
361 |
'url_get_all_messages' => $this->url()->fromRoute('chat/get-all-messages', ['id' => $user->uuid]),
|
| - |
|
362 |
'url_zoom' => $this->url()->fromRoute('chat/zoom', ['id' => $user->uuid, 'type' => 'chat']),
|
| 354 |
'id' => $user->uuid,
|
363 |
'id' => $user->uuid,
|
| 355 |
'name' => trim($user->first_name . ' ' . $user->last_name),
|
364 |
'name' => trim($user->first_name . ' ' . $user->last_name),
|
| 356 |
'image' => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
|
365 |
'image' => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
|
| 357 |
/*'profile' => $this->url()->fromRoute('profile/view', ['id' =>$user->uuid]),*/
|
366 |
/*'profile' => $this->url()->fromRoute('profile/view', ['id' =>$user->uuid]),*/
|
| 358 |
'type' => 'user',
|
367 |
'type' => 'user',
|
| Línea 2502... |
Línea 2511... |
| 2502 |
return true;
|
2511 |
return true;
|
| 2503 |
}
|
2512 |
}
|
| Línea 2504... |
Línea 2513... |
| 2504 |
|
2513 |
|
| 2505 |
return ($diff->s) > 15 ? true : false;
|
2514 |
return ($diff->s) > 15 ? true : false;
|
| - |
|
2515 |
}
|
| - |
|
2516 |
|
| - |
|
2517 |
public function zoomAction()
|
| - |
|
2518 |
{
|
| - |
|
2519 |
$request = $this->getRequest();
|
| - |
|
2520 |
if ($request->isPost()) {
|
| - |
|
2521 |
$currentUserPlugin = $this->plugin('currentUserPlugin');
|
| - |
|
2522 |
$currentUser = $currentUserPlugin->getUser();
|
| - |
|
2523 |
$id = $this->params()->fromRoute('id');
|
| - |
|
2524 |
|
| - |
|
2525 |
if (!$id) {
|
| - |
|
2526 |
return new JsonModel([
|
| - |
|
2527 |
'success' => false,
|
| - |
|
2528 |
'data' => 'ERROR_PARAMETERS_ARE_INVALID'
|
| - |
|
2529 |
]);
|
| - |
|
2530 |
}
|
| - |
|
2531 |
|
| - |
|
2532 |
$chatUserMapper = ChatUserMapper::getInstance($this->adapter);
|
| - |
|
2533 |
$chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
|
| - |
|
2534 |
$chatUser = null;
|
| - |
|
2535 |
$chatGroup = $chatGroupMapper->fetchOneByUuid($id);
|
| - |
|
2536 |
|
| - |
|
2537 |
if ($chatGroup) {
|
| - |
|
2538 |
$chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
|
| - |
|
2539 |
$chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
|
| - |
|
2540 |
|
| - |
|
2541 |
if (!$chatGroupUser) {
|
| - |
|
2542 |
$data = [
|
| - |
|
2543 |
'success' => false,
|
| - |
|
2544 |
'data' => 'ERROR_ZOOM_CHAT_UNAUTHORIZE'
|
| - |
|
2545 |
];
|
| - |
|
2546 |
return new JsonModel($data);
|
| - |
|
2547 |
}
|
| - |
|
2548 |
} else {
|
| - |
|
2549 |
$userMapper = UserMapper::getInstance($this->adapter);
|
| - |
|
2550 |
$user = $userMapper->fetchOneByUuid($id);
|
| - |
|
2551 |
|
| - |
|
2552 |
if (!$user) {
|
| - |
|
2553 |
return new JsonModel([
|
| - |
|
2554 |
'success' => false,
|
| - |
|
2555 |
'data' => 'ERROR_USER_NOT_FOUND'
|
| - |
|
2556 |
]);
|
| - |
|
2557 |
}
|
| - |
|
2558 |
|
| - |
|
2559 |
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
|
| - |
|
2560 |
$connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
| - |
|
2561 |
|
| - |
|
2562 |
if (!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
|
| - |
|
2563 |
|
| - |
|
2564 |
return new JsonModel([
|
| - |
|
2565 |
'success' => false,
|
| - |
|
2566 |
'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
|
| - |
|
2567 |
]);
|
| - |
|
2568 |
}
|
| - |
|
2569 |
|
| - |
|
2570 |
$chatUserMapper = ChatUserMapper::getInstance($this->adapter);
|
| - |
|
2571 |
$chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
| - |
|
2572 |
|
| - |
|
2573 |
if (!$chatUser) {
|
| - |
|
2574 |
$chatUser = new ChatUser();
|
| - |
|
2575 |
$chatUser->user_id1 = $currentUser->id;
|
| - |
|
2576 |
$chatUser->user_id2 = $user->id;
|
| - |
|
2577 |
$response = $chatUserMapper->insert($chatUser);
|
| - |
|
2578 |
|
| - |
|
2579 |
if (!$response) {
|
| - |
|
2580 |
return new JsonModel([
|
| - |
|
2581 |
'success' => false,
|
| - |
|
2582 |
'data' => $chatUserMapper->getError()
|
| - |
|
2583 |
]);
|
| - |
|
2584 |
}
|
| - |
|
2585 |
|
| - |
|
2586 |
$chatUser = $chatUserMapper->fetchOne($chatUser->id);
|
| - |
|
2587 |
$fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
|
| - |
|
2588 |
$dirpath = $fullpath_chat . $chatUser->uuid;
|
| - |
|
2589 |
|
| - |
|
2590 |
if (!file_exists($dirpath)) {
|
| - |
|
2591 |
mkdir($dirpath, 0777, true);
|
| - |
|
2592 |
chmod($dirpath, 0777);
|
| - |
|
2593 |
}
|
| - |
|
2594 |
}
|
| - |
|
2595 |
}
|
| - |
|
2596 |
|
| - |
|
2597 |
if (!$chatUser && !$chatGroup) {
|
| - |
|
2598 |
$data = [
|
| - |
|
2599 |
'success' => false,
|
| - |
|
2600 |
'data' => 'ERROR_ZOOM_CHAT_NOT_FOUND'
|
| - |
|
2601 |
];
|
| - |
|
2602 |
return new JsonModel($data);
|
| - |
|
2603 |
}
|
| - |
|
2604 |
|
| - |
|
2605 |
$dataPost = $request->getPost()->toArray();
|
| - |
|
2606 |
$form = new ZoomAddForm();
|
| - |
|
2607 |
$form->setData($dataPost);
|
| - |
|
2608 |
|
| - |
|
2609 |
if ($form->isValid()) {
|
| - |
|
2610 |
$dataPost = (array) $form->getData();
|
| - |
|
2611 |
$dtStart = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
|
| - |
|
2612 |
if (!$dtStart) {
|
| - |
|
2613 |
return new JsonModel([
|
| - |
|
2614 |
'success' => false,
|
| - |
|
2615 |
'data' => 'ERROR_PARAMETERS_ARE_INVALID'
|
| - |
|
2616 |
]);
|
| - |
|
2617 |
}
|
| - |
|
2618 |
|
| - |
|
2619 |
$dtEnd = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
|
| - |
|
2620 |
$dtEnd->add(new \DateInterval('PT' . $dataPost['duration'] . 'M'));
|
| - |
|
2621 |
$start_time = $dtStart->format('Y-m-d\TH:i:s');
|
| - |
|
2622 |
$zoom = new Zoom($this->adapter, $this->config, $this->cache);
|
| - |
|
2623 |
$response = $zoom->getOAuthAccessToken();
|
| - |
|
2624 |
|
| - |
|
2625 |
if ($response['success']) {
|
| - |
|
2626 |
$access_token = $response['data'];
|
| - |
|
2627 |
$result = $zoom->addMeeting($access_token, $dataPost['title'], $dataPost['description'], $dataPost['type'], $start_time, $dataPost['duration'], $dataPost['timezone'], $dataPost['password']);
|
| - |
|
2628 |
} else {
|
| - |
|
2629 |
return new JsonModel([
|
| - |
|
2630 |
'success' => false,
|
| - |
|
2631 |
'data' => 'ERROR_ZOOM_CREATING_NEW_MEETING'
|
| - |
|
2632 |
]);
|
| - |
|
2633 |
}
|
| - |
|
2634 |
|
| - |
|
2635 |
if ($result['success']) {
|
| - |
|
2636 |
$zoomMeetingMapper = ZoomMeetingMapper::getInstance($this->adapter);
|
| - |
|
2637 |
$zoomMeeting = $zoomMeetingMapper->fetchOne($result['data']['id']);
|
| - |
|
2638 |
|
| - |
|
2639 |
if (!$zoomMeeting) {
|
| - |
|
2640 |
$zoomMeeting = new ZoomMeeting();
|
| - |
|
2641 |
$zoomMeeting->id = $result['data']['id'];
|
| - |
|
2642 |
$zoomMeeting->topic = $dataPost['title'];
|
| - |
|
2643 |
$zoomMeeting->agenda = $dataPost['description'];
|
| - |
|
2644 |
$zoomMeeting->duration = $dataPost['duration'];
|
| - |
|
2645 |
$zoomMeeting->join_url = $result['data']['join_url'];
|
| - |
|
2646 |
$zoomMeeting->start_time = $dtStart->format('Y-m-d H:i:s');
|
| - |
|
2647 |
$zoomMeeting->end_time = $dtEnd->format('Y-m-d H:i:s');
|
| - |
|
2648 |
$zoomMeeting->timezone = $dataPost['timezone'];
|
| - |
|
2649 |
$zoomMeeting->type = $dataPost['type'];
|
| - |
|
2650 |
$zoomMeeting->uuid = $result['data']['uuid'];
|
| - |
|
2651 |
$zoomMeeting->password = $dataPost['password'];
|
| - |
|
2652 |
|
| - |
|
2653 |
if (!$zoomMeetingMapper->insert($zoomMeeting)) {
|
| - |
|
2654 |
return new JsonModel([
|
| - |
|
2655 |
'success' => false,
|
| - |
|
2656 |
'data' => $zoomMeetingMapper->getError()
|
| - |
|
2657 |
]);
|
| - |
|
2658 |
}
|
| - |
|
2659 |
}
|
| - |
|
2660 |
|
| - |
|
2661 |
$chatMessageContent = "LABEL_ZOOM_MEETING \r\n" .
|
| - |
|
2662 |
" LABEL_ZOOM_MEETING_START_DATE : " . $dtStart->format('Y-m-d') . "\r\n" .
|
| - |
|
2663 |
" LABEL_ZOOM_MEETING_START_TIME : " . $dtStart->format('H:i a') . "\r\n" .
|
| - |
|
2664 |
" LABEL_ZOOM_MEETING_TIMEZONE : " . $zoomMeeting->timezone . "\r\n" .
|
| - |
|
2665 |
" LABEL_ZOOM_MEETING_TITLE : " . $zoomMeeting->topic . "\r\n" .
|
| - |
|
2666 |
" LABEL_ZOOM_MEETING_URL : " . $zoomMeeting->join_url . "\r\n" .
|
| - |
|
2667 |
" LABEL_ZOOM_MEETING_PASSWORD : " . $zoomMeeting->password . "\r\n";
|
| - |
|
2668 |
$zoomMeetingUserMapper = ZoomMeetingUserMapper::getInstance($this->adapter);
|
| - |
|
2669 |
$zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $currentUser->id);
|
| - |
|
2670 |
|
| - |
|
2671 |
if (!$zoomMeetingUser) {
|
| - |
|
2672 |
$zoomMeetingUser = new ZoomMeetingUser();
|
| - |
|
2673 |
$zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
|
| - |
|
2674 |
$zoomMeetingUser->user_id = $currentUser->id;
|
| - |
|
2675 |
$zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
|
| - |
|
2676 |
$zoomMeetingUserMapper->insert($zoomMeetingUser);
|
| - |
|
2677 |
}
|
| - |
|
2678 |
|
| - |
|
2679 |
if ($chatUser) {
|
| - |
|
2680 |
if ($chatUser->user_id1 == $currentUser->id) {
|
| - |
|
2681 |
$zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id2);
|
| - |
|
2682 |
|
| - |
|
2683 |
if (!$zoomMeetingUser) {
|
| - |
|
2684 |
$zoomMeetingUser = new ZoomMeetingUser();
|
| - |
|
2685 |
$zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
|
| - |
|
2686 |
$zoomMeetingUser->user_id = $chatUser->user_id2;
|
| - |
|
2687 |
$zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
|
| - |
|
2688 |
$zoomMeetingUserMapper->insert($zoomMeetingUser);
|
| - |
|
2689 |
}
|
| - |
|
2690 |
} else {
|
| - |
|
2691 |
$zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id1);
|
| - |
|
2692 |
|
| - |
|
2693 |
if (!$zoomMeetingUser) {
|
| - |
|
2694 |
$zoomMeetingUser = new ZoomMeetingUser();
|
| - |
|
2695 |
$zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
|
| - |
|
2696 |
$zoomMeetingUser->user_id = $chatUser->user_id1;
|
| - |
|
2697 |
$zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
|
| - |
|
2698 |
$zoomMeetingUserMapper->insert($zoomMeetingUser);
|
| - |
|
2699 |
}
|
| - |
|
2700 |
}
|
| - |
|
2701 |
|
| - |
|
2702 |
$chatMessage = new ChatMessage();
|
| - |
|
2703 |
$chatMessage->recd = ChatMessage::RECD_NO;
|
| - |
|
2704 |
$chatMessage->seen = ChatMessage::SEEN_NO;
|
| - |
|
2705 |
$chatMessage->type = ChatMessage::TYPE_TEXT;
|
| - |
|
2706 |
$chatMessage->content = $chatMessageContent;
|
| - |
|
2707 |
$chatMessage->from_id = $currentUser->id;
|
| - |
|
2708 |
$chatMessage->to_id = $chatUser->user_id1 == $currentUser->id ? $chatUser->user_id2 : $chatUser->user_id1;
|
| - |
|
2709 |
$chatMessage->chat_id = $chatUser->id;
|
| - |
|
2710 |
$chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
|
| - |
|
2711 |
$chatMessageMapper->insert($chatMessage);
|
| - |
|
2712 |
$chatUserMapper->markIsOpen1($chatUser->id);
|
| - |
|
2713 |
$chatUserMapper->markIsOpen2($chatUser->id);
|
| - |
|
2714 |
} else if ($chatGroup) {
|
| - |
|
2715 |
|
| - |
|
2716 |
$chatGroupMessage = new ChatGroupMessage();
|
| - |
|
2717 |
$chatGroupMessage->group_id = $chatGroup->id;
|
| - |
|
2718 |
$chatGroupMessage->content = $chatMessageContent;
|
| - |
|
2719 |
$chatGroupMessage->sender_id = $currentUser->id;
|
| - |
|
2720 |
$chatGroupMessage->type = ChatGroupMessage::TYPE_TEXT;
|
| - |
|
2721 |
$chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
|
| - |
|
2722 |
|
| - |
|
2723 |
if ($chatGroupMessageMapper->insert($chatGroupMessage)) {
|
| - |
|
2724 |
$chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
|
| - |
|
2725 |
$groupUsers = $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
|
| - |
|
2726 |
$chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
|
| - |
|
2727 |
foreach ($groupUsers as $groupUser) {
|
| - |
|
2728 |
if ($groupUser->user_id != $currentUser->id) {
|
| - |
|
2729 |
$zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $groupUser->user_id);
|
| - |
|
2730 |
|
| - |
|
2731 |
if (!$zoomMeetingUser) {
|
| - |
|
2732 |
$zoomMeetingUser = new ZoomMeetingUser();
|
| - |
|
2733 |
$zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
|
| - |
|
2734 |
$zoomMeetingUser->user_id = $groupUser->user_id;
|
| - |
|
2735 |
$zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
|
| - |
|
2736 |
$zoomMeetingUserMapper->insert($zoomMeetingUser);
|
| - |
|
2737 |
}
|
| - |
|
2738 |
}
|
| - |
|
2739 |
|
| - |
|
2740 |
$chatGroupUserMessage = new ChatGroupUserMessage();
|
| - |
|
2741 |
$chatGroupUserMessage->group_id = $chatGroup->id;
|
| - |
|
2742 |
$chatGroupUserMessage->message_id = $chatGroupMessage->id;
|
| - |
|
2743 |
$chatGroupUserMessage->receiver_id = $groupUser->user_id;
|
| - |
|
2744 |
$chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_NO;
|
| - |
|
2745 |
$chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
|
| - |
|
2746 |
$chatGroupUserMessageMapper->insert($chatGroupUserMessage);
|
| - |
|
2747 |
$chatGroupUserMapper->markIsOpen($groupUser->group_id, $groupUser->user_id);
|
| - |
|
2748 |
}
|
| - |
|
2749 |
}
|
| - |
|
2750 |
}
|
| - |
|
2751 |
|
| - |
|
2752 |
return new JsonModel([
|
| - |
|
2753 |
'success' => true,
|
| - |
|
2754 |
'data' => 'LABEL_ZOOM_NEW_MEETING_SUCCESSFULLY'
|
| - |
|
2755 |
]);
|
| - |
|
2756 |
} else {
|
| - |
|
2757 |
return new JsonModel([
|
| - |
|
2758 |
'success' => false,
|
| - |
|
2759 |
'data' => 'ERROR_ZOOM_CREATING_NEW_MEETING'
|
| - |
|
2760 |
]);
|
| - |
|
2761 |
}
|
| - |
|
2762 |
} else {
|
| - |
|
2763 |
$messages = [];
|
| - |
|
2764 |
$form_messages = (array) $form->getMessages();
|
| - |
|
2765 |
foreach ($form_messages as $fieldname => $field_messages) {
|
| - |
|
2766 |
$messages[$fieldname] = array_values($field_messages);
|
| - |
|
2767 |
}
|
| - |
|
2768 |
|
| - |
|
2769 |
return new JsonModel([
|
| - |
|
2770 |
'success' => false,
|
| - |
|
2771 |
'data' => $messages
|
| - |
|
2772 |
]);
|
| - |
|
2773 |
|
| - |
|
2774 |
return new JsonModel($response);
|
| - |
|
2775 |
}
|
| - |
|
2776 |
} else {
|
| - |
|
2777 |
$response = [
|
| - |
|
2778 |
'success' => false,
|
| - |
|
2779 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
| - |
|
2780 |
];
|
| - |
|
2781 |
}
|
| - |
|
2782 |
|
| - |
|
2783 |
return new JsonModel($response);
|
| - |
|
2784 |
}
|
| - |
|
2785 |
|
| - |
|
2786 |
|
| - |
|
2787 |
public function usersAction()
|
| - |
|
2788 |
{
|
| - |
|
2789 |
$currentUserPlugin = $this->plugin('currentUserPlugin');
|
| - |
|
2790 |
$currentUser = $currentUserPlugin->getUser();
|
| - |
|
2791 |
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
|
| - |
|
2792 |
$currentNetwork = $currentNetworkPlugin->getNetwork();
|
| - |
|
2793 |
$request = $this->getRequest();
|
| - |
|
2794 |
|
| - |
|
2795 |
if ($request->isGet()) {
|
| - |
|
2796 |
$items = [];
|
| - |
|
2797 |
$chatUserMapper = ChatUserMapper::getInstance($this->adapter);
|
| - |
|
2798 |
$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
|
| - |
|
2799 |
|
| - |
|
2800 |
if (strlen($search) >= 3) {
|
| - |
|
2801 |
$user_ids = [];
|
| - |
|
2802 |
$userMapper = UserMapper::getInstance($this->adapter);
|
| - |
|
2803 |
|
| - |
|
2804 |
if ($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER) {
|
| - |
|
2805 |
|
| - |
|
2806 |
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
|
| - |
|
2807 |
$user_ids = $connectionMapper->fetchAllConnectionsByUserReturnIds($currentUser->id);
|
| - |
|
2808 |
} else {
|
| - |
|
2809 |
if ($currentNetwork->default == Network::DEFAULT_YES) {
|
| - |
|
2810 |
$user_ids = $userMapper->fetchAllIdsByDefaultNetworkId($currentNetwork->id, $currentUser->id);
|
| - |
|
2811 |
} else {
|
| - |
|
2812 |
$user_ids = $userMapper->fetchAllIdsByNonDefaultNetworkId($currentNetwork->id, $currentUser->id);
|
| - |
|
2813 |
}
|
| - |
|
2814 |
}
|
| - |
|
2815 |
|
| - |
|
2816 |
$items = [];
|
| - |
|
2817 |
$records = $userMapper->fetchAllByIdsAndSearch($user_ids, $search, $currentUser->id);
|
| - |
|
2818 |
|
| - |
|
2819 |
foreach ($records as $record) {
|
| - |
|
2820 |
$chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $record->id);
|
| - |
|
2821 |
if ($chatUser) {
|
| - |
|
2822 |
$link_send = $this->url()->fromRoute('chat/send', ['id' => $record->uuid]);
|
| - |
|
2823 |
} else {
|
| - |
|
2824 |
$link_send = '';
|
| - |
|
2825 |
}
|
| - |
|
2826 |
|
| - |
|
2827 |
$link_open_or_create = $this->url()->fromRoute('chat/open-or-create', ['id' => $record->uuid]);
|
| - |
|
2828 |
array_push($items, [
|
| - |
|
2829 |
'name' => trim($record->first_name . ' ' . $record->last_name) . ' (' . $record->email . ')',
|
| - |
|
2830 |
'image' => $this->url()->fromRoute('storage', ['code' => $record->uuid, 'type' => 'user', 'filename' => $record->image]),
|
| - |
|
2831 |
'link_send' => $link_send,
|
| - |
|
2832 |
'link_open_or_create' => $link_open_or_create,
|
| - |
|
2833 |
]);
|
| - |
|
2834 |
}
|
| - |
|
2835 |
}
|
| - |
|
2836 |
|
| - |
|
2837 |
$response = [
|
| - |
|
2838 |
'success' => true,
|
| - |
|
2839 |
'data' => $items
|
| - |
|
2840 |
];
|
| - |
|
2841 |
} else {
|
| - |
|
2842 |
$response = [
|
| - |
|
2843 |
'success' => false,
|
| - |
|
2844 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
| - |
|
2845 |
];
|
| - |
|
2846 |
}
|
| - |
|
2847 |
|
| - |
|
2848 |
return new JsonModel($response);
|
| - |
|
2849 |
}
|
| - |
|
2850 |
|
| - |
|
2851 |
public function openOrCreateAction()
|
| - |
|
2852 |
{
|
| - |
|
2853 |
$request = $this->getRequest();
|
| - |
|
2854 |
if ($request->isPost()) {
|
| - |
|
2855 |
$currentUserPlugin = $this->plugin('currentUserPlugin');
|
| - |
|
2856 |
$currentUser = $currentUserPlugin->getUser();
|
| - |
|
2857 |
|
| - |
|
2858 |
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
|
| - |
|
2859 |
$currentNetwork = $currentNetworkPlugin->getNetwork();
|
| - |
|
2860 |
|
| - |
|
2861 |
|
| - |
|
2862 |
$id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
|
| - |
|
2863 |
|
| - |
|
2864 |
if (!$id) {
|
| - |
|
2865 |
return new JsonModel([
|
| - |
|
2866 |
'success' => false,
|
| - |
|
2867 |
'data' => 'ERROR_PARAMETERS_ARE_INVALID'
|
| - |
|
2868 |
]);
|
| - |
|
2869 |
}
|
| - |
|
2870 |
|
| - |
|
2871 |
$userMapper = UserMapper::getInstance($this->adapter);
|
| - |
|
2872 |
$user = $userMapper->fetchOneByUuid($id);
|
| - |
|
2873 |
|
| - |
|
2874 |
if (!$user) {
|
| - |
|
2875 |
return new JsonModel([
|
| - |
|
2876 |
'success' => false,
|
| - |
|
2877 |
'data' => 'ERROR_USER_NOT_FOUND'
|
| - |
|
2878 |
]);
|
| - |
|
2879 |
}
|
| - |
|
2880 |
|
| - |
|
2881 |
if ($user->email_verified == User::EMAIL_VERIFIED_NO || $user->status != User::STATUS_ACTIVE) {
|
| - |
|
2882 |
return new JsonModel([
|
| - |
|
2883 |
'success' => false,
|
| - |
|
2884 |
'data' => 'ERROR_USER_IS_INACTIVE'
|
| - |
|
2885 |
]);
|
| - |
|
2886 |
}
|
| - |
|
2887 |
|
| - |
|
2888 |
if ($user->network_id != $currentUser->network_id) {
|
| - |
|
2889 |
return new JsonModel([
|
| - |
|
2890 |
'success' => false,
|
| - |
|
2891 |
'data' => 'ERROR_USER_IS_INACTIVE'
|
| - |
|
2892 |
]);
|
| - |
|
2893 |
}
|
| - |
|
2894 |
|
| - |
|
2895 |
if ($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER) {
|
| - |
|
2896 |
|
| - |
|
2897 |
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
|
| - |
|
2898 |
$connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
| - |
|
2899 |
|
| - |
|
2900 |
if (!$connection) {
|
| - |
|
2901 |
return new JsonModel([
|
| - |
|
2902 |
'success' => false,
|
| - |
|
2903 |
'data' => 'ERROR_CONNECTION_NOT_ACTIVE'
|
| - |
|
2904 |
]);
|
| - |
|
2905 |
}
|
| - |
|
2906 |
}
|
| - |
|
2907 |
|
| - |
|
2908 |
$chatUserMapper = ChatUserMapper::getInstance($this->adapter);
|
| - |
|
2909 |
$chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
|
| - |
|
2910 |
if ($chatUser) {
|
| - |
|
2911 |
if ($currentUser->id == $chatUser->user_id1) {
|
| - |
|
2912 |
$chatUserMapper->markIsOpen1($chatUser->id);
|
| - |
|
2913 |
} else {
|
| - |
|
2914 |
$chatUserMapper->markIsOpen2($chatUser->id);
|
| - |
|
2915 |
}
|
| - |
|
2916 |
} else {
|
| - |
|
2917 |
$chatUser = new ChatUser();
|
| - |
|
2918 |
$chatUser->user_id1 = $currentUser->id;
|
| - |
|
2919 |
$chatUser->user_id2 = $user->id;
|
| - |
|
2920 |
$chatUser->user_open1 = ChatUser::OPEN_YES;
|
| - |
|
2921 |
$chatUser->user_open2 = ChatUser::OPEN_NO;
|
| - |
|
2922 |
|
| - |
|
2923 |
|
| - |
|
2924 |
if (!$chatUserMapper->insert($chatUser)) {
|
| - |
|
2925 |
return new JsonModel([
|
| - |
|
2926 |
'success' => false,
|
| - |
|
2927 |
'data' => $chatUserMapper->getError()
|
| - |
|
2928 |
]);
|
| - |
|
2929 |
}
|
| - |
|
2930 |
}
|
| - |
|
2931 |
|
| - |
|
2932 |
$utilMapper = UtilMapper::getInstance($this->adapter);
|
| - |
|
2933 |
$now = $utilMapper->getDatebaseNow();
|
| - |
|
2934 |
|
| - |
|
2935 |
$chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
|
| - |
|
2936 |
$count_not_received_messages = $chatMessageMapper->countNotReceivedMessagesByChatIdAndToId($chatUser->id, $currentUser->id);
|
| - |
|
2937 |
$count_not_seen_messages = $chatMessageMapper->countNotSeenMessagesByChatIdAndToId($chatUser->id, $currentUser->id);
|
| - |
|
2938 |
$lastMessage = $chatMessageMapper->fetchLastMessage($chatUser->id, $currentUser->id);
|
| - |
|
2939 |
|
| - |
|
2940 |
if ($lastMessage) {
|
| - |
|
2941 |
$lastMessage = Functions::timeAgo($lastMessage->added_on, $now);
|
| - |
|
2942 |
} else {
|
| - |
|
2943 |
$lastMessage = '';
|
| - |
|
2944 |
}
|
| - |
|
2945 |
|
| - |
|
2946 |
if ($currentUser->id == $chatUser->user_id1) {
|
| - |
|
2947 |
$is_open = $chatUser->user_open1 == ChatUser::OPEN_YES;
|
| - |
|
2948 |
} else {
|
| - |
|
2949 |
$is_open = $chatUser->user_open2 == ChatUser::OPEN_YES;
|
| - |
|
2950 |
}
|
| - |
|
2951 |
|
| - |
|
2952 |
|
| - |
|
2953 |
$not_received_messages = $count_not_received_messages > 0;
|
| - |
|
2954 |
$not_seen_messages = $count_not_seen_messages > 0;
|
| - |
|
2955 |
|
| - |
|
2956 |
$data = [
|
| - |
|
2957 |
'url_clear' => $this->url()->fromRoute('chat/clear', ['id' => $user->uuid]),
|
| - |
|
2958 |
'url_close' => $this->url()->fromRoute('chat/close', ['id' => $user->uuid]),
|
| - |
|
2959 |
'url_open' => $this->url()->fromRoute('chat/open', ['id' => $user->uuid]),
|
| - |
|
2960 |
'url_send' => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
|
| - |
|
2961 |
'url_upload' => $this->url()->fromRoute('chat/upload', ['id' => $user->uuid]),
|
| - |
|
2962 |
'url_mark_seen' => $this->url()->fromRoute('chat/mark-seen', ['id' => $user->uuid]),
|
| - |
|
2963 |
'url_mark_received' => $this->url()->fromRoute('chat/mark-received', ['id' => $user->uuid]),
|
| - |
|
2964 |
'url_get_all_messages' => $this->url()->fromRoute('chat/get-all-messages', ['id' => $user->uuid]),
|
| - |
|
2965 |
'url_zoom' => $this->url()->fromRoute('chat/zoom', ['id' => $user->uuid, 'type' => 'chat']),
|
| - |
|
2966 |
'id' => $user->uuid,
|
| - |
|
2967 |
'name' => trim($user->first_name . ' ' . $user->last_name),
|
| - |
|
2968 |
'image' => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
|
| - |
|
2969 |
'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
|
| - |
|
2970 |
'type' => 'user',
|
| - |
|
2971 |
'online' => $user->online ? 1 : 0,
|
| - |
|
2972 |
'is_open' => $is_open ? 1 : 0,
|
| - |
|
2973 |
'not_seen_messages' => $not_seen_messages,
|
| - |
|
2974 |
'not_received_messages' => $not_received_messages,
|
| - |
|
2975 |
'count_not_seen_messages' => $count_not_seen_messages,
|
| - |
|
2976 |
'count_not_received_messages' => $count_not_received_messages,
|
| - |
|
2977 |
'last_message' => $lastMessage
|
| - |
|
2978 |
];
|
| - |
|
2979 |
|
| - |
|
2980 |
|
| - |
|
2981 |
|
| - |
|
2982 |
$userMapper->updateLastActivity($currentUser->id);
|
| - |
|
2983 |
|
| - |
|
2984 |
return new JsonModel([
|
| - |
|
2985 |
'success' => true,
|
| - |
|
2986 |
'data' => $data,
|
| - |
|
2987 |
]);
|
| - |
|
2988 |
} else {
|
| - |
|
2989 |
return new JsonModel([
|
| - |
|
2990 |
'success' => false,
|
| - |
|
2991 |
'data' => 'ERROR_METHOD_NOT_ALLOWED'
|
| - |
|
2992 |
]);
|
| - |
|
2993 |
}
|
| 2506 |
}
|
2994 |
}
|