/** * check over inventory limit of requested flight */ public function checkOverInventory($flight, $flightWebsite, $event) { $RawTrackingSummarry = new RawTrackingSummary(); $rate = $flight->cost_type == 'cpm' ? 1000 : 1; $flightWebsiteInventoryOvr = $flightWebsite->value_added * $rate; $flightInventoryOvr = $flight->value_added * $rate; $flightRateOvr = 0; //Check flight co setup over report if ($flightInventoryOvr <= 0) { return self::RESPONSE_TYPE_FLIGHT_VALUE_ADDED; } //Check flight webiste co setup over report if ($flightWebsiteInventoryOvr < 0) { return self::RESPONSE_TYPE_FLIGHT_WEBSITE_VALUE_ADDED; } $flightRateOvr = $this->changePercentage($flight->value_added, $flight->total_inventory); // tổng số over inventory của flight (all time) $flightInventoryAllTimeOvr = $RawTrackingSummarry->getTotalInventory($flight->id, $event, true); $flightInventoryAllTime = $RawTrackingSummarry->getTotalInventory($flight->id, $event); $flightRateAllTimeOvr = $this->changePercentage($flightInventoryAllTimeOvr, $flightInventoryAllTime); if ($flightInventoryAllTime <= 0 && $flightRateAllTimeOvr >= $flightRateOvr || $flightInventoryAllTimeOvr >= $flightInventoryOvr) { return self::RESPONSE_TYPE_INVENTORY_LIMIT; } if ($flightWebsiteInventoryOvr == 0) { $fwRateOvr = $flightRateOvr; } else { $fwRateOvr = $this->changePercentage($flightWebsite->value_added, $flightWebsite->total_inventory); } if ($flightWebsiteInventoryOvr > $flightInventoryOvr || $flightWebsiteInventoryOvr == 0) { $flightWebsiteInventoryOvr = $flightInventoryOvr; } $totalAdZoneInventoryOvr = $RawTrackingSummarry->getTotalAdZoneInventory($flight->id, $flightWebsite->id, $event, true); $totalAdZoneInventory = $RawTrackingSummarry->getTotalAdZoneInventory($flight->id, $flightWebsite->id, $event); $fwRateAllTimeOvr = $this->changePercentage($totalAdZoneInventoryOvr, $totalAdZoneInventory); if ($totalAdZoneInventory <= 0 || $fwRateAllTimeOvr >= $fwRateOvr || $totalAdZoneInventoryOvr >= $flightWebsiteInventoryOvr) { return self::RESPONSE_TYPE_AD_ZONE_INVENTORY_LIMIT; } return TRUE; }
public function trackEvent() { ignore_user_abort(true); $this->layout = null; $response = null; $responseType = ''; $expandFields = array(); $deliveryStatus = ''; $event = strtolower(Input::get('evt', '')); $requestType = Input::get('rt', Delivery::REQUEST_TYPE_TRACKING_BEACON); $checksum = Input::get('cs', ''); $flightWebsiteID = Input::get('fpid', 0); $zoneID = Input::get('zid', 0); $isOverReport = Input::get('ovr'); //custom code for VIB 068 Relaunch form complete tracking if (Input::get('wid') == 48 && $event == 'complete') { $flightWebsiteID = 172; $event = "impression"; } $trackingModel = new Tracking(); $deliveryModel = new Delivery(); //ghi log trước khi xử lý $logPreProcess = $trackingModel->logPreProcess($requestType, Input::get()); if ($logPreProcess) { //kiểm tra referrer $hostReferer = $trackingModel->getRequestReferer(); $responseType = $trackingModel->checkPreProcess($requestType, $hostReferer, $zoneID); if (empty($responseType)) { $adZone = $deliveryModel->getAdzone($zoneID); if ($adZone) { if (isSameDomain($hostReferer, getWebDomain($adZone->site->url)) || isLocal()) { $flightWebsite = $deliveryModel->getFullFlightWebsite($flightWebsiteID); if ($flightWebsite) { //checksum if ($flightWebsite->flight->ad_format_id == Delivery::TRACKING_CODE_ADID) { $responseType = Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS; } elseif ($trackingModel->isValidTrackingBeacon($checksum, $event)) { $responseType = Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS; //set cookie for retargeting $trackingModel->rememberRetarget($flightWebsite->flight->campaign_id, $event); } else { $responseType = Delivery::RESPONSE_TYPE_CHECKSUM_ERROR; } } //else invalid } } } if (empty($responseType)) { $responseType = Delivery::RESPONSE_TYPE_INVALID; } elseif ($responseType == Delivery::RESPONSE_TYPE_TRACKING_BEACON_SUCCESS) { $expandFields = array('flight_id' => $flightWebsite->flight_id, 'ad_format_id' => $adZone->ad_format_id, 'ad_id' => $flightWebsite->flight->ad_id, 'campaign_id' => $flightWebsite->flight->campaign_id, 'publisher_ad_zone_id' => $adZone->id, 'flight_website_id' => $flightWebsite->id, 'website_id' => $flightWebsite->website_id); $expandFields['checksum'] = $checksum; $eventChecksum = $event; $trackingModel->setChecksumTrackingEvent($checksum, $event); //udpate inventory //$inventoryMetric = $trackingModel->getTrackingEventType($flightWebsite->flight->cost_type); $inventoryMetric = $trackingModel->getTrackingEventType($flightWebsite->flight->cost_type); if ($event == $inventoryMetric) { $trackingModel->updateInventory($flightWebsite->flight->id, $flightWebsite->id, $inventoryMetric, $isOverReport); } if (isset($flightWebsite->flight->event) && $flightWebsite->flight->event != '') { $flightEvent = $flightWebsite->flight->event; } else { // Truong hop nhung flight truoc day khong co setting event $flightEvent = $inventoryMetric; } if ($event == $flightEvent) { //incre today capped this ad by 1 $trackingModel->incFreCap($flightWebsite->flight); } //update tracking summary $rawTrackingSummary = new RawTrackingSummary(); $rawTrackingSummary->addSummary($event, $flightWebsite->website_id, $adZone->id, $adZone->ad_format_id, $flightWebsite->flight_id, $flightWebsite->id, $flightWebsite->flight->ad_id, $flightWebsite->flight->campaign_id); $uniqueEvent = ''; //unique impression if ($event == 'impression') { $uniqueEvent = 'unique_impression'; $expandFields['unique_impression'] = $trackingModel->isUniqueImpression($flightWebsite->id); } //unique click if ($event == 'click') { $uniqueEvent = 'unique_click'; $expandFields['unique_click'] = $trackingModel->isUniqueClick($flightWebsite->id); } //add summary unique click or impression if (!empty($expandFields[$uniqueEvent])) { $rawTrackingSummary->addSummary($uniqueEvent, $flightWebsite->website_id, $adZone->id, $adZone->ad_format_id, $flightWebsite->flight_id, $flightWebsite->id, $flightWebsite->flight->ad_id, $flightWebsite->flight->campaign_id); } } } //ghi log process $logAfterProcess = $trackingModel->logAfterProcess($responseType, $expandFields, $logPreProcess); //response to client pr($expandFields); pr($responseType, 1); if ($event == 'click' && Input::get('to')) { //redirect to ad's destination url on click event return Redirect::to(urldecode(Input::get('to'))); } else { //return 1x1 transparent GIF $response = $trackingModel->outputTransparentGif(); // exit(); } }
if ($rows = $tracking->reportScheduleHourly()) { // $cacheKey = "Report:Schedule"; // Cache::forget($cacheKey); pr($rows); echo "Report Success"; } else { echo "No Report Complete"; } die; }); Route::get('today', function () { $a = new RawTrackingSummary(); pr($a->reportScheduleDaily(time())); }); Route::get('yesterday', function () { $a = new RawTrackingSummary(); pr($a->reportScheduleDaily(strtotime('-1 day'))); }); Route::get('reportConversionDaily', function () { $tracking = new RawTrackingConversion(); $data = $tracking->reportConversionDaily(); pr($data); }); Route::get('reportConversionHourly', function () { $tracking = new RawTrackingConversion(); $data = $tracking->reportConversionHourly(); pr($data); }); Validator::extend('variable', function ($field, $value, $parameters) { if (!empty($value)) { foreach ($value as $item) {
public static function connection() { $redis = new RedisBaseModel(Config::get('redis.redis_2.host'), Config::get('redis.redis_2.port'), false); self::$redis_connection = $redis->connection; return self::$redis_connection; }