function wespot_msg_get_messages($usertoken, $group, $game, $threadId, $fromtime = "", $resumptiontoken = "") { global $LOOP_COUNT_MSG; // Just in case, to stop never ending loops. if ($LOOP_COUNT_MSG > 10) { return; } $LOOP_COUNT_MSG = $LOOP_COUNT_MSG + 1; $gameid = $game->arlearn_gameid; $runid = $game->arlearn_runid; $thread = wespot_msg_get_thread($threadId); $args = array(); if (isset($thread->lastSyncTime)) { $args['from'] = $thread->lastSyncTime; } $results = getARLearnThreadMessages($usertoken, $threadId, $args); if ($results == false) { return false; } $datareturned = json_decode($results); if (isset($datareturned->error)) { //@TODO: check documentation if function returns false register_error(elgg_echo("wespot_msg:failure")); } $messages = $datareturned->messages; if (!$messages || count($messages) <= 0) { return false; } foreach ($messages as $message) { // Check if message already loaded $_messages = elgg_get_entities_from_metadata(array('type' => 'object', 'subtype' => 'arlearn_msg', 'metadata_name' => 'messageId', 'metadata_value' => $message->messageId)); // If not saved locally do it if (!$_messages || count($_messages) == 0) { //@TODO: if poster is not registered as Elgg user message will be ignored //discuss whether this is the correct behavior if ($user = wespot_msg_get_user($message->senderProviderId, $message->senderId)) { $result = wespot_msg_add_message($user, $group, $message, $group->access_id); if ($result) { //system_message(elgg_echo("wespot_msg:posted")); } else { register_error(elgg_echo("wespot_msg:failure")); } } } } //store last sync time $thread->lastSyncTime = $datareturned->serverTime; elgg_set_ignore_access(true); $thread->save(); elgg_set_ignore_access(false); }
forward(REFERER); } $gamearray = elgg_get_entities(array('type' => 'object', 'subtype' => 'arlearngame', 'owner_guid' => $owner_guid)); if ($gamearray === FALSE || count($gamearray) == 0) { forward(REFERER); } $game = $gamearray[0]; $runId = $game->arlearn_runid; elgg_load_library('elgg:wespot_arlearnservices'); elgg_load_library('elgg:wespot_arlearnmsgservices'); $ownerprovider = elgg_get_plugin_user_setting('provider', elgg_get_logged_in_user_guid(), 'elgg_social_login'); $owneroauth = str_replace("{$ownerprovider}_", '', elgg_get_plugin_user_setting('uid', elgg_get_logged_in_user_guid(), 'elgg_social_login')); $usertoken = createARLearnUserToken($ownerprovider, $owneroauth); if (!isset($usertoken) || $usertoken == "") { register_error(elgg_echo("wespot_msg:somethingwentwrong")); forward(REFERER); } $response = createARLearnMessage($usertoken, $runId, $threadId, $message_content); if ($response == false) { register_error(elgg_echo("wespot_msg:failure")); } $datareturned = json_decode($response); if (isset($datareturned->error)) { register_error(elgg_echo("wespot_msg:failure")); } $result = wespot_msg_add_message(elgg_get_logged_in_user_entity(), $owner, $datareturned, $owner->access_id); if (!$result) { register_error(elgg_echo("wespot_msg:failure")); } //system_message(elgg_echo("wespot_msg:posted")); forward(REFERER);