includes(); add_action( 'wpforms_install', [ $this, 'install' ] ); add_action( 'wpforms_form_settings_notifications', [ $this, 'form_settings_notifications' ], 8, 1 ); add_action( 'wpforms_form_settings_confirmations', [ $this, 'form_settings_confirmations' ] ); add_action( 'wpforms_builder_enqueues_before', [ $this, 'builder_enqueues' ] ); add_action( 'wpforms_admin_page', [ $this, 'entries_page' ] ); add_action( 'wpforms_admin_settings_after', [ $this, 'settings_cta' ] ); add_action( 'wp_ajax_wpforms_lite_settings_upgrade', [ $this, 'settings_cta_dismiss' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueues' ] ); add_filter( 'wpforms_helpers_templates_get_theme_template_paths', [ $this, 'add_templates' ] ); // Entries count logging for WPForms Lite. add_action( 'wpforms_process_entry_saved', [ $this, 'entry_submit' ], 10, 5 ); add_action( 'wpforms_process_entry_saved', [ $this, 'update_entry_count' ], 10, 5 ); // Upgrade to Pro WPForms menu bar item. add_action( 'admin_bar_menu', [ $this, 'upgrade_to_pro_menu' ], 1000 ); } /** * Include files. * * @since 1.0.0 */ private function includes() { } /** * Form notification settings, supports multiple notifications. * * @since 1.2.3 * * @param object $settings */ public function form_settings_notifications( $settings ) { $cc = wpforms_setting( 'email-carbon-copy', false ); $from_email = '{admin_email}'; $from_name = sanitize_text_field( get_option( 'blogname' ) ); // phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName /** * Allow filtering of text after the `From Name` field. * * @since 1.2.3 * @since 1.7.6 Added $form_data and $id arguments. * * @param string $value Value to be filtered. * @param array $form_data Form data. * @param int $id Notification ID. */ $from_name_after = apply_filters( 'wpforms_builder_notifications_from_name_after', '', $settings->form_data, 1 ); /** * Allow filtering of text after the `From Email` field. * * @since 1.2.3 * @since 1.7.6 Added $form_data and $id arguments. * * @param array $value Value to be filtered. * @param array $form_data Form data. * @param int $id Notification ID. */ $from_email_after = apply_filters( 'wpforms_builder_notifications_from_email_after', '', $settings->form_data, 1 ); // phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName // Handle backwards compatibility. if ( empty( $settings->form_data['settings']['notifications'] ) ) { $settings->form_data['settings']['notifications'][1]['subject'] = ! empty( $settings->form_data['settings']['notification_subject'] ) ? $settings->form_data['settings']['notification_subject'] : sprintf( /* translators: %s - form name. */ esc_html__( 'New %s Entry', 'wpforms-lite' ), $settings->form->post_title ); $settings->form_data['settings']['notifications'][1]['email'] = ! empty( $settings->form_data['settings']['notification_email'] ) ? $settings->form_data['settings']['notification_email'] : '{admin_email}'; $settings->form_data['settings']['notifications'][1]['sender_name'] = ! empty( $settings->form_data['settings']['notification_fromname'] ) ? $settings->form_data['settings']['notification_fromname'] : $from_name; $settings->form_data['settings']['notifications'][1]['sender_address'] = ! empty( $settings->form_data['settings']['notification_fromaddress'] ) ? $settings->form_data['settings']['notification_fromaddress'] : $from_email; $settings->form_data['settings']['notifications'][1]['replyto'] = ! empty( $settings->form_data['settings']['notification_replyto'] ) ? $settings->form_data['settings']['notification_replyto'] : ''; } $id = 1; echo '
'; echo ''; esc_html_e( 'Notifications', 'wpforms-lite' ); echo ''; echo ''; echo '
'; $dismissed = get_user_meta( get_current_user_id(), 'wpforms_dismissed', true ); if ( empty( $dismissed['edu-builder-notifications-description'] ) ) { echo '
'; echo ''; echo '

'; printf( wp_kses( /* translators: %s - link to the WPForms.com doc article. */ __( 'Notifications are emails sent when a form is submitted. By default, these emails include entry details. For setup and customization options, including a video overview, please see our tutorial.', 'wpforms-lite' ), [ 'a' => [ 'href' => [], 'rel' => [], 'target' => [], ], ] ), esc_url( wpforms_utm_link( 'https://wpforms.com/docs/setup-form-notification-wpforms/', 'Builder Notifications', 'Form Notifications Documentation' ) ) ); echo '

'; echo '

'; printf( wp_kses( /* translators: 1$s, %2$s - links to the WPForms.com doc articles. */ __( 'After saving these settings, be sure to test a form submission. This lets you see how emails will look, and to ensure that they are delivered successfully.', 'wpforms-lite' ), [ 'a' => [ 'href' => [], 'rel' => [], 'target' => [], ], 'br' => [], ] ), esc_url( wpforms_utm_link( 'https://wpforms.com/docs/how-to-properly-test-your-wordpress-forms-before-launching-checklist/', 'Builder Notifications', 'Testing A Form Documentation' ) ), esc_url( wpforms_utm_link( 'https://wpforms.com/docs/troubleshooting-email-notifications/', 'Builder Notifications', 'Troubleshoot Notifications Documentation' ) ) ); echo '

'; echo '
'; } wpforms_panel_field( 'toggle', 'settings', 'notification_enable', $settings->form_data, esc_html__( 'Enable Notifications', 'wpforms-lite' ) ); ?>
form_data, esc_html__( 'Send To Email Address', 'wpforms-lite' ), [ 'default' => '{admin_email}', 'tooltip' => esc_html__( 'Enter the email address to receive form entry notifications. For multiple notifications, separate email addresses with a comma.', 'wpforms-lite' ), 'smarttags' => [ 'type' => 'fields', 'fields' => 'email', ], 'parent' => 'settings', 'subsection' => $id, 'class' => 'email-recipient', ] ); if ( $cc ) : wpforms_panel_field( 'text', 'notifications', 'carboncopy', $settings->form_data, esc_html__( 'CC', 'wpforms-lite' ), [ 'smarttags' => [ 'type' => 'fields', 'fields' => 'email', ], 'parent' => 'settings', 'subsection' => $id, ] ); endif; wpforms_panel_field( 'text', 'notifications', 'subject', $settings->form_data, esc_html__( 'Email Subject Line', 'wpforms-lite' ), [ 'default' => sprintf( /* translators: %s - form name. */ esc_html__( 'New Entry: %s', 'wpforms-lite' ), $settings->form->post_title ), 'smarttags' => [ 'type' => 'all', ], 'parent' => 'settings', 'subsection' => $id, ] ); wpforms_panel_field( 'text', 'notifications', 'sender_name', $settings->form_data, esc_html__( 'From Name', 'wpforms-lite' ), // phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName /** * Allow modifying the "From Name" field settings in the builder on Settings > Notifications panel. * * @since 1.7.6 * * @param array $args Field settings. * @param array $form_data Form data. * @param int $id Notification ID. */ apply_filters( 'wpforms_builder_notifications_sender_name_settings', [ 'default' => $from_name, 'smarttags' => [ 'type' => 'fields', 'fields' => 'name,text', ], 'parent' => 'settings', 'subsection' => $id, ], $settings->form_data, $id ) // phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName ); wpforms_panel_field( 'text', 'notifications', 'sender_address', $settings->form_data, esc_html__( 'From Email', 'wpforms-lite' ), // phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName /** * Allow modifying the "From Email" field settings in the builder on Settings > Notifications panel. * * @since 1.7.6 * * @param array $args Field settings. * @param array $form_data Form data. * @param int $id Notification ID. */ apply_filters( 'wpforms_builder_notifications_sender_address_settings', [ 'default' => $from_email, 'smarttags' => [ 'type' => 'fields', 'fields' => 'email', ], 'parent' => 'settings', 'subsection' => $id, ], $settings->form_data, $id ) // phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName ); wpforms_panel_field( 'text', 'notifications', 'replyto', $settings->form_data, esc_html__( 'Reply-To', 'wpforms-lite' ), [ 'tooltip' => esc_html( sprintf( /* translators: %s - . */ __( 'Enter the email address or email address with recipient\'s name in "First Last %s" format.', 'wpforms-lite' ), // ​ is a zero-width space character. Without it, Tooltipster thinks it's an HTML tag // and closes it at the end of the string, hiding everything after this value. '<​email@example.com​>' ) ), 'smarttags' => [ 'type' => 'fields', 'fields' => 'email,name', ], 'parent' => 'settings', 'subsection' => $id, ] ); wpforms_panel_field( 'textarea', 'notifications', 'message', $settings->form_data, esc_html__( 'Email Message', 'wpforms-lite' ), [ 'rows' => 6, 'default' => '{all_fields}', 'smarttags' => [ 'type' => 'all', ], 'parent' => 'settings', 'subsection' => $id, 'class' => 'email-msg', 'after' => '

' . sprintf( /* translators: %s - {all_fields} Smart Tag. */ esc_html__( 'To display all form fields, use the %s Smart Tag.', 'wpforms-lite' ), '{all_fields}' ) . '

', ] ); /** * Fires immediately after notification block on lite version. * * @since 1.7.7 * * @param array $settings Current confirmation data. * @param int $id Notification id. */ do_action( 'wpforms_lite_form_settings_notifications_block_content_after', $settings, $id ); ?>
form_data['settings']['confirmations'] ) ) { $settings->form_data['settings']['confirmations'][1]['type'] = ! empty( $settings->form_data['settings']['confirmation_type'] ) ? $settings->form_data['settings']['confirmation_type'] : 'message'; $settings->form_data['settings']['confirmations'][1]['message'] = ! empty( $settings->form_data['settings']['confirmation_message'] ) ? $settings->form_data['settings']['confirmation_message'] : esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'wpforms-lite' ); $settings->form_data['settings']['confirmations'][1]['message_scroll'] = ! empty( $settings->form_data['settings']['confirmation_message_scroll'] ) ? $settings->form_data['settings']['confirmation_message_scroll'] : 1; $settings->form_data['settings']['confirmations'][1]['page'] = ! empty( $settings->form_data['settings']['confirmation_page'] ) ? $settings->form_data['settings']['confirmation_page'] : ''; $settings->form_data['settings']['confirmations'][1]['redirect'] = ! empty( $settings->form_data['settings']['confirmation_redirect'] ) ? $settings->form_data['settings']['confirmation_redirect'] : ''; } $field_id = 1; echo '
'; esc_html_e( 'Confirmations', 'wpforms-lite' ); echo ''; echo '
'; ?>
form_data, esc_html__( 'Confirmation Type', 'wpforms-lite' ), [ 'default' => 'message', 'options' => [ 'message' => esc_html__( 'Message', 'wpforms-lite' ), 'page' => esc_html__( 'Show Page', 'wpforms-lite' ), 'redirect' => esc_html__( 'Go to URL (Redirect)', 'wpforms-lite' ), ], 'class' => 'wpforms-panel-field-confirmations-type-wrap', 'input_class' => 'wpforms-panel-field-confirmations-type', 'parent' => 'settings', 'subsection' => $field_id, ] ); wpforms_panel_field( 'textarea', 'confirmations', 'message', $settings->form_data, esc_html__( 'Confirmation Message', 'wpforms-lite' ), [ 'default' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'wpforms-lite' ), 'tinymce' => [ 'editor_height' => '200', ], 'input_id' => 'wpforms-panel-field-confirmations-message-' . $field_id, 'input_class' => 'wpforms-panel-field-confirmations-message', 'parent' => 'settings', 'subsection' => $field_id, 'class' => 'wpforms-panel-field-tinymce', 'smarttags' => [ 'type' => 'all', ], ] ); wpforms_panel_field( 'toggle', 'confirmations', 'message_scroll', $settings->form_data, esc_html__( 'Automatically scroll to the confirmation message', 'wpforms-lite' ), [ 'input_class' => 'wpforms-panel-field-confirmations-message_scroll', 'parent' => 'settings', 'subsection' => $field_id, ] ); wpforms_panel_field( 'select', 'confirmations', 'page', $settings->form_data, esc_html__( 'Confirmation Page', 'wpforms-lite' ), [ 'class' => 'wpforms-panel-field-confirmations-page-choicesjs-unflippable', 'options' => wpforms_builder_form_settings_confirmation_get_pages( $settings->form_data, $field_id ), 'input_class' => 'wpforms-panel-field-confirmations-page', 'parent' => 'settings', 'subsection' => $field_id, 'choicesjs' => [ 'use_ajax' => true, 'callback_fn' => 'select_pages', ], ] ); wpforms_panel_field( 'text', 'confirmations', 'redirect', $settings->form_data, esc_html__( 'Confirmation Redirect URL', 'wpforms-lite' ) . ' *', [ 'input_class' => 'wpforms-panel-field-confirmations-redirect', 'parent' => 'settings', 'subsection' => $field_id, ] ); /** * Fires after each confirmation to add custom fields. * * @since 1.6.9 * * @param WPForms_Builder_Panel_Settings $settings Builder panel settings. * @param int $field_id Field ID. */ do_action( 'wpforms_lite_form_settings_confirmations_single_after', $settings, $field_id ); ?>
sprintf( wp_kses( /* translators: %s - WPForms.com docs page URL. */ __( 'You\'ve just turned off notification emails for this form. Since entries are not stored in WPForms Lite, notification emails are recommended for collecting entry details. For setup steps, please see our notification tutorial.', 'wpforms-lite' ), [ 'a' => [ 'href' => [], 'target' => [], 'rel' => [], ], ] ), esc_url( wpforms_utm_link( 'https://wpforms.com/docs/setup-form-notification-wpforms/', 'Builder Notifications', 'Disable Notifications Alert' ) ) ), ]; $strings = apply_filters( 'wpforms_lite_builder_strings', $strings ); wp_localize_script( 'wpforms-builder-lite', 'wpforms_builder_lite', $strings ); } /** * Display upgrade notice at the bottom on the plugin settings pages. * * @since 1.4.7 * * @param string $view Current view inside the plugin settings page. */ public function settings_cta( $view ) { if ( get_option( 'wpforms_lite_settings_upgrade', false ) || apply_filters( 'wpforms_lite_settings_upgrade', false ) ) { return; } ?>

[ 'class' => [], 'aria-hidden' => [], ], ] ), str_repeat( '', 5 ) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ); ?>

