public function getNormalizedUserData()

in Helper/AAMFieldsExtractorHelper.php [45:102]


    public function getNormalizedUserData($userDataArray = null)
    {
        if (!$userDataArray) {
            $userDataArray = $this->magentoDataHelper->getUserDataFromSession();
        }

        $aamSettings = $this->fbeHelper->getAAMSettings();

        if (!$userDataArray || !$aamSettings || !$aamSettings->getEnableAutomaticMatching()) {
            return null;
        }

        //Removing fields not enabled in AAM settings
        foreach ($userDataArray as $key => $value) {
            if (!in_array($key, $aamSettings->getEnabledAutomaticMatchingFields())) {
                unset($userDataArray[$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, $userDataArray)
            && !empty($userDataArray[AAMSettingsFields::GENDER])
        ) {
            $userDataArray[AAMSettingsFields::GENDER] = $userDataArray[AAMSettingsFields::GENDER][0];
        }
        if (array_key_exists(AAMSettingsFields::DATE_OF_BIRTH, $userDataArray)
        ) {
            // strtotime() and date() return false for invalid parameters
            $unixTimestamp = strtotime($userDataArray[AAMSettingsFields::DATE_OF_BIRTH]);
            if (!$unixTimestamp) {
                unset($userDataArray[AAMSettingsFields::DATE_OF_BIRTH]);
            } else {
                $formattedDate = date("Ymd", $unixTimestamp);
                if (!$formattedDate) {
                    unset($userDataArray[AAMSettingsFields::DATE_OF_BIRTH]);
                } else {
                    $userDataArray[AAMSettingsFields::DATE_OF_BIRTH] = $formattedDate;
                }
            }
        }
        // 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 ($userDataArray as $field => $data) {
            try {
                $normalizedValue = Normalizer::normalize($field, $data);
                $userDataArray[$field] = $normalizedValue;
            } catch (\Exception $e) {
                unset($userDataArray[$field]);
            }
        }

        return $userDataArray;
    }