Adding more functionality
This commit is contained in:
@@ -20,9 +20,13 @@ class WPDD_Install {
|
||||
WPDD_Post_Types::register_taxonomies();
|
||||
|
||||
self::create_tables();
|
||||
self::create_pages();
|
||||
self::create_upload_protection();
|
||||
|
||||
// Set flag to show setup notice instead of creating pages automatically
|
||||
if (!get_option('wpdd_setup_completed')) {
|
||||
add_option('wpdd_show_setup_notice', true);
|
||||
}
|
||||
|
||||
WPDD_Roles::create_roles();
|
||||
|
||||
// Flush rewrite rules after post types are registered
|
||||
@@ -126,6 +130,96 @@ class WPDD_Install {
|
||||
KEY transaction_id (transaction_id)
|
||||
) $charset_collate;";
|
||||
|
||||
$sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpdd_balance_adjustments (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
creator_id bigint(20) NOT NULL,
|
||||
adjustment_type varchar(20) NOT NULL,
|
||||
amount decimal(10,2) NOT NULL,
|
||||
previous_balance decimal(10,2) NOT NULL,
|
||||
new_balance decimal(10,2) NOT NULL,
|
||||
reason text NOT NULL,
|
||||
adjusted_by bigint(20) NOT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY creator_id (creator_id),
|
||||
KEY adjusted_by (adjusted_by)
|
||||
) $charset_collate;";
|
||||
|
||||
// Software Licensing Tables
|
||||
$sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpdd_licenses (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
license_key varchar(64) NOT NULL,
|
||||
product_id bigint(20) NOT NULL,
|
||||
order_id bigint(20) NOT NULL,
|
||||
customer_id bigint(20) NOT NULL,
|
||||
customer_email varchar(100) NOT NULL,
|
||||
status varchar(20) NOT NULL DEFAULT 'active',
|
||||
activations_count int(11) DEFAULT 0,
|
||||
max_activations int(11) DEFAULT 1,
|
||||
expires_at datetime DEFAULT NULL,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
last_checked datetime DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY license_key (license_key),
|
||||
KEY product_id (product_id),
|
||||
KEY order_id (order_id),
|
||||
KEY customer_id (customer_id),
|
||||
KEY status (status)
|
||||
) $charset_collate;";
|
||||
|
||||
$sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpdd_license_activations (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
license_id bigint(20) NOT NULL,
|
||||
license_key varchar(64) NOT NULL,
|
||||
site_url varchar(255) NOT NULL,
|
||||
site_name varchar(255) DEFAULT NULL,
|
||||
activated_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
last_checked datetime DEFAULT NULL,
|
||||
wp_version varchar(20) DEFAULT NULL,
|
||||
php_version varchar(20) DEFAULT NULL,
|
||||
status varchar(20) NOT NULL DEFAULT 'active',
|
||||
PRIMARY KEY (id),
|
||||
KEY license_id (license_id),
|
||||
KEY license_key (license_key),
|
||||
KEY site_url (site_url),
|
||||
KEY status (status)
|
||||
) $charset_collate;";
|
||||
|
||||
$sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpdd_software_versions (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
product_id bigint(20) NOT NULL,
|
||||
version varchar(20) NOT NULL,
|
||||
changelog text DEFAULT NULL,
|
||||
release_notes text DEFAULT NULL,
|
||||
download_url text DEFAULT NULL,
|
||||
package_url text DEFAULT NULL,
|
||||
min_wp_version varchar(20) DEFAULT NULL,
|
||||
tested_wp_version varchar(20) DEFAULT NULL,
|
||||
min_php_version varchar(20) DEFAULT NULL,
|
||||
release_date datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
git_tag varchar(100) DEFAULT NULL,
|
||||
git_commit varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY product_id (product_id),
|
||||
KEY version (version),
|
||||
KEY release_date (release_date)
|
||||
) $charset_collate;";
|
||||
|
||||
$sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpdd_webhook_events (
|
||||
id bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
product_id bigint(20) NOT NULL,
|
||||
event_type varchar(50) NOT NULL,
|
||||
payload text DEFAULT NULL,
|
||||
processed varchar(20) NOT NULL DEFAULT 'pending',
|
||||
error_message text DEFAULT NULL,
|
||||
received_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
processed_at datetime DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY product_id (product_id),
|
||||
KEY processed (processed),
|
||||
KEY received_at (received_at)
|
||||
) $charset_collate;";
|
||||
|
||||
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
||||
|
||||
foreach ($sql as $query) {
|
||||
@@ -135,6 +229,10 @@ class WPDD_Install {
|
||||
update_option('wpdd_db_version', WPDD_VERSION);
|
||||
}
|
||||
|
||||
public static function create_pages_optional() {
|
||||
return self::create_pages();
|
||||
}
|
||||
|
||||
private static function create_pages() {
|
||||
$pages = array(
|
||||
'shop' => array(
|
||||
@@ -159,6 +257,8 @@ class WPDD_Install {
|
||||
)
|
||||
);
|
||||
|
||||
$created_pages = array();
|
||||
|
||||
foreach ($pages as $slug => $page) {
|
||||
// Check if page already exists
|
||||
$existing_page_id = get_option($page['option']);
|
||||
@@ -184,8 +284,11 @@ class WPDD_Install {
|
||||
|
||||
if ($page_id && !is_wp_error($page_id)) {
|
||||
update_option($page['option'], $page_id);
|
||||
$created_pages[] = $page_id;
|
||||
}
|
||||
}
|
||||
|
||||
return $created_pages;
|
||||
}
|
||||
|
||||
private static function create_upload_protection() {
|
||||
|
Reference in New Issue
Block a user