show_errors(); $wpdb->query( "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}cf7db ( id int(11) unsigned NOT NULL auto_increment, form int(11) NOT NULL, data text NOT NULL, submitted datetime NOT NULL, PRIMARY KEY (id) );" ); } ); // Function to execute on plugin deactivation register_deactivation_hook( __FILE__, function() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } $plugin = isset( $_REQUEST[ 'plugin' ] ) ? $_REQUEST[ 'plugin' ] : null; check_admin_referer( 'deactivate-plugin_' . $plugin ); /* Code here */ } ); // Add language support to internationalize plugin add_action( 'init', function() { load_plugin_textdomain( 'wpcf7db', false, dirname( plugin_basename( __FILE__ ) ) . '/i18n/' ); } ); // HPOS compatibility add_action( 'before_woocommerce_init', function() { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } } ); // Add link to configuration page into plugin add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), function( $links ) { return array_merge( array( 'view' => '' . __( 'View', 'wpcf7db' ) . '' ), $links ); } ); // Register scripts & styles add_action( 'admin_enqueue_scripts', function( $hook ) { // Hook only on requested page if ( strpos( $hook, '_page_wpcf7db' ) === false ) { return; } // Support for minified versions $minified = SCRIPT_DEBUG === false ? '.min' : false; wp_enqueue_style( 'datatables', plugins_url( 'libs/datatables/css/jquery.dataTables.min.css', __FILE__ ), false, '1.10.12', 'all' ); wp_enqueue_style( 'datatables-buttons', plugins_url( 'libs/datatables/css/buttons.dataTables.min.css', __FILE__ ), false, '1.2.2', 'all' ); wp_enqueue_style( 'wpcf7db', plugins_url( 'resources/css/wpcf7db' . $minified . '.css', __FILE__ ), false, '1.0', 'all' ); wp_enqueue_script( 'datatables', plugins_url( 'libs/datatables/js/jquery.dataTables.min.js', __FILE__ ), false, '1.10.12', true ); wp_enqueue_script( 'datatables-buttons', plugins_url( 'libs/datatables/js/dataTables.buttons.min.js', __FILE__ ), false, '1.2.2', true ); wp_enqueue_script( 'datatables-buttons_html5', plugins_url( 'libs/datatables/js/buttons.html5.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-buttons_colvis', plugins_url( 'libs/datatables/js/buttons.colVis.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-buttons_print', plugins_url( 'libs/datatables/js/buttons.print.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-jszip', plugins_url( 'libs/datatables/js/jszip.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-pdfmake', plugins_url( 'libs/datatables/js/pdfmake.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-vfs_fonts', plugins_url( 'libs/datatables/js/vfs_fonts.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'datatables-select', plugins_url( 'libs/datatables/js/dataTables.select.min.js', __FILE__ ), false, false, true ); wp_enqueue_script( 'wpcf7db', plugins_url( 'resources/js/wpcf7db' . $minified . '.js', __FILE__ ), false, '1.0', true ); wp_localize_script( 'wpcf7db', 'parameters', array( 'lang' => get_locale(), 'url' => plugins_url( '', __FILE__ ), 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce('wpcf7db-delete-nonce'), 'confirm' => __( 'Are you sure? This action is irreversible', 'wpcf7db' ) ) ); } ); // Add checks and notices add_action( 'admin_notices', function() { if ( ! is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) { ?>

get_posted_data(); foreach ( $contact_form->scan_form_tags() as $field ) { if ( ! empty( $field['name'] ) ) { $data[$field['name']] = $posted_data[$field['name']]; } } $data['ip'] = $_SERVER['REMOTE_ADDR']; global $wpdb; $wpdb->query( $wpdb->prepare( "INSERT INTO {$wpdb->prefix}cf7db ( form, data, submitted ) VALUES ( %s, %s, %s )", array( 'form' => $contact_form->id(), 'data' => serialize( $data ), 'submitted' => current_time( 'mysql' ) ) ) ); } } ); // Add admin menu page in CF7 add_action( 'admin_menu', function() { add_submenu_page( 'wpcf7', __( 'Database', 'wpcf7db' ), __( 'Database', 'wpcf7db' ), 'manage_options', 'wpcf7db', 'wpcf7db_page' ); } ); function wpcf7db_page() { ?>

'wpcf7_contact_form', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); $forms = get_posts( $args ); ?>
get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}cf7db WHERE form = %s", $wpcf7_id ) ) ) { ?>
scan_form_tags() as $label ) : ?> scan_form_tags() as $label ) : ?> data ) as $field ) : ?>
submitted ) ) ); ?>

query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}cf7db WHERE id IN (%s);", $wpcf7_selected ) ); if ( 0 !== $results ) { printf( _n( '%s row deleted', '%s rows deleted', $results, 'wpcf7db' ), $results ); } else { printf( __( 'Some errors occurred: %s', 'wpcf7db' ), $wpdb->last_error ); } } die(); } ); // Add counter for draft posts add_action( 'wp_dashboard_setup', function() { wp_add_dashboard_widget( 'wpcf7db_summary', __( 'Database for CF7 - Summary', 'wpcf7db' ), function() { $args = array ( 'post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); if ( $forms = get_posts( $args ) ) { global $wpdb; ?> get_results( $wpdb->prepare( "SELECT COUNT(*) AS count FROM {$wpdb->prefix}cf7db WHERE form = %s", esc_attr( $form->ID ) ) ) ) { $count = $rows[0]->count; } ?>
post_title ); ?>: