Snippets

Reach Media Network Convert old player last_online data to Mongo Server

Created by James Henderson
<?php

$app->get('/test/james(/)', function() use($app) {
    $response = new ApiResponse($app, $validator);

    $players = players::find()
        ->in('moxie');

    $no_last_online_count = 0;
    $added_online_status_count = 0;
    $existing_online_status_count = 0;
    $errors = [];

    foreach($players as $player){
        try{
            if(!$player->last_online){
                $no_last_online_count++;
                continue;
            }

            $status = REACH\BigData\Models\Reporting\PlayerOnlineStatus::findOne(['player_uuid' => $player->uuid]);

            if(!isset($status)){
                //create new player status entry
                $status = new \REACH\BigData\Models\Reporting\PlayerOnlineStatus([
                    'player_uuid' => $player->uuid,
                    'last_online' =>  new \MongoDB\BSON\UTCDateTime(new DateTime($player->last_online, new \DateTimeZone('UTC')))
                ]);

                $status->save();
                $added_online_status_count++;
            } else if (!$status->last_online){
                $status->last_online = new \MongoDB\BSON\UTCDateTime(new DateTime($player->last_online, new \DateTimeZone('UTC')));
                $status->save();
                $added_online_status_count++;
            } else{
                $existing_online_status_count++;
            }
        } catch(Exception $e){
            $errors[] = ['player_uuid'=>$player->uuid, 'error_message'=>$e->getMessage()];
        }
    }

    $response['errors'] = $errors;
    $response['no_last_online_count'] = $no_last_online_count;
    $response['added_online_status_count'] = $added_online_status_count;
    $response['existing_online_status_count'] = $existing_online_status_count;

    $response->success();

    $response->send();
});

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.