private function createAd($adSetId, $creativeId) { $data = array(AdFields::NAME => 'My Ad ' . date("Y-m-d H:i:s"), AdFields::ADSET_ID => $adSetId, AdFields::CREATIVE => array('creative_id' => $creativeId)); $ad = new Ad(null, 'act_' . $this->adAccountId); $ad->setData($data); $ad->create(array(Ad::STATUS_PARAM_NAME => Ad::STATUS_PAUSED)); return $ad->getData()[Ad::FIELD_ID]; }
/** * @param mixed $objectId * @param array $params * * @return \Illuminate\Support\Collection */ public function getInsights($objectId, $params = []) { $fields = $params['fields']; unset($params['fields']); $ad = new Ad($objectId); $insights = $ad->getInsights($fields, $params); return $this->response($insights); }
public function getAds(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); $param_types = array(); $enums = array(); $request = new ApiRequest($this->api, $this->data['id'], RequestInterface::METHOD_GET, '/ads', new Ad(), 'EDGE', Ad::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums)); $request->addParams($params); $request->addFields($fields); return $pending ? $request : $request->execute(); }
public function testAdPreviews() { // Preview with actual creative $previews = $this->adCreative->getAdPreviews(array(), array(AdPreviewFields::AD_FORMAT => AdFormats::RIGHT_COLUMN_STANDARD)); $this->assertNotEquals(0, $previews->count()); $preview = $previews->offsetGet(0); $this->assertRegExp('/iframe/', $preview->{AdPreviewFields::BODY}); // Preview with actual adgroup $previews = $this->ad->getAdPreviews(array(), array(AdPreviewFields::AD_FORMAT => AdFormats::RIGHT_COLUMN_STANDARD)); $this->assertNotEquals(0, $previews->count()); $preview = $previews->offsetGet(0); $this->assertRegExp('/iframe/', $preview->{AdPreviewFields::BODY}); // Preview with creative specs $account = new AdAccount($this->getConfig()->accountId); $previews = $account->getAdPreviews(array(), array(AdPreviewFields::CREATIVE => array(AdCreativeFields::BODY => 'Testing the creative preview', AdCreativeFields::OBJECT_ID => $this->getConfig()->pageId), AdPreviewFields::AD_FORMAT => AdFormats::RIGHT_COLUMN_STANDARD)); $this->assertNotEquals(0, $previews->count()); $preview = $previews->offsetGet(0); $this->assertRegExp('/iframe/', $preview->{AdPreviewFields::BODY}); }
public function testDynamicProductAdsCreation() { $this->campaign = new Campaign(null, $this->getConfig()->accountId); $this->campaign->setData(array(CampaignFields::NAME => $this->getConfig()->testRunId, CampaignFields::OBJECTIVE => AdObjectives::PRODUCT_CATALOG_SALES, CampaignFields::PROMOTED_OBJECT => array('product_catalog_id' => $this->productCatalog->{ProductCatalogFields::ID}))); $this->assertCanCreate($this->campaign); $targeting = new TargetingSpecs(); $targeting->{TargetingSpecsFields::GEO_LOCATIONS} = array('countries' => array('US')); $targeting->{TargetingSpecsFields::DYNAMIC_AUDIENCE_IDS} = array($this->productAudience->{ProductAudienceFields::ID}); $this->adSet = new AdSet(null, $this->getConfig()->accountId); $this->adSet->setData(array(AdSetFields::NAME => $this->getConfig()->testRunId, AdSetFields::OPTIMIZATION_GOAL => OptimizationGoals::LINK_CLICKS, AdSetFields::BILLING_EVENT => BillingEvents::IMPRESSIONS, AdSetFields::BID_AMOUNT => 2, AdSetFields::DAILY_BUDGET => 2000, AdSetFields::CAMPAIGN_ID => $this->campaign->{CampaignFields::ID}, AdSetFields::TARGETING => $targeting, AdsetFields::PROMOTED_OBJECT => array('product_set_id' => $this->productSet->{ProductSetFields::ID}))); $this->assertCanCreate($this->adSet); $template = new TemplateData(); $template->setData(array(TemplateDataFields::DESCRIPTION => '{{product.description}}', TemplateDataFields::LINK => 'http://www.example.com/', TemplateDataFields::MESSAGE => 'Test DPA Ad Message', TemplateDataFields::NAME => '{{product.name | titleize}}', TemplateDataFields::CALL_TO_ACTION => array('type' => CallToActionTypes::SHOP_NOW))); $story = new ObjectStorySpec(); $story->setData(array(ObjectStorySpecFields::PAGE_ID => $this->getConfig()->pageId, ObjectStorySpecFields::TEMPLATE_DATA => $template)); $this->creative = new AdCreative(null, $this->getConfig()->accountId); $this->creative->setData(array(AdCreativeFields::NAME => $this->getConfig()->testRunId, AdCreativeFields::OBJECT_STORY_SPEC => $story, AdCreativeFields::PRODUCT_SET_ID => $this->productSet->{ProductSetFields::ID})); $this->assertCanCreate($this->creative); $this->ad = new Ad(null, $this->getConfig()->accountId); $this->ad->setData(array(AdFields::NAME => 'DPA Test Ad 1 ' . $this->getConfig()->testRunId, AdFields::ADSET_ID => $this->adSet->{AdSetFields::ID}, AdFields::CREATIVE => array('creative_id' => $this->creative->{AdCreativeFields::ID}))); $this->assertCanCreate($this->ad); }
/** * @param array $fields * @param array $params * @return Cursor */ public function getAds(array $fields = array(), array $params = array()) { return $this->getManyByConnection(Ad::className(), $fields, $params); }
public function getAdsByLabels(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); $param_types = array('ad_label_ids' => 'list<string>', 'operator' => 'operator_enum'); $enums = array('operator_enum' => AdOperatorValues::getInstance()->getValues()); $request = new ApiRequest($this->api, $this->data['id'], RequestInterface::METHOD_GET, '/adsbylabels', new Ad(), 'EDGE', Ad::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums)); $request->addParams($params); $request->addFields($fields); return $pending ? $request : $request->execute(); }
/** * Get ad previews * * @param Ad $ad * @param string $format * @param array $fields * @param array $params * @return Cursor|AdPreview[]|array */ public function adPreviews(Ad $ad, $format, $fields = [], $params = []) { // Merge $params = array_merge([AdPreviewFields::AD_FORMAT => $format], $params); return $ad->getAdPreviews($fields, $params); }
public function getAds(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); $param_types = array('ad_draft_id' => 'string', 'date_preset' => 'date_preset_enum', 'effective_status' => 'list<string>', 'include_deleted' => 'bool', 'time_range' => 'map', 'updated_since' => 'int'); $enums = array('date_preset_enum' => AdDatePresetValues::getInstance()->getValues()); $request = new ApiRequest($this->api, $this->data['id'], RequestInterface::METHOD_GET, '/ads', new Ad(), 'EDGE', Ad::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums)); $request->addParams($params); $request->addFields($fields); return $pending ? $request : $request->execute(); }
public function updateSelf(array $fields = array(), array $params = array(), $pending = false) { $this->assureId(); $param_types = array('adlabels' => 'list<Object>', 'adset_id' => 'unsigned int', 'bid_amount' => 'int', 'creative' => 'AdCreative', 'display_sequence' => 'unsigned int', 'execution_options' => 'list<execution_options_enum>', 'name' => 'string', 'redownload' => 'bool', 'status' => 'status_enum', 'tracking_specs' => 'Object'); $enums = array('execution_options_enum' => AdExecutionOptionsValues::getInstance()->getValues(), 'status_enum' => AdStatusValues::getInstance()->getValues()); $request = new ApiRequest($this->api, $this->data['id'], RequestInterface::METHOD_POST, '/', new Ad(), 'NODE', Ad::getFieldsEnum()->getValues(), new TypeChecker($param_types, $enums)); $request->addParams($params); $request->addFields($fields); return $pending ? $request : $request->execute(); }
/** * @param array $fields * @param array $params * @return Cursor */ public function getAdsByLabel(array $fields = array(), array $params = array()) { return $this->getManyByConnection(Ad::classname(), $fields, $params, 'adsbylabels'); }
$adset = new AdSet(null, $account->id); $adset->setData(array(AdSetFields::NAME => 'My First AdSet', AdSetFields::CAMPAIGN_ID => $campaign->id, AdSetFields::STATUS => AdSet::STATUS_ACTIVE, AdSetFields::DAILY_BUDGET => '150', AdSetFields::TARGETING => $targeting, AdSetFields::OPTIMIZATION_GOAL => OptimizationGoals::REACH, AdSetFields::BILLING_EVENT => BillingEvents::IMPRESSIONS, AdSetFields::BID_AMOUNT => 2, AdSetFields::START_TIME => (new \DateTime("+1 week"))->format(\DateTime::ISO8601), AdSetFields::END_TIME => (new \DateTime("+2 week"))->format(\DateTime::ISO8601))); $adset->validate()->create(); echo 'AdSet ID: ' . $adset->id . "\n"; /** * Step 5 Create an AdImage */ use FacebookAds\Object\AdImage; use FacebookAds\Object\Fields\AdImageFields; $image = new AdImage(null, $account->id); $image->{AdImageFields::FILENAME} = SDK_DIR . '/test/misc/image.png'; $image->create(); echo 'Image Hash: ' . $image->hash . "\n"; /** * Step 6 Create an AdCreative */ use FacebookAds\Object\AdCreative; use FacebookAds\Object\Fields\AdCreativeFields; $creative = new AdCreative(null, $account->id); $creative->setData(array(AdCreativeFields::NAME => 'Sample Creative', AdCreativeFields::TITLE => 'Welcome to the Jungle', AdCreativeFields::BODY => 'We\'ve got fun \'n\' games', AdCreativeFields::IMAGE_HASH => $image->hash, AdCreativeFields::OBJECT_URL => 'http://www.example.com/')); $creative->create(); echo 'Creative ID: ' . $creative->id . "\n"; /** * Step 7 Create an Ad */ use FacebookAds\Object\Ad; use FacebookAds\Object\Fields\AdFields; $ad = new Ad(null, $account->id); $ad->setData(array(AdFields::CREATIVE => array('creative_id' => $creative->id), AdFields::NAME => 'My First Ad', AdFields::ADSET_ID => $adset->id)); $ad->create(); echo 'Ad ID:' . $ad->id . "\n";