1804 lines
56 KiB
PHP
1804 lines
56 KiB
PHP
<?php
|
|
|
|
class appAdsTracker
|
|
{
|
|
|
|
/*
|
|
Raport kampanii
|
|
*/
|
|
|
|
public static function getReportsCampaignValue($filters)
|
|
{
|
|
|
|
$total_netto = 0;
|
|
$total_brutto = 0;
|
|
$total_count = 0;
|
|
|
|
$from_date = $filters['from_date'];
|
|
$to_date = $filters['to_date'];
|
|
|
|
$campaign_1 = $filters['platform_campaign_1'];
|
|
$campaign_2 = $filters['platform_campaign_2'];
|
|
|
|
|
|
$reports = array();
|
|
|
|
|
|
$chartDisplayType = appAdsTracker::chartDisplayType($from_date, $to_date);
|
|
|
|
// print_r($platforms);
|
|
// die();
|
|
|
|
$reports = array();
|
|
|
|
if ($chartDisplayType=="day") {
|
|
//dla dni
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$range = appAdsTracker::createMonthsRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
|
|
|
|
// dla tygodni
|
|
//$range = appAdsTracker::createWeekRangeArray($from_date,$to_date);
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
// ustawienie wyglądu daty dla zakresu
|
|
if (count($range["view"])>25) {
|
|
|
|
foreach ($range["view"] as $value) {
|
|
$chart_labels[] = $value;
|
|
}
|
|
|
|
} else {
|
|
foreach ($range["data"] as $value) {
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_labels[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_labels[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$reports['chart']['labels'] =$chart_labels;
|
|
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_dates[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_dates[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$reports['chart']['dates'] = $chart_dates;
|
|
|
|
|
|
/* echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
die();*/
|
|
|
|
if (isset($campaign_1)) {
|
|
$camp_1 = explode("_", $campaign_1);
|
|
$camp_1 = $camp_1[1];
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $camp_1);
|
|
$object_campaign_1 = AdsTrackerCampaignPeer::doSelectOne($c);
|
|
|
|
if ($object_campaign_1) {
|
|
$label = $object_campaign_1->getAdsTrackerPlatform()->getAdsName()." - ".$object_campaign_1->getAdsName();
|
|
$campaign_array[$label] = $camp_1;
|
|
}
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
// $date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['campaign'][$camp_1]['days'][$value]['date'] = $date;
|
|
$reports['campaign'][$camp_1]['days'][$value]['entering'] = 0;
|
|
$reports['campaign'][$camp_1]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['campaign'][$camp_1]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (isset($campaign_2) && $campaign_2!="none") {
|
|
$camp_2 = explode("_", $campaign_2);
|
|
$camp_2 = $camp_2[1];
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $camp_2);
|
|
$object_campaign_2 = AdsTrackerCampaignPeer::doSelectOne($c);
|
|
|
|
if ($object_campaign_2) {
|
|
$label = $object_campaign_2->getAdsTrackerPlatform()->getAdsName()." - ".$object_campaign_2->getAdsName();
|
|
$campaign_array[$label] = $camp_2;
|
|
}
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
// $date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['campaign'][$camp_2]['days'][$value]['date'] = $date;
|
|
$reports['campaign'][$camp_2]['days'][$value]['entering'] = 0;
|
|
$reports['campaign'][$camp_2]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['campaign'][$camp_2]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
}
|
|
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
die();*/
|
|
|
|
|
|
|
|
foreach ($campaign_array as $campaign_label => $campaign_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $campaign_id);
|
|
|
|
$c->addJoin(AdsTrackerCampaignPeer::ID, AdsTrackerListPeer::APP_ADS_TRACKER_CAMPAIGN_ID);
|
|
$c->addJoin(AdsTrackerListPeer::ID, AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID);
|
|
|
|
$c->addSelectColumn(AdsTrackerCampaignPeer::ADS_NAME);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::ADS_ENTERING);
|
|
$c->addSelectColumn(AdsTrackerCampaignPeer::COLOR);
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerPlatformPeer::doSelectRS($c);
|
|
|
|
$sum = 0;
|
|
|
|
$reports['campaign'][$campaign_id]['name'] = $campaign_label;
|
|
|
|
$reports['campaign'][$campaign_id]['total_entering'] = 0;
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum += $row[2];
|
|
$reports['campaign'][$campaign_id]['total_entering'] = $sum;
|
|
|
|
$date = explode(" ", $row[1]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="day") {
|
|
|
|
$reports['campaign'][$campaign_id]['days'][$date]['entering'] = $row[2];
|
|
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
|
|
$reports['campaign'][$campaign_id]['days'][$date]['entering'] = $row[2];
|
|
|
|
}
|
|
|
|
|
|
|
|
$reports['campaign'][$campaign_id]['color'] = $row[3];
|
|
}
|
|
|
|
}
|
|
|
|
if (isset($reports['campaign'][$campaign_id]['days'])) {
|
|
ksort($reports['campaign'][$campaign_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
foreach ($campaign_array as $campaign_label => $campaign_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerOrderPeer::APP_ADS_TRACKER_CAMPAIGN_ID, $campaign_id);
|
|
|
|
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_COST_BRUTTO);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_ID);
|
|
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerOrderPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerOrderPeer::doSelectRS($c);
|
|
|
|
$sum_total_brutto = 0;
|
|
$sum_total_order = 0;
|
|
$order_ids = "";
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum_total_brutto += $row[1];
|
|
$sum_total_order += 1;
|
|
|
|
$date = explode(" ", $row[0]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
}
|
|
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['day_total_brutto'] += $row[1];
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['day_total_order'] += 1;
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['orders_ids'] .= $row[2].",";
|
|
|
|
$order_ids .= $row[2].",";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$reports['campaign'][$campaign_id]['total_order'] = $sum_total_order;
|
|
$reports['campaign'][$campaign_id]['conversion'] = $sum_total_order;
|
|
$reports['campaign'][$campaign_id]['total_brutto'] = number_format($sum_total_brutto, 2, '.', '');
|
|
$reports['campaign'][$campaign_id]['order_ids'] = $order_ids;
|
|
|
|
if ($sum_total_order>0) {
|
|
$reports['campaign'][$campaign_id]['total_brutto_median'] = number_format(round($sum_total_brutto/$sum_total_order,'2'), 2, '.', '');
|
|
$reports['campaign'][$campaign_id]['ctr'] = round(($reports['campaign'][$campaign_id]['conversion']/$reports['campaign'][$campaign_id]['total_entering'])*100,'2');
|
|
} else {
|
|
$reports['campaign'][$campaign_id]['total_brutto_median'] = 0;
|
|
$reports['campaign'][$campaign_id]['ctr'] = 0;
|
|
}
|
|
|
|
if (isset($reports['campaign'][$campaign_id]['days'])) {
|
|
ksort($reports['campaign'][$campaign_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
//dane dla wykresu
|
|
|
|
foreach ($reports['campaign'] as $key => $campaign) {
|
|
|
|
if (!isset($campaign['color'])) {
|
|
$campaign['color'] ="ccc";
|
|
}
|
|
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['color'] = $campaign['color'];
|
|
|
|
foreach ($campaign as $key2 => $days) {
|
|
|
|
if (is_array($days) || is_object($days)) {
|
|
foreach ($days as $day) {
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['entering'][] = $day['entering'];
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['count'][] = $day['day_total_order'];
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['amount'][] = number_format($day['day_total_brutto'], 2, '.', '');
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// die();
|
|
|
|
// echo "<pre>";
|
|
// print_r($reports);
|
|
// echo "</pre>";
|
|
|
|
return $reports;
|
|
}
|
|
|
|
/*
|
|
Raport wejść kampanii
|
|
*/
|
|
|
|
public static function getReportsCampaignEnteringValue($filters)
|
|
{
|
|
|
|
$total_netto = 0;
|
|
$total_brutto = 0;
|
|
$total_count = 0;
|
|
|
|
$from_date = $filters['from_date'];
|
|
$to_date = $filters['to_date'];
|
|
|
|
$campaign_1 = $filters['platform_campaign_1'];
|
|
$campaign_2 = $filters['platform_campaign_2'];
|
|
|
|
|
|
$reports = array();
|
|
|
|
|
|
$chartDisplayType = appAdsTracker::chartDisplayType($from_date, $to_date);
|
|
|
|
// print_r($platforms);
|
|
// die();
|
|
|
|
$reports = array();
|
|
|
|
if ($chartDisplayType=="day") {
|
|
//dla dni
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$range = appAdsTracker::createMonthsRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
|
|
|
|
// dla tygodni
|
|
//$range = appAdsTracker::createWeekRangeArray($from_date,$to_date);
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
// ustawienie wyglądu daty dla zakresu
|
|
if (count($range["view"])>25) {
|
|
|
|
foreach ($range["view"] as $value) {
|
|
$chart_labels[] = $value;
|
|
}
|
|
|
|
} else {
|
|
foreach ($range["data"] as $value) {
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_labels[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_labels[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$reports['chart']['labels'] =$chart_labels;
|
|
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_dates[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_dates[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$reports['chart']['dates'] = $chart_dates;
|
|
|
|
|
|
/* echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
die();*/
|
|
|
|
if (isset($campaign_1)) {
|
|
$camp_1 = explode("_", $campaign_1);
|
|
$camp_1 = $camp_1[1];
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $camp_1);
|
|
$object_campaign_1 = AdsTrackerCampaignPeer::doSelectOne($c);
|
|
|
|
if ($object_campaign_1) {
|
|
$label = $object_campaign_1->getAdsTrackerPlatform()->getAdsName()." - ".$object_campaign_1->getAdsName();
|
|
$campaign_array[$label] = $camp_1;
|
|
}
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
// $date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['campaign'][$camp_1]['days'][$value]['date'] = $date;
|
|
$reports['campaign'][$camp_1]['days'][$value]['entering'] = 0;
|
|
$reports['campaign'][$camp_1]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['campaign'][$camp_1]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (isset($campaign_2) && $campaign_2!="none") {
|
|
$camp_2 = explode("_", $campaign_2);
|
|
$camp_2 = $camp_2[1];
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $camp_2);
|
|
$object_campaign_2 = AdsTrackerCampaignPeer::doSelectOne($c);
|
|
|
|
if ($object_campaign_2) {
|
|
$label = $object_campaign_2->getAdsTrackerPlatform()->getAdsName()." - ".$object_campaign_2->getAdsName();
|
|
$campaign_array[$label] = $camp_2;
|
|
}
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
// $date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['campaign'][$camp_2]['days'][$value]['date'] = $date;
|
|
$reports['campaign'][$camp_2]['days'][$value]['entering'] = 0;
|
|
$reports['campaign'][$camp_2]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['campaign'][$camp_2]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
}
|
|
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
die();*/
|
|
|
|
|
|
|
|
foreach ($campaign_array as $campaign_label => $campaign_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $campaign_id);
|
|
|
|
$c->addJoin(AdsTrackerCampaignPeer::ID, AdsTrackerListPeer::APP_ADS_TRACKER_CAMPAIGN_ID);
|
|
$c->addJoin(AdsTrackerListPeer::ID, AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID);
|
|
|
|
$c->addSelectColumn(AdsTrackerCampaignPeer::ADS_NAME);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::ADS_ENTERING);
|
|
$c->addSelectColumn(AdsTrackerCampaignPeer::COLOR);
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerPlatformPeer::doSelectRS($c);
|
|
|
|
$sum = 0;
|
|
|
|
$reports['campaign'][$campaign_id]['name'] = $campaign_label;
|
|
|
|
$reports['campaign'][$campaign_id]['total_entering'] = 0;
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum += $row[2];
|
|
$reports['campaign'][$campaign_id]['total_entering'] = $sum;
|
|
|
|
$date = explode(" ", $row[1]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="day") {
|
|
|
|
$reports['campaign'][$campaign_id]['days'][$date]['entering'] += $row[2];
|
|
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
|
|
$reports['campaign'][$campaign_id]['days'][$date]['entering'] += $row[2];
|
|
|
|
}
|
|
|
|
|
|
|
|
$reports['campaign'][$campaign_id]['color'] = $row[3];
|
|
}
|
|
|
|
}
|
|
|
|
if (isset($reports['campaign'][$campaign_id]['days'])) {
|
|
ksort($reports['campaign'][$campaign_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
foreach ($campaign_array as $campaign_label => $campaign_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerOrderPeer::APP_ADS_TRACKER_CAMPAIGN_ID, $campaign_id);
|
|
|
|
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_COST_BRUTTO);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_ID);
|
|
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerOrderPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerOrderPeer::doSelectRS($c);
|
|
|
|
$sum_total_brutto = 0;
|
|
$sum_total_order = 0;
|
|
$order_ids = "";
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum_total_brutto += $row[1];
|
|
$sum_total_order += 1;
|
|
|
|
$date = explode(" ", $row[0]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
}
|
|
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['day_total_brutto'] += $row[1];
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['day_total_order'] += 1;
|
|
@$reports['campaign'][$campaign_id]['days'][$date]['orders_ids'] .= $row[2].",";
|
|
|
|
$order_ids .= $row[2].",";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$reports['campaign'][$campaign_id]['total_order'] = $sum_total_order;
|
|
$reports['campaign'][$campaign_id]['conversion'] = $sum_total_order;
|
|
$reports['campaign'][$campaign_id]['total_brutto'] = number_format($sum_total_brutto, 2, '.', '');
|
|
$reports['campaign'][$campaign_id]['order_ids'] = $order_ids;
|
|
|
|
if ($sum_total_order>0) {
|
|
$reports['campaign'][$campaign_id]['total_brutto_median'] = number_format(round($sum_total_brutto/$sum_total_order,'2'), 2, '.', '');
|
|
$reports['campaign'][$campaign_id]['ctr'] = round(($reports['campaign'][$campaign_id]['conversion']/$reports['campaign'][$campaign_id]['total_entering'])*100,'2');
|
|
} else {
|
|
$reports['campaign'][$campaign_id]['total_brutto_median'] = 0;
|
|
$reports['campaign'][$campaign_id]['ctr'] = 0;
|
|
}
|
|
|
|
if (isset($reports['campaign'][$campaign_id]['days'])) {
|
|
ksort($reports['campaign'][$campaign_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
//dane dla wykresu
|
|
|
|
foreach ($reports['campaign'] as $key => $campaign) {
|
|
|
|
if (!isset($campaign['color'])) {
|
|
$campaign['color'] ="ccc";
|
|
}
|
|
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['color'] = $campaign['color'];
|
|
|
|
foreach ($campaign as $key2 => $days) {
|
|
|
|
if (is_array($days) || is_object($days)) {
|
|
foreach ($days as $day) {
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['entering'][] = $day['entering'];
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['count'][] = $day['day_total_order'];
|
|
$reports['chart']['campaign'][$reports['campaign'][$key]['name']]['amount'][] = number_format($day['day_total_brutto'], 2, '.', '');
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// die();
|
|
|
|
// echo "<pre>";
|
|
// print_r($reports);
|
|
// echo "</pre>";
|
|
|
|
return $reports;
|
|
}
|
|
|
|
/*
|
|
Raport platform
|
|
*/
|
|
|
|
public static function getReportsPlatformsValue($filters)
|
|
{
|
|
$total_netto = 0;
|
|
$total_brutto = 0;
|
|
$total_count = 0;
|
|
|
|
$from_date = $filters['from_date'];
|
|
$to_date = $filters['to_date'];
|
|
|
|
$platforms = $filters['platform'];
|
|
|
|
$chartDisplayType = appAdsTracker::chartDisplayType($from_date, $to_date);
|
|
|
|
// print_r($platforms);
|
|
// die();
|
|
|
|
$reports = array();
|
|
|
|
if ($chartDisplayType=="day") {
|
|
//dla dni
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$range = appAdsTracker::createMonthsRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
|
|
|
|
// dla tygodni
|
|
//$range = appAdsTracker::createWeekRangeArray($from_date,$to_date);
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
// ustawienie wyglądu daty dla zakresu
|
|
if (count($range["view"])>25) {
|
|
|
|
foreach ($range["view"] as $value) {
|
|
$chart_labels[] = $value;
|
|
}
|
|
|
|
} else {
|
|
foreach ($range["data"] as $value) {
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_labels[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_labels[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$reports['chart']['labels'] =$chart_labels;
|
|
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_dates[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_dates[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$reports['chart']['dates'] = $chart_dates;
|
|
|
|
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['platform'][$platform_id]['days'][$value]['date'] = $date;
|
|
$reports['platform'][$platform_id]['days'][$value]['entering'] = 0;
|
|
$reports['platform'][$platform_id]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['platform'][$platform_id]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
die();*/
|
|
|
|
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerPlatformPeer::ID, $platform_id);
|
|
|
|
$c->addJoin(AdsTrackerPlatformPeer::ID, AdsTrackerListPeer::APP_ADS_TRACKER_PLATFORM_ID);
|
|
$c->addJoin(AdsTrackerListPeer::ID, AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID);
|
|
|
|
$c->addSelectColumn(AdsTrackerPlatformPeer::ADS_NAME);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::ADS_ENTERING);
|
|
$c->addSelectColumn(AdsTrackerPlatformPeer::COLOR);
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
// dla tygodni
|
|
//$c->addGroupByColumn(sprintf('WEEK(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
//$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
}
|
|
|
|
|
|
|
|
$rs = AdsTrackerPlatformPeer::doSelectRS($c);
|
|
|
|
|
|
$sum = 0;
|
|
|
|
$reports['platform'][$platform_id]['name'] = $platform_label;
|
|
|
|
$reports['platform'][$platform_id]['total_entering'] = 0;
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum += $row[2];
|
|
$reports['platform'][$platform_id]['total_entering'] = $sum;
|
|
|
|
$date = explode(" ", $row[1]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="day") {
|
|
|
|
$reports['platform'][$platform_id]['days'][$date]['entering'] += $row[2];
|
|
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
|
|
$reports['platform'][$platform_id]['days'][$date]['entering'] += $row[2];
|
|
}
|
|
|
|
$reports['platform'][$platform_id]['color'] = $row[3];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (isset($reports['platform'][$platform_id]['days'])) {
|
|
ksort($reports['platform'][$platform_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
/* echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
die();*/
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerOrderPeer::APP_ADS_TRACKER_PLATFORM_ID, $platform_id);
|
|
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_COST_BRUTTO);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_ID);
|
|
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerOrderPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerOrderPeer::doSelectRS($c);
|
|
|
|
$sum_total_brutto = 0;
|
|
$sum_total_order = 0;
|
|
$order_ids = "";
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum_total_brutto += $row[1];
|
|
$sum_total_order += 1;
|
|
|
|
$date = explode(" ", $row[0]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
}
|
|
|
|
@$reports['platform'][$platform_id]['days'][$date]['day_total_brutto'] += $row[1];
|
|
@$reports['platform'][$platform_id]['days'][$date]['day_total_order'] += 1;
|
|
@$reports['platform'][$platform_id]['days'][$date]['orders_ids'] .= $row[2].",";
|
|
|
|
$order_ids .= $row[2].",";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$reports['platform'][$platform_id]['total_order'] = $sum_total_order;
|
|
$reports['platform'][$platform_id]['conversion'] = $sum_total_order;
|
|
$reports['platform'][$platform_id]['total_brutto'] = number_format($sum_total_brutto, 2, '.', '');
|
|
$reports['platform'][$platform_id]['order_ids'] = $order_ids;
|
|
|
|
if ($sum_total_order>0) {
|
|
$reports['platform'][$platform_id]['total_brutto_median'] = number_format(round($sum_total_brutto/$sum_total_order,'2'), 2, '.', '');
|
|
$reports['platform'][$platform_id]['ctr'] = round(($reports['platform'][$platform_id]['conversion']/$reports['platform'][$platform_id]['total_entering'])*100,'2');
|
|
} else {
|
|
$reports['platform'][$platform_id]['total_brutto_median'] = 0;
|
|
$reports['platform'][$platform_id]['ctr'] = 0;
|
|
}
|
|
|
|
if (isset($reports['platform'][$platform_id]['days'])) {
|
|
ksort($reports['platform'][$platform_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
//dane dla wykresu
|
|
|
|
foreach ($reports['platform'] as $key => $platform) {
|
|
|
|
if (!isset($platform['color'])) {
|
|
$platform['color'] ="ccc";
|
|
}
|
|
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['color'] = $platform['color'];
|
|
|
|
foreach ($platform as $key2 => $days) {
|
|
|
|
if (is_array($days) || is_object($days)) {
|
|
foreach ($days as $day) {
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['entering'][] = $day['entering'];
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['count'][] = $day['day_total_order'];
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['amount'][] = number_format($day['day_total_brutto'], 2, '.', '');
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// die();
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
echo $from_date;
|
|
echo $to_date;*/
|
|
|
|
|
|
|
|
return $reports;
|
|
}
|
|
|
|
|
|
/*
|
|
Raport wejść platform
|
|
*/
|
|
|
|
public static function getReportsPlatformEnteringValue($filters)
|
|
{
|
|
|
|
$total_netto = 0;
|
|
$total_brutto = 0;
|
|
$total_count = 0;
|
|
|
|
$from_date = $filters['from_date'];
|
|
$to_date = $filters['to_date'];
|
|
|
|
$platforms = $filters['platform'];
|
|
|
|
$chartDisplayType = appAdsTracker::chartDisplayType($from_date, $to_date);
|
|
|
|
// print_r($platforms);
|
|
// die();
|
|
|
|
$reports = array();
|
|
|
|
if ($chartDisplayType=="day") {
|
|
//dla dni
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$range = appAdsTracker::createMonthsRangeArray($from_date,$to_date);
|
|
}
|
|
|
|
|
|
|
|
// dla tygodni
|
|
//$range = appAdsTracker::createWeekRangeArray($from_date,$to_date);
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
// ustawienie wyglądu daty dla zakresu
|
|
if (count($range["view"])>25) {
|
|
|
|
foreach ($range["view"] as $value) {
|
|
$chart_labels[] = $value;
|
|
}
|
|
|
|
} else {
|
|
foreach ($range["data"] as $value) {
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_labels[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_labels[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$reports['chart']['labels'] =$chart_labels;
|
|
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$chart_dates[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$chart_dates[] = date('m-Y', strtotime($value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$reports['chart']['dates'] = $chart_dates;
|
|
|
|
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
foreach ($range["data"] as $value) {
|
|
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
|
|
if ($chartDisplayType=="day") {
|
|
$date = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($value));
|
|
$value = $date;
|
|
}
|
|
|
|
$reports['platform'][$platform_id]['days'][$value]['date'] = $date;
|
|
$reports['platform'][$platform_id]['days'][$value]['entering'] = 0;
|
|
$reports['platform'][$platform_id]['days'][$value]['day_total_brutto'] = 0;
|
|
$reports['platform'][$platform_id]['days'][$value]['day_total_order'] = 0;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
die();*/
|
|
|
|
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerPlatformPeer::ID, $platform_id);
|
|
|
|
$c->addJoin(AdsTrackerPlatformPeer::ID, AdsTrackerListPeer::APP_ADS_TRACKER_PLATFORM_ID);
|
|
$c->addJoin(AdsTrackerListPeer::ID, AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID);
|
|
|
|
$c->addSelectColumn(AdsTrackerPlatformPeer::ADS_NAME);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerEnteringPeer::ADS_ENTERING);
|
|
$c->addSelectColumn(AdsTrackerPlatformPeer::COLOR);
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
// dla tygodni
|
|
//$c->addGroupByColumn(sprintf('WEEK(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
//$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerEnteringPeer::CREATED_AT));
|
|
}
|
|
|
|
|
|
|
|
$rs = AdsTrackerPlatformPeer::doSelectRS($c);
|
|
|
|
|
|
$sum = 0;
|
|
|
|
$reports['platform'][$platform_id]['name'] = $platform_label;
|
|
|
|
$reports['platform'][$platform_id]['total_entering'] = 0;
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum += $row[2];
|
|
$reports['platform'][$platform_id]['total_entering'] = $sum;
|
|
|
|
$date = explode(" ", $row[1]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="day") {
|
|
|
|
$reports['platform'][$platform_id]['days'][$date]['entering'] += $row[2];
|
|
|
|
}
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
|
|
$reports['platform'][$platform_id]['days'][$date]['entering'] += $row[2];
|
|
}
|
|
|
|
$reports['platform'][$platform_id]['color'] = $row[3];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (isset($reports['platform'][$platform_id]['days'])) {
|
|
ksort($reports['platform'][$platform_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
/* echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
die();*/
|
|
|
|
foreach ($platforms as $platform_label => $platform_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerOrderPeer::APP_ADS_TRACKER_PLATFORM_ID, $platform_id);
|
|
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::CREATED_AT);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_COST_BRUTTO);
|
|
$c->addSelectColumn(AdsTrackerOrderPeer::ORDER_ID);
|
|
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerOrderPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
|
|
if ($chartDisplayType=="month") {
|
|
// dla miesięcy
|
|
$c->addGroupByColumn(sprintf('MONTH(%s)', AdsTrackerOrderPeer::CREATED_AT));
|
|
}
|
|
|
|
$rs = AdsTrackerOrderPeer::doSelectRS($c);
|
|
|
|
$sum_total_brutto = 0;
|
|
$sum_total_order = 0;
|
|
$order_ids = "";
|
|
|
|
while ($rs->next()) {
|
|
|
|
if ($rs) {
|
|
$row = $rs->getRow();
|
|
|
|
$sum_total_brutto += $row[1];
|
|
$sum_total_order += 1;
|
|
|
|
$date = explode(" ", $row[0]);
|
|
$date = $date[0];
|
|
|
|
if ($chartDisplayType=="month") {
|
|
|
|
$date = date('m-Y', strtotime($date));
|
|
}
|
|
|
|
@$reports['platform'][$platform_id]['days'][$date]['day_total_brutto'] += $row[1];
|
|
@$reports['platform'][$platform_id]['days'][$date]['day_total_order'] += 1;
|
|
@$reports['platform'][$platform_id]['days'][$date]['orders_ids'] .= $row[2].",";
|
|
|
|
$order_ids .= $row[2].",";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$reports['platform'][$platform_id]['total_order'] = $sum_total_order;
|
|
$reports['platform'][$platform_id]['conversion'] = $sum_total_order;
|
|
$reports['platform'][$platform_id]['total_brutto'] = number_format($sum_total_brutto, 2, '.', '');
|
|
$reports['platform'][$platform_id]['order_ids'] = $order_ids;
|
|
|
|
if ($sum_total_order>0) {
|
|
$reports['platform'][$platform_id]['total_brutto_median'] = number_format(round($sum_total_brutto/$sum_total_order,'2'), 2, '.', '');
|
|
$reports['platform'][$platform_id]['ctr'] = round(($reports['platform'][$platform_id]['conversion']/$reports['platform'][$platform_id]['total_entering'])*100,'2');
|
|
} else {
|
|
$reports['platform'][$platform_id]['total_brutto_median'] = 0;
|
|
$reports['platform'][$platform_id]['ctr'] = 0;
|
|
}
|
|
|
|
if (isset($reports['platform'][$platform_id]['days'])) {
|
|
ksort($reports['platform'][$platform_id]['days']);
|
|
}
|
|
|
|
}
|
|
|
|
//dane dla wykresu
|
|
|
|
foreach ($reports['platform'] as $key => $platform) {
|
|
|
|
if (!isset($platform['color'])) {
|
|
$platform['color'] ="ccc";
|
|
}
|
|
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['color'] = $platform['color'];
|
|
|
|
foreach ($platform as $key2 => $days) {
|
|
|
|
if (is_array($days) || is_object($days)) {
|
|
foreach ($days as $day) {
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['entering'][] = $day['entering'];
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['count'][] = $day['day_total_order'];
|
|
$reports['chart']['platform'][$reports['platform'][$key]['name']]['amount'][] = number_format($day['day_total_brutto'], 2, '.', '');
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// die();
|
|
|
|
/*echo "<pre>";
|
|
print_r($reports);
|
|
echo "</pre>";
|
|
|
|
echo $from_date;
|
|
echo $to_date;*/
|
|
|
|
|
|
|
|
return $reports;
|
|
}
|
|
|
|
/*
|
|
Raport reklamy
|
|
*/
|
|
|
|
public static function getReportsAdsInfoValue($filters)
|
|
{
|
|
|
|
$from_date = $filters['from_date'];
|
|
$to_date = $filters['to_date'];
|
|
$ads_id = $filters['ads_id'];
|
|
|
|
// echo $ads_id;
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID, $ads_id);
|
|
|
|
$criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
$criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
|
|
$c->add($criterion);
|
|
$ads_entering = AdsTrackerEnteringPeer::doSelect($c);
|
|
|
|
|
|
//print_r($ads_entering);
|
|
|
|
$reports = array();
|
|
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
|
|
// ustawienie wyglądu daty dla zakresu
|
|
if (count($range["view"])>25) {
|
|
|
|
foreach ($range["view"] as $value) {
|
|
$chart_labels[] = $value;
|
|
}
|
|
|
|
} else {
|
|
foreach ($range["data"] as $value) {
|
|
$chart_labels[] = $culture == 'pl_PL' ? date('d-m', strtotime($value)) : date('n/j', strtotime($value));
|
|
}
|
|
}
|
|
|
|
$reports['chart']['labels'] = $chart_labels;
|
|
|
|
|
|
foreach ($range["data"] as $value) {
|
|
$date = $culture == 'pl_PL' ? date('d-m-Y', strtotime($value)) : date('n/j/Y', strtotime($value));
|
|
$chart_dates[] = $date;
|
|
|
|
$reports['chart']['ads'][$ads_id]['entering'][$value] = 0;
|
|
}
|
|
|
|
$reports['chart']['dates'] = $chart_dates;
|
|
|
|
|
|
if ($ads_entering) {
|
|
|
|
foreach ($ads_entering as $ads) {
|
|
$reports['chart']['ads'][$ads_id]['label'] = $ads->getAdsTrackerList()->getAdsTrackerPlatform()->getAdsName()." - ".$ads->getAdsTrackerList()->getAdsTrackerCampaign()->getAdsName();
|
|
|
|
|
|
$date = explode(" ", $ads->getCreatedAt());
|
|
$date = $date[0];
|
|
$reports['chart']['ads'][$ads_id]['entering'][$date] = $ads->getAdsEntering();
|
|
@$reports['chart']['ads'][$ads_id]['total'] += $ads->getAdsEntering();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (!$ads_id) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerListPeer::ID, $ads_id);
|
|
$ads = AdsTrackerEnteringPeer::doSelectOne($c);
|
|
|
|
// $reports['chart']['ads'][$ads_id]['label'] = $ads->getAdsTrackerList()->getAdsTrackerPlatform()->getAdsName()." - ".$ads->getAdsTrackerList()->getAdsTrackerCampaign()->getAdsName();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $reports;
|
|
}
|
|
|
|
|
|
/* Zwraca rodzaj prezentowanego wykresu w zależności od zakresu dat */
|
|
public static function chartDisplayType($from_date, $to_date)
|
|
{
|
|
$range = appAdsTracker::createDaysRangeArray($from_date,$to_date);
|
|
|
|
if (count($range['data']) <=61 ) {
|
|
|
|
$display_type = "day";
|
|
|
|
}elseif (count($range['data']) >=62 ) {
|
|
|
|
$display_type = "month";
|
|
|
|
}else{
|
|
|
|
$display_type = "none";
|
|
|
|
}
|
|
|
|
return $display_type;
|
|
}
|
|
|
|
/* Zwraca dane z podziałem na dni*/
|
|
public static function createDaysRangeArray($strDateFrom, $strDateTo)
|
|
{
|
|
|
|
$aryRange=array();
|
|
$aryRangeView=array();
|
|
$aryRangeData=array();
|
|
|
|
$iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2),substr($strDateFrom,8,2),substr($strDateFrom,0,4));
|
|
$iDateTo=mktime(1,0,0,substr($strDateTo,5,2),substr($strDateTo,8,2),substr($strDateTo,0,4));
|
|
|
|
if ($iDateTo>=$iDateFrom) {
|
|
array_push($aryRangeView,date('d',$iDateFrom)); // first entry
|
|
array_push($aryRangeData,date('Y-m-d',$iDateFrom)); // first entry
|
|
|
|
while ($iDateFrom <= $iDateTo - 86400) {
|
|
$iDateFrom+=86400; // add 24 hours
|
|
array_push($aryRangeView,date('d',$iDateFrom));
|
|
array_push($aryRangeData,date('Y-m-d',$iDateFrom));
|
|
}
|
|
|
|
}
|
|
|
|
$aryRange['view'] = $aryRangeView;
|
|
$aryRange['data'] = $aryRangeData;
|
|
|
|
return $aryRange;
|
|
}
|
|
|
|
/* Zwraca dane z podziałem na tygodnie*/
|
|
public static function createWeekRangeArray($date1, $date2)
|
|
{
|
|
$start = new DateTime($date1);
|
|
$start->modify('first day of this week');
|
|
$end = new DateTime($date2);
|
|
$interval = DateInterval::createFromDateString('1 week');
|
|
$period = new DatePeriod($start, $interval, $end);
|
|
|
|
|
|
$aryRange=array();
|
|
$aryRangeView=array();
|
|
$aryRangeData=array();
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
foreach ($period as $dt) {
|
|
|
|
array_push($aryRangeView, $culture == 'pl_PL' ? $dt->format("d-m-Y") : $dt->format("j/Y"));
|
|
array_push($aryRangeData,$dt->format("Y-m-d"));
|
|
}
|
|
|
|
$aryRange['view'] = $aryRangeView;
|
|
$aryRange['data'] = $aryRangeData;
|
|
|
|
return $aryRange;
|
|
}
|
|
|
|
|
|
|
|
/* Zwraca dane z podziałem na miesiąe*/
|
|
public static function createMonthsRangeArray($date1, $date2)
|
|
{
|
|
$start = new DateTime($date1);
|
|
$start->modify('first day of this month');
|
|
$end = new DateTime($date2);
|
|
$interval = DateInterval::createFromDateString('1 month');
|
|
$period = new DatePeriod($start, $interval, $end);
|
|
|
|
|
|
$aryRange=array();
|
|
$aryRangeView=array();
|
|
$aryRangeData=array();
|
|
|
|
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
foreach ($period as $dt) {
|
|
|
|
array_push($aryRangeView, $culture == 'pl_PL' ? $dt->format("m-Y") : $dt->format("j/Y"));
|
|
array_push($aryRangeData,$dt->format("Y-m-d"));
|
|
}
|
|
|
|
$aryRange['view'] = $aryRangeView;
|
|
$aryRange['data'] = $aryRangeData;
|
|
|
|
return $aryRange;
|
|
}
|
|
|
|
public static function random_color_part()
|
|
{
|
|
return str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT);
|
|
}
|
|
|
|
public static function random_color()
|
|
{
|
|
return appAdsTracker::random_color_part() . appAdsTracker::random_color_part() . appAdsTracker::random_color_part();
|
|
}
|
|
|
|
public static function getAdsEnteringValue($ads_id)
|
|
{
|
|
|
|
// echo $ads_id;
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerEnteringPeer::APP_ADS_TRACKER_LIST_ID, $ads_id);
|
|
|
|
// $criterion = $c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $from_date, Criteria::GREATER_EQUAL );
|
|
// $criterion->addAnd($c->getNewCriterion(AdsTrackerEnteringPeer::CREATED_AT , $to_date, Criteria::LESS_EQUAL ));
|
|
//
|
|
// $c->add($criterion);
|
|
$ads_entering = AdsTrackerEnteringPeer::doSelect($c);
|
|
|
|
if ($ads_entering) {
|
|
$sum = 0;
|
|
foreach ($ads_entering as $value) {
|
|
$sum += $value->getAdsEntering();
|
|
}
|
|
return $sum;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* zwraca pełną nazwę raklamy w formacie platforma / kampania - grupa nazwa
|
|
appAdsTracker::getFullAdsName($ads_id)
|
|
*
|
|
*/
|
|
|
|
public static function getFullAdsName($ads_id)
|
|
{
|
|
|
|
// echo $ads_id;
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerListPeer::ID, $ads_id);
|
|
$ads = AdsTrackerListPeer::doSelectOne($c);
|
|
|
|
if ($ads) {
|
|
$name = "";
|
|
$group = "";
|
|
|
|
if ($ads->getAdsName()!="") {
|
|
$name = " / ".$ads->getAdsName();
|
|
}
|
|
|
|
// if($ads->getAdsGroup()!=""){
|
|
// $group = " / ".$ads->getAdsGroup();
|
|
// }
|
|
|
|
// $fullname = $ads->getId()." / ".$ads->getAdsTrackerPlatform()->getAdsName()." - ".$ads->getAdsTrackerCampaign()->getAdsName().$group.$name;
|
|
|
|
|
|
$fullname = $ads->getId()." / ".$ads->getAdsTrackerPlatform()->getAdsName()." - ".$ads->getAdsTrackerCampaign()->getAdsName().$name;
|
|
|
|
|
|
|
|
return $fullname;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/* Sprawdza czy nie jest to adres wykluczony
|
|
appAdsTracker::getIsExcludeRemoteAddress();
|
|
*
|
|
*/
|
|
|
|
public static function getIsExcludeRemoteAddress()
|
|
{
|
|
$config = stConfig::getInstance(sfContext::getInstance(), 'appAdsTrackerBackend');
|
|
$config->setCulture(sfContext::getInstance()->getUser()->getCulture());
|
|
|
|
if ($config->get('exclude_remote_address')!="") {
|
|
|
|
$exclude_remote_address = explode(",", $config->get('exclude_remote_address'));
|
|
|
|
if (in_array($_SERVER['REMOTE_ADDR'], $exclude_remote_address)) {
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* Informacja o aktywności
|
|
appAdsTracker::getIsAdsTrackerActive();
|
|
*
|
|
*/
|
|
|
|
public static function getIsAdsTrackerActive()
|
|
{
|
|
$config = stConfig::getInstance(sfContext::getInstance(), 'appAdsTrackerBackend');
|
|
$config->setCulture(sfContext::getInstance()->getUser()->getCulture());
|
|
|
|
if ($config->get('is_active')==1) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* Informacja o aktywności
|
|
appAdsTracker::getIsAdsSytemDefault();
|
|
*
|
|
*/
|
|
|
|
public static function getIsAdsSytemDefault($ads_id)
|
|
{
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerListPeer::ID, $ads_id);
|
|
$ads = AdsTrackerListPeer::doSelectOne($c);
|
|
|
|
if ($ads) {
|
|
if ($ads->getIsSystemDefault()==1) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function getIsCampaignSytemDefault($campaign_id)
|
|
{
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerCampaignPeer::ID, $campaign_id);
|
|
$campaign = AdsTrackerCampaignPeer::doSelectOne($c);
|
|
|
|
if ($campaign) {
|
|
if ($campaign->getIsSystemDefault()==1) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* Informacja o aktywności
|
|
appAdsTracker::langFilter();
|
|
*
|
|
*/
|
|
|
|
public static function langFilter($string)
|
|
{
|
|
$lang = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
|
|
$string = str_replace("Wejście bezpośrednie - Wejście bezpośrednie", "Wejście bezpośrednie", $string);
|
|
|
|
$string = str_replace("Wejścia bezpośrednie - Wejścia bezpośrednie", "Wejścia bezpośrednie", $string);
|
|
|
|
|
|
if ($lang == "en_US") {
|
|
$string = str_replace("Wejście bezpośrednie", "Direct entrance", $string);
|
|
|
|
$string = str_replace("Wejścia bezpośrednie", "Direct entrance", $string);
|
|
}
|
|
|
|
return $string;
|
|
}
|
|
|
|
|
|
/* Informacja o aktywności
|
|
appAdsTracker::checkCompare();
|
|
*
|
|
*/
|
|
|
|
public static function checkCompare($compare, $swich)
|
|
{
|
|
|
|
if ($swich==1) {
|
|
|
|
$config = stConfig::getInstance(sfContext::getInstance(), 'appAdsTrackerBackend');
|
|
|
|
if ($config->get('is_active')!=1) {
|
|
$config->set('is_active',1);
|
|
$config->save();
|
|
stTheme::clearSmartyCache(true);
|
|
}
|
|
|
|
if ($compare == "googleshopping" ) {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerPlatformPeer::PLATFORM_TYPE, 5);
|
|
$c->add(AdsTrackerPlatformPeer::IS_SYSTEM_DEFAULT, 1);
|
|
$AdsTrackerPlatform = AdsTrackerPlatformPeer::doSelectOne($c);
|
|
|
|
}elseif($compare == "facebook" ){
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerPlatformPeer::PLATFORM_TYPE, 6);
|
|
$c->add(AdsTrackerPlatformPeer::IS_SYSTEM_DEFAULT, 1);
|
|
$AdsTrackerPlatform = AdsTrackerPlatformPeer::doSelectOne($c);
|
|
|
|
} else {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerPlatformPeer::PLATFORM_TYPE, 4);
|
|
$c->add(AdsTrackerPlatformPeer::IS_SYSTEM_DEFAULT, 1);
|
|
$AdsTrackerPlatform = AdsTrackerPlatformPeer::doSelectOne($c);
|
|
|
|
if (!$AdsTrackerPlatform) {
|
|
|
|
$AdsTrackerPlatform = new AdsTrackerPlatform();
|
|
$AdsTrackerPlatform->setIsActive(1);
|
|
$AdsTrackerPlatform->setAdsName("Porównywarki");
|
|
$AdsTrackerPlatform->setPlatformType(4);
|
|
$AdsTrackerPlatform->setDescription("Wejścia z porównywarek");
|
|
$AdsTrackerPlatform->setIsSystemDefault(1);
|
|
$AdsTrackerPlatform->setColor("d08770");
|
|
$AdsTrackerPlatform->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerListPeer::PLUGIN_NAME, $compare);
|
|
$AdsTrackerList = AdsTrackerListPeer::doSelectOne($c);
|
|
|
|
if (!$AdsTrackerList) {
|
|
|
|
$ads_name = ucfirst($compare);
|
|
|
|
if ($compare == "googleshopping" ) {
|
|
$ads_name = "Google Shopping";
|
|
}
|
|
|
|
$AdsTrackerCampaign = new AdsTrackerCampaign();
|
|
$AdsTrackerCampaign->setAppAdsTrackerPlatformId($AdsTrackerPlatform->getId());
|
|
$AdsTrackerCampaign->setAdsName($ads_name);
|
|
$AdsTrackerCampaign->setIsActive(1);
|
|
$AdsTrackerCampaign->setColor("ff6b00");
|
|
$AdsTrackerCampaign->save();
|
|
|
|
$hash = md5(date('YmdHis'));
|
|
|
|
$AdsTrackerList = new AdsTrackerList();
|
|
$AdsTrackerList->setIsActive(1);
|
|
$AdsTrackerList->setAppAdsTrackerPlatformId($AdsTrackerPlatform->getId());
|
|
$AdsTrackerList->setAppAdsTrackerCampaignId($AdsTrackerCampaign->getId());
|
|
$AdsTrackerList->setAdsName($ads_name);
|
|
$AdsTrackerList->setHash($hash);
|
|
$AdsTrackerList->setUrlHash("?hash=".$hash);
|
|
$AdsTrackerList->setIsSystemDefault(1);
|
|
$AdsTrackerList->setIsPlugin(1);
|
|
$AdsTrackerList->setPluginName($compare);
|
|
$AdsTrackerList->save();
|
|
|
|
}else{
|
|
$AdsTrackerList->setIsActive(1);
|
|
$AdsTrackerList->save();
|
|
}
|
|
|
|
} else {
|
|
|
|
$c = new Criteria();
|
|
$c->add(AdsTrackerListPeer::PLUGIN_NAME, $compare);
|
|
$AdsTrackerList = AdsTrackerListPeer::doSelectOne($c);
|
|
|
|
if ($AdsTrackerList) {
|
|
|
|
$AdsTrackerList->setIsActive(0);
|
|
$AdsTrackerList->save();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|