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

593 lines
16 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\Signal;
use Util;
use FacebookPixelPlugin\FacebookAds\Object\BusinessDataAPI\UserData as BusinessDataUserData;
use FacebookPixelPlugin\FacebookAds\Object\ServerSide\UserData as ServerSideUserData;
/**
* UserData is a set of identifiers Facebook can use for targeted attribution.
*
* @category Class
*/
class UserData {
/**
* Associative array for storing property values for Business Data API
* @var BusinessDataUserData
*/
protected $businessDataUserData = null;
/**
* Associative array for storing property values for Conversion API
* @var ServerSideUserData
*/
protected $serverSideUserData = null;
/**
* Constructor
* @param mixed[] $data Associated array of property value initalizing the model
*/
public function __construct(?array $data = null) {
$this->businessDataUserData = new BusinessDataUserData($data);
$this->serverSideUserData = new ServerSideUserData($data);
}
/**
* Sets an email address, in lowercase.
*
* Example: joe@eg.com
* @param string $email An email address, in lowercase.
* @return $this
*/
public function setEmail($email) {
$this->businessDataUserData->setEmail($email);
$this->serverSideUserData->setEmail($email);
return $this;
}
/**
* Sets a phone number. Include only digits with countryCode code, area code, and number.
*
* 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->businessDataUserData->setPhone($phone);
$this->serverSideUserData->setPhone($phone);
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->serverSideUserData->setGender($gender);
return $this;
}
/**
* Sets a date of birth given as year, month, and day.
*
* 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->businessDataUserData->setDateOfBirth($date_of_birth);
$this->serverSideUserData->setDateOfBirth($date_of_birth);
return $this;
}
/**
* Sets a last name in lowercase.
*
* Example: smith
* @param string $last_name A last name in lowercase.
* @return $this
*/
public function setLastName($last_name) {
$this->businessDataUserData->setLastName($last_name);
$this->serverSideUserData->setLastName($last_name);
return $this;
}
/**
* Sets a first name in lowercase.
*
* Example: joe
* @param string $first_name A first name in lowercase.
* @return $this
*/
public function setFirstName($first_name) {
$this->businessDataUserData->setFirstName($first_name);
$this->serverSideUserData->setFirstName($first_name);
return $this;
}
/**
* Sets a city in lowercase without spaces or punctuation.
*
* Example: menlopark
* @param string $city A city in lowercase without spaces or punctuation.
* @return $this
*/
public function setCity($city) {
$this->businessDataUserData->setCity($city);
$this->serverSideUserData->setCity($city);
return $this;
}
/**
* Sets a two-letter state code in lowercase.
*
* Example: ca
* @param string $state A two-letter state code in lowercase.
* @return $this
*/
public function setState($state) {
$this->businessDataUserData->setState($state);
$this->serverSideUserData->setState($state);
return $this;
}
/**
* Sets a two-letter country code in lowercase.
*
* Example: us
* @param string $country_code two-letter country code in lowercase.
* @return $this
*/
public function setCountryCode($country_code) {
$this->businessDataUserData->setCountryCode($country_code);
$this->serverSideUserData->setCountryCode($country_code);
return $this;
}
/**
* Sets a five-digit zip code.
*
* Example: 94035
* @param string $zip_code A five-digit zip code.
* @return $this
*/
public function setZipCode($zip_code) {
$this->businessDataUserData->setZipCode($zip_code);
$this->serverSideUserData->setZipCode($zip_code);
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 server-side 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->businessDataUserData->setExternalId($external_id);
$this->serverSideUserData->setExternalId($external_id);
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->serverSideUserData->setClientIpAddress($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->serverSideUserData->setClientUserAgent($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/facebook-pixel/server-side-api/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->serverSideUserData->setFbc($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/facebook-pixel/server-side-api/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->serverSideUserData->setFbp($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->serverSideUserData->setSubscriptionId($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->serverSideUserData->setFbLoginId($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->serverSideUserData->setLeadId($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->serverSideUserData->setF5first($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->serverSideUserData->setF5last($f5last);
return $this;
}
/**
* Sets the first initial.
* @param string $fi The first initial.
* @return $this
*/
public function setFi($fi) {
$this->serverSideUserData->setFi($fi);
return $this;
}
/**
* Sets the date of birth day.
* @param string $dobd The date of birth day.
* @return $this
*/
public function setDobd($dobd) {
$this->serverSideUserData->setDobd($dobd);
return $this;
}
/**
* Sets the date of birth month.
* @param string $dobm The date of birth month.
* @return $this
*/
public function setDobm($dobm) {
$this->serverSideUserData->setDobm($dobm);
return $this;
}
/**
* Sets the date of birth year.
* @param string $doby The date of birth year.
* @return $this
*/
public function setDoby($doby) {
$this->serverSideUserData->setDoby($doby);
return $this;
}
/**
* Sets physical address.
* @param string $address The physical address.
* @return $this
*/
public function setAddress($address) {
$this->businessDataUserData->setAddress($address);
return $this;
}
/**
* Gets an email address, in lowercase.
* @return array
*/
public function getEmail() {
return Util::constructResponse($this->serverSideUserData->getEmail(), $this->businessDataUserData->getEmail());
}
/**
* Gets a phone number
* @return array
*/
public function getPhone() {
return Util::constructResponse($this->serverSideUserData->getPhone(), $this->businessDataUserData->getPhone());
}
/**
* Gets gender.
* @return array
*/
public function getGender() {
return Util::constructResponse($this->serverSideUserData->getGender(), null);
}
/**
* Gets Date Of Birth.
* @return array
*/
public function getDateOfBirth() {
return Util::constructResponse($this->serverSideUserData->getDateOfBirth(), $this->businessDataUserData->getDateOfBirth());
}
/**
* Gets Last Name.
* @return array
*/
public function getLastName() {
return Util::constructResponse($this->serverSideUserData->getLastName(), $this->businessDataUserData->getLastName());
}
/**
* Gets First Name.
* @return array
*/
public function getFirstName() {
return Util::constructResponse($this->serverSideUserData->getFirstName(), $this->businessDataUserData->getFirstName());
}
/**
* Gets city.
* @return array
*/
public function getCity() {
return Util::constructResponse($this->serverSideUserData->getCity(), $this->businessDataUserData->getCity());
}
/**
* Gets state.
* @return array
*/
public function getState() {
return Util::constructResponse($this->serverSideUserData->getState(), $this->businessDataUserData->getState());
}
/**
* Gets zip code
* @return array
*/
public function getZipCode() {
return Util::constructResponse($this->serverSideUserData->getZipCode(), $this->businessDataUserData->getZipCode());
}
/**
* Gets country code.
* @return array
*/
public function getCountryCode() {
return Util::constructResponse($this->serverSideUserData->getCountryCode(), $this->businessDataUserData->getCountryCode());
}
/**
* Gets Any unique ID from the advertiser, such as loyalty membership IDs, user IDs, and external cookie IDs.
* @return array
*/
public function getExternalId() {
return Util::constructResponse($this->serverSideUserData->getExternalId(), $this->businessDataUserData->getExternalId());
}
/**
* Gets IP address of the browser corresponding to the event.
* @return array
*/
public function getClientIpAddress() {
return Util::constructResponse($this->serverSideUserData->getClientIpAddress(), null);
}
/**
* Gets user agent for the browser corresponding to the event.
* @return array
*/
public function getClientUserAgent() {
return Util::constructResponse($this->serverSideUserData->getClientUserAgent(), null);
}
/**
* Gets the Facebook click ID value stored in the _fbc browser cookie under your domain.
* @return array
*/
public function getFbc() {
return Util::constructResponse($this->serverSideUserData->getFbc(), null);
}
/**
* Gets the Facebook browser ID value stored in the _fbp browser cookie under your domain.
* @return array
*/
public function getFbp() {
return Util::constructResponse($this->serverSideUserData->getFbp(), null);
}
/**
* Gets the subscription ID for the user in this transaction.
* @return array
*/
public function getSubscriptionId() {
return Util::constructResponse($this->serverSideUserData->getSubscriptionId(), null);
}
/**
* Gets the FbLogin ID for the user in this transaction.
* @return array
*/
public function getFbLoginId() {
return Util::constructResponse($this->serverSideUserData->getFbLoginId(), null);
}
/**
* Gets the lead_id for the user in this transaction.
* @return array
*/
public function getLeadId() {
return Util::constructResponse($this->serverSideUserData->getLeadId(), null);
}
/**
* Gets the first 5 letters of the first name.
* @return array
*/
public function getF5first() {
return Util::constructResponse($this->serverSideUserData->getF5first(), null);
}
/**
* Gets the first 5 letters of the last name.
* @return array
*/
public function getF5last() {
return Util::constructResponse($this->serverSideUserData->getF5last(), null);
}
/**
* Gets the first initial.
* @return array
*/
public function getFi() {
return Util::constructResponse($this->serverSideUserData->getFi(), null);
}
/**
* Gets the date of birth day.
* @return array
*/
public function getDobd() {
return Util::constructResponse($this->serverSideUserData->getDobd(), null);
}
/**
* Gets the date of birth month.
* @return array
*/
public function getDobm() {
return Util::constructResponse($this->serverSideUserData->getDobm(), null);
}
/**
* Gets the date of birth year.
* @return array
*/
public function getDoby() {
return Util::constructResponse($this->serverSideUserData->getDoby(), null);
}
/**
* Gets physical address
* @return array
*/
public function getAddress() {
return Util::constructResponse(null, $this->businessDataUserData->getAddress());
}
/**
* Gets user data for Business Data API
* @return BusinessDataUserData
*/
public function getBusinessDataUserData() {
return $this->businessDataUserData;
}
/**
* Gets user data for Conversion API
* @return ServerSideUserData
*/
public function getServerSideUserData() {
return $this->serverSideUserData;
}
}