ent = mailchimp_get_connected_site_script_fragment()) && !empty($fragment)) { echo $fragment; } } } /** * Add GDPR script to the checkout page */ public function add_JS_checkout() { wp_enqueue_script($this->plugin_name. '_gdpr', plugin_dir_url( __FILE__ ) .'js/mailchimp-woocommerce-checkout-gdpr.min.js', array(), $this->version, true); } public function user_my_account_opt_in() { $gdpr_fields = $this->user_my_account_gdpr_fields(); include_once('partials/mailchimp-woocommerce-my-account.php'); } public function user_my_account_opt_in_save($user_id) { if (!has_action('woocommerce_edit_account_form', array(MailChimp_WooCommerce_Public::instance(), 'user_my_account_opt_in' ))) { // blocking the post request from updating the user profile since the developer has removed this form. return; } $subscribed = isset($_POST['mailchimp_woocommerce_is_subscribed_radio']) ? $_POST['mailchimp_woocommerce_is_subscribed_radio'] : ''; $gdpr_fields = isset($_POST['mailchimp_woocommerce_gdpr']) ? $_POST['mailchimp_woocommerce_gdpr'] : false; mailchimp_log('member.sync', "user_my_account_opt_in_save " . $subscribed ); update_user_meta( $user_id, 'mailchimp_woocommerce_is_subscribed', $subscribed); update_user_meta( $user_id, 'mailchimp_woocommerce_gdpr_fields', $gdpr_fields); $language = get_user_meta($user_id, 'locale', true); if (strpos($language, '_') !== false) { $languageArray = explode('_', $language); $language = $languageArray[0]; } $job = new MailChimp_WooCommerce_User_Submit( $user_id, $subscribed, null, $language, !empty($gdpr_fields) ? $gdpr_fields : null ); mailchimp_handle_or_queue($job); } // public function order_subscribe_user($order) // { // include_once('partials/mailchimp-woocommerce-order-field.php'); // } // // public function save_order_subscribe_user($order_id) { // update_post_meta( $order_id, 'mailchimp_woocommerce_is_subscribed', isset( $_POST['mailchimp_woocommerce_is_subscribed'] ) ); // } /** * @return string */ public function user_my_account_gdpr_fields() { return static::gdpr_fields(); } /** * @param null $user * @return string */ public static function gdpr_fields($user = null) { if (!mailchimp_is_configured()) { return ""; } $api = mailchimp_get_api(); $GDPRfields = $api->getCachedGDPRFields(mailchimp_get_list_id()); $checkbox = ''; if (!empty($GDPRfields) && is_array($GDPRfields)) { $checkbox .= "

"; $checkbox .= __('Please select all the ways you would like to hear from us', 'mailchimp-for-woocommerce'); $checkbox .= "

"; // if the user is logged in, we will pull the 'is_subscribed' property out of the meta for the value. // otherwise we use the default settings. //$saved_fields = get_user_meta(get_current_user_id(), 'mailchimp_woocommerce_gdpr_fields'); /// if the user is logged in - and is already subscribed - just ignore this checkbox. $user = $user ? $user : wp_get_current_user(); $current_gdpr_fields = array(); if ($user && $cached_gdpr_fields = mailchimp_get_transient("mailchimp_woocommerce_gdpr_fields_{$user->ID}")) { foreach ($cached_gdpr_fields['value'] as $permission_id => $permission_value) { $current_gdpr_fields[] = array( 'marketing_permission_id' => $permission_id, 'enabled' => $permission_value, ); } } if (empty($cached_gdpr_fields) && !empty($user) && $user->user_email) { try { $member = $api->member(mailchimp_get_list_id(), $user->user_email); $current_gdpr_fields = isset($member['marketing_permissions']) ? $member['marketing_permissions'] : array(); } catch (Exception $e) { //mailchimp_error("GDPR ERROR", $e->getMessage()); } } foreach ($GDPRfields as $key => $field) { $marketing_permission_id = $field['marketing_permission_id']; $text = $field['text']; $status = false; foreach ($current_gdpr_fields as $current_gdpr_field) { if ($marketing_permission_id === $current_gdpr_field['marketing_permission_id']) { $status = $current_gdpr_field['enabled']; break; } } // Add to the checkbox output $checkbox .= ""; $checkbox .= ""; $checkbox .= ""; $checkbox .= "
"; } $checkbox .= "

"; } return $checkbox; } }