public function body(AdGroupStatsReport $stats_report) { $stats_bodies = array(); foreach ($stats_report as $stats) { $stats_body = $this->getStatsByBody($stats, $stats->body); if (isset($stats_bodies[$stats_body->object_id])) { $stats_bodies[$stats_body->object_id]->merge($stats); } else { $stats_bodies[$stats_body->object_id] = clone $stats; } } $stats_report->purgeStats(); foreach ($stats_bodies as $stats_body) { $stats_report->addStats($stats_body); } return $stats_report; }
/** * @param string[] $ad_group_ids * @param \DateTime $start_date * @param \DateTime $end_date * @param bool $group_similar_ads * * @return AdGroupStatsReport */ public function createAdStats($ad_group_ids, \DateTime $start_date, \DateTime $end_date, $group_similar_ads) { $groups = $this->ads->getAdGroups($ad_group_ids); $creative_ids = []; foreach ($groups as $group) { foreach ($group->creative_ids as $creative_id) { $creative_ids[] = $creative_id; } } $creatives = $this->ads->getCreatives($creative_ids); $data_columns = $this->getAdFields(); $filters = array(ReportStatsHelper::createFilter('adgroup_id', 'in', $ad_group_ids)); $stats = $this->ads->getReportStats($this->account_id, $data_columns, $filters, $start_date, $end_date); $this->completeGroupObj($groups, $creatives, $stats); // build ad_stats $adgroup_stats_report = new AdGroupStatsReport(); foreach ($groups as $group) { $creative = reset($group->creatives); $stats = new AdGroupStats($group->stats, $creative); $stats->refreshValues(); $adgroup_stats_report->addStats($stats); } if ($group_similar_ads) { $reports = new Reports(new StatsGrouper()); $reports->groupBy('body', $adgroup_stats_report); } return $adgroup_stats_report; }