__( 'New User Registration', 'advanced-form-integration' ), 'user_profile_updated' => __( 'User Profile Updated', 'advanced-form-integration' ), 'post_published' => __( 'Post Published', 'advanced-form-integration' ), 'user_logs_in' => __( 'User Logs In', 'advanced-form-integration' ), 'new_comment' => __( 'New Comment Posted', 'advanced-form-integration' ), 'new_media' => __( 'New Media Uploaded', 'advanced-form-integration' ), ); } /** * Get form fields. * * @param string $form_provider Provider name. * @param string $form_id Form ID. * * @return array|void */ function adfoin_wordpress_get_form_fields( $form_provider, $form_id ) { if ( 'wordpress' !== $form_provider ) { return; } switch ( $form_id ) { case 'user_registered': case 'user_profile_updated': case 'user_logs_in': return adfoin_wordpress_get_user_fields(); case 'post_published': return adfoin_wordpress_get_post_fields(); case 'new_comment': return adfoin_wordpress_get_comment_fields(); case 'new_media': return adfoin_wordpress_get_media_fields(); } } /** * Get user fields. * * @return array */ function adfoin_wordpress_get_user_fields() { return array( 'ID' => __( 'User ID', 'advanced-form-integration' ), 'user_login' => __( 'Username', 'advanced-form-integration' ), 'user_email' => __( 'Email', 'advanced-form-integration' ), 'display_name' => __( 'Display Name', 'advanced-form-integration' ), 'first_name' => __( 'First Name', 'advanced-form-integration' ), 'last_name' => __( 'Last Name', 'advanced-form-integration' ), 'roles' => __( 'Roles', 'advanced-form-integration' ), ); } /** * Get post fields. * * @return array */ function adfoin_wordpress_get_post_fields() { return array( 'ID' => __( 'Post ID', 'advanced-form-integration' ), 'post_title' => __( 'Post Title', 'advanced-form-integration' ), 'post_content' => __( 'Post Content', 'advanced-form-integration' ), 'post_excerpt' => __( 'Post Excerpt', 'advanced-form-integration' ), 'post_status' => __( 'Post Status', 'advanced-form-integration' ), 'post_type' => __( 'Post Type', 'advanced-form-integration' ), 'permalink' => __( 'Permalink', 'advanced-form-integration' ), 'author_ID' => __( 'Author User ID', 'advanced-form-integration' ), 'author_email' => __( 'Author Email', 'advanced-form-integration' ), 'author_name' => __( 'Author Name', 'advanced-form-integration' ), ); } /** * Get comment fields. * * @return array */ function adfoin_wordpress_get_comment_fields() { return array( 'comment_ID' => __( 'Comment ID', 'advanced-form-integration' ), 'comment_post_ID' => __( 'Post ID', 'advanced-form-integration' ), 'comment_author' => __( 'Author Name', 'advanced-form-integration' ), 'comment_author_email' => __( 'Author Email', 'advanced-form-integration' ), 'comment_author_url' => __( 'Author URL', 'advanced-form-integration' ), 'comment_author_IP' => __( 'Author IP', 'advanced-form-integration' ), 'comment_date' => __( 'Date', 'advanced-form-integration' ), 'comment_content' => __( 'Content', 'advanced-form-integration' ), 'comment_approved' => __( 'Approved Status', 'advanced-form-integration' ), 'comment_agent' => __( 'User Agent', 'advanced-form-integration' ), 'comment_type' => __( 'Type', 'advanced-form-integration' ), 'comment_parent' => __( 'Parent Comment ID', 'advanced-form-integration' ), 'user_id' => __( 'User ID (if logged in)', 'advanced-form-integration' ), ); } /** * Get media fields. * * @return array */ function adfoin_wordpress_get_media_fields() { return array( 'attachment_id' => __( 'Attachment ID', 'advanced-form-integration' ), 'url' => __( 'File URL', 'advanced-form-integration' ), 'title' => __( 'Title', 'advanced-form-integration' ), 'caption' => __( 'Caption', 'advanced-form-integration' ), 'alt_text' => __( 'Alt Text', 'advanced-form-integration' ), 'description' => __( 'Description', 'advanced-form-integration' ), 'mime_type' => __( 'MIME Type', 'advanced-form-integration' ), 'file_name' => __( 'File Name', 'advanced-form-integration' ), 'uploader_user_id' => __( 'Uploader User ID', 'advanced-form-integration' ), ); } add_action( 'user_register', 'adfoin_wordpress_handle_user_registered', 10, 1 ); /** * Handle user registration. * * @param int $user_id User ID. */ function adfoin_wordpress_handle_user_registered( $user_id ) { $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'user_registered' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_user_payload( $user_id ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } add_action( 'profile_update', 'adfoin_wordpress_handle_user_profile_updated', 10, 2 ); /** * Handle user profile update. * * @param int $user_id User ID. * @param WP_User $old_user_data Old user data. */ function adfoin_wordpress_handle_user_profile_updated( $user_id, $old_user_data ) { $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'user_profile_updated' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_user_payload( $user_id ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } add_action( 'transition_post_status', 'adfoin_wordpress_handle_post_published', 10, 3 ); /** * Handle post published. * * @param string $new_status New post status. * @param string $old_status Old post status. * @param WP_Post $post Post object. */ function adfoin_wordpress_handle_post_published( $new_status, $old_status, $post ) { if ( 'publish' !== $new_status || 'publish' === $old_status ) { return; } if ( ! is_object( $post ) || ! isset( $post->post_type ) ) { return; } // Ignore revisions and other non-public post types. if ( ! is_post_type_viewable( $post->post_type ) ) { return; } $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'post_published' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_post_payload( $post ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } add_action( 'wp_login', 'adfoin_wordpress_handle_user_login', 10, 2 ); /** * Handle user login. * * @param string $user_login User login. * @param WP_User $user User object. */ function adfoin_wordpress_handle_user_login( $user_login, $user ) { $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'user_logs_in' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_user_payload( $user->ID ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } add_action( 'wp_insert_comment', 'adfoin_wordpress_handle_new_comment', 10, 2 ); /** * Handle new comment. * * @param int $id Comment ID. * @param WP_Comment $comment Comment object. */ function adfoin_wordpress_handle_new_comment( $id, $comment ) { if ( '1' !== $comment->comment_approved ) { return; } $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'new_comment' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_comment_payload( $comment ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } add_action( 'add_attachment', 'adfoin_wordpress_handle_new_media', 10, 1 ); /** * Handle new media upload. * * @param int $attachment_id Attachment ID. */ function adfoin_wordpress_handle_new_media( $attachment_id ) { $integration = new Advanced_Form_Integration_Integration(); $records = $integration->get_by_trigger( 'wordpress', 'new_media' ); if ( empty( $records ) ) { return; } $payload = adfoin_wordpress_prepare_media_payload( $attachment_id ); if ( empty( $payload ) ) { return; } adfoin_dispatch_integrations( $records, $payload ); } /** * Prepare user payload. * * @param int $user_id User ID. * * @return array */ function adfoin_wordpress_prepare_user_payload( $user_id ) { $user = get_userdata( $user_id ); if ( ! $user ) { return array(); } return array( 'ID' => $user->ID, 'user_login' => $user->user_login, 'user_email' => $user->user_email, 'display_name' => $user->display_name, 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'roles' => implode( ', ', $user->roles ), ); } /** * Prepare post payload. * * @param WP_Post $post Post object. * * @return array */ function adfoin_wordpress_prepare_post_payload( $post ) { $author_id = (int) $post->post_author; $author = get_userdata( $author_id ); return array( 'ID' => $post->ID, 'post_title' => $post->post_title, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_status' => $post->post_status, 'post_type' => $post->post_type, 'permalink' => get_permalink( $post ), 'author_ID' => $author_id, 'author_email' => $author ? $author->user_email : '', 'author_name' => $author ? $author->display_name : '', ); } /** * Prepare comment payload. * * @param WP_Comment $comment Comment object. * * @return array */ function adfoin_wordpress_prepare_comment_payload( $comment ) { return array( 'comment_ID' => $comment->comment_ID, 'comment_post_ID' => $comment->comment_post_ID, 'comment_author' => $comment->comment_author, 'comment_author_email' => $comment->comment_author_email, 'comment_author_url' => $comment->comment_author_url, 'comment_author_IP' => $comment->comment_author_IP, 'comment_date' => $comment->comment_date, 'comment_content' => $comment->comment_content, 'comment_approved' => $comment->comment_approved, 'comment_agent' => $comment->comment_agent, 'comment_type' => $comment->comment_type, 'comment_parent' => $comment->comment_parent, 'user_id' => $comment->user_id, ); } /** * Prepare media payload. * * @param int $attachment_id Attachment ID. * * @return array */ function adfoin_wordpress_prepare_media_payload( $attachment_id ) { $attachment = get_post( $attachment_id ); if ( ! $attachment ) { return array(); } $file_path = get_attached_file( $attachment_id ); return array( 'attachment_id' => $attachment_id, 'url' => wp_get_attachment_url( $attachment_id ), 'title' => $attachment->post_title, 'caption' => $attachment->post_excerpt, 'alt_text' => get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ), 'description' => $attachment->post_content, 'mime_type' => $attachment->post_mime_type, 'file_name' => $file_path ? basename( $file_path ) : '', 'uploader_user_id' => $attachment->post_author, ); }