Adding new functionality
This commit is contained in:
@@ -45,7 +45,9 @@ class TWP_Activator {
|
||||
'twp_group_members',
|
||||
'twp_agent_status',
|
||||
'twp_callbacks',
|
||||
'twp_call_recordings'
|
||||
'twp_call_recordings',
|
||||
'twp_user_extensions',
|
||||
'twp_queue_assignments'
|
||||
);
|
||||
|
||||
$missing_tables = array();
|
||||
@@ -104,21 +106,30 @@ class TWP_Activator {
|
||||
KEY phone_number (phone_number)
|
||||
) $charset_collate;";
|
||||
|
||||
// Call queues table
|
||||
// Call queues table (enhanced for user-specific queues)
|
||||
$table_queues = $wpdb->prefix . 'twp_call_queues';
|
||||
$sql_queues = "CREATE TABLE $table_queues (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
queue_name varchar(100) NOT NULL,
|
||||
queue_type varchar(20) DEFAULT 'general',
|
||||
user_id bigint(20),
|
||||
extension varchar(10),
|
||||
notification_number varchar(20),
|
||||
agent_group_id int(11),
|
||||
max_size int(11) DEFAULT 10,
|
||||
wait_music_url varchar(255),
|
||||
tts_message text,
|
||||
timeout_seconds int(11) DEFAULT 300,
|
||||
voicemail_prompt text,
|
||||
is_hold_queue tinyint(1) DEFAULT 0,
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY agent_group_id (agent_group_id),
|
||||
KEY notification_number (notification_number)
|
||||
KEY notification_number (notification_number),
|
||||
KEY user_id (user_id),
|
||||
KEY extension (extension),
|
||||
KEY queue_type (queue_type),
|
||||
UNIQUE KEY user_queue (user_id, queue_type)
|
||||
) $charset_collate;";
|
||||
|
||||
// Queued calls table
|
||||
@@ -247,12 +258,14 @@ class TWP_Activator {
|
||||
UNIQUE KEY group_user (group_id, user_id)
|
||||
) $charset_collate;";
|
||||
|
||||
// Agent status table
|
||||
// Agent status table (enhanced with login tracking)
|
||||
$table_agent_status = $wpdb->prefix . 'twp_agent_status';
|
||||
$sql_agent_status = "CREATE TABLE $table_agent_status (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
user_id bigint(20) NOT NULL,
|
||||
status varchar(20) DEFAULT 'offline',
|
||||
is_logged_in tinyint(1) DEFAULT 0,
|
||||
logged_in_at datetime,
|
||||
current_call_sid varchar(100),
|
||||
last_activity datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
available_for_queues tinyint(1) DEFAULT 1,
|
||||
@@ -260,6 +273,38 @@ class TWP_Activator {
|
||||
UNIQUE KEY user_id (user_id)
|
||||
) $charset_collate;";
|
||||
|
||||
// User extensions table
|
||||
$table_user_extensions = $wpdb->prefix . 'twp_user_extensions';
|
||||
$sql_user_extensions = "CREATE TABLE $table_user_extensions (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
user_id bigint(20) NOT NULL,
|
||||
extension varchar(10) NOT NULL,
|
||||
direct_dial_number varchar(20),
|
||||
personal_queue_id int(11),
|
||||
hold_queue_id int(11),
|
||||
created_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY user_id (user_id),
|
||||
UNIQUE KEY extension (extension),
|
||||
KEY personal_queue_id (personal_queue_id),
|
||||
KEY hold_queue_id (hold_queue_id)
|
||||
) $charset_collate;";
|
||||
|
||||
// Queue assignments table (many-to-many relationship)
|
||||
$table_queue_assignments = $wpdb->prefix . 'twp_queue_assignments';
|
||||
$sql_queue_assignments = "CREATE TABLE $table_queue_assignments (
|
||||
id int(11) NOT NULL AUTO_INCREMENT,
|
||||
user_id bigint(20) NOT NULL,
|
||||
queue_id int(11) NOT NULL,
|
||||
is_primary tinyint(1) DEFAULT 0,
|
||||
assigned_at datetime DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY user_queue (user_id, queue_id),
|
||||
KEY user_id (user_id),
|
||||
KEY queue_id (queue_id)
|
||||
) $charset_collate;";
|
||||
|
||||
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
||||
dbDelta($sql_schedules);
|
||||
dbDelta($sql_queues);
|
||||
@@ -325,6 +370,8 @@ class TWP_Activator {
|
||||
dbDelta($sql_agent_status);
|
||||
dbDelta($sql_callbacks);
|
||||
dbDelta($sql_recordings);
|
||||
dbDelta($sql_user_extensions);
|
||||
dbDelta($sql_queue_assignments);
|
||||
|
||||
// Add missing columns for existing installations
|
||||
self::add_missing_columns();
|
||||
@@ -336,6 +383,64 @@ class TWP_Activator {
|
||||
private static function add_missing_columns() {
|
||||
global $wpdb;
|
||||
|
||||
// Add new queue columns for user-specific queues
|
||||
$table_queues = $wpdb->prefix . 'twp_call_queues';
|
||||
|
||||
// Check and add queue_type column
|
||||
$queue_type_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'queue_type'");
|
||||
if (empty($queue_type_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD COLUMN queue_type varchar(20) DEFAULT 'general' AFTER queue_name");
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD INDEX queue_type (queue_type)");
|
||||
}
|
||||
|
||||
// Check and add user_id column
|
||||
$user_id_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'user_id'");
|
||||
if (empty($user_id_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD COLUMN user_id bigint(20) AFTER queue_type");
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD INDEX user_id (user_id)");
|
||||
}
|
||||
|
||||
// Check and add extension column
|
||||
$extension_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'extension'");
|
||||
if (empty($extension_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD COLUMN extension varchar(10) AFTER user_id");
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD INDEX extension (extension)");
|
||||
}
|
||||
|
||||
// Check and add voicemail_prompt column
|
||||
$voicemail_prompt_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'voicemail_prompt'");
|
||||
if (empty($voicemail_prompt_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD COLUMN voicemail_prompt text AFTER timeout_seconds");
|
||||
}
|
||||
|
||||
// Check and add is_hold_queue column
|
||||
$is_hold_queue_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'is_hold_queue'");
|
||||
if (empty($is_hold_queue_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD COLUMN is_hold_queue tinyint(1) DEFAULT 0 AFTER voicemail_prompt");
|
||||
}
|
||||
|
||||
// Add unique constraint for user queues if it doesn't exist
|
||||
$unique_constraint_exists = $wpdb->get_results("SHOW INDEX FROM $table_queues WHERE Key_name = 'user_queue'");
|
||||
if (empty($unique_constraint_exists)) {
|
||||
// Only add if both columns exist
|
||||
if (!empty($user_id_exists) || $wpdb->get_results("SHOW COLUMNS FROM $table_queues LIKE 'user_id'")) {
|
||||
$wpdb->query("ALTER TABLE $table_queues ADD UNIQUE KEY user_queue (user_id, queue_type)");
|
||||
}
|
||||
}
|
||||
|
||||
// Add login tracking columns to agent_status table
|
||||
$table_agent_status = $wpdb->prefix . 'twp_agent_status';
|
||||
|
||||
$is_logged_in_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_agent_status LIKE 'is_logged_in'");
|
||||
if (empty($is_logged_in_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_agent_status ADD COLUMN is_logged_in tinyint(1) DEFAULT 0 AFTER status");
|
||||
}
|
||||
|
||||
$logged_in_at_exists = $wpdb->get_results("SHOW COLUMNS FROM $table_agent_status LIKE 'logged_in_at'");
|
||||
if (empty($logged_in_at_exists)) {
|
||||
$wpdb->query("ALTER TABLE $table_agent_status ADD COLUMN logged_in_at datetime AFTER is_logged_in");
|
||||
}
|
||||
|
||||
$table_schedules = $wpdb->prefix . 'twp_phone_schedules';
|
||||
|
||||
// Check if holiday_dates column exists
|
||||
|
Reference in New Issue
Block a user