| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- <?php
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/admin-functions.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/help-tabs.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/tag-generator.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/welcome-panel.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/config-validator.php';
- add_action( 'admin_init', 'wpcf7_admin_init', 10, 0 );
- function wpcf7_admin_init() {
- do_action( 'wpcf7_admin_init' );
- }
- add_action( 'admin_menu', 'wpcf7_admin_menu', 9, 0 );
- function wpcf7_admin_menu() {
- global $_wp_last_object_menu;
- $_wp_last_object_menu++;
- do_action( 'wpcf7_admin_menu' );
- add_menu_page( __( 'Contact Form 7', 'contact-form-7' ),
- __( 'Contact', 'contact-form-7' )
- . wpcf7_admin_menu_change_notice(),
- 'wpcf7_read_contact_forms', 'wpcf7',
- 'wpcf7_admin_management_page', 'dashicons-email',
- $_wp_last_object_menu );
- $edit = add_submenu_page( 'wpcf7',
- __( 'Edit Contact Form', 'contact-form-7' ),
- __( 'Contact Forms', 'contact-form-7' )
- . wpcf7_admin_menu_change_notice( 'wpcf7' ),
- 'wpcf7_read_contact_forms', 'wpcf7',
- 'wpcf7_admin_management_page' );
- add_action( 'load-' . $edit, 'wpcf7_load_contact_form_admin', 10, 0 );
- $addnew = add_submenu_page( 'wpcf7',
- __( 'Add New Contact Form', 'contact-form-7' ),
- __( 'Add New', 'contact-form-7' )
- . wpcf7_admin_menu_change_notice( 'wpcf7-new' ),
- 'wpcf7_edit_contact_forms', 'wpcf7-new',
- 'wpcf7_admin_add_new_page' );
- add_action( 'load-' . $addnew, 'wpcf7_load_contact_form_admin', 10, 0 );
- $integration = WPCF7_Integration::get_instance();
- if ( $integration->service_exists() ) {
- $integration = add_submenu_page( 'wpcf7',
- __( 'Integration with Other Services', 'contact-form-7' ),
- __( 'Integration', 'contact-form-7' )
- . wpcf7_admin_menu_change_notice( 'wpcf7-integration' ),
- 'wpcf7_manage_integration', 'wpcf7-integration',
- 'wpcf7_admin_integration_page' );
- add_action( 'load-' . $integration, 'wpcf7_load_integration_page', 10, 0 );
- }
- }
- function wpcf7_admin_menu_change_notice( $menu_slug = '' ) {
- $counts = apply_filters( 'wpcf7_admin_menu_change_notice',
- array(
- 'wpcf7' => 0,
- 'wpcf7-new' => 0,
- 'wpcf7-integration' => 0,
- )
- );
- if ( empty( $menu_slug ) ) {
- $count = absint( array_sum( $counts ) );
- } elseif ( isset( $counts[$menu_slug] ) ) {
- $count = absint( $counts[$menu_slug] );
- } else {
- $count = 0;
- }
- if ( $count ) {
- return sprintf(
- ' <span class="update-plugins %1$d"><span class="plugin-count">%2$s</span></span>',
- $count,
- esc_html( number_format_i18n( $count ) )
- );
- }
- return '';
- }
- add_action( 'admin_enqueue_scripts', 'wpcf7_admin_enqueue_scripts', 10, 1 );
- function wpcf7_admin_enqueue_scripts( $hook_suffix ) {
- if ( false === strpos( $hook_suffix, 'wpcf7' ) ) {
- return;
- }
- wp_enqueue_style( 'contact-form-7-admin',
- wpcf7_plugin_url( 'admin/css/styles.css' ),
- array(), WPCF7_VERSION, 'all'
- );
- if ( wpcf7_is_rtl() ) {
- wp_enqueue_style( 'contact-form-7-admin-rtl',
- wpcf7_plugin_url( 'admin/css/styles-rtl.css' ),
- array(), WPCF7_VERSION, 'all'
- );
- }
- wp_enqueue_script( 'wpcf7-admin',
- wpcf7_plugin_url( 'admin/js/scripts.js' ),
- array( 'jquery', 'jquery-ui-tabs' ),
- WPCF7_VERSION, true
- );
- $args = array(
- 'apiSettings' => array(
- 'root' => esc_url_raw( rest_url( 'contact-form-7/v1' ) ),
- 'namespace' => 'contact-form-7/v1',
- 'nonce' => ( wp_installing() && ! is_multisite() )
- ? '' : wp_create_nonce( 'wp_rest' ),
- ),
- 'pluginUrl' => wpcf7_plugin_url(),
- 'saveAlert' => __(
- "The changes you made will be lost if you navigate away from this page.",
- 'contact-form-7' ),
- 'activeTab' => isset( $_GET['active-tab'] )
- ? (int) $_GET['active-tab'] : 0,
- 'configValidator' => array(
- 'errors' => array(),
- 'howToCorrect' => __( "How to resolve?", 'contact-form-7' ),
- 'oneError' => __( '1 configuration error detected', 'contact-form-7' ),
- 'manyErrors' => __( '%d configuration errors detected', 'contact-form-7' ),
- 'oneErrorInTab' => __( '1 configuration error detected in this tab panel', 'contact-form-7' ),
- 'manyErrorsInTab' => __( '%d configuration errors detected in this tab panel', 'contact-form-7' ),
- 'docUrl' => WPCF7_ConfigValidator::get_doc_link(),
- /* translators: screen reader text */
- 'iconAlt' => __( '(configuration error)', 'contact-form-7' ),
- ),
- );
- if ( $post = wpcf7_get_current_contact_form()
- and current_user_can( 'wpcf7_edit_contact_form', $post->id() )
- and wpcf7_validate_configuration() ) {
- $config_validator = new WPCF7_ConfigValidator( $post );
- $config_validator->restore();
- $args['configValidator']['errors'] =
- $config_validator->collect_error_messages();
- }
- wp_localize_script( 'wpcf7-admin', 'wpcf7', $args );
- add_thickbox();
- wp_enqueue_script( 'wpcf7-admin-taggenerator',
- wpcf7_plugin_url( 'admin/js/tag-generator.js' ),
- array( 'jquery', 'thickbox', 'wpcf7-admin' ), WPCF7_VERSION, true );
- }
- add_action( 'doing_dark_mode', 'wpcf7_dark_mode_support', 10, 1 );
- function wpcf7_dark_mode_support( $user_id ) {
- wp_enqueue_style( 'contact-form-7-admin-dark-mode',
- wpcf7_plugin_url( 'admin/css/styles-dark-mode.css' ),
- array( 'contact-form-7-admin' ), WPCF7_VERSION, 'screen' );
- }
- add_filter( 'set-screen-option', 'wpcf7_set_screen_options', 10, 3 );
- function wpcf7_set_screen_options( $result, $option, $value ) {
- $wpcf7_screens = array(
- 'cfseven_contact_forms_per_page',
- );
- if ( in_array( $option, $wpcf7_screens ) ) {
- $result = $value;
- }
- return $result;
- }
- function wpcf7_load_contact_form_admin() {
- global $plugin_page;
- $action = wpcf7_current_action();
- do_action( 'wpcf7_admin_load',
- isset( $_GET['page'] ) ? trim( $_GET['page'] ) : '',
- $action
- );
- if ( 'save' == $action ) {
- $id = isset( $_POST['post_ID'] ) ? $_POST['post_ID'] : '-1';
- check_admin_referer( 'wpcf7-save-contact-form_' . $id );
- if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
- wp_die( __( 'You are not allowed to edit this item.', 'contact-form-7' ) );
- }
- $args = $_REQUEST;
- $args['id'] = $id;
- $args['title'] = isset( $_POST['post_title'] )
- ? $_POST['post_title'] : null;
- $args['locale'] = isset( $_POST['wpcf7-locale'] )
- ? $_POST['wpcf7-locale'] : null;
- $args['form'] = isset( $_POST['wpcf7-form'] )
- ? $_POST['wpcf7-form'] : '';
- $args['mail'] = isset( $_POST['wpcf7-mail'] )
- ? $_POST['wpcf7-mail'] : array();
- $args['mail_2'] = isset( $_POST['wpcf7-mail-2'] )
- ? $_POST['wpcf7-mail-2'] : array();
- $args['messages'] = isset( $_POST['wpcf7-messages'] )
- ? $_POST['wpcf7-messages'] : array();
- $args['additional_settings'] = isset( $_POST['wpcf7-additional-settings'] )
- ? $_POST['wpcf7-additional-settings'] : '';
- $contact_form = wpcf7_save_contact_form( $args );
- if ( $contact_form and wpcf7_validate_configuration() ) {
- $config_validator = new WPCF7_ConfigValidator( $contact_form );
- $config_validator->validate();
- $config_validator->save();
- }
- $query = array(
- 'post' => $contact_form ? $contact_form->id() : 0,
- 'active-tab' => isset( $_POST['active-tab'] )
- ? (int) $_POST['active-tab'] : 0,
- );
- if ( ! $contact_form ) {
- $query['message'] = 'failed';
- } elseif ( -1 == $id ) {
- $query['message'] = 'created';
- } else {
- $query['message'] = 'saved';
- }
- $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
- wp_safe_redirect( $redirect_to );
- exit();
- }
- if ( 'copy' == $action ) {
- $id = empty( $_POST['post_ID'] )
- ? absint( $_REQUEST['post'] )
- : absint( $_POST['post_ID'] );
- check_admin_referer( 'wpcf7-copy-contact-form_' . $id );
- if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) {
- wp_die( __( 'You are not allowed to edit this item.', 'contact-form-7' ) );
- }
- $query = array();
- if ( $contact_form = wpcf7_contact_form( $id ) ) {
- $new_contact_form = $contact_form->copy();
- $new_contact_form->save();
- $query['post'] = $new_contact_form->id();
- $query['message'] = 'created';
- }
- $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
- wp_safe_redirect( $redirect_to );
- exit();
- }
- if ( 'delete' == $action ) {
- if ( ! empty( $_POST['post_ID'] ) ) {
- check_admin_referer( 'wpcf7-delete-contact-form_' . $_POST['post_ID'] );
- } elseif ( ! is_array( $_REQUEST['post'] ) ) {
- check_admin_referer( 'wpcf7-delete-contact-form_' . $_REQUEST['post'] );
- } else {
- check_admin_referer( 'bulk-posts' );
- }
- $posts = empty( $_POST['post_ID'] )
- ? (array) $_REQUEST['post']
- : (array) $_POST['post_ID'];
- $deleted = 0;
- foreach ( $posts as $post ) {
- $post = WPCF7_ContactForm::get_instance( $post );
- if ( empty( $post ) ) {
- continue;
- }
- if ( ! current_user_can( 'wpcf7_delete_contact_form', $post->id() ) ) {
- wp_die( __( 'You are not allowed to delete this item.', 'contact-form-7' ) );
- }
- if ( ! $post->delete() ) {
- wp_die( __( 'Error in deleting.', 'contact-form-7' ) );
- }
- $deleted += 1;
- }
- $query = array();
- if ( ! empty( $deleted ) ) {
- $query['message'] = 'deleted';
- }
- $redirect_to = add_query_arg( $query, menu_page_url( 'wpcf7', false ) );
- wp_safe_redirect( $redirect_to );
- exit();
- }
- $post = null;
- if ( 'wpcf7-new' == $plugin_page ) {
- $post = WPCF7_ContactForm::get_template( array(
- 'locale' => isset( $_GET['locale'] ) ? $_GET['locale'] : null,
- ) );
- } elseif ( ! empty( $_GET['post'] ) ) {
- $post = WPCF7_ContactForm::get_instance( $_GET['post'] );
- }
- $current_screen = get_current_screen();
- $help_tabs = new WPCF7_Help_Tabs( $current_screen );
- if ( $post
- and current_user_can( 'wpcf7_edit_contact_form', $post->id() ) ) {
- $help_tabs->set_help_tabs( 'edit' );
- } else {
- $help_tabs->set_help_tabs( 'list' );
- if ( ! class_exists( 'WPCF7_Contact_Form_List_Table' ) ) {
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/class-contact-forms-list-table.php';
- }
- add_filter( 'manage_' . $current_screen->id . '_columns',
- array( 'WPCF7_Contact_Form_List_Table', 'define_columns' ), 10, 0 );
- add_screen_option( 'per_page', array(
- 'default' => 20,
- 'option' => 'cfseven_contact_forms_per_page',
- ) );
- }
- }
- function wpcf7_admin_management_page() {
- if ( $post = wpcf7_get_current_contact_form() ) {
- $post_id = $post->initial() ? -1 : $post->id();
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
- return;
- }
- if ( 'validate' == wpcf7_current_action()
- and wpcf7_validate_configuration()
- and current_user_can( 'wpcf7_edit_contact_forms' ) ) {
- wpcf7_admin_bulk_validate_page();
- return;
- }
- $list_table = new WPCF7_Contact_Form_List_Table();
- $list_table->prepare_items();
- ?>
- <div class="wrap" id="wpcf7-contact-form-list-table">
- <h1 class="wp-heading-inline"><?php
- echo esc_html( __( 'Contact Forms', 'contact-form-7' ) );
- ?></h1>
- <?php
- if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
- echo wpcf7_link(
- menu_page_url( 'wpcf7-new', false ),
- __( 'Add New', 'contact-form-7' ),
- array( 'class' => 'page-title-action' )
- );
- }
- if ( ! empty( $_REQUEST['s'] ) ) {
- echo sprintf( '<span class="subtitle">'
- /* translators: %s: search keywords */
- . __( 'Search results for “%s”', 'contact-form-7' )
- . '</span>', esc_html( $_REQUEST['s'] )
- );
- }
- ?>
- <hr class="wp-header-end">
- <?php
- do_action( 'wpcf7_admin_warnings',
- 'wpcf7', wpcf7_current_action(), null );
- wpcf7_welcome_panel();
- do_action( 'wpcf7_admin_notices',
- 'wpcf7', wpcf7_current_action(), null );
- ?>
- <form method="get" action="">
- <input type="hidden" name="page" value="<?php echo esc_attr( $_REQUEST['page'] ); ?>" />
- <?php $list_table->search_box( __( 'Search Contact Forms', 'contact-form-7' ), 'wpcf7-contact' ); ?>
- <?php $list_table->display(); ?>
- </form>
- </div>
- <?php
- }
- function wpcf7_admin_add_new_page() {
- $post = wpcf7_get_current_contact_form();
- if ( ! $post ) {
- $post = WPCF7_ContactForm::get_template();
- }
- $post_id = -1;
- require_once WPCF7_PLUGIN_DIR . '/admin/includes/editor.php';
- require_once WPCF7_PLUGIN_DIR . '/admin/edit-contact-form.php';
- }
- function wpcf7_load_integration_page() {
- do_action( 'wpcf7_admin_load',
- isset( $_GET['page'] ) ? trim( $_GET['page'] ) : '',
- wpcf7_current_action()
- );
- $integration = WPCF7_Integration::get_instance();
- if ( isset( $_REQUEST['service'] )
- and $integration->service_exists( $_REQUEST['service'] ) ) {
- $service = $integration->get_service( $_REQUEST['service'] );
- $service->load( wpcf7_current_action() );
- }
- $help_tabs = new WPCF7_Help_Tabs( get_current_screen() );
- $help_tabs->set_help_tabs( 'integration' );
- }
- function wpcf7_admin_integration_page() {
- $integration = WPCF7_Integration::get_instance();
- $service = isset( $_REQUEST['service'] )
- ? $integration->get_service( $_REQUEST['service'] )
- : null;
- ?>
- <div class="wrap" id="wpcf7-integration">
- <h1><?php echo esc_html( __( 'Integration with Other Services', 'contact-form-7' ) ); ?></h1>
- <?php
- do_action( 'wpcf7_admin_warnings',
- 'wpcf7-integration', wpcf7_current_action(), $service );
- do_action( 'wpcf7_admin_notices',
- 'wpcf7-integration', wpcf7_current_action(), $service );
- if ( $service ) {
- $message = isset( $_REQUEST['message'] ) ? $_REQUEST['message'] : '';
- $service->admin_notice( $message );
- $integration->list_services( array( 'include' => $_REQUEST['service'] ) );
- } else {
- $integration->list_services();
- }
- ?>
- </div>
- <?php
- }
- /* Misc */
- add_action( 'wpcf7_admin_notices', 'wpcf7_admin_updated_message', 10, 3 );
- function wpcf7_admin_updated_message( $page, $action, $object ) {
- if ( ! in_array( $page, array( 'wpcf7', 'wpcf7-new' ) ) ) {
- return;
- }
- if ( empty( $_REQUEST['message'] ) ) {
- return;
- }
- if ( 'created' == $_REQUEST['message'] ) {
- $updated_message = __( "Contact form created.", 'contact-form-7' );
- } elseif ( 'saved' == $_REQUEST['message'] ) {
- $updated_message = __( "Contact form saved.", 'contact-form-7' );
- } elseif ( 'deleted' == $_REQUEST['message'] ) {
- $updated_message = __( "Contact form deleted.", 'contact-form-7' );
- }
- if ( ! empty( $updated_message ) ) {
- echo sprintf( '<div id="message" class="notice notice-success is-dismissible"><p>%s</p></div>', esc_html( $updated_message ) );
- return;
- }
- if ( 'failed' == $_REQUEST['message'] ) {
- $updated_message = __( "There was an error saving the contact form.",
- 'contact-form-7' );
- echo sprintf( '<div id="message" class="notice notice-error is-dismissible"><p>%s</p></div>', esc_html( $updated_message ) );
- return;
- }
- if ( 'validated' == $_REQUEST['message'] ) {
- $bulk_validate = WPCF7::get_option( 'bulk_validate', array() );
- $count_invalid = isset( $bulk_validate['count_invalid'] )
- ? absint( $bulk_validate['count_invalid'] ) : 0;
- if ( $count_invalid ) {
- $updated_message = sprintf(
- _n(
- /* translators: %s: number of contact forms */
- "Configuration validation completed. %s invalid contact form was found.",
- "Configuration validation completed. %s invalid contact forms were found.",
- $count_invalid, 'contact-form-7'
- ),
- number_format_i18n( $count_invalid )
- );
- echo sprintf( '<div id="message" class="notice notice-warning is-dismissible"><p>%s</p></div>', esc_html( $updated_message ) );
- } else {
- $updated_message = __( "Configuration validation completed. No invalid contact form was found.", 'contact-form-7' );
- echo sprintf( '<div id="message" class="notice notice-success is-dismissible"><p>%s</p></div>', esc_html( $updated_message ) );
- }
- return;
- }
- }
- add_filter( 'plugin_action_links', 'wpcf7_plugin_action_links', 10, 2 );
- function wpcf7_plugin_action_links( $links, $file ) {
- if ( $file != WPCF7_PLUGIN_BASENAME ) {
- return $links;
- }
- if ( ! current_user_can( 'wpcf7_read_contact_forms' ) ) {
- return $links;
- }
- $settings_link = wpcf7_link(
- menu_page_url( 'wpcf7', false ),
- __( 'Settings', 'contact-form-7' )
- );
- array_unshift( $links, $settings_link );
- return $links;
- }
- add_action( 'wpcf7_admin_warnings', 'wpcf7_old_wp_version_error', 10, 3 );
- function wpcf7_old_wp_version_error( $page, $action, $object ) {
- $wp_version = get_bloginfo( 'version' );
- if ( ! version_compare( $wp_version, WPCF7_REQUIRED_WP_VERSION, '<' ) ) {
- return;
- }
- ?>
- <div class="notice notice-warning">
- <p><?php
- echo sprintf(
- /* translators: 1: version of Contact Form 7, 2: version of WordPress, 3: URL */
- __( '<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> Please <a href="%3$s">update WordPress</a> first.', 'contact-form-7' ),
- WPCF7_VERSION,
- WPCF7_REQUIRED_WP_VERSION,
- admin_url( 'update-core.php' )
- );
- ?></p>
- </div>
- <?php
- }
- add_action( 'wpcf7_admin_warnings', 'wpcf7_not_allowed_to_edit', 10, 3 );
- function wpcf7_not_allowed_to_edit( $page, $action, $object ) {
- if ( $object instanceof WPCF7_ContactForm ) {
- $contact_form = $object;
- } else {
- return;
- }
- if ( current_user_can( 'wpcf7_edit_contact_form', $contact_form->id() ) ) {
- return;
- }
- $message = __( "You are not allowed to edit this contact form.",
- 'contact-form-7' );
- echo sprintf(
- '<div class="notice notice-warning"><p>%s</p></div>',
- esc_html( $message ) );
- }
|