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

111 lines
3.2 KiB
PHP

<?php
/**
* Facebook Pixel Plugin AAMFieldsExtractor class.
*
* This file contains the main logic for AAMFieldsExtractor.
*
* @package FacebookPixelPlugin
*/
/**
* Define AAMFieldsExtractor class.
*
* @return void
*/
/*
* Copyright (C) 2017-present, Meta, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
namespace FacebookPixelPlugin\Core;
use FacebookPixelPlugin\FacebookAds\Object\ServerSide\Normalizer;
/**
* Class AAMFieldsExtractor
*/
final class AAMFieldsExtractor {
/**
* Filters the passed user data using the AAM settings of the pixel
*
* @param string[] $user_data_array The user data.
* @return string[]
*/
public static function get_normalized_user_data( $user_data_array ) {
$aam_setttings = FacebookWordpressOptions::get_aam_settings();
if ( ! $user_data_array || ! $aam_setttings ||
! $aam_setttings->getEnableAutomaticMatching() ) {
return array();
}
foreach ( $user_data_array as $key => $value ) {
if ( ! in_array(
$key,
$aam_setttings->getEnabledAutomaticMatchingFields(),
true
) ) {
unset( $user_data_array[ $key ] );
}
}
if (
isset( $user_data_array[ AAMSettingsFields::GENDER ] ) &&
! empty( $user_data_array[ AAMSettingsFields::GENDER ] )
) {
$user_data_array[ AAMSettingsFields::GENDER ] =
$user_data_array[ AAMSettingsFields::GENDER ][0];
}
if (
isset( $user_data_array[ AAMSettingsFields::DATE_OF_BIRTH ] )
) {
$date_time = \DateTime::createFromFormat(
'Y-m-d',
$user_data_array[ AAMSettingsFields::DATE_OF_BIRTH ],
new \DateTimeZone( 'GMT' )
);
$unix_timestamp = $date_time ? $date_time->getTimestamp() : false;
if ( ! $unix_timestamp ) {
unset( $user_data_array[ AAMSettingsFields::DATE_OF_BIRTH ] );
} else {
$formatted_date = gmdate( 'Ymd', $unix_timestamp );
if ( ! $formatted_date ) {
unset( $user_data_array[ AAMSettingsFields::DATE_OF_BIRTH ] );
} else {
$user_data_array[ AAMSettingsFields::DATE_OF_BIRTH ] =
$formatted_date;
}
}
}
foreach ( $user_data_array as $field => $data ) {
try {
if ( is_array( $data ) ) {
$res = array();
foreach ( $data as $key => $value ) {
$normalized_value = Normalizer::normalize( $field, $value );
$res[ $key ] = $normalized_value;
}
$user_data_array[ $field ] = $res;
} else {
$normalized_value = Normalizer::normalize( $field, $data );
$user_data_array[ $field ] = $normalized_value;
}
} catch ( \Exception $e ) {
unset( $user_data_array[ $field ] );
}
}
return $user_data_array;
}
}