| 1 |
<?php |
| 2 |
/** |
| 3 |
* Bootstrap file. |
| 4 |
* |
| 5 |
* @package stape |
| 6 |
*/ |
| 7 |
|
| 8 |
defined( 'ABSPATH' ) || exit; |
| 9 |
|
| 10 |
// Definitions. |
| 11 |
define( 'GTM_SERVER_SIDE_PATH', plugin_dir_path( __FILE__ ) ); |
| 12 |
define( 'GTM_SERVER_SIDE_URL', plugin_dir_url( __FILE__ ) ); |
| 13 |
|
| 14 |
define( 'GTM_SERVER_SIDE_AJAX_SECURITY', 'gtm-server-side-admin__xyz' ); |
| 15 |
|
| 16 |
define( 'GTM_SERVER_SIDE_ADMIN_SLUG', 'gtm-server-side-admin-settings' ); |
| 17 |
define( 'GTM_SERVER_SIDE_COOKIE_KEEPER_NAME', '_sbp' ); |
| 18 |
|
| 19 |
define( 'GTM_SERVER_SIDE_DATA_LAYER_CUSTOM_EVENT_NAME', '_stape' ); |
| 20 |
|
| 21 |
define( 'GTM_SERVER_SIDE_FIELD_VERSION', 'gtm_server_side_version' ); |
| 22 |
define( 'GTM_SERVER_SIDE_TRANSLATION_DOMAIN', 'gtm-server-side' ); |
| 23 |
|
| 24 |
// Tab: General. |
| 25 |
define( 'GTM_SERVER_SIDE_FIELD_PLACEMENT', 'gtm_server_side_placement' ); |
| 26 |
define( 'GTM_SERVER_SIDE_FIELD_WEB_CONTAINER_ID', 'gtm_server_side_web_container_id' ); |
| 27 |
define( 'GTM_SERVER_SIDE_FIELD_WEB_CONTAINER_URL', 'gtm_server_side_web_container_url' ); |
| 28 |
define( 'GTM_SERVER_SIDE_FIELD_WEB_IDENTIFIER', 'gtm_server_side_web_identifier' ); |
| 29 |
define( 'GTM_SERVER_SIDE_FIELD_COOKIE_KEEPER', 'gtm_server_side_cookie_keeper' ); |
| 30 |
// Values for field `GTM_SERVER_SIDE_FIELD_PLACEMENT`. |
| 31 |
define( 'GTM_SERVER_SIDE_FIELD_PLACEMENT_VALUE_CODE', 'code' ); |
| 32 |
define( 'GTM_SERVER_SIDE_FIELD_PLACEMENT_VALUE_PLUGIN', 'plugin' ); |
| 33 |
define( 'GTM_SERVER_SIDE_FIELD_PLACEMENT_VALUE_DISABLE', 'disable' ); |
| 34 |
define( 'GTM_SERVER_SIDE_FIELD_PLACEMENT_VALUE_GTM_CONSENT', 'gtm_consent' ); |
| 35 |
|
| 36 |
define( 'GTM_SERVER_SIDE_FIELD_GTM_EXCLUDE_ROLES', 'gtm_server_side_gtm_exclude_roles' ); |
| 37 |
define( 'GTM_SERVER_SIDE_FIELD_GTM_EXCLUDE_LIST_ROLES', 'gtm_server_side_gtm_exclude_list_roles' ); |
| 38 |
|
| 39 |
// Tab: Data Layer. |
| 40 |
define( 'GTM_SERVER_SIDE_FIELD_DATA_LAYER_ECOMMERCE', 'gtm_server_side_data_layer_ecommerce' ); |
| 41 |
define( 'GTM_SERVER_SIDE_FIELD_DATA_LAYER_USER_DATA', 'gtm_server_side_data_layer_user_data' ); |
| 42 |
define( 'GTM_SERVER_SIDE_FIELD_DATA_LAYER_CUSTOM_EVENT_NAME', 'gtm_server_side_data_layer_custom_event_name' ); |
| 43 |
|
| 44 |
// Tab: Webhooks. |
| 45 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_ENABLE', 'gtm_server_side_webhooks_enable' ); |
| 46 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_CONTAINER_URL', 'gtm_server_side_webhooks_container_url' ); |
| 47 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_PURCHASE', 'gtm_server_side_webhooks_purchase' ); |
| 48 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_PROCESSING', 'gtm_server_side_webhooks_processing' ); |
| 49 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_COMPLETED', 'gtm_server_side_webhooks_completed' ); |
| 50 |
define( 'GTM_SERVER_SIDE_FIELD_WEBHOOKS_REFUND', 'gtm_server_side_webhooks_refund' ); |
| 51 |
|
| 52 |
// Tab: Customer Match. |
| 53 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_CONTAINER_API_KEY', 'gtm_server_side_field_cust_match_container_api_key' ); // Container API Key. |
| 54 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_GADS_OPER_CUST_ID', 'gtm_server_side_field_cust_match_gads_oper_cust_id' ); // Google ADS Operating Customer ID. |
| 55 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_GADS_LOGIN_CUST_ID', 'gtm_server_side_field_cust_match_gads_login_cust_id' ); // Google ADS Login Customer ID. |
| 56 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_AUDIENCE_ID', 'gtm_server_side_field_cust_match_audience_id' ); // Audience ID. |
| 57 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_USER_SHARE_EMAIL', 'gtm_server_side_field_cust_match_user_share_email' ); // User data: Share email. |
| 58 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_USER_SHARE_PHONE', 'gtm_server_side_field_cust_match_user_share_phone' ); // User data: Share phone. |
| 59 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_USER_SHARE_ADDRESS', 'gtm_server_side_field_cust_match_user_share_address' ); // User data: Share address. |
| 60 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_CONSENT', 'gtm_server_side_field_cust_match_consent' ); // Consent. |
| 61 |
define( 'GTM_SERVER_SIDE_FIELD_CUST_MATCH_BACKFILL', 'gtm_server_side_field_cust_match_backfill' ); // Backfill: (value: yes). |
| 62 |
// Values for field `GTM_SERVER_SIDE_FIELD_CUST_MATCH_CONSENT`. |
| 63 |
define( 'GTM_SERVER_SIDE_FIELD_CONSENT_VALUE_STATUS_UNSPECIFIED', 'CONSENT_STATUS_UNSPECIFIED' ); |
| 64 |
define( 'GTM_SERVER_SIDE_FIELD_CONSENT_VALUE_GRANTED', 'CONSENT_GRANTED' ); |
| 65 |
define( 'GTM_SERVER_SIDE_FIELD_CONSENT_VALUE_DENIED', 'CONSENT_DENIED' ); |
| 66 |
|
| 67 |
define( 'GTM_SERVER_SIDE_FIELD_VALUE_YES', 'yes' ); |
| 68 |
|
| 69 |
// Settings. |
| 70 |
define( 'GTM_SERVER_SIDE_ADMIN_GROUP', 'gtm-server-side-admin-group' ); |
| 71 |
define( 'GTM_SERVER_SIDE_ADMIN_GROUP_GENERAL', 'gtm-server-side-admin-group-general' ); |
| 72 |
define( 'GTM_SERVER_SIDE_ADMIN_GROUP_DATA_LAYER', 'gtm-server-side-admin-group-data-layer' ); |
| 73 |
define( 'GTM_SERVER_SIDE_ADMIN_GROUP_WEBHOOKS', 'gtm-server-side-admin-group-webhooks' ); |
| 74 |
define( 'GTM_SERVER_SIDE_ADMIN_GROUP_CUSTOMER_MATCH', 'gtm-server-side-admin-group-customer-match' ); |
| 75 |
|
| 76 |
// Version: 2.1.35. |
| 77 |
define( 'GTM_SERVER_SIDE_CUST_MATCH_BACKFILL_DATE', 'gtm_server_side_cust_match_backfill_date' ); |
| 78 |
define( 'GTM_SERVER_SIDE_CUST_MATCH_BACKFILL_FINISHED', 'gtm_server_side_cust_match_backfill_finished' ); |
| 79 |
|
| 80 |
// d20260118. |
| 81 |
define( 'GTM_SERVER_SIDE_GTM_CUSTOM_LOADER_FROM_API', 'gtm_server_side_gtm_custom_loader_from_api' ); |
| 82 |
|
| 83 |
// Tab: General — Same-Origin Proxy. |
| 84 |
define( 'GTM_SERVER_SIDE_FIELD_SAME_ORIGIN_ENABLE', 'gtm_server_side_same_origin_enable' ); |
| 85 |
define( 'GTM_SERVER_SIDE_FIELD_SAME_ORIGIN_PATH', 'gtm_server_side_same_origin_path' ); |
| 86 |
define( 'GTM_SERVER_SIDE_FIELD_SAME_ORIGIN_API_KEY', 'gtm_server_side_same_origin_api_key' ); |
| 87 |
|
| 88 |
// Tab: Data Layer — Advanced parameters. |
| 89 |
define( 'GTM_SERVER_SIDE_FIELD_ADV', 'gtm_server_side_adv' ); |
| 90 |
|
| 91 |
|
| 92 |
// Autoload plugin classes. |
| 93 |
spl_autoload_register( |
| 94 |
function ( $class ) { |
| 95 |
if ( 0 === strpos( $class, 'GTM_Server_Side' ) ) { |
| 96 |
$file_name = 'class-' . str_replace( '_', '-', strtolower( $class ) ); |
| 97 |
include_once GTM_SERVER_SIDE_PATH . 'includes' . DIRECTORY_SEPARATOR . $file_name . '.php'; |
| 98 |
} |
| 99 |
} |
| 100 |
); |
| 101 |
|
| 102 |
|
| 103 |
// Create custom hooks. |
| 104 |
add_action( |
| 105 |
'plugins_loaded', |
| 106 |
function () { |
| 107 |
do_action( 'gtm_server_side' ); |
| 108 |
if ( is_admin() ) { |
| 109 |
do_action( 'gtm_server_side_admin' ); |
| 110 |
} else { |
| 111 |
do_action( 'gtm_server_side_frontend' ); |
| 112 |
} |
| 113 |
}, |
| 114 |
-1 |
| 115 |
); |
| 116 |
|
| 117 |
|
| 118 |
/** |
| 119 |
* Return gtm server side version |
| 120 |
* |
| 121 |
* @return string |
| 122 |
*/ |
| 123 |
function get_gtm_server_side_version() { |
| 124 |
static $version; |
| 125 |
|
| 126 |
if ( null === $version ) { |
| 127 |
$plugin = get_file_data( |
| 128 |
GTM_SERVER_SIDE_PATH . 'gtm-server-side.php', |
| 129 |
array( |
| 130 |
'version' => 'Version', |
| 131 |
), |
| 132 |
false |
| 133 |
); |
| 134 |
$version = $plugin['version']; |
| 135 |
} |
| 136 |
|
| 137 |
return $version; |
| 138 |
} |
| 139 |
|