Files
sodino/database/migrations.php
soheil khaledabadi 32c065e4b6 feat: Add banner management functionality
- Implemented a new Banner model to represent banner data.
- Created a BannerRepository for database interactions related to banners.
- Developed a BannerService to handle business logic for banners.
- Added admin views for listing and adding banners.
- Integrated banner hooks for frontend rendering and click tracking.
- Created frontend styles and scripts for banner display and interaction.
- Updated database migrations to include a new banners table.
- Enhanced AdminController to manage banner actions and pages.
2026-05-05 01:03:05 +03:30

102 lines
3.6 KiB
PHP

<?php
// Prevent direct access
if (!defined('ABSPATH')) {
exit;
}
/**
* Database migrations for Sodino plugin
*/
function sodino_create_tables() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
// Rules table
$rules_table = $wpdb->prefix . 'sodino_rules';
$rules_sql = "CREATE TABLE $rules_table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
conditions longtext NOT NULL,
actions longtext NOT NULL,
priority int(11) NOT NULL DEFAULT 10,
usage_limit int(11) NOT NULL DEFAULT 0,
user_roles varchar(255) DEFAULT '',
start_date datetime NULL,
end_date datetime NULL,
enabled tinyint(1) DEFAULT 1,
condition_type varchar(100) DEFAULT NULL,
condition_value varchar(255) DEFAULT NULL,
action_type varchar(100) DEFAULT NULL,
action_value varchar(255) DEFAULT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
// Events table
$events_table = $wpdb->prefix . 'sodino_events';
$events_sql = "CREATE TABLE $events_table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
event_type varchar(100) NOT NULL,
product_id mediumint(9) DEFAULT NULL,
variation_id mediumint(9) DEFAULT NULL,
user_id bigint(20) DEFAULT NULL,
session_id varchar(255) DEFAULT NULL,
rule_id mediumint(9) DEFAULT NULL,
value decimal(10,2) DEFAULT 0,
discount_value decimal(10,2) DEFAULT 0,
metadata longtext DEFAULT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
// Upsell table
$upsell_table = $wpdb->prefix . 'sodino_upsells';
$upsell_sql = "CREATE TABLE $upsell_table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
trigger_type varchar(50) NOT NULL,
trigger_value varchar(255) NOT NULL,
target_product_id bigint(20) NOT NULL DEFAULT 0,
discount_type varchar(50) DEFAULT 'percentage',
discount_value decimal(10,2) DEFAULT 0,
status tinyint(1) DEFAULT 1,
priority int(11) NOT NULL DEFAULT 10,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
// Banner table
$banner_table = $wpdb->prefix . 'sodino_banners';
$banner_sql = "CREATE TABLE $banner_table (
id mediumint(9) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
content_type varchar(50) NOT NULL DEFAULT 'image',
content_value longtext NOT NULL,
link_url varchar(255) DEFAULT NULL,
position varchar(50) NOT NULL DEFAULT 'top',
display_type varchar(50) NOT NULL DEFAULT 'inline',
start_time datetime DEFAULT NULL,
end_time datetime DEFAULT NULL,
user_target varchar(50) NOT NULL DEFAULT 'all',
device_target varchar(50) NOT NULL DEFAULT 'all',
priority int(11) NOT NULL DEFAULT 10,
status tinyint(1) NOT NULL DEFAULT 1,
impressions bigint(20) NOT NULL DEFAULT 0,
clicks bigint(20) NOT NULL DEFAULT 0,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($rules_sql);
dbDelta($events_sql);
dbDelta($upsell_sql);
dbDelta($banner_sql);
// Add version option
update_option('sodino_db_version', '1.3');
}