$site = elgg_get_site_entity(); $dbprefix = elgg_get_config('dbprefix'); $users = array((int) $user_guid, (int) $owner->guid); sort($users); $chat_id = json_encode($users); $chats = elgg_get_entities_from_metadata(array('type' => 'object', 'subtype' => 'chat', 'owner_guid' => $site->guid, 'metadata_name_value_pairs' => array('name' => 'chat_id', 'value' => $chat_id))); $json = array(); if (empty($chats)) { $chat = new ElggChat(); $chat->owner_guid = $site->guid; $chat->container_guid = $site->guid; $chat->access_id = ACCESS_LOGGED_IN; $chat->title = 'Test'; $chat->chat_id = $chat_id; if ($chat->save()) { $chat->addMember($owner->guid); $chat->addMember($user_guid); } else { register_error(elgg_echo('chat:error:cannot_save')); return; } } else { $chat = $chats[0]; /** * Get messages ascending to get latest messages and then reverse * them to make the order chronological (latest messages at bottom). */ $messages = elgg_get_entities(array('type' => 'object', 'subtype' => 'chat_message', 'container_guid' => $chat->guid, 'limit' => 6, 'order_by' => 'e.time_created desc', 'pagination' => false)); $messages = array_reverse($messages); foreach ($messages as $message) { $owner = $message->getOwnerEntity();
forward(REFERER); } $user = elgg_get_logged_in_user_entity(); // Add user itself if missing if (!in_array($user->getGUID(), $members)) { $members[] = $user->getGUID(); } $old_member_guids = $entity->getMemberGuids(); // Add selected users to the chat foreach ($members as $member_guid) { // Skip users that are already members if (in_array($member_guid, $old_member_guids)) { continue; } // Add relationship "user is a member of this chat". if (!$entity->addMember($member_guid)) { $member = get_entity($member_guid); register_error(elgg_echo("chat:error:cannot_add_member", array($member->name))); } } // Remove users that were deselected foreach ($old_member_guids as $old_member_guid) { if (!in_array($old_member_guid, $members)) { $old_member = get_entity($old_member_guid); $entity->removeMember($old_member); } } // Save the first chat message if ($description) { $message = new ElggObject(); $message->subtype = 'chat_message';