Beispiel #1
0
function wpcf7_load_contact_form_admin()
{
    global $plugin_page;
    $action = wpcf7_current_action();
    if ('save' == $action) {
        $id = $_POST['post_ID'];
        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'));
        }
        $id = wpcf7_save_contact_form($id);
        $query = array('message' => -1 == $_POST['post_ID'] ? 'created' : 'saved', 'post' => $id, 'active-tab' => isset($_POST['active-tab']) ? (int) $_POST['active-tab'] : 0);
        $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;
    }
    if ('validate' == $action && wpcf7_validate_configuration()) {
        if ('POST' == $_SERVER['REQUEST_METHOD']) {
            check_admin_referer('wpcf7-bulk-validate');
            if (!current_user_can('wpcf7_edit_contact_forms')) {
                wp_die(__("You are not allowed to validate configuration.", 'contact-form-7'));
            }
            $contact_forms = WPCF7_ContactForm::find();
            $result = array('timestamp' => current_time('timestamp'), 'version' => WPCF7_VERSION, 'count_valid' => 0, 'count_invalid' => 0);
            foreach ($contact_forms as $contact_form) {
                $config_validator = new WPCF7_ConfigValidator($contact_form);
                $config_validator->validate();
                if ($config_validator->is_valid()) {
                    $result['count_valid'] += 1;
                } else {
                    $result['count_invalid'] += 1;
                }
            }
            WPCF7::update_option('bulk_validate', $result);
            $query = array('message' => 'validated');
            $redirect_to = add_query_arg($query, menu_page_url('wpcf7', false));
            wp_safe_redirect($redirect_to);
            exit;
        }
    }
    $_GET['post'] = isset($_GET['post']) ? $_GET['post'] : '';
    $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 && 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'));
        add_screen_option('per_page', array('default' => 20, 'option' => 'cfseven_contact_forms_per_page'));
    }
}