|
/** |
|
* @param $playerId |
|
* @param $marketName |
|
* @param $deviceModel |
|
* @param $deviceUDID |
|
* @param $isExistingPlayer |
|
*/ |
|
private function createTrackingRecords($playerId, $marketName, $deviceModel, $deviceUDID, $isExistingPlayer) |
|
{ |
|
try { |
|
/* @var $trackTable \V8\Model\Table\Track */ |
|
$trackTable = $this->serviceLocator->get('V8\TrackTable'); |
|
|
|
/** @var ScriptEngine $scriptEngine */ |
|
$scriptEngine = $this->serviceLocator->get('V8\ScriptEngine'); |
|
|
|
$track_redis_key = REDIS_TRACK_KEY_PREFIX . $_SERVER['REMOTE_ADDR']; |
|
$track_keys = RedisWrapper::hashGetAllFields($track_redis_key); |
|
|
|
if (empty($track_keys) && strlen($deviceUDID) > 5) { |
|
// Lookup by UDID |
|
$track_udid_redis_key = REDIS_TRACK_UDID_KEY_PREFIX . $deviceUDID; |
|
$original_redis_key = RedisWrapper::get($track_udid_redis_key); |
|
|
|
if ($original_redis_key) { |
|
$track_redis_key = $original_redis_key; |
|
// Lookup the original redis key (ip has been changed probably) |
|
$track_keys = RedisWrapper::hashGetAllFields($track_redis_key); |
|
|
|
if (!empty($track_keys)) { |
|
LPx("player/signup: Tracking record for UDID $deviceUDID has been found $original_redis_key"); |
|
} |
|
} |
|
} |
|
|
|
// For existing player do not create track records, only log them |
|
if ($isExistingPlayer) { |
|
$track_key_timepassed = REDIS_TRACK_TIMEOUT - RedisWrapper::ttl($track_redis_key); |
|
if ($track_key_timepassed < REDIS_TRACK_TIMEOUT_EXISTING_PLAYERS) { |
|
$track_info = ""; |
|
foreach ($track_keys as $trackKey => $trackValue) { |
|
$track_info .= $trackKey . ": " . $trackValue . ", "; |
|
} |
|
LPx("player/load: Existing player clicked this tracker: ($track_info) from ip $_SERVER[REMOTE_ADDR]"); |
|
} |
|
return; |
|
} |
|
|
|
if (!empty($track_keys)) { |
|
$newTrack = new \V8\Model\Track(); |
|
$newTrack->player_id = $playerId; |
|
$newTrack->ip = "$_SERVER[REMOTE_ADDR]"; |
|
$track_info = ""; |
|
foreach ($track_keys as $trackKey => $trackValue) { |
|
$track_info .= $trackKey . ": " . $trackValue . ", "; |
|
if ($trackKey == REDIS_TRACK_PROVIDER_METADATA_FIELD) { |
|
self::$adProviderMetadata = $trackValue; |
|
continue; |
|
} |
|
if ($trackKey == REDIS_TRACK_FRUITCRAFT_USERID_FIELD) { |
|
// Cross Promotion Test - Save Fruitcraft User ID in settings |
|
/** @var SettingTable $settingTable */ |
|
$settingTable = $this->serviceLocator->get('SettingTable'); |
|
$settingTable->setValueInPlace($playerId, SETTINGS_GAMES_FRUITCRAFT_USERID, $trackValue); |
|
continue; |
|
} |
|
$newTrack->$trackKey = $trackValue; |
|
} |
|
LPx("player/signup: Got this track info: ($track_info)"); |
|
|
|
$trackTable->save($newTrack); |
|
|
|
RedisWrapper::delete($track_redis_key); |
|
|
|
// Unity Install Tracking |
|
if (strpos($newTrack->term, "|") !== FALSE) { |
|
self::$unityInstallTrackingJob = $newTrack->term; |
|
} |
|
|
|
} else { |
|
LPx("player/signup: No tracking record for $track_redis_key was found.", \LogLevel::Info); |
|
} |
|
|
|
} catch (\Exception $e) { |
|
LPx("Error - Failed to save track records", \LogLevel::Error, null, $e); |
|
} |
|
} |
|
|
|
// ============================================== |
|
|
|
public static function submitAdsTrackingPostBacks() |
|
{ |
|
if (!empty(self::$unityInstallTrackingJob)) { |
|
$unityAdsClient = new \Rest\UnityAdsClient(); |
|
$unityAdsClient->notifyInstallWithPackedData(self::$unityInstallTrackingJob); |
|
} elseif (!empty(self::$adProviderMetadata)) { |
|
LPx("processing ad provider metadata " . self::$adProviderMetadata . " for ad-tracking postback"); |
|
if (strtolower(substr(self::$adProviderMetadata, 0, 7)) == "magnet|") { |
|
$magnetAdsClient = new \Rest\MagnetAdsClient(); |
|
$magnetAdsClient->notifyInstall(self::$adProviderMetadata); |
|
} elseif (strtolower(substr(self::$adProviderMetadata, 0, 8)) == "tapsell|") { |
|
$tapsellAdsClient = new \Rest\TapsellAdsClient(); |
|
$tapsellAdsClient->notifyInstall(self::$adProviderMetadata); |
|
} elseif (strtolower(substr(self::$adProviderMetadata, 0, 8)) == "vungle|") { |
|
$vungleAdsClient = new \Rest\VungleAdsClient(); |
|
$vungleAdsClient->notifyInstall(self::$adProviderMetadata); |
|
} |
|
} |
|
|