Adding new functionality
This commit is contained in:
@@ -104,16 +104,22 @@ class TWP_Agent_Manager {
|
||||
$user_id
|
||||
));
|
||||
|
||||
// Preserve login status if not explicitly changing it
|
||||
$is_logged_in = $existing ? $existing->is_logged_in : 0;
|
||||
$logged_in_at = $existing ? $existing->logged_in_at : null;
|
||||
|
||||
if ($existing) {
|
||||
return $wpdb->update(
|
||||
$table_name,
|
||||
array(
|
||||
'status' => $status,
|
||||
'current_call_sid' => $call_sid,
|
||||
'last_activity' => current_time('mysql')
|
||||
'last_activity' => current_time('mysql'),
|
||||
'is_logged_in' => $is_logged_in,
|
||||
'logged_in_at' => $logged_in_at
|
||||
),
|
||||
array('user_id' => $user_id),
|
||||
array('%s', '%s', '%s'),
|
||||
array('%s', '%s', '%s', '%d', '%s'),
|
||||
array('%d')
|
||||
);
|
||||
} else {
|
||||
@@ -123,13 +129,85 @@ class TWP_Agent_Manager {
|
||||
'user_id' => $user_id,
|
||||
'status' => $status,
|
||||
'current_call_sid' => $call_sid,
|
||||
'last_activity' => current_time('mysql')
|
||||
'last_activity' => current_time('mysql'),
|
||||
'is_logged_in' => 0,
|
||||
'logged_in_at' => null
|
||||
),
|
||||
array('%d', '%s', '%s', '%s')
|
||||
array('%d', '%s', '%s', '%s', '%d', '%s')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set agent login status
|
||||
*/
|
||||
public static function set_agent_login_status($user_id, $is_logged_in) {
|
||||
global $wpdb;
|
||||
$table_name = $wpdb->prefix . 'twp_agent_status';
|
||||
|
||||
$existing = $wpdb->get_row($wpdb->prepare(
|
||||
"SELECT * FROM $table_name WHERE user_id = %d",
|
||||
$user_id
|
||||
));
|
||||
|
||||
$logged_in_at = $is_logged_in ? current_time('mysql') : null;
|
||||
|
||||
// Update queue timeout based on login status
|
||||
if (class_exists('TWP_User_Queue_Manager')) {
|
||||
TWP_User_Queue_Manager::update_queue_timeout_for_login($user_id, $is_logged_in);
|
||||
}
|
||||
|
||||
// Also ensure user has queues created if logging in
|
||||
if ($is_logged_in && class_exists('TWP_User_Queue_Manager')) {
|
||||
$extension_data = TWP_User_Queue_Manager::get_user_extension_data($user_id);
|
||||
if (!$extension_data) {
|
||||
TWP_User_Queue_Manager::create_user_queues($user_id);
|
||||
}
|
||||
}
|
||||
|
||||
if ($existing) {
|
||||
return $wpdb->update(
|
||||
$table_name,
|
||||
array(
|
||||
'is_logged_in' => $is_logged_in ? 1 : 0,
|
||||
'logged_in_at' => $logged_in_at,
|
||||
'last_activity' => current_time('mysql'),
|
||||
'status' => $is_logged_in ? 'available' : 'offline'
|
||||
),
|
||||
array('user_id' => $user_id),
|
||||
array('%d', '%s', '%s', '%s'),
|
||||
array('%d')
|
||||
);
|
||||
} else {
|
||||
return $wpdb->insert(
|
||||
$table_name,
|
||||
array(
|
||||
'user_id' => $user_id,
|
||||
'status' => $is_logged_in ? 'available' : 'offline',
|
||||
'is_logged_in' => $is_logged_in ? 1 : 0,
|
||||
'logged_in_at' => $logged_in_at,
|
||||
'last_activity' => current_time('mysql')
|
||||
),
|
||||
array('%d', '%s', '%d', '%s', '%s')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if agent is logged in
|
||||
*/
|
||||
public static function is_agent_logged_in($user_id) {
|
||||
global $wpdb;
|
||||
$table_name = $wpdb->prefix . 'twp_agent_status';
|
||||
|
||||
$status = $wpdb->get_row($wpdb->prepare(
|
||||
"SELECT is_logged_in FROM $table_name WHERE user_id = %d",
|
||||
$user_id
|
||||
));
|
||||
|
||||
return $status && $status->is_logged_in == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get agent status
|
||||
*/
|
||||
|
Reference in New Issue
Block a user