Esempio n. 1
0
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);
}
Esempio n. 2
0
    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);