Bonus: WPForms Lite users get 50% off regular price, automatically applied at checkout.', 'wpforms-lite' ), [ 'strong' => [], 'span' => [ 'class' => [], ], ] ); ?>

Entries

' . esc_html( /* translators: %d - backed up entries count. */ _n( '%d entry has been backed up', '%d entries have been backed up', $entries_count, 'wpforms-lite' ) ) . '', absint( $entries_count ) ); if ( ! empty( $enabled_since ) ) { echo ' '; printf( /* translators: %s - time when Lite Connect was enabled. */ esc_html__( 'since you enabled Lite Connect on %s', 'wpforms-lite' ), esc_html( wpforms_date_format( $enabled_since, '' , true ) ) ); } // phpcs:ignore Squiz.PHP.EmbeddedPhp.ContentAfterEnd ?>.

10 items of 1

Name Email Comment or Message Date Actions
David Wells DavidMWells@example.com Vivamus sit amet dolor arcu. Praesent fermentum semper justo, nec scelerisq… July 27, 2017 View | Delete
Jennifer Selzer JenniferLSelzer@example.com Maecenas sollicitudin felis et justo elementum, et lobortis justo vulputate… July 27, 2017 View | Delete
Philip Norton PhilipTNorton@example.com Etiam cursus orci tellus, ut vehicula odio mattis sit amet. Curabitur eros … July 27, 2017 View | Delete
Kevin Gregory KevinJGregory@example.com Cras vel orci congue, tincidunt eros vitae, consectetur risus. Proin enim m… July 27, 2017 View | Delete
John Heiden JohnCHeiden@example.com Fusce consequat dui ut orci tempus cursus. Vivamus ut neque id ipsum tempor… July 27, 2017 View | Delete
Laura Shuler LauraDShuler@example.com In ac finibus erat. Curabitur sit amet ante nec tellus commodo commodo non … July 27, 2017 View | Delete
Walter Sullivan WalterPSullivan@example.com Phasellus semper magna leo, ut porta nibh pretium sed. Interdum et malesuad… July 27, 2017 View | Delete
Gary Austin GaryJAustin@example.com Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet ero… July 27, 2017 View | Delete
Mark Frahm MarkTFrahm@example.com Proin euismod tellus quis tortor bibendum, a pulvinar libero fringilla. Cur… July 27, 2017 View | Delete
Linda Reynolds LindaJReynolds@example.com Cras sodales sagittis maximus. Nunc vestibulum orci quis orci pulvinar vulp… July 27, 2017 View | Delete
Name Email Comment or Message Date Actions
get( 'addons_page' )->enqueues()" ); wpforms()->get( 'addons_page' )->enqueues(); } /** * Addons page. * * @since 1.0.0 * @deprecated 1.6.7 */ public function addons_page() { _deprecated_function( __METHOD__, '1.6.7 of the WPForms plugin', "wpforms()->get( 'addons_page' )->output()" ); if ( ! wpforms_is_admin_page( 'addons' ) ) { return; } wpforms()->get( 'addons_page' )->output(); } /** * Increase entries count once a form is submitted. * * @since 1.5.9 * @since 1.8.2 Added Payment ID. * * @param array $fields Set of form fields. * @param array $entry Entry contents. * @param array $form_data Form data. * @param int $entry_id Entry ID. * @param int $payment_id Payment ID for the payment form. */ public function update_entry_count( $fields, $entry, $form_data, $entry_id, $payment_id ) { if ( ! empty( $form_data['spam_reason'] ) ) { return; } global $wpdb; /** * Filters whether to allow counting entries for Lite users. * * @since 1.5.9 * * @param bool $allow_entries_count True to allow, false to disallow. Default: true. */ if ( ! apply_filters( 'wpforms_dash_widget_allow_entries_count_lite', true ) ) { // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName return; } $form_id = absint( $form_data['id'] ); if ( empty( $form_id ) ) { return; } if ( add_post_meta( $form_id, 'wpforms_entries_count', 1, true ) ) { return; } // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_value = meta_value + 1 WHERE post_id = %d AND meta_key = 'wpforms_entries_count'", $form_id ) ); } /** * Submit entry to the Lite Connect API. * * @since 1.7.4 * @since 1.8.2 Added Payment ID. * * @param array $fields Set of form fields. * @param array $entry Entry contents. * @param array $form_data Form data. * @param int $entry_id Entry ID. * @param int $payment_id Payment ID for the payment form. */ public function entry_submit( $fields, $entry, $form_data, $entry_id, $payment_id ) { $submission = wpforms()->get( 'submission' ); $submission->register( $fields, $entry, $form_data['id'], $form_data ); // Prepare the entry args. $entry_args = $submission->prepare_entry_data(); if ( $payment_id ) { $entry_args['type'] = 'payment'; $entry_args['payment_id'] = $payment_id; } if ( ! empty( $form_data['spam_reason'] ) ) { $entry_args['status'] = 'spam'; } // Submit entry args and form data to the Lite Connect API. if ( LiteConnect::is_allowed() && LiteConnect::is_enabled() && ! empty( $entry_args ) ) { ( new LiteConnectIntegration() )->submit( $entry_args, $form_data ); } } /** * Add Lite-specific templates to the list of searchable template paths. * * @since 1.6.6 * * @param array $paths Paths to templates. * * @return array */ public function add_templates( $paths ) { $paths = (array) $paths; $paths[102] = trailingslashit( __DIR__ . '/templates' ); return $paths; } /** * Render Upgrade to Pro admin bar menu item. * * @since 1.7.4 * * @param WP_Admin_Bar $wp_admin_bar WordPress Admin Bar object. */ public function upgrade_to_pro_menu( WP_Admin_Bar $wp_admin_bar ) { $current_screen = is_admin() ? get_current_screen() : null; $upgrade_utm_content = $current_screen === null ? 'Upgrade to Pro' : 'Upgrade to Pro - ' . $current_screen->base; // phpcs:ignore WordPress.Security.NonceVerification.Recommended $upgrade_utm_content = empty( $_GET['view'] ) ? $upgrade_utm_content : $upgrade_utm_content . ': ' . sanitize_key( $_GET['view'] ); $wp_admin_bar->add_menu( [ 'parent' => 'wpforms-menu', 'id' => 'wpforms-upgrade', 'title' => esc_html__( 'Upgrade to Pro', 'wpforms-lite' ), 'href' => esc_url( $this->admin_upgrade_link( 'admin-bar', $upgrade_utm_content ) ), 'meta' => [ 'target' => '_blank', 'rel' => 'noopener noreferrer', ], ] ); } /** * Upgrade link used within the various admin pages. * * TODO: This is a duplicate of the function in the WPForms class. We should refactor this to use the same function. * * @since 1.8.5.1 * * @param string $medium URL parameter: utm_medium. * @param string $content URL parameter: utm_content. * * @return string */ private function admin_upgrade_link( string $medium = 'link', string $content = '' ): string { $url = 'https://wpforms.com/lite-upgrade/'; if ( wpforms()->is_pro() ) { $license_key = wpforms_get_license_key(); $url = add_query_arg( 'license_key', sanitize_text_field( $license_key ), 'https://wpforms.com/pricing/' ); } $upgrade = wpforms_utm_link( $url, apply_filters( 'wpforms_upgrade_link_medium', $medium ), $content ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName, WPForms.Comments.PHPDocHooks.RequiredHookDocumentation /** * Modify upgrade link. * * @since 1.5.1 * * @param string $upgrade Upgrade links. */ return apply_filters( 'wpforms_upgrade_link', $upgrade ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName } /** * Handle plugin installation upon activation. * * @since 1.7.4 */ public function install() { // Restart the import flags for Lite Connect if needed. if ( class_exists( LiteConnectIntegration::class ) ) { LiteConnectIntegration::maybe_restart_import_flag(); } } } new WPForms_Lite();