diff --git a/modules/contact-form/grunion-contact-form.php b/modules/contact-form/grunion-contact-form.php index 95685a8441aa1..02b6d09102e55 100644 --- a/modules/contact-form/grunion-contact-form.php +++ b/modules/contact-form/grunion-contact-form.php @@ -1,17 +1,13 @@ -\n"; + } $r .= "\t\t\n"; $r .= "\t\t\n"; $r .= "\t\t\n"; @@ -2553,6 +2553,10 @@ function process_submission() { $i++; // Increment prefix counter for the next extra field } + if ( isset( $_REQUEST['is_block'] ) && $_REQUEST['is_block'] ) { + $extra_values['is_block'] = true; + } + $contact_form_subject = trim( $contact_form_subject ); $comment_author_IP = Grunion_Contact_Form_Plugin::get_ip_address(); @@ -3539,3 +3543,61 @@ function grunion_delete_old_spam() { wp_schedule_single_event( time() + 700, 'grunion_scheduled_delete' ); } } + +/** + * Send an event to Tracks on form submission. + * + * @param int $post_id - the post_id for the CPT that is created. + * @param array $all_values - fields from the default contact form. + * @param array $extra_values - extra fields added to from the contact form. + * + * @return null|void + */ +function jetpack_tracks_record_grunion_pre_message_sent( $post_id, $all_values, $extra_values ) { + // Do not do anything if the submission is not from a block. + if ( + ! isset( $extra_values['is_block'] ) + || ! $extra_values['is_block'] + ) { + return; + } + + /* + * Event details. + */ + $event_user = wp_get_current_user(); + $event_name = 'contact_form_block_message_sent'; + $event_props = array( + 'entry_permalink' => esc_url( $all_values['entry_permalink'] ), + 'feedback_id' => esc_attr( $all_values['feedback_id'] ), + ); + + /* + * Record event. + * We use different libs on wpcom and Jetpack. + */ + if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { + $event_name = 'wpcom_' . $event_name; + $event_props['blog_id'] = get_current_blog_id(); + // If the form was sent by a logged out visitor, record event with blog owner. + if ( empty( $event_user->ID ) ) { + $event_user_id = wpcom_get_blog_owner( $event_props['blog_id'] ); + $event_user = get_userdata( $event_user_id ); + } + + require_lib( 'tracks/client' ); + tracks_record_event( $event_user, $event_name, $event_props ); + } else { + // If the form was sent by a logged out visitor, record event with Jetpack master user. + if ( empty( $event_user->ID ) ) { + $master_user_id = Jetpack_Options::get_option( 'master_user' ); + if ( ! empty( $master_user_id ) ) { + $event_user = get_userdata( $master_user_id ); + } + } + + $tracking = new Automattic\Jetpack\Tracking(); + $tracking->record_user_event( $event_name, $event_props, $event_user ); + } +} +add_action( 'grunion_pre_message_sent', 'jetpack_tracks_record_grunion_pre_message_sent', 12, 3 );