public function showPublisher() { $start_date = Input::get('start_date') ? date("Y-m-d", strtotime(Input::get('start_date'))) : date('Y-m-d'); $end_date = Input::get('end_date') ? date("Y-m-d", strtotime(Input::get('end_date'))) : date('Y-m-d'); $website = Input::get('website'); $adformat = Input::get('adformat'); $this->data['lists_website'] = PublisherSiteBaseModel::where("status", '=', 1)->get(); $this->data['lists_adfortmat'] = AdFormatBaseModel::get(); $tracking = DB::connection('mongodb')->collection('trackings_summary')->where("created_d", '>=', $start_date)->where("created_d", '<=', $end_date); if ($website != "") { $tracking = $tracking->where('w', '=', (int) $website); } if ($adformat != "") { $tracking = $tracking->where('af', '=', (int) $adformat); } $tracking = $tracking->get(); $list_site = array(); $list_zone = array(); $data_ok = array(); if (!empty($tracking)) { foreach ($tracking as $tract) { if (isset($tract['ads_request'])) { if (!isset($list_site[$tract['w']])) { $site = PublisherSiteBaseModel::find($tract['w']); if ($site) { $list_site[$tract['w']] = $site; } else { continue; } } if (!isset($list_zone[$tract['az']])) { $adzone = PublisherAdZoneBaseModel::find($tract['az']); if ($adzone) { $list_zone[$tract['az']] = $adzone; } else { continue; } } if (isset($tract['f'])) { $data_ok[$tract['w']][$tract['az']]['ads'][] = $tract['ads_request']; } else { $data_ok[$tract['w']][$tract['az']]['noads'][] = $tract['ads_request']; } } } } $this->data['list_zone'] = $list_zone; $this->data['list_site'] = $list_site; $this->data['data_ok'] = $data_ok; $this->data['start_date'] = date("m/d/Y", strtotime($start_date)); $this->data['end_date'] = date("m/d/Y", strtotime($end_date)); $this->data['website'] = $website; $this->data['adformat'] = $adformat; $this->layout->content = View::make('publisher', $this->data); }
public function adsProcess() { $responseType = ''; $expandFields = array(); $zoneID = Input::get('zid', 0); $publisherID = Input::get('pid', 0); $requestType = Input::get('type', Delivery::REQUEST_TYPE_AD); $trackingModel = new Tracking(); $deliveryModel = new Delivery(); $flightDateModel = new FlightDateBaseModel(); //ghi log trước khi xử lý $logPreProcess = $trackingModel->logPreProcess($requestType); if ($logPreProcess) { //kiểm tra referrer $hostReferer = $trackingModel->getRequestReferer(); if (empty($zoneID)) { $responseType = Delivery::RESPONSE_TYPE_INVALID; } elseif (empty($hostReferer)) { $responseType = Delivery::RESPONSE_TYPE_EMPTY_REFERRER; } elseif ($trackingModel->countLatestRequest(1) < Delivery::ANTI_CHEAT_MAX_REQUEST_PER_1MIN && $trackingModel->countLatestRequest(5) < Delivery::ANTI_CHEAT_MAX_REQUEST_PER_5MIN) { $responseType = Delivery::RESPONSE_TYPE_ANTI_MANY_REQUEST; } //pre validate ok if (empty($responseType)) { //default invalid if ($zoneID && $publisherID) { $adZone = PublisherAdZoneBaseModel::find($zoneID); if ($adZone && $adZone->publisher) { if ($adZone->publisher_id == $publisherID) { $flightPublishers = FlightPublisherBaseModel::where('publisher_id', $publisherID)->with('flightDate', function ($query) { $today = date('Y-m-d'); $query->where('start', '<=', $today)->where('end', '>=', $today); })->where('publisher_ad_zone_id', $zoneID)->orderBy('order', 'asc')->get(); if ($flightPublishers) { if ($requestType == Delivery::REQUEST_TYPE_AD) { //lấy ad từ list thỏa điều kiện để trả về foreach ($flightPublishers as $k => $flightPublisher) { if ($flightPublisher->flightDate) { $runningInventory = $trackingModel->runningInventory($flightPublisher->id); if ($flightPublisher->total_inventory < $runningInventory) { $deliveryStatus = $deliveryModel->deliveryAd($flightPublisher->ad, $flightPublisher->flight); if ($deliveryStatus == Delivery::DELIVERY_STATUS_OK) { //trả về ad này $serveAd = $flightPublisher->ad; $expandFields = array('flight_id' => $flightPublisher->flight_id, 'ad_format_id' => $flightPublisher->ad_format_id, 'ad_id' => $flightPublisher->ad_id, 'campaign_id' => $flightPublisher->campaign_id, 'publisher_ad_zone_id' => $flightPublisher->publisher_ad_zone_id, 'flight_publisher_id' => $flightPublisher->id, 'publisher_id' => $flightPublisher->publisher_id, 'flight_publisher_id' => $flightPublisher->id); break; } } } } //endforeach } elseif ($requestType == Delivery::REQUEST_TYPE_TRACKING_BEACON) { //tracking beacon TO DO, now : do nothing if ($trackingModel->isKnownVisitor()) { } else { $responseType = Delivery::RESPONSE_TYPE_EMPTY_REFERRER; } } } } //serve Ad if (!empty($serveAd)) { } else { } } } } } if (empty($responseType)) { $responseType = Delivery::RESPONSE_TYPE_INVALID; } //ghi log process $trackingModel->logAfterProcess($responseType, $expandFields); return $deliveryModel->emptyAd(); }
public function deleteAlternateAd() { $status = FALSE; $view = NULL; if (Request::ajax()) { $id = Input::get('id'); $zoneId = Input::get('zoneId'); $zone = PublisherAdZoneBaseModel::find($zoneId); if ($zone) { $item = AlternateAdBaseModel::find($id); if ($item) { if ($item->delete()) { (new Delivery())->renewCache('adzone', $zoneId); $status = TRUE; $listAlternateAdData['lists'] = $zone->alternateAd; $view = View::make('alternateAdList', $listAlternateAdData)->render(); } } } } return Response::json(array('status' => $status, 'view' => $view)); }