Files
carpseeds.pl/wp-content/plugins/przelewy24/includes/class-p24-install.php
2024-07-15 11:28:08 +02:00

118 lines
2.9 KiB
PHP

<?php
/**
* File that define P24_Install class.
*
* @package Przelewy24
*/
defined( 'ABSPATH' ) || exit;
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
/**
* Install methods for Przelewy 24 plugin.
*/
class P24_Install {
const P24_INSTALLED_VERSION = 'p24_installed_version';
/**
* Update database.
*/
private static function update_database() {
global $wpdb;
dbDelta(
'
CREATE TABLE ' . $wpdb->prefix . 'woocommerce_p24_data (
id INT NOT NULL AUTO_INCREMENT,
data_type VARCHAR(32) NOT NULL,
data_id INT NOT NULL,
custom_key VARCHAR(32) NOT NULL,
custom_value TEXT,
robik TEXT,
PRIMARY KEY (id),
INDEX search_key (data_type, data_id, custom_key),
INDEX get_key (data_type, data_id)
);
'
);
dbDelta(
'
CREATE TABLE ' . $wpdb->prefix . 'woocommerce_p24_order_map (
order_hash VARCHAR(40) UNIQUE NOT NULL,
order_id INT NOT NULL,
PRIMARY KEY (order_hash),
INDEX search_hash (order_hash)
);
'
);
dbDelta(
'
CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . 'woocommerce_p24_subscription(
id INT NOT NULL AUTO_INCREMENT,
user_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
valid_to DATETIME NOT NULL,
extend TINYINT NOT NULL,
card_ref TEXT NULL,
last_order_id BIGINT NOT NULL,
last_checked DATETIME NOT NULL,
PRIMARY KEY (id),
INDEX (user_id),
INDEX (product_id),
INDEX (last_order_id),
INDEX (valid_to)
);
'
);
if ( $wpdb->get_var( "SHOW TABLES LIKE '" . $wpdb->prefix . "woocommerce_p24_custom_data'" ) === $wpdb->prefix . 'woocommerce_p24_custom_data' && ! $wpdb->get_var( 'SELECT COUNT(*) FROM ' . $wpdb->prefix . 'woocommerce_p24_data' ) ) { # phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
$wpdb->query(
'
INSERT INTO ' . $wpdb->prefix . 'woocommerce_p24_data
SELECT * FROM ' . $wpdb->prefix . 'woocommerce_p24_custom_data
'
);
}
}
/**
* Fix data in database.
*/
private static function fix_data() {
global $wpdb;
$wpdb->query( # phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
'
UPDATE ' . $wpdb->prefix . "postmeta
SET meta_key = '_p24_mc_active_multiplier'
WHERE meta_key = 'p24_mc_active_multiplier'
"
);
}
/**
* Update shedules.
*/
private static function update_shedules() {
if ( ! wp_next_scheduled( 'p24_daily_event' ) ) {
wp_schedule_event( time(), 'daily', 'p24_daily_event' );
}
}
/**
* Check install.
*/
public static function check_install() {
$configured = get_option( self::P24_INSTALLED_VERSION );
$actual = P24_Core::INTERNAL_VERSION;
if ( $configured !== $actual ) {
self::update_database();
self::fix_data();
self::update_shedules();
update_option( self::P24_INSTALLED_VERSION, $actual, true );
}
}
}