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 getAdzone() { $model = new PublisherAdZoneBaseModel(); $website_ids = Input::get('webiste', array()); $listAdZone = $model->whereIn('publisher_site_id', $website_ids)->orderBy('publisher_site_id')->orderBy('id')->lists('name', 'id'); return Response::json($listAdZone); }
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); }
function saveCodeSingleFlight($pid = 0, $wid = 0, $zid = 0, $fwid = 0) { $adZoneModel = new PublisherAdZoneBaseModel(); $item = $adZoneModel->where('id', $zid)->first(); if ($item) { View::addLocation(base_path() . '/backend/theme/' . $this->theme . '/views/partials'); $view = "code" . $item->adFormat->code_view; //$view = Config::get("ad_format_code.$item->ad_format_id"); $data['wid'] = $item->publisher_site_id; $data['zid'] = $zid; $data['pid'] = $pid; $data['fwid'] = $fwid; $data['el_id'] = $item->element_id; $data['width'] = $item->width; $data['height'] = $item->height; $contents = View::make($view . 'Save', $data); $response = Response::make($contents, '200'); $response->header('Content-Description', 'File Transfer'); $response->header('Content-Type', 'application/octet-stream'); $response->header('Content-Disposition', "attachment; filename={$item->site->name}_{$item->adFormat->name}_{$fwid}.txt"); $response->header('Content-Transfer-Encoding', 'binary'); $response->header('Expires', '0'); $response->header('Cache-Control', 'must-revalidate'); $response->header('Pragma', 'public'); return $response; } }