Files
2026-04-28 15:13:50 +02:00

1319 lines
38 KiB
PHP

<?php
/**
* Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to
* use, copy, modify, and distribute this software in source code or binary
* form for use in connection with the web services and APIs provided by
* Facebook.
*
* As with any software that integrates with the Facebook platform, your use
* of this software is subject to the Facebook Developer Principles and
* Policies [http://developers.facebook.com/policy/]. This copyright notice
* shall be included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace FacebookPixelPlugin\FacebookAds\Object\ServerSide;
use ArrayAccess;
use InvalidArgumentException;
/**
* UserData is a set of identifiers Facebook can use for targeted attribution.
*
* @category Class
*/
class UserData implements ArrayAccess {
/**
* The original name of the model.
* @var string
*/
protected static $swaggerModelName = 'server_side_pixel_user_data';
/**
* Error message for when both singular and plural values are set via constructor.
* @var string
*/
private static $multiVariableConstructorError = 'Cannot set both %s and %s parameters via constructor. Please set either the singular or plural parameter, not both.';
/**
* Array of property to type mappings. Used for (de)serialization
* @var string[]
*/
protected static $param_types = array(
'email' => 'string',
'emails' => 'string[]',
'phone' => 'string',
'phones' => 'string[]',
'gender' => 'string',
'genders' => 'string[]',
'date_of_birth' => 'string',
'dates_of_birth' => 'string[]',
'last_name' => 'string',
'last_names' => 'string[]',
'first_name' => 'string',
'first_names' => 'string[]',
'ct' => 'string',
'cts' => 'string[]',
'state' => 'string',
'states' => 'string[]',
'country_code' => 'string',
'country_codes' => 'string[]',
'zip_code' => 'string',
'zip_codes' => 'string[]',
'external_id' => 'string',
'external_ids' => 'string[]',
'client_ip_address' => 'string',
'client_user_agent' => 'string',
'fbc' => 'string',
'fbp' => 'string',
'subscription_id' => 'string',
'fb_login_id' => 'string',
'lead_id' => 'string',
'f5first' => 'string',
'f5last' => 'string',
'fi' => 'string',
'dobd' => 'string',
'dobm' => 'string',
'doby' => 'string',
'madid' => 'string',
'anon_id' => 'string',
'ctwa_clid' => 'string',
'page_id' => 'string'
);
/**
* Array of attributes where the key is the local name, and the value is the original name
* @var string[]
*/
protected static $attributeMap = array(
'email' => 'email',
'emails' => 'emails',
'phone' => 'phone',
'phones' => 'phones',
'gender' => 'gender',
'genders' => 'genders',
'date_of_birth' => 'date_of_birth',
'dates_of_birth' => 'dates_of_birth',
'last_name' => 'last_name',
'last_names' => 'last_names',
'first_name' => 'first_name',
'first_names' => 'first_names',
'ct' => 'ct',
'cts' => 'cts',
'state' => 'state',
'states' => 'states',
'country_code' => 'country_code',
'country_codes' => 'country_codes',
'zip_code' => 'zip_code',
'zip_codes' => 'zip_codes',
'external_id' => 'external_id',
'external_ids' => 'external_ids',
'client_ip_address' => 'client_ip_address',
'client_user_agent' => 'client_user_agent',
'fbc' => 'fbc',
'fbp' => 'fbp',
'subscription_id' => 'subscription_id',
'fb_login_id' => 'fb_login_id',
'lead_id' => 'lead_id',
'f5first' => 'f5first',
'f5last' => 'f5last',
'fi' => 'fi',
'dobd' => 'dobd',
'dobm' => 'dobm',
'doby' => 'doby',
'madid' => 'madid',
'anon_id' => 'anon_id',
'ctwa_clid' => 'ctwa_clid',
'page_id' => 'page_id'
);
/**
* Array of attributes to setter functions (for deserialization of responses)
* @var string[]
*/
protected static $setters = array(
'email' => 'setEmail',
'emails' => 'setEmails',
'phone' => 'setPhone',
'phones' => 'setPhones',
'gender' => 'setGender',
'genders' => 'setGenders',
'date_of_birth' => 'setDateOfBirth',
'dates_of_birth' => 'setDatesOfBirth',
'last_name' => 'setLastName',
'last_names' => 'setLastNames',
'first_name' => 'setFirstName',
'first_names' => 'setFirstNames',
'city' => 'setCity',
'cities' => 'setCities',
'state' => 'setState',
'states' => 'setStates',
'country_code' => 'setCountryCode',
'country_codes' => 'setCountryCodes',
'zip_code' => 'setZipCode',
'zip_codes' => 'setZipCodes',
'external_id' => 'setExternalId',
'external_ids' => 'setExternalIds',
'client_ip_address' => 'setClientIpAddress',
'client_user_agent' => 'setClientUserAgent',
'fbc' => 'setFbc',
'fbp' => 'setFbp',
'subscription_id' => 'setSubscriptionId',
'fb_login_id' => 'setFbLoginId',
'lead_id' => 'setLeadId',
'f5first' => 'setF5first',
'f5last' => 'setF5last',
'fi' => 'setFi',
'dobd' => 'setDobd',
'dobm' => 'setDobm',
'doby' => 'setDoby',
'madid' => 'setMadid',
'anon_id' => 'setAnonId',
'ctwa_clid' => 'setCtwaClid',
'page_id' => 'setPageId'
);
/**
* Array of attributes to getter functions (for serialization of requests)
* @var string[]
*/
protected static $getters = array(
'email' => 'getEmail',
'emails' => 'getEmails',
'phone' => 'getPhone',
'phones' => 'getPhones',
'gender' => 'getGender',
'genders' => 'getGenders',
'date_of_birth' => 'getDateOfBirth',
'dates_of_birth' => 'getDatesOfBirth',
'last_name' => 'getLastName',
'last_names' => 'getLastNames',
'first_name' => 'getFirstName',
'first_names' => 'getFirstNames',
'city' => 'getCity',
'cities' => 'getCities',
'state' => 'getState',
'states' => 'getStates',
'country_code' => 'getCountryCode',
'country_codes' => 'getCountryCodes',
'zip_code' => 'getZipCode',
'zip_codes' => 'getZipCodes',
'external_id' => 'getExternalId',
'external_ids' => 'getExternalIds',
'client_ip_address' => 'getClientIpAddress',
'client_user_agent' => 'getClientUserAgent',
'fbc' => 'getFbc',
'fbp' => 'getFbp',
'subscription_id' => 'getSubscriptionId',
'fb_login_id' => 'getFbLoginId',
'lead_id' => 'getLeadId',
'f5first' => 'getF5first',
'f5last' => 'getF5last',
'fi' => 'getFi',
'dobd' => 'getDobd',
'dobm' => 'getDobm',
'doby' => 'getDoby',
'madid' => 'getMadid',
'anon_id' => 'getAnonId',
'ctwa_clid' => 'getCtwaClid',
'page_id' => 'getPageId'
);
/**
* Associative array for storing property values
* @var mixed[]
*/
protected $container = array();
/**
* Constructor
* @param mixed[] $data Associated array of property value initalizing the model
*/
public function __construct(?array $data = null) {
# Let's make sure not both singular and plural parameters are set
if(isset($data['email']) And isset($data['emails'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'email', 'emails'));
}
if(isset($data['phone']) And isset($data['phones'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'phone', 'phones'));
}
if (isset($data['gender']) and isset($data['genders'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'gender', 'genders'));
}
if (isset($data['date_of_birth']) and isset($data['dates_of_birth'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'date_of_birth', 'dates_of_birth'));
}
if (isset($data['last_name']) and isset($data['last_names'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'last_name', 'last_names'));
}
if (isset($data['first_name']) and isset($data['first_names'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'first_name', 'first_names'));
}
if (isset($data['city']) and isset($data['cities'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'city', 'cities'));
}
if (isset($data['state']) and isset($data['states'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'state', 'states'));
}
if (isset($data['country_code']) and isset($data['country_codes'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'country_code', 'country_codes'));
}
if (isset($data['zip_code']) and isset($data['zip_codes'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'zip_code', 'zip_codes'));
}
if (isset($data['external_id']) and isset($data['external_ids'])) {
throw new InvalidArgumentException(sprintf(self::$multiVariableConstructorError, 'external_id', 'external_ids'));
}
# Set the parameters depending on which one is passed in.
if (isset($data['email'])) {
$this->setEmail($data['email']);
} else if(isset($data['emails'])) {
$this->setEmails($data['emails']);
}
if (isset($data['phone'])) {
$this->setPhone($data['phone']);
} else if(isset($data['phones'])) {
$this->setPhones($data['phones']);
}
if (isset($data['gender'])) {
$this->setGender($data['gender']);
} else if(isset($data['genders'])) {
$this->setGenders($data['genders']);
}
if (isset($data['date_of_birth'])) {
$this->setDateOfBirth($data['date_of_birth']);
} else if(isset($data['dates_of_birth'])) {
$this->setDatesOfBirth($data['dates_of_birth']);
}
if (isset($data['last_name'])) {
$this->setLastName($data['last_name']);
} else if(isset($data['last_names'])) {
$this->setLastNames($data['last_names']);
}
if (isset($data['first_name'])) {
$this->setFirstName($data['first_name']);
} else if(isset($data['first_names'])) {
$this->setFirstNames($data['first_names']);
}
if (isset($data['city'])) {
$this->setCity($data['city']);
} else if(isset($data['cities'])) {
$this->setCities($data['cities']);
}
if (isset($data['state'])) {
$this->setState($data['state']);
} else if(isset($data['states'])) {
$this->setStates($data['states']);
}
if (isset($data['country_code'])) {
$this->setCountryCode($data['country_code']);
} else if(isset($data['country_codes'])) {
$this->setCountryCodes($data['country_codes']);
}
if (isset($data['zip_code'])) {
$this->setZipCode($data['zip_code']);
} else if(isset($data['zip_codes'])) {
$this->setZipCodes($data['zip_codes']);
}
if (isset($data['external_id'])) {
$this->setExternalId($data['external_id']);
} else if(isset($data['external_ids'])) {
$this->setExternalIds($data['external_ids']);
}
$this->container['client_ip_address'] = isset($data['client_ip_address']) ? $data['client_ip_address'] : null;
$this->container['client_user_agent'] = isset($data['client_user_agent']) ? $data['client_user_agent'] : null;
$this->container['fbc'] = isset($data['fbc']) ? $data['fbc'] : null;
$this->container['fbp'] = isset($data['fbp']) ? $data['fbp'] : null;
$this->container['subscription_id'] = isset($data['subscription_id']) ? $data['subscription_id'] : null;
$this->container['fb_login_id'] = isset($data['fb_login_id']) ? $data['fb_login_id'] : null;
$this->container['lead_id'] = isset($data['lead_id']) ? $data['lead_id'] : null;
$this->container['f5first'] = isset($data['f5first']) ? $data['f5first'] : null;
$this->container['f5last'] = isset($data['f5last']) ? $data['f5last'] : null;
$this->container['fi'] = isset($data['fi']) ? $data['fi'] : null;
$this->container['dobd'] = isset($data['dobd']) ? $data['dobd'] : null;
$this->container['dobm'] = isset($data['dobm']) ? $data['dobm'] : null;
$this->container['doby'] = isset($data['doby']) ? $data['doby'] : null;
$this->container['madid'] = isset($data['madid']) ? $data['madid'] : null;
$this->container['anon_id'] = isset($data['anon_id']) ? $data['anon_id'] : null;
$this->container['ctwa_clid'] = isset($data['ctwa_clid']) ? $data['ctwa_clid'] : null;
$this->container['page_id'] = isset($data['page_id']) ? $data['page_id'] : null;
}
/**
* @return string[]
*/
public static function paramTypes() {
return self::$param_types;
}
/**
* @return string[]
*/
public static function attributeMap() {
return self::$attributeMap;
}
/**
* @return string[]
*/
public static function setters() {
return self::$setters;
}
/**
* @return string[]
*/
public static function getters() {
return self::$getters;
}
/**
* show all the invalid properties with reasons.
*
* @return array invalid properties with reasons
*/
public function listInvalidProperties() {
$invalid_properties = array();
return $invalid_properties;
}
/**
* validate all the properties in the model
* return true if all passed
*
* @return bool True if all properteis are valid
*/
public function valid() {
return true;
}
/**
* Sets an email address, in lowercase.
*
* <p>Example: joe@eg.com
* @param string $email An email address, in lowercase.
* @return $this
*/
public function setEmail($email) {
$this->container['emails'] = isset($email) ? array($email) : null;
return $this;
}
/**
* Sets a list of email addresses, in lowercase.
*
* <p>Example: array('joe@eg.com', 'mary@test.com')
* @param string[] $emails A list of email addresses, in lowercase.
* @return $this
*/
public function setEmails($emails) {
$this->container['emails'] = $emails;
return $this;
}
/**
* Sets a phone number. Include only digits with countryCode code, area code, and number.
*
* <p>Example: 16505551212
* @param string $phone A phone number. Include only digits with country code, area code, and number.
* @return $this
*/
public function setPhone($phone) {
$this->container['phones'] = isset($phone) ? array($phone) : null;
return $this;
}
/**
* Sets a list of phone numbers. Include only digits with countryCode code, area code, and number.
*
* <p>Example: array('16505551212', '12052062007')
* @param string[] $phone A list of phone numbers. Include only digits with country code, area code, and number.
* @return $this
*/
public function setPhones($phones) {
$this->container['phones'] = $phones;
return $this;
}
/**
* Sets Gender, in lowercase. Either f or m.
* @param \FacebookAds\Object\ServerSide\Gender $gender Gender, in lowercase. Either f or m.
* @return $this
*/
public function setGender($gender) {
$this->container['genders'] = isset($gender) ? array($gender) : null;
return $this;
}
/**
* Sets a list of Genders, in lowercase.
* <p>Example: array('f', 'm')
* @param \FacebookAds\Object\ServerSide\Gender[] $genders A list of Genders, in lowercase.
* @return $this
*/
public function setGenders($genders) {
$this->container['genders'] = $genders;
return $this;
}
/**
* Sets a date of birth given as year, month, and day.
*
* <p>Example: 19971226 for December 26, 1997.
* @param string $date_of_birth A date of birth given as year, month, and day.
* @return $this
*/
public function setDateOfBirth($date_of_birth) {
$this->container['dates_of_birth'] = isset($date_of_birth) ? array($date_of_birth) : null;
return $this;
}
/**
* Sets a list of dates of birth given as year, month, and day.
*
* <p>Example: array('19971226', '19880102')
* @param string[] $dates_of_birth A list of dates of birth given as year, month, and day.
* @return $this
*/
public function setDatesOfBirth($dates_of_birth) {
$this->container['dates_of_birth'] = $dates_of_birth;
return $this;
}
/**
* Sets a last name in lowercase.
*
* <p>Example: smith
* @param string $last_name A last name in lowercase.
* @return $this
*/
public function setLastName($last_name) {
$this->container['last_names'] = isset($last_name) ? array($last_name) : null;
return $this;
}
/**
* Sets a list of last names in lowercase.
*
* <p>Example: array('smith', 'brown')
* @param string[] $last_names A list of last names in lowercase.
* @return $this
*/
public function setLastNames($last_names) {
$this->container['last_names'] = $last_names;
return $this;
}
/**
* Sets a first name in lowercase.
*
* <p>Example: joe
* @param string $first_name A first name in lowercase.
* @return $this
*/
public function setFirstName($first_name) {
$this->container['first_names'] = isset($first_name) ? array($first_name) : null;
return $this;
}
/**
* Sets a list of first names in lowercase.
*
* <p>Example: array('joe', 'mary')
* @param string[] $first_names A list of first names in lowercase.
* @return $this
*/
public function setFirstNames($first_names) {
$this->container['first_names'] = $first_names;
return $this;
}
/**
* Sets a city in lower-case without spaces or punctuation.
*
* <p>Example: menlopark
* @param string $city A city in lower-case without spaces or punctuation.
* @return $this
*/
public function setCity($city) {
$this->container['cities'] = isset($city) ? array($city) : null;
return $this;
}
/**
* Sets a list of cities in lower-case without spaces or punctuation.
*
* <p>Example: array('menlopark', 'seattle')
* @param string[] $cities A list of cities in lower-case without spaces or punctuation.
* @return $this
*/
public function setCities($cities) {
$this->container['cities'] = $cities;
return $this;
}
/**
* Sets a two-letter state code in lowercase.
*
* <p>Example: ca
* @param string $state A two-letter state code in lowercase.
* @return $this
*/
public function setState($state) {
$this->container['states'] = isset($state) ? array($state) : null;
return $this;
}
/**
* Sets a list of two-letter state codes in lowercase.
*
* <p>Example: array('ca', 'wa')
* @param string[] $states A list of two-letter state codes in lowercase.
* @return $this
*/
public function setStates($states) {
$this->container['states'] = $states;
return $this;
}
/**
* Sets a two-letter country code in lowercase.
*
* <p>Example: us
* @param string $country_code two-letter country code in lowercase.
* @return $this
*/
public function setCountryCode($country_code) {
$this->container['country_codes'] = isset($country_code) ? array($country_code) : null;
return $this;
}
/**
* Sets a list of two-letter country codes in lowercase.
*
* <p>Example: array('us', 'ca')
* @param string[] $country_codes A list of two-letter country codes in lowercase.
* @return $this
*/
public function setCountryCodes($country_codes) {
$this->container['country_codes'] = $country_codes;
return $this;
}
/**
* Sets a five-digit zip code.
*
* <p>Example: 94035
* @param string $zip_code A five-digit zip code.
* @return $this
*/
public function setZipCode($zip_code) {
$this->container['zip_codes'] = isset($zip_code) ? array($zip_code) : null;
return $this;
}
/**
* Sets a list of five-digit zip codes.
*
* <p>Example: array('94035', '98001')
* @param string[] $zip_codes A list of five-digit zip codes.
* @return $this
*/
public function setZipCodes($zip_codes) {
$this->container['zip_codes'] = $zip_codes;
return $this;
}
/**
* Sets any unique ID from the advertiser, such as loyalty membership IDs, user IDs, and external
* cookie IDs. In the Offline Conversions API, this is known as extern_id. For more information,
* see Offline Conversions, Providing External IDs. If External ID is being sent via other
* channels, then it should be sent in the same format via the Conversions API.
* @param string $external_id Any unique ID from the advertiser, such as loyalty membership IDs,
* user IDs, and external cookie IDs.
* @return $this
*/
public function setExternalId($external_id) {
$this->container['external_ids'] = isset($external_id) ? array($external_id) : null;
return $this;
}
/**
* Sets a list of unique IDs from the advertiser, such as loyalty membership IDs, user IDs, and external
* cookie IDs. In the Offline Conversions API, this is known as extern_id. For more information,
* see Offline Conversions, Providing External IDs. If External ID is being sent via other
* channels, then it should be sent in the same format via the Conversions API.
* @param string[] $external_ids A list of unique IDs from the advertiser, such as loyalty membership IDs,
* user IDs, and external cookie IDs.
* @return $this
*/
public function setExternalIds($external_ids) {
$this->container['external_ids'] = $external_ids;
return $this;
}
/**
* Sets IP address of the browser corresponding to the event.
* @param string $client_ip_address The IP address of the browser corresponding to the event.
* @return $this
*/
public function setClientIpAddress($client_ip_address) {
$this->container['client_ip_address'] = $client_ip_address;
return $this;
}
/**
* Sets user agent for the browser corresponding to the event.
* @param string $client_user_agent The user agent for the browser corresponding to the event.
* @return $this
*/
public function setClientUserAgent($client_user_agent) {
$this->container['client_user_agent'] = $client_user_agent;
return $this;
}
/**
* Sets Facebook click ID value stored in the _fbc browser cookie under your domain. See Managing
* fbc and fbp Parameters for how to get this value
* (https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc),
* or generate this value from a fbclid query parameter.
* @param string $fbc The Facebook click ID value stored in the _fbc browser cookie under your domain.
* @return $this
*/
public function setFbc($fbc) {
$this->container['fbc'] = $fbc;
return $this;
}
/**
* Sets Set Facebook browser ID value stored in the _fbp browser cookie under your domain. See Managing
* fbc and fbp Parameters for how to get this value
* (https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc),
* or generate this value from a fbclid query parameter.
* @param string $fbp The Facebook browser ID value stored in the _fbp browser cookie under your domain.
* @return $this
*/
public function setFbp($fbp) {
$this->container['fbp'] = $fbp;
return $this;
}
/**
* Sets subscription ID for the user in this transaction. This is similar to the order ID for an
* individual product.
* @param string $subscription_id The subscription ID for the user in this transaction.
* @return $this
*/
public function setSubscriptionId($subscription_id) {
$this->container['subscription_id'] = $subscription_id;
return $this;
}
/**
* Sets FbLogin ID for the user in this transaction.
* ID issued by Facebook when a person first logs into an instance of an app.
* This is also known as App-Scoped ID.
* @param string $fb_login_id The Fb_Login_Id for the user in this transaction.
* @return $this
*/
public function setFbLoginId($fb_login_id) {
$this->container['fb_login_id'] = $fb_login_id;
return $this;
}
/**
* Sets lead_id for the user in this transaction.
* A lead_id is associated with a lead generated by Facebook's Lead Ads.
* @param string $lead_id The lead_id for the user in this transaction.
* @return $this
*/
public function setLeadId($lead_id) {
$this->container['lead_id'] = $lead_id;
return $this;
}
/**
* Sets the first 5 letters of the first name.
* @param string $f5first The first 5 letters of the first name.
* @return $this
*/
public function setF5first($f5first) {
$this->container['f5first'] = $f5first;
return $this;
}
/**
* Sets the first 5 letters of the last name.
* @param string $f5last The first 5 letters of the last name.
* @return $this
*/
public function setF5last($f5last) {
$this->container['f5last'] = $f5last;
return $this;
}
/**
* Sets the first initial.
* @param string $fi The first initial.
* @return $this
*/
public function setFi($fi) {
$this->container['fi'] = $fi;
return $this;
}
/**
* Sets the date of birth day.
* @param string $dobd The date of birth day.
* @return $this
*/
public function setDobd($dobd) {
$this->container['dobd'] = $dobd;
return $this;
}
/**
* Sets the date of birth month.
* @param string $dobm The date of birth month.
* @return $this
*/
public function setDobm($dobm) {
$this->container['dobm'] = $dobm;
return $this;
}
/**
* Sets the date of birth year.
* @param string $doby The date of birth year.
* @return $this
*/
public function setDoby($doby) {
$this->container['doby'] = $doby;
return $this;
}
/**
* Set the mobile advertiser id which is either Apple's Advertising Identifier (IDFA) or
* Google Android's advertising ID
*
* @param madid is the mobile advertiser id
* @return $this
*/
public function setMadid($madid) {
$this->container['madid'] = $madid;
return $this;
}
/**
* Set the ID of a person who has installed the app anonymously
*
* @param anon_id the anonymous id
* @return $this
*/
public function setAnonId($anon_id) {
$this->container['anon_id'] = $anon_id;
return $this;
}
/**
* CtwaClid of the conversation that was started on WhatsApp
*
* @param ctwa_clid the anonymous id
* @return $this
*/
public function setCtwaClid($ctwa_clid) {
$this->container['ctwa_clid'] = $ctwa_clid;
return $this;
}
/**
* Set the ID of the page that the ad is associated with
*
* @param page_id
* @return $this
*/
public function setPageId($page_id) {
$this->container['page_id'] = $page_id;
return $this;
}
/**
* Returns true if offset exists. False otherwise.
* @param integer $offset Offset
* @return boolean
*/
public function offsetExists($offset) : bool {
return isset($this->container[$offset]);
}
/**
* Gets offset.
* @param integer $offset Offset
* @return mixed
*/
public function offsetGet($offset) : mixed {
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
/**
* Sets value based on offset.
* @param integer $offset Offset
* @param mixed $value Value to be set
* @return void
*/
public function offsetSet($offset, $value) : void {
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}
/**
* Unsets offset.
* @param integer $offset Offset
* @return void
*/
public function offsetUnset($offset) : void {
unset($this->container[$offset]);
}
public function normalize() {
$normalized_payload = array();
$normalized_payload['em'] = $this->normalizeHashDedup('em', $this->getEmails());
$normalized_payload['ph'] = $this->normalizeHashDedup('ph', $this->getPhones());
$normalized_payload['ge'] = $this->normalizeHashDedup('ge', $this->getGenders());
$normalized_payload['db'] = $this->normalizeHashDedup('db', $this->getDatesOfBirth());
$normalized_payload['ln'] = $this->normalizeHashDedup('ln', $this->getLastNames());
$normalized_payload['fn'] = $this->normalizeHashDedup('fn', $this->getFirstNames());
$normalized_payload['ct'] = $this->normalizeHashDedup('ct', $this->getCities());
$normalized_payload['st'] = $this->normalizeHashDedup('st', $this->getStates());
$normalized_payload['zp'] = $this->normalizeHashDedup('zp', $this->getZipCodes());
$normalized_payload['country'] = $this->normalizeHashDedup('country', $this->getCountryCodes());
$normalized_payload['external_id'] = $this->dedup($this->getExternalIds());
$normalized_payload['client_ip_address'] = $this->getClientIpAddress();
$normalized_payload['client_user_agent'] = $this->getClientUserAgent();
$normalized_payload['fbc'] = $this->getFbc();
$normalized_payload['fbp'] = $this->getFbp();
$normalized_payload['subscription_id'] = $this->getSubscriptionId();
$normalized_payload['fb_login_id'] = $this->getFbLoginId();
$normalized_payload['lead_id'] = $this->getLeadId();
$normalized_payload['f5first'] = Util::hash(Normalizer::normalize('f5first', $this->getF5first()));
$normalized_payload['f5last'] = Util::hash(Normalizer::normalize('f5last', $this->getF5last()));
$normalized_payload['fi'] = Util::hash(Normalizer::normalize('fi', $this->getFi()));
$normalized_payload['dobd'] = Util::hash(Normalizer::normalize('dobd', $this->getDobd()));
$normalized_payload['dobm'] = Util::hash(Normalizer::normalize('dobm', $this->getDobm()));
$normalized_payload['doby'] = Util::hash(Normalizer::normalize('doby', $this->getDoby()));
$normalized_payload['madid'] = Util::hash(Normalizer::normalize('madid', $this->getMadid()));
$normalized_payload['anon_id'] = Util::hash(Normalizer::normalize('anon_id', $this->getAnonId()));
$normalized_payload['ctwa_clid'] = $this->getCtwaClid();
$normalized_payload['page_id'] = $this->getPageId();
$normalized_payload = array_filter($normalized_payload);
return $normalized_payload;
}
/**
* Simply return a deduped array for the given array, without performing any normalization or hash.
*/
private function dedup($arr){
if(empty($arr)) {
return null;
}
$deduped = array();
foreach($arr as $val){
$deduped[$val] = true;
}
return array_keys($deduped);
}
/**
* Return a normalized, hashed, and deduped array for the given array.
*/
private function normalizeHashDedup($fieldName, $valueList){
if(empty($valueList) || !isset($fieldName)) {
return null;
}
$deduped = array();
foreach($valueList as $val){
$hashedVal = Util::hash(Normalizer::normalize($fieldName, $val));
$deduped[$hashedVal] = true;
}
return array_keys($deduped);
}
/**
* Gets an email address, in lowercase.
* @return string
*/
public function getEmail() {
return empty($this->container['emails']) ? null : $this->container['emails'][0];
}
/**
* Gets a list of email addresses, in lowercase.
* @return string[]
*/
public function getEmails() {
return empty($this->container['emails']) ? null : $this->container['emails'];
}
/**
* Gets a phone number
* @return string
*/
public function getPhone() {
return empty($this->container['phones']) ? null : $this->container['phones'][0];
}
/**
* Gets a list of phone numbers
* @return string[]
*/
public function getPhones() {
return empty($this->container['phones']) ? null : $this->container['phones'];
}
/**
* Gets gender.
* @return string
*/
public function getGender() {
return empty($this->container['genders']) ? null : $this->container['genders'][0];
}
/**
* Gets a list of genders.
* @return string[]
*/
public function getGenders() {
return empty($this->container['genders']) ? null : $this->container['genders'];
}
/**
* Gets Date Of Birth.
* @return string
*/
public function getDateOfBirth() {
return empty($this->container['dates_of_birth']) ? null : $this->container['dates_of_birth'][0];
}
/**
* Gets a list of dates Of Birth.
* @return string[]
*/
public function getDatesOfBirth() {
return empty($this->container['dates_of_birth']) ? null : $this->container['dates_of_birth'];
}
/**
* Gets Last Name.
* @return string
*/
public function getLastName() {
return empty($this->container['last_names']) ? null : $this->container['last_names'][0];
}
/**
* Gets a list of Last Names.
* @return string[]
*/
public function getLastNames() {
return empty($this->container['last_names']) ? null : $this->container['last_names'];
}
/**
* Gets First Name.
* @return string
*/
public function getFirstName() {
return empty($this->container['first_names']) ? null : $this->container['first_names'][0];
}
/**
* Gets a list of First Name.
* @return string[]
*/
public function getFirstNames() {
return empty($this->container['first_names']) ? null : $this->container['first_names'];
}
/**
* Gets city.
* @return string
*/
public function getCity() {
return empty($this->container['cities']) ? null : $this->container['cities'][0];
}
/**
* Gets a list of cities.
* @return string[]
*/
public function getCities() {
return empty($this->container['cities']) ? null : $this->container['cities'];
}
/**
* Gets state.
* @return string
*/
public function getState() {
return empty($this->container['states']) ? null : $this->container['states'][0];
}
/**
* Gets a list of states.
* @return string[]
*/
public function getStates() {
return empty($this->container['states']) ? null : $this->container['states'];
}
/**
* Gets zip code
* @return string
*/
public function getZipCode() {
return empty($this->container['zip_codes']) ? null : $this->container['zip_codes'][0];
}
/**
* Gets zip codes
* @return string[]
*/
public function getZipCodes() {
return empty($this->container['zip_codes']) ? null : $this->container['zip_codes'];
}
/**
* Gets country code.
* @return string
*/
public function getCountryCode() {
return empty($this->container['country_codes']) ? null : $this->container['country_codes'][0];
}
/**
* Gets country codes.
* @return string[]
*/
public function getCountryCodes() {
return empty($this->container['country_codes']) ? null : $this->container['country_codes'];
}
/**
* Gets Any unique ID from the advertiser, such as loyalty membership IDs, user IDs, and external cookie IDs.
* @return string
*/
public function getExternalId() {
return empty($this->container['external_ids']) ? null : $this->container['external_ids'][0];
}
/**
* Gets a list of unique IDs from the advertiser, such as loyalty membership IDs, user IDs, and external cookie IDs.
* @return string[]
*/
public function getExternalIds() {
return empty($this->container['external_ids']) ? null : $this->container['external_ids'];
}
/**
* Gets IP address of the browser corresponding to the event.
* @return string
*/
public function getClientIpAddress() {
return $this->container['client_ip_address'];
}
/**
* Gets user agent for the browser corresponding to the event.
* @return string
*/
public function getClientUserAgent() {
return $this->container['client_user_agent'];
}
/**
* Gets the Facebook click ID value stored in the _fbc browser cookie under your domain.
* @return string
*/
public function getFbc() {
return $this->container['fbc'];
}
/**
* Gets the Facebook browser ID value stored in the _fbp browser cookie under your domain.
* @return string
*/
public function getFbp() {
return $this->container['fbp'];
}
/**
* Gets the subscription ID for the user in this transaction.
* @return string
*/
public function getSubscriptionId() {
return $this->container['subscription_id'];
}
/**
* Gets the FbLogin ID for the user in this transaction.
* @return string
*/
public function getFbLoginId() {
return $this->container['fb_login_id'];
}
/**
* Gets the lead_id for the user in this transaction.
* @return string
*/
public function getLeadId() {
return $this->container['lead_id'];
}
/**
* Gets the first 5 letters of the first name.
* @return string
*/
public function getF5first() {
return $this->container['f5first'];
}
/**
* Gets the first 5 letters of the last name.
* @return string
*/
public function getF5last() {
return $this->container['f5last'];
}
/**
* Gets the first initial.
* @return string
*/
public function getFi() {
return $this->container['fi'];
}
/**
* Gets the date of birth day.
* @return string
*/
public function getDobd() {
return $this->container['dobd'];
}
/**
* Gets the date of birth month.
* @return string
*/
public function getDobm() {
return $this->container['dobm'];
}
/**
* Gets the date of birth year.
* @return string
*/
public function getDoby() {
return $this->container['doby'];
}
/**
* The mobile advertiser id
* @return string
*/
public function getMadid() {
return $this->container['madid'];
}
/**
* ID of the person who has installed the app anonymously
* @return string
*/
public function getAnonId() {
return $this->container['anon_id'];
}
/**
* CtwaClid of the conversation that was started on WhatsApp
* @return string
*/
public function getCtwaClid() {
return $this->container['ctwa_clid'];
}
/**
* ID of the page that the ad is associated with
* @return string
*/
public function getPageId() {
return $this->container['page_id'];
}
/**
* Gets the string presentation of the object
* @return string
*/
public function __toString() {
if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
return json_encode($this, JSON_PRETTY_PRINT);
}
return json_encode($this);
}
}