Files
krolewskie-miody.pl/wp-content/plugins/official-facebook-pixel/integration/class-facebookwordpressmailchimpforwp.php
2026-04-28 15:13:50 +02:00

163 lines
5.7 KiB
PHP

<?php
/**
* Facebook Pixel Plugin FacebookWordpressMailchimpForWp class.
*
* This file contains the main logic for FacebookWordpressMailchimpForWp.
*
* @package FacebookPixelPlugin
*/
/**
* Define FacebookWordpressMailchimpForWp 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\Integration;
defined( 'ABSPATH' ) || die( 'Direct access not allowed' );
use FacebookPixelPlugin\Core\FacebookPixel;
use FacebookPixelPlugin\Core\FacebookPluginUtils;
use FacebookPixelPlugin\Core\ServerEventFactory;
use FacebookPixelPlugin\Core\FacebookServerSideEvent;
use FacebookPixelPlugin\Core\PixelRenderer;
/**
* FacebookWordpressMailchimpForWp class.
*/
class FacebookWordpressMailchimpForWp extends FacebookWordpressIntegrationBase {
const PLUGIN_FILE = 'mailchimp-for-wp/mailchimp-for-wp.php';
const TRACKING_NAME = 'mailchimp-for-wp';
/**
* Injects Facebook Pixel events for the MailChimp for WP plugin.
*
* This method sets up WordPress actions to inject Facebook Pixel events
* for different stages of the MailChimp for WP plugin process.
*
* @return void
*/
public static function inject_pixel_code() {
self::add_pixel_fire_for_hook(
array(
'hook_name' => 'mc4wp_form_subscribed',
'classname' => __CLASS__,
'inject_function' => 'injectLeadEvent',
)
);
}
/**
* Injects Facebook Pixel events for the MailChimp for WP plugin.
*
* This method sets up WordPress actions to inject Facebook Pixel events
* for different stages of the MailChimp for WP plugin process.
*
* @return void
*/
public static function injectLeadEvent() {
if ( FacebookPluginUtils::is_internal_user() ) {
return;
}
$server_event = ServerEventFactory::safe_create_event(
'Lead',
array( __CLASS__, 'readFormData' ),
array(),
self::TRACKING_NAME,
true
);
FacebookServerSideEvent::get_instance()->track( $server_event );
$code = PixelRenderer::render(
array( $server_event ),
self::TRACKING_NAME
);
printf(
'
<!-- Meta Pixel Event Code -->
%s
<!-- End Meta Pixel Event Code -->
',
$code // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
);
}
/**
* Reads form data from the $_POST global array.
*
* This function extracts user-related data
* such as email, first name, last name,
* phone number, and address details from the
* $_POST array, commonly used in form
* submissions. The extracted data includes:
* - 'email': The user's email address.
* - 'first_name': The user's first name.
* - 'last_name': The user's last name.
* - 'phone': The user's phone number.
* - 'city', 'state', 'zip', 'country': Address details,
* where the country must
* be specified using a 2-letter code.
*
* The function returns an associative array containing the extracted data.
*
* @return array An associative array of form data.
*/
public static function readFormData() {
$event_data = array();
if ( ! empty( $_POST['EMAIL'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$event_data['email'] = sanitize_email( wp_unslash( $_POST['EMAIL'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}
if ( ! empty( $_POST['FNAME'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$event_data['first_name'] = sanitize_text_field( wp_unslash( $_POST['FNAME'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}
if ( ! empty( $_POST['LNAME'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$event_data['last_name'] = sanitize_text_field( wp_unslash( $_POST['LNAME'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}
if ( ! empty( $_POST['PHONE'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$event_data['phone'] = sanitize_text_field( wp_unslash( $_POST['PHONE'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
}
if ( ! empty( $_POST['ADDRESS'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$address_data = sanitize_text_field( wp_unslash( $_POST['ADDRESS'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
if ( ! empty( $address_data['city'] ) ) {
$event_data['city'] = sanitize_text_field( $address_data['city'] );
}
if ( ! empty( $address_data['state'] ) ) {
$event_data['state'] =
sanitize_text_field( $address_data['state'] );
}
if ( ! empty( $address_data['zip'] ) ) {
$event_data['zip'] = sanitize_text_field( $address_data['zip'] );
}
if (
! empty( $address_data['country'] )
&& strlen( $address_data['country'] ) === 2
) {
$event_data['country'] = $address_data['country'];
}
}
return $event_data;
}
}