|
Server : LiteSpeed System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : rbnsfqys ( 805) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/rbnsfqys/public_html/wp-content/plugins/latepoint/lib/helpers/ |
<?php
class OsDatabaseHelper {
public static function run_setup() {
self::install_database();
}
public static function check_db_version() {
$current_db_version = OsSettingsHelper::get_db_version();
if ( ! $current_db_version || version_compare( LATEPOINT_DB_VERSION, $current_db_version ) ) {
self::install_database();
}
}
// [name => 'addon_name', 'db_version' => '1.0.0', 'version' => '1.0.0']
public static function get_installed_addons_list() {
$installed_addons = [];
$installed_addons = apply_filters( 'latepoint_installed_addons', $installed_addons );
return $installed_addons;
}
// Check if addons databases are up to date
public static function check_db_version_for_addons() {
$is_new_addon_db_version_available = false;
$installed_addons = self::get_installed_addons_list();
if ( empty( $installed_addons ) ) {
return;
}
foreach ( $installed_addons as $installed_addon ) {
$current_addon_db_version = get_option( $installed_addon['name'] . '_addon_db_version' );
if ( ! $current_addon_db_version || version_compare( $current_addon_db_version, $installed_addon['db_version'] ) ) {
self::save_addon_info( $installed_addon['name'], $installed_addon['db_version'] );
$is_new_addon_db_version_available = true;
}
}
if ( $is_new_addon_db_version_available ) {
self::install_database_for_addons();
}
}
public static function save_addon_info( $name, $version ) {
update_option( $name . '_addon_db_version', $version );
$active_addons = OsSettingsHelper::get_active_addons();
$active_addons[] = $name;
$active_addons = array_unique( $active_addons );
$verified_active_addons = [];
if ( ! function_exists( 'plugin_main_function' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
foreach ( $active_addons as $active_addon ) {
if ( ( $active_addon == $name ) || is_plugin_active( $active_addon . '/' . $active_addon . '.php' ) ) {
$verified_active_addons[] = $active_addon;
}
}
OsSettingsHelper::save_setting_by_name( 'active_addons', wp_json_encode( $verified_active_addons ) );
}
public static function delete_addon_info( $name, $version ) {
delete_option( $name . '_addon_db_version' );
$active_addons = OsSettingsHelper::get_active_addons();
$verified_active_addons = [];
if (!function_exists('plugin_main_function')) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
foreach ( $active_addons as $active_addon ) {
if ( ( $active_addon != $name ) && is_plugin_active( $active_addon . '/' . $active_addon . '.php' ) ) {
$verified_active_addons[] = $active_addon;
}
}
OsSettingsHelper::save_setting_by_name( 'active_addons', wp_json_encode( $verified_active_addons ) );
}
// Install queries for addons
public static function install_database_for_addons() {
$sqls = self::get_table_queries_for_addons();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
foreach ( $sqls as $sql ) {
error_log( print_r( dbDelta( $sql ), true ) );
}
}
public static function install_database() {
$sqls = self::get_initial_table_queries();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
foreach ( $sqls as $sql ) {
error_log( print_r( dbDelta( $sql ), true ) );
}
OsVersionSpecificUpdatesHelper::run_version_specific_updates();
self::seed_initial_data();
update_option( 'latepoint_db_version', LATEPOINT_DB_VERSION );
}
public static function seed_initial_data() {
// if DB version is set (means that it's probably an update) skip seeding
if ( OsSettingsHelper::get_db_version() ) {
return false;
}
// if database was already seeded before - skip it
if ( OsSettingsHelper::get_settings_value( 'is_database_seeded', false ) ) {
return false;
}
// set default booking status rules
OsSettingsHelper::save_setting_by_name( 'default_booking_status', LATEPOINT_BOOKING_STATUS_APPROVED );
OsSettingsHelper::save_setting_by_name( 'timeslot_blocking_statuses', LATEPOINT_BOOKING_STATUS_APPROVED );
OsSettingsHelper::save_setting_by_name( 'calendar_hidden_statuses', LATEPOINT_BOOKING_STATUS_CANCELLED );
OsSettingsHelper::save_setting_by_name( 'need_action_statuses', implode( ',', [ LATEPOINT_BOOKING_STATUS_PENDING, LATEPOINT_BOOKING_STATUS_PAYMENT_PENDING ] ) );
// create default processes
$process = new OsProcessModel();
$process->event_type = 'booking_created';
$process->name = 'New Booking Notification';
$actions = [];
require_once ABSPATH . 'wp-admin/includes/file.php';
if ( ! WP_Filesystem() ) {
OsDebugHelper::log( __( 'Failed to initialise WC_Filesystem API while trying to setup notifications for initial data seed.', 'latepoint' ) );
} else {
global $wp_filesystem;
foreach ( [ 'agent', 'customer' ] as $user_type ) {
$action = [];
$action['type'] = 'send_email';
$action['settings']['to_email'] = '{{' . $user_type . '_full_name}} <{{' . $user_type . '_email}}>';
$action['settings']['subject'] = ( $user_type == 'agent' ) ? "New Appointment Received" : "Appointment Confirmation";
$action['settings']['content'] = OsEmailHelper::get_email_layout( $wp_filesystem->get_contents( LATEPOINT_VIEWS_ABSPATH . 'mailers/' . $user_type . '/booking_created.html' ) );
$actions[ \LatePoint\Misc\ProcessAction::generate_id() ] = $action;
}
}
$process_actions = OsProcessesHelper::iterate_trigger_conditions( [], $actions );
$process_actions[0]['time_offset'] = [];
$process->actions_json = wp_json_encode( $process_actions );
if ( ! OsProcessesHelper::check_if_process_exists( $process ) ) {
$process->save();
}
/**
* Hook your initial data seed actions here
*
* @since 4.7.0
* @hook latepoint_seed_initial_data
*
*/
do_action( 'latepoint_seed_initial_data' );
OsSettingsHelper::save_setting_by_name( 'is_database_seeded', true );
}
public static function run_query( string $sql ) {
global $wpdb;
OsDebugHelper::log_query( $sql );
return $wpdb->query( $sql );
}
public static function run_queries( $sqls ) {
global $wpdb;
if ( $sqls && is_array( $sqls ) ) {
foreach ( $sqls as $sql ) {
$wpdb->query( $sql );
OsDebugHelper::log_query( $sql );
}
}
}
// Get queries registered by addons
public static function get_table_queries_for_addons() {
$sqls = [];
$sqls = apply_filters( 'latepoint_addons_sqls', $sqls );
return $sqls;
}
public static function get_all_latepoint_tables() {
$tables = [
LATEPOINT_TABLE_BUNDLES,
LATEPOINT_TABLE_JOIN_BUNDLES_SERVICES,
LATEPOINT_TABLE_BOOKINGS,
LATEPOINT_TABLE_SESSIONS,
LATEPOINT_TABLE_SERVICES,
LATEPOINT_TABLE_SETTINGS,
LATEPOINT_TABLE_SERVICE_CATEGORIES,
LATEPOINT_TABLE_WORK_PERIODS,
LATEPOINT_TABLE_CUSTOM_PRICES,
LATEPOINT_TABLE_AGENTS_SERVICES,
LATEPOINT_TABLE_ACTIVITIES,
LATEPOINT_TABLE_TRANSACTIONS,
LATEPOINT_TABLE_TRANSACTION_REFUNDS,
LATEPOINT_TABLE_TRANSACTION_INTENTS,
LATEPOINT_TABLE_AGENTS,
LATEPOINT_TABLE_CUSTOMERS,
LATEPOINT_TABLE_CUSTOMER_META,
LATEPOINT_TABLE_SERVICE_META,
LATEPOINT_TABLE_BOOKING_META,
LATEPOINT_TABLE_AGENT_META,
LATEPOINT_TABLE_STEPS,
LATEPOINT_TABLE_STEP_SETTINGS,
LATEPOINT_TABLE_LOCATIONS,
LATEPOINT_TABLE_LOCATION_CATEGORIES,
LATEPOINT_TABLE_PROCESSES,
LATEPOINT_TABLE_PROCESS_JOBS,
LATEPOINT_TABLE_CARTS,
LATEPOINT_TABLE_CART_META,
LATEPOINT_TABLE_CART_ITEMS,
LATEPOINT_TABLE_ORDERS,
LATEPOINT_TABLE_ORDER_META,
LATEPOINT_TABLE_ORDER_ITEMS,
LATEPOINT_TABLE_ORDER_INTENTS,
LATEPOINT_TABLE_ORDER_INTENT_META,
LATEPOINT_TABLE_ORDER_INVOICES,
LATEPOINT_TABLE_PAYMENT_REQUESTS,
LATEPOINT_TABLE_RECURRENCES,
LATEPOINT_TABLE_CUSTOMER_OTP_CODES,
];
/**
* Get list of all tables that hold latepoint related data
*
* @param {array} $tables list of tables
* @returns {array} The filtered list of tables
*
* @since 5.1.3
* @hook get_all_latepoint_tables
*
*/
return apply_filters( 'get_all_latepoint_tables', $tables );
}
public static function get_initial_table_queries() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sqls = [];
/* OTP Codes */
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CUSTOMER_OTP_CODES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
contact_value varchar(255) NOT NULL,
contact_type varchar(30) NOT NULL,
delivery_method varchar(30) NOT NULL,
otp_hash VARCHAR(255) NOT NULL,
expires_at datetime not null,
status varchar(30) DEFAULT '" . LATEPOINT_CUSTOMER_OTP_CODE_STATUS_ACTIVE . "' NOT NULL,
attempts INT DEFAULT 0,
used_at DATETIME NULL,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY idx_contact_status (contact_value, status),
KEY idx_expires_status (expires_at, status)
) $charset_collate;";
/* Recurrences */
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_RECURRENCES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
rules text,
overrides text,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
// ---------------
// STEPS
// ---------------
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_STEPS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
title text,
before_content text,
after_content text,
side_title text,
side_description text,
use_custom_image boolean,
custom_image_id int(11),
code varchar(100),
parent_step_id smallint(6),
position smallint(6),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
// ---------------
// CART
// ---------------
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CARTS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
uuid varchar(36),
order_intent_id int(11),
order_id int(11),
coupon_code varchar(100),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY uuid_index (uuid),
KEY order_id_index (order_id),
KEY order_intent_id_index (order_intent_id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CART_ITEMS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
cart_id int(11) NOT NULL,
variant varchar(55),
item_data text,
connected_cart_item_id int(11),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY connected_cart_item_id_index (connected_cart_item_id),
KEY cart_id_index (cart_id)
) $charset_collate;";
// ---------------
// ORDERS
// ---------------
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ORDERS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
subtotal decimal(20,4),
total decimal(20,4),
status varchar(30) DEFAULT '" . LATEPOINT_ORDER_STATUS_OPEN . "' NOT NULL,
fulfillment_status varchar(30) DEFAULT '" . LATEPOINT_ORDER_FULFILLMENT_STATUS_NOT_FULFILLED . "' NOT NULL,
payment_status varchar(30) DEFAULT '" . LATEPOINT_ORDER_PAYMENT_STATUS_NOT_PAID . "' NOT NULL,
source_id varchar(100),
source_url text,
ip_address varchar(55),
customer_id int(11) NOT NULL,
customer_comment text,
confirmation_code varchar(10),
price_breakdown text,
coupon_code varchar(100),
coupon_discount decimal(20,4),
tax_total decimal(20,4),
initial_payment_data text,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY customer_id_index (customer_id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ORDER_ITEMS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
order_id int(11) NOT NULL,
variant varchar(55),
item_data text,
subtotal decimal(20,4),
total decimal(20,4),
coupon_code varchar(100),
coupon_discount decimal(20,4),
tax_total decimal(20,4),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY order_id_index (order_id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ORDER_INTENTS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
intent_key varchar(55) NOT NULL,
customer_id int(11) NOT NULL,
cart_items_data text,
restrictions_data text,
presets_data text,
payment_data text,
other_data text,
order_id int(11),
booking_form_page_url text,
total decimal(20,4),
subtotal decimal(20,4),
coupon_code varchar(100),
coupon_discount decimal(20,4),
tax_total decimal(20,4),
charge_amount decimal(20,4),
specs_charge_amount varchar(55),
price_breakdown text,
status varchar(30) DEFAULT '" . LATEPOINT_ORDER_INTENT_STATUS_NEW . "' NOT NULL,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
UNIQUE KEY intent_key_index (intent_key)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ORDER_INVOICES . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
order_id int(11) NOT NULL,
invoice_number varchar(10),
data text,
status varchar(30) DEFAULT '" . LATEPOINT_INVOICE_STATUS_OPEN . "' NOT NULL,
charge_amount decimal(20,4),
due_at datetime,
payment_portion varchar(55),
access_key varchar(36),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY order_id_index (order_id),
UNIQUE KEY invoice_number_index (invoice_number)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_PAYMENT_REQUESTS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
order_id int(11) NOT NULL,
invoice_id int(11) NOT NULL,
charge_amount decimal(20,4),
due_at datetime,
`portion` varchar(55),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
KEY invoice_id_index (invoice_id),
KEY order_id_index (order_id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_PROCESS_JOBS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
process_id int(11) NOT NULL,
object_id int(11) NOT NULL,
object_model_type varchar(55),
settings text,
to_run_after_utc datetime,
status varchar(30) DEFAULT '" . LATEPOINT_JOB_STATUS_SCHEDULED . "',
run_result text,
process_info text,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_SESSIONS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
session_key varchar(55) NOT NULL,
session_value longtext NOT NULL,
expiration BIGINT UNSIGNED NOT NULL,
hash varchar(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY session_key (session_key)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_BOOKINGS . " (
id int(11) NOT NULL AUTO_INCREMENT,
booking_code varchar(10),
start_date date,
end_date date,
start_time mediumint(9),
end_time mediumint(9),
start_datetime_utc datetime,
end_datetime_utc datetime,
buffer_before mediumint(9) NOT NULL,
buffer_after mediumint(9) NOT NULL,
duration mediumint(9),
status varchar(30) DEFAULT '" . LATEPOINT_BOOKING_STATUS_PENDING . "' NOT NULL,
customer_id mediumint(9) NOT NULL,
service_id mediumint(9) NOT NULL,
agent_id mediumint(9) NOT NULL,
location_id mediumint(9),
order_item_id mediumint(9),
recurrence_id mediumint(9),
total_attendees mediumint(4),
customer_timezone varchar(100),
server_timezone varchar(100),
created_at datetime,
updated_at datetime,
KEY start_date_index (start_date),
KEY end_date_index (end_date),
KEY status_index (status),
KEY customer_id_index (customer_id),
KEY service_id_index (service_id),
KEY agent_id_index (agent_id),
KEY location_id_index (location_id),
KEY recurrence_id_index (recurrence_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_BLOCKED_PERIODS . " (
id int(11) NOT NULL AUTO_INCREMENT,
summary text,
start_date date,
end_date date,
start_time mediumint(9),
end_time mediumint(9),
start_datetime_utc datetime,
end_datetime_utc datetime,
service_id mediumint(9),
agent_id mediumint(9),
location_id mediumint(9),
server_timezone varchar(100),
created_at datetime,
updated_at datetime,
KEY start_date_index (start_date),
KEY end_date_index (end_date),
KEY service_id_index (service_id),
KEY agent_id_index (agent_id),
KEY location_id_index (location_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CART_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ORDER_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_BOOKING_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_PROCESSES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(110) NOT NULL,
event_type varchar(110) NOT NULL,
actions_json text,
status varchar(30) DEFAULT '" . LATEPOINT_STATUS_ACTIVE . "',
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_SERVICE_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CUSTOMER_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_AGENT_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_BUNDLE_META . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
object_id mediumint(9) NOT NULL,
meta_key varchar(110) NOT NULL,
meta_value text,
created_at datetime,
updated_at datetime,
KEY meta_key_index (meta_key),
KEY object_id_index (object_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_SETTINGS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(110) NOT NULL,
value longtext,
created_at datetime,
updated_at datetime,
KEY name_index (name),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_LOCATIONS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
full_address text,
status varchar(20) NOT NULL,
category_id int(11),
order_number int(11),
selection_image_id int(11),
created_at datetime,
updated_at datetime,
KEY status_index (status),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_LOCATION_CATEGORIES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
short_description text,
parent_id mediumint(9),
selection_image_id int(11),
order_number int(11),
created_at datetime,
updated_at datetime,
KEY order_number_index (order_number),
KEY parent_id_index (parent_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_BUNDLES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
short_description text,
charge_amount decimal(20,4),
deposit_amount decimal(20,4),
status varchar(20) NOT NULL,
visibility varchar(20) NOT NULL,
order_number int(11),
created_at datetime,
updated_at datetime,
KEY order_number_index (order_number),
KEY status_index (status),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_JOIN_BUNDLES_SERVICES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
bundle_id mediumint(9),
service_id mediumint(9),
total_attendees mediumint(4),
duration int(11),
quantity mediumint(4),
created_at datetime,
updated_at datetime,
KEY bundle_id_index (bundle_id),
KEY service_id_index (service_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_SERVICES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
short_description text,
is_price_variable boolean,
price_min decimal(20,4),
price_max decimal(20,4),
charge_amount decimal(20,4),
deposit_amount decimal(20,4),
is_deposit_required boolean,
duration_name varchar(255),
override_default_booking_status varchar(255),
duration int(11) NOT NULL,
buffer_before int(11),
buffer_after int(11),
category_id int(11),
order_number int(11),
selection_image_id int(11),
description_image_id int(11),
bg_color varchar(20),
earliest_possible_booking varchar(50),
latest_possible_booking varchar(50),
timeblock_interval int(11),
capacity_min int(4),
capacity_max int(4),
status varchar(20) NOT NULL,
visibility varchar(20) NOT NULL,
created_at datetime,
updated_at datetime,
KEY category_id_index (category_id),
KEY order_number_index (order_number),
KEY status_index (status),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_AGENTS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
avatar_image_id int(11),
bio_image_id int(11),
first_name varchar(255) NOT NULL,
last_name varchar(255),
display_name varchar(255),
title varchar(255),
bio text,
features text,
email varchar(110) NOT NULL,
phone varchar(255),
password varchar(255),
custom_hours boolean,
wp_user_id int(11),
status varchar(20) NOT NULL,
extra_emails text,
extra_phones text,
created_at datetime,
updated_at datetime,
KEY email_index (email),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_STEP_SETTINGS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
label varchar(50) NOT NULL,
value text,
step varchar(50),
created_at datetime,
updated_at datetime,
KEY step_index (step),
KEY label_index (label),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CUSTOMERS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
uuid varchar(36),
first_name varchar(255),
last_name varchar(255),
email varchar(320),
phone varchar(255),
avatar_image_id int(11),
status varchar(50) NOT NULL,
password varchar(255),
activation_key varchar(255),
account_nonse varchar(255),
google_user_id varchar(255),
facebook_user_id varchar(255),
wordpress_user_id int(11),
is_guest boolean,
notes text,
admin_notes text,
created_at datetime,
updated_at datetime,
UNIQUE KEY uuid_index (uuid),
KEY email_index (email),
KEY status_index (status),
KEY wordpress_user_id_index (wordpress_user_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_SERVICE_CATEGORIES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
short_description text,
parent_id mediumint(9),
selection_image_id int(11),
order_number int(11),
created_at datetime,
updated_at datetime,
KEY order_number_index (order_number),
KEY parent_id_index (parent_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_CUSTOM_PRICES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
agent_id int(11) NOT NULL,
service_id int(11) NOT NULL,
location_id int(11) NOT NULL,
is_price_variable boolean,
price_min decimal(20,4),
price_max decimal(20,4),
charge_amount decimal(20,4),
is_deposit_required boolean,
deposit_amount decimal(20,4),
created_at datetime,
updated_at datetime,
KEY agent_id_index (agent_id),
KEY service_id_index (service_id),
KEY location_id_index (location_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_WORK_PERIODS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
agent_id int(11) NOT NULL,
service_id int(11) NOT NULL,
location_id int(11) NOT NULL,
start_time smallint(6) NOT NULL,
end_time smallint(6) NOT NULL,
week_day tinyint(3) NOT NULL,
custom_date date,
chain_id varchar(20),
created_at datetime,
updated_at datetime,
KEY agent_id_index (agent_id),
KEY service_id_index (service_id),
KEY location_id_index (location_id),
KEY week_day_index (week_day),
KEY custom_date_index (custom_date),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_AGENTS_SERVICES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
agent_id int(11) NOT NULL,
service_id int(11) NOT NULL,
location_id int(11),
is_custom_hours BOOLEAN,
is_custom_price BOOLEAN,
is_custom_duration BOOLEAN,
created_at datetime,
updated_at datetime,
KEY agent_id_index (agent_id),
KEY service_id_index (service_id),
KEY location_id_index (location_id),
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_ACTIVITIES . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
agent_id int(11),
booking_id int(11),
service_id int(11),
customer_id int(11),
location_id int(11),
order_id int(11),
order_item_id int(11),
coupon_id int(11),
code varchar(255) NOT NULL,
description text,
initiated_by varchar(100),
initiated_by_id int(11),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_TRANSACTION_INTENTS . " (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
intent_key varchar(55) NOT NULL,
order_id int(11) NOT NULL,
customer_id int(11),
invoice_id int(11),
transaction_id int(11),
payment_data text,
charge_amount decimal(20,4),
specs_charge_amount varchar(55),
order_form_page_url text,
status varchar(30) DEFAULT '" . LATEPOINT_TRANSACTION_INTENT_STATUS_NEW . "' NOT NULL,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id),
UNIQUE KEY intent_key_index (intent_key)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_TRANSACTIONS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
token text,
invoice_id int(11),
order_id int(11),
customer_id int(11),
processor varchar(100),
payment_method varchar(55),
payment_portion varchar(55),
kind varchar(40),
status varchar(100) NOT NULL,
amount decimal(20,4),
receipt_number varchar(10),
access_key varchar(36),
notes text,
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
$sqls[] = "CREATE TABLE " . LATEPOINT_TABLE_TRANSACTION_REFUNDS . " (
id mediumint(9) NOT NULL AUTO_INCREMENT,
token text,
transaction_id int(11),
amount decimal(20,4),
created_at datetime,
updated_at datetime,
PRIMARY KEY (id)
) $charset_collate;";
return $sqls;
}
}