Example #1
0
 public function execute()
 {
     // (1) generate a conv id
     $ids = array();
     foreach ($this->requestData['user_to_invite'] as $userToInvite) {
         $ids[] = $userToInvite['id'];
     }
     // always add our selve to the array for the conv id
     $ids[] = $this->requestData['user']['id'];
     // (2) check if conv id exists
     if ($id = $this->conversationMapper->existsByUsers($ids)) {
         $id = $id['conv_id'];
     } else {
         $id = $this->generateConvId();
         // (3) Create the conv
         $conversation = new Conversation();
         $conversation->setConversationId($id);
         $this->conversationMapper->insert($conversation);
     }
     // (5) invite the user_to_invite since we just created the conv
     // foreach user to invite
     $requestData = array();
     $requestData['conv_id'] = $id;
     $requestData['user'] = $this->requestData['user'];
     foreach ($this->requestData['user_to_invite'] as $userToInvite) {
         if ($userToInvite['id'] !== $this->requestData['user']['id']) {
             $requestData['user_to_invite'] = $userToInvite;
             $this->invite->setRequestData($requestData);
             $this->invite->execute();
         }
     }
     // (4) join the just created conv
     $this->requestData['conv_id'] = $id;
     $this->join->setRequestData($this->requestData);
     $this->join->execute();
     // Fetch users in conv
     $this->getUsers->setRequestData(array("conv_id" => $this->requestData['conv_id']));
     $users = $this->getUsers->execute();
     $users = $users['users'];
     // Fetch messages in conv
     $this->messages->setRequestData(array("conv_id" => $this->requestData['conv_id'], 'user' => $this->requestData['user']));
     $messages = $this->messages->execute();
     $messages = $messages['messages'];
     return array("conv_id" => $id, "users" => $users, "messages" => $messages);
 }
Example #2
0
 public function existsByUserProvider()
 {
     $conv1Id = md5(time());
     $conv1 = new Conversation();
     $conv1->setConversationId($conv1Id);
     $user1InConv1 = new User();
     $user1InConv1->setConversationId($conv1Id);
     $user1InConv1->setUser('foo');
     $user1InConv1->setJoined(time() - 53353);
     $user2InConv1 = new User();
     $user2InConv1->setConversationId($conv1Id);
     $user2InConv1->setUser('bar');
     $user2InConv1->setJoined(time() - 53353);
     $conv2Id = md5(time() - 3434);
     $conv2 = new Conversation();
     $conv2->setConversationId($conv2Id);
     $user1InConv2 = new User();
     $user1InConv2->setConversationId($conv2Id);
     $user1InConv2->setUser('foo');
     $user1InConv2->setJoined(time() - 53353);
     $user2InConv2 = new User();
     $user2InConv2->setConversationId($conv2Id);
     $user2InConv2->setUser('bar');
     $user2InConv2->setJoined(time() - 53353);
     $user3InConv2 = new User();
     $user3InConv2->setConversationId($conv2Id);
     $user3InConv2->setUser('foobar');
     $user3InConv2->setJoined(time() - 53353);
     return array(array($conv1, $user1InConv1, $user2InConv1, $conv2, $user1InConv2, $user2InConv2, $user3InConv2));
 }