236 lines
7.2 KiB
PHP
236 lines
7.2 KiB
PHP
<?php
|
|
|
|
namespace ASENHA\Classes;
|
|
|
|
/**
|
|
* Plugin Activation
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
class Activation {
|
|
|
|
/**
|
|
* Create failed login log table for Limit Login Attempts feature
|
|
*
|
|
* @since 2.5.0
|
|
*/
|
|
public function create_failed_logins_log_table() {
|
|
global $wpdb;
|
|
|
|
// Limit Login Attempts Log Table
|
|
|
|
$table_name = $wpdb->prefix . 'asenha_failed_logins';
|
|
|
|
if ( ! empty( $wpdb->charset ) ) {
|
|
$charset_collation_sql = "DEFAULT CHARACTER SET $wpdb->charset";
|
|
}
|
|
|
|
if ( ! empty( $wpdb->collate ) ) {
|
|
$charset_collation_sql .= " COLLATE $wpdb->collate";
|
|
}
|
|
|
|
// Drop table if already exists
|
|
$wpdb->query("DROP TABLE IF EXISTS `". $table_name ."`");
|
|
|
|
// Create database table. This procedure may also be called
|
|
$sql =
|
|
"CREATE TABLE {$table_name} (
|
|
id int(6) unsigned NOT NULL auto_increment,
|
|
ip_address varchar(40) NOT NULL DEFAULT '',
|
|
username varchar(24) NOT NULL DEFAULT '',
|
|
fail_count int(10) NOT NULL DEFAULT '0',
|
|
lockout_count int(10) NOT NULL DEFAULT '0',
|
|
request_uri varchar(24) NOT NULL DEFAULT '',
|
|
unixtime int(10) NOT NULL DEFAULT '0',
|
|
datetime_wp varchar(36) NOT NULL DEFAULT '',
|
|
-- datetime_utc datetime NULL DEFAULT CURRENT_TIMESTAMP,
|
|
info varchar(64) NOT NULL DEFAULT '',
|
|
UNIQUE (ip_address),
|
|
PRIMARY KEY (id)
|
|
) {$charset_collation_sql}";
|
|
|
|
require_once ABSPATH . '/wp-admin/includes/upgrade.php';
|
|
|
|
dbDelta( $sql );
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Create email delivery log table for Email Delivery module
|
|
*
|
|
* @since 7.1.0
|
|
*/
|
|
public function create_email_delivery_log_table() {
|
|
global $wpdb;
|
|
$table_name = $wpdb->prefix . 'asenha_email_delivery';
|
|
|
|
if ( ! empty( $wpdb->charset ) ) {
|
|
$charset_collation_sql = "DEFAULT CHARACTER SET $wpdb->charset";
|
|
}
|
|
|
|
if ( ! empty( $wpdb->collate ) ) {
|
|
$charset_collation_sql .= " COLLATE $wpdb->collate";
|
|
}
|
|
|
|
// Drop table if already exists
|
|
$wpdb->query("DROP TABLE IF EXISTS `". $table_name ."`");
|
|
|
|
// Create database table. This procedure may also be called
|
|
$sql =
|
|
"CREATE TABLE {$table_name} (
|
|
id int(6) unsigned NOT NULL auto_increment,
|
|
status enum('successful','failed','unknown') NOT NULL DEFAULT 'unknown',
|
|
error varchar(250) NOT NULL DEFAULT '',
|
|
subject varchar(250) NOT NULL DEFAULT '',
|
|
message longtext NOT NULL DEFAULT '',
|
|
send_to varchar(256) NOT NULL DEFAULT '',
|
|
sender varchar(256) NOT NULL DEFAULT '',
|
|
reply_to varchar(256) NOT NULL DEFAULT '',
|
|
headers text NOT NULL DEFAULT '',
|
|
content_type text NOT NULL DEFAULT '',
|
|
attachments text NOT NULL DEFAULT '',
|
|
backtrace text NOT NULL DEFAULT '',
|
|
processor text NOT NULL DEFAULT '',
|
|
sent_on datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
|
sent_on_unixtime int(10) NOT NULL DEFAULT '0',
|
|
extra longtext NOT NULL DEFAULT '',
|
|
PRIMARY KEY (id)
|
|
) {$charset_collation_sql}";
|
|
|
|
require_once ABSPATH . '/wp-admin/includes/upgrade.php';
|
|
|
|
dbDelta( $sql );
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Create tables for the Form Builder module
|
|
*
|
|
* @since 7.8.0
|
|
*/
|
|
public function create_form_builder_tables() {
|
|
global $wpdb;
|
|
|
|
if ( ! empty( $wpdb->charset ) ) {
|
|
$charset_collation_sql = "DEFAULT CHARACTER SET $wpdb->charset";
|
|
}
|
|
|
|
if ( ! empty( $wpdb->collate ) ) {
|
|
$charset_collation_sql .= " COLLATE $wpdb->collate";
|
|
}
|
|
|
|
require_once ABSPATH . '/wp-admin/includes/upgrade.php';
|
|
|
|
$fields_table_name = $wpdb->prefix . 'asenha_formbuilder_fields';
|
|
$forms_table_name = $wpdb->prefix . 'asenha_formbuilder_forms';
|
|
$entries_table_name = $wpdb->prefix . 'asenha_formbuilder_entries';
|
|
$entry_meta_table_name = $wpdb->prefix . 'asenha_formbuilder_entry_meta';
|
|
|
|
$sql = "CREATE TABLE {$fields_table_name} (
|
|
id bigint(20) NOT NULL AUTO_INCREMENT,
|
|
field_key varchar(100) NULL,
|
|
name text NULL,
|
|
description longtext NULL,
|
|
type text NULL,
|
|
default_value longtext NULL,
|
|
options longtext NULL,
|
|
field_order int(11) DEFAULT 0,
|
|
required int(1) NULL,
|
|
field_options longtext NULL,
|
|
form_id int(11) NULL,
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY form_id (form_id),
|
|
UNIQUE KEY field_key (field_key)
|
|
) {$charset_collation_sql}";
|
|
|
|
dbDelta( $sql );
|
|
|
|
$sql = "CREATE TABLE {$forms_table_name} (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
form_key varchar(100) NULL,
|
|
name varchar(255) NULL,
|
|
description text NULL,
|
|
status varchar(255) NULL,
|
|
options longtext NULL,
|
|
settings longtext NULL,
|
|
styles longtext NULL,
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY form_key (form_key)
|
|
) {$charset_collation_sql}";
|
|
|
|
dbDelta( $sql );
|
|
|
|
$sql = "CREATE TABLE {$entries_table_name} (
|
|
id bigint(20) NOT NULL AUTO_INCREMENT,
|
|
ip text NULL,
|
|
form_id bigint(20) NULL,
|
|
user_id bigint(20) NULL,
|
|
delivery_status tinyint(1) DEFAULT 0,
|
|
status varchar(255) NULL,
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY form_id (form_id),
|
|
KEY user_id (user_id)
|
|
) {$charset_collation_sql}";
|
|
|
|
dbDelta( $sql );
|
|
|
|
$sql = "CREATE TABLE {$entry_meta_table_name} (
|
|
id bigint(20) NOT NULL AUTO_INCREMENT,
|
|
meta_value longtext NULL,
|
|
field_id bigint(20) NOT NULL,
|
|
item_id bigint(20) NOT NULL,
|
|
created_at datetime NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY field_id (field_id),
|
|
KEY item_id (item_id)
|
|
) {$charset_collation_sql}";
|
|
|
|
dbDelta( $sql );
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Part of Disable Embeds module
|
|
* Remove embeds rewrite rules on plugin activation.
|
|
*
|
|
* @link https://plugins.trac.wordpress.org/browser/disable-embeds/tags/1.5.0/disable-embeds.php#L101
|
|
* @since 8.0.0
|
|
*/
|
|
public function disable_embeds_remove_rewrite_rules() {
|
|
$common_methods = new Common_Methods;
|
|
add_filter( 'rewrite_rules_array', [ $common_methods, 'disable_embeds_rewrites' ] );
|
|
flush_rewrite_rules( false );
|
|
}
|
|
|
|
/**
|
|
* Deferred flush for the Disable Embeds module.
|
|
* Runs on init (late priority) so all CPTs/taxonomies are already registered.
|
|
*
|
|
* @since 8.5.1
|
|
*/
|
|
public function maybe_flush_disable_embeds_rewrite_rules() {
|
|
$options = get_option( ASENHA_SLUG_U );
|
|
|
|
if ( ! is_array( $options ) ) {
|
|
return;
|
|
}
|
|
|
|
if ( isset( $options['disable_embeds_flush_rewrite_rules_needed'] )
|
|
&& true === $options['disable_embeds_flush_rewrite_rules_needed']
|
|
) {
|
|
$common_methods = new Common_Methods;
|
|
add_filter( 'rewrite_rules_array', [ $common_methods, 'disable_embeds_rewrites' ] );
|
|
flush_rewrite_rules( false );
|
|
|
|
$options['disable_embeds_flush_rewrite_rules_needed'] = false;
|
|
update_option( ASENHA_SLUG_U, $options, true );
|
|
}
|
|
}
|
|
|
|
} |