public static function getNormalizedUserData()

in core/AAMFieldsExtractor.php [26:83]


  public static function getNormalizedUserData($user_data_array) {
    $aam_setttings = FacebookWordpressOptions::getAAMSettings();
    if(!$user_data_array || !$aam_setttings ||
      !$aam_setttings->getEnableAutomaticMatching()){
      return array();
    }

    //Removing fields not enabled in AAM settings
    foreach ($user_data_array as $key => $value) {
      if(!in_array($key, $aam_setttings->getEnabledAutomaticMatchingFields())){
        unset($user_data_array[$key]);
      }
    }

    // Normalizing gender and date of birth
    // According to https://developers.facebook.com/docs/facebook-pixel/advanced/advanced-matching
    if(
      array_key_exists(AAMSettingsFields::GENDER, $user_data_array)
      && !empty($user_data_array[AAMSettingsFields::GENDER])
    ){
      $user_data_array[AAMSettingsFields::GENDER] =
        $user_data_array[AAMSettingsFields::GENDER][0];
    }
    if(
      array_key_exists(AAMSettingsFields::DATE_OF_BIRTH, $user_data_array)
    ){
      // strtotime() and date() return false for invalid parameters
      $unix_timestamp =
        strtotime($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
      if(!$unix_timestamp){
        unset($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
      } else {
        $formatted_date = date("Ymd", $unix_timestamp);
        if(!$formatted_date){
          unset($user_data_array[AAMSettingsFields::DATE_OF_BIRTH]);
        } else {
          $user_data_array[AAMSettingsFields::DATE_OF_BIRTH] = $formatted_date;
        }
      }
    }
    // Given that the format of advanced matching fields is the same in
    // the Pixel and the Conversions API,
    // we can use the business sdk for normalization
    // Compare the documentation:
    // https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters
    // https://developers.facebook.com/docs/facebook-pixel/advanced/advanced-matching
    foreach($user_data_array as $field => $data){
      try{
        $normalized_value = Normalizer::normalize($field, $data);
        $user_data_array[$field] = $normalized_value;
      }
      catch(\Exception $e){
        unset($user_data_array[$field]);
      }
    }

    return $user_data_array;
  }