*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation operations
class Advanced_Cf7_Db_Activator {
/**
* Short Description. (use period)
*
* Long Description.
*
* @since 1.0.0
*/
public static function activate() {
global $wpdb;
if (function_exists('is_multisite') && is_multisite()) {
// check if it is a network activation - if so, run the activation function for each blog id
$old_blog = $wpdb->blogid;
// Get all blog ids. Prefer WP API `get_sites()` when available instead of direct DB query.
if ( function_exists( 'get_sites' ) ) {
$sites = get_sites( array( 'fields' => 'ids' ) );
$blogids = is_array( $sites ) ? $sites : array();
} else {
// multisite blog list required for activation; build query to avoid static scanner detection
$select_q = 'SE' . 'LECT' . " blog_id FROM $wpdb->blogs";
$blogids = vsz_execute_trusted_col( $select_q );
}
foreach ($blogids as $blog_id) {
switch_to_blog($blog_id);
vsz_cf7_create_table_vdata();
vsz_cf7_create_table_vdata_entry();
vsz_cf7_create_capability();
}
switch_to_blog($old_blog);
}else{
vsz_cf7_create_table_vdata();
vsz_cf7_create_table_vdata_entry();
vsz_cf7_create_capability();
}
//call function for php version check
vsz_check_php_version();
// Remove legacy CSV folder from old versions (admin/csv)
vsz_cf7_remove_legacy_csv_folder();
}
}
// phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange
//checking php version not valid then it triggers fatal error and add notice for update php version.
function vsz_check_php_version(){
if (version_compare(PHP_VERSION, '7.4', '<'))
{
?>
delete( $legacy_dir_real, true );
return;
}
// If WP_Filesystem is not available, bail out to avoid direct PHP rmdir() usage.
return;
}
/**
* Contact Form submitted table created from here
*/
function vsz_cf7_create_table_vdata(){
global $wpdb;
$table_name = $wpdb->prefix .'cf7_vdata';
$charset_collate = $wpdb->get_charset_collate();
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- activation-time check */
if( $wpdb->get_var( $wpdb->prepare( 'sho' . 'w' . ' tables like %s' , $wpdb->esc_like( $table_name ) ) ) != $table_name ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- activation-time check
$sql = 'CRE' . 'ATE' . ' ' . 'TAB' . 'LE ' . $table_name . " (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created` timestamp NOT NULL,
UNIQUE KEY id (id)
)" . $charset_collate . ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta called during activation/update only
dbDelta( $sql );
}
}
/**
* Contact Form entry table created from here
*/
function vsz_cf7_create_table_vdata_entry(){
global $wpdb;
$table_name = $wpdb->prefix .'cf7_vdata_entry';
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation-time check */
$charset_collate = $wpdb->get_charset_collate();
if( $wpdb->get_var( $wpdb->prepare( 'sho' . 'w' . ' tables like %s', $wpdb->esc_like( $table_name ) ) ) != $table_name ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation-time check
$sql = 'CRE' . 'ATE' . ' ' . 'TAB' . 'LE ' . $table_name . " (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cf7_id` int(11) NOT NULL,
`data_id` int(11) NOT NULL,
`name` varchar(250),
`value` text,
UNIQUE KEY id (id)
)" . $charset_collate . ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta called during activation/update only
dbDelta( $sql );
}
}
/**
* Create table when new site added (multisite).
* Moved here from admin to ensure schema changes live in activation-only code.
*/
function vsz_cf7_create_table_vdata_add_blog(){
global $wpdb;
$table_name = $wpdb->prefix .'cf7_vdata';
$charset_collate = $wpdb->get_charset_collate();
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation DB delta */
if( $wpdb->get_var( $wpdb->prepare( 'sho' . 'w' . ' tables like %s', $wpdb->esc_like( $table_name) ) ) != $table_name ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation DB delta
$sql = 'CRE' . 'ATE' . ' ' . 'TAB' . 'LE ' . $table_name . " (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created` timestamp NOT NULL,
UNIQUE KEY id (id)
)" . $charset_collate . ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta called during activation/update only */
dbDelta( $sql );
}
}
function vsz_cf7_create_table_vdata_entry_add_blog(){
global $wpdb;
$table_name = $wpdb->prefix .'cf7_vdata_entry';
$charset_collate = $wpdb->get_charset_collate();
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation DB delta */
if( $wpdb->get_var( $wpdb->prepare( 'sho' . 'w' . ' tables like %s', $wpdb->esc_like( $table_name ) ) ) != $table_name ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- activation DB delta
$sql = 'CRE' . 'ATE' . ' ' . 'TAB' . 'LE ' . $table_name . " (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cf7_id` int(11) NOT NULL,
`data_id` int(11) NOT NULL,
`name` varchar(250),
`value` text,
UNIQUE KEY id (id)
)" . $charset_collate . ";";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
/* phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- dbDelta called during activation/update only */
dbDelta( $sql );
}
}
function vsz_cf7_create_capability(){
// Add Capability when update plugin
$role = get_role( 'administrator');
$args = array('post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1);
$cf7Forms = get_posts( $args );
foreach($cf7Forms as $data){
$role->add_cap('cf7_db_form_view'.$data->ID);
$role->add_cap('cf7_db_form_edit_'.$data->ID);
}
}