From faeee966241f78c4fddc27c4fcca651dffb25513 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Fri, 15 Mar 2013 17:12:13 +0000 Subject: [PATCH] Change kick and kick all to uuid_kill so that the participant's call is logged to the database. Fix recordings and the announce that the call is being recorded for the first person to join the conference. Add a permission to control the conference session 'details' column in the conference sessions so CDR link can be hidden from the user. Don't allow a conference moderator and participant to use the same pin number. --- app/conference_centers/app_config.php | 4 + .../conference_room_edit.php | 11 ++- .../conference_session_details.php | 8 +- .../conference_sessions.php | 52 ++++++------ app/conferences_active/conference_exec.php | 32 ++++++- .../conference_interactive_inc.php | 2 +- app/extensions/extension_edit.php | 2 + .../scripts/app/conference_center/index.lua | 84 +++++++++++-------- 8 files changed, 128 insertions(+), 67 deletions(-) diff --git a/app/conference_centers/app_config.php b/app/conference_centers/app_config.php index 9297b7016c..27cb139736 100644 --- a/app/conference_centers/app_config.php +++ b/app/conference_centers/app_config.php @@ -85,6 +85,10 @@ $apps[$x]['permissions'][$y]['groups'][] = 'admin'; $apps[$x]['permissions'][$y]['groups'][] = 'user'; $y++; + $apps[$x]['permissions'][$y]['name'] = 'conference_session_details'; + $apps[$x]['permissions'][$y]['groups'][] = 'superadmin'; + $apps[$x]['permissions'][$y]['groups'][] = 'admin'; + $y++; $apps[$x]['permissions'][$y]['name'] = 'conference_room_profile'; $apps[$x]['permissions'][$y]['groups'][] = 'superadmin'; $apps[$x]['permissions'][$y]['groups'][] = 'admin'; diff --git a/app/conference_centers/conference_room_edit.php b/app/conference_centers/conference_room_edit.php index 523f208972..ca84410cae 100644 --- a/app/conference_centers/conference_room_edit.php +++ b/app/conference_centers/conference_room_edit.php @@ -179,7 +179,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { if (strlen($moderator_pin) > 0) { $sql = "select count(*) as num_rows from v_meeting_pins "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; - $sql .= "and meeting_uuid <> '".$meeting_uuid."' "; + //$sql .= "and meeting_uuid = '".$meeting_uuid."' "; $sql .= "and member_pin = '".$moderator_pin."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { @@ -191,7 +191,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { } $sql = "select count(*) as num_rows from v_meeting_pins "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; - $sql .= "and meeting_uuid <> '".$meeting_uuid."' "; + //$sql .= "and meeting_uuid = '".$meeting_uuid."' "; $sql .= "and member_pin = '".$participant_pin."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { @@ -201,11 +201,14 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { $msg .= "Please provide a unique participant pin number.
\n"; } } + if ($moderator_pin == $participant_pin) { + $msg .= "Moderator and Participant PIN number must be unique.\n"; + } if (strlen($moderator_pin) != $pin_length) { - $msg .= "Please provide a moderator PIN number that is the required length\n"; + $msg .= "Please provide a moderator PIN number that is the required length.\n"; } if (strlen($participant_pin) != $pin_length) { - $msg .= "Please provide a participant PIN number that is the required length\n"; + $msg .= "Please provide a participant PIN number that is the required length.\n"; } } diff --git a/app/conference_centers/conference_session_details.php b/app/conference_centers/conference_session_details.php index af6322046a..7e307dd89e 100644 --- a/app/conference_centers/conference_session_details.php +++ b/app/conference_centers/conference_session_details.php @@ -177,7 +177,9 @@ else { echo "".$text['label-time']."\n"; echo th_order_by('start_epoch', $text['label-start'], $order_by, $order); echo th_order_by('end_epoch', $text['label-end'], $order_by, $order); - echo "".$text['label-details']."\n"; + if (permission_exists('conference_session_details')) { + echo "".$text['label-details']."\n"; + } echo "\n"; if ($result_count > 0) { @@ -204,7 +206,9 @@ else { echo " ".$time_difference." \n"; echo " ".$start_date." \n"; echo " ".$end_date." \n"; - echo " ".$text['label-cdr']." \n"; + if (permission_exists('conference_session_details')) { + echo " ".$text['label-cdr']." \n"; + } echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } //end foreach diff --git a/app/conference_centers/conference_sessions.php b/app/conference_centers/conference_sessions.php index 0776eb497f..2f46b7dd9a 100644 --- a/app/conference_centers/conference_sessions.php +++ b/app/conference_centers/conference_sessions.php @@ -147,35 +147,37 @@ else { $time_difference = gmdate("G:i:s", $time_difference); } - echo "\n"; - echo " ".$time_difference." \n"; - echo " ".$start_date." \n"; - echo " ".$end_date." \n"; - echo " ".$row['profile']." \n"; - $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; - $tmp_name = ''; - if (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.mp3')) { - $tmp_name = $row['conference_session_uuid'].".mp3"; - } - elseif (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.wav')) { - $tmp_name = $row['conference_session_uuid'].".wav"; - } - echo " \n"; - echo " ".$text['label-details']." \n"; - if (strlen($tmp_name) > 0 && file_exists($tmp_dir.'/'.$tmp_name)) { - if (permission_exists('conference_session_play')) { - echo " \n"; - echo " ".$text['label-play']."\n"; + if (strlen( $row['start_epoch']) > 0) { + echo "\n"; + echo " ".$time_difference." \n"; + echo " ".$start_date." \n"; + echo " ".$end_date." \n"; + echo " ".$row['profile']." \n"; + $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; + $tmp_name = ''; + if (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.mp3')) { + $tmp_name = $row['conference_session_uuid'].".mp3"; + } + elseif (file_exists($tmp_dir.'/'.$row['conference_session_uuid'].'.wav')) { + $tmp_name = $row['conference_session_uuid'].".wav"; + } + echo " \n"; + echo " ".$text['label-details']." \n"; + if (strlen($tmp_name) > 0 && file_exists($tmp_dir.'/'.$tmp_name)) { + if (permission_exists('conference_session_play')) { + echo " \n"; + echo " ".$text['label-play']."\n"; + echo " \n"; + echo "  \n"; + } + echo " \n"; + echo " ".$text['label-download']."\n"; echo " \n"; echo "  \n"; } - echo " \n"; - echo " ".$text['label-download']."\n"; - echo " \n"; - echo "  \n"; + echo " \n"; + echo "\n"; } - echo " \n"; - echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } //end foreach unset($sql, $result, $row_count); diff --git a/app/conferences_active/conference_exec.php b/app/conferences_active/conference_exec.php index a2d3d155e3..00c493f3ee 100644 --- a/app/conferences_active/conference_exec.php +++ b/app/conferences_active/conference_exec.php @@ -74,6 +74,30 @@ else { exit; } +//define an alternative kick all + function conference_end($fp, $name) { + $switch_cmd = "conference '".$name."' xml_list"; + $xml_str = trim(event_socket_request($fp, 'api '.$switch_cmd)); + try { + $xml = new SimpleXMLElement($xml_str); + } + catch(Exception $e) { + //echo $e->getMessage(); + } + $session_uuid = $xml->conference['uuid']; + $x = 0; + foreach ($xml->conference->members->member as $row) { + $switch_result = event_socket_request($fp, 'api uuid_kill '.$row->uuid); + if ($x < 1) { + usleep(500000); //500000 = 0.5 seconds + } + else { + usleep(10000); //1000000 = 0.01 seconds + } + $x++; + } + } + //execute the command if (count($_GET) > 0) { if (strlen($cmd) > 0) { @@ -129,8 +153,12 @@ else { $switch_cmd .= $recording_dir."/".$uuid.".wav"; $switch_result = event_socket_request($fp, 'api '.$switch_cmd); } - elseif ($data == "kick" || $data == "kick all") { - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + elseif ($data == "kick") { + $switch_result = event_socket_request($fp, 'api uuid_kill '.$uuid); + } + elseif ($data == "kick all") { + //$switch_result = event_socket_request($fp, 'api '.$switch_cmd); + conference_end($fp, $name); } elseif ($data == "mute" || $data == "unmute" || $data == "mute non_moderator" || $data == "unmute non_moderator") { $switch_result = event_socket_request($fp, 'api '.$switch_cmd); diff --git a/app/conferences_active/conference_interactive_inc.php b/app/conferences_active/conference_interactive_inc.php index f34f4206be..d852341543 100644 --- a/app/conferences_active/conference_interactive_inc.php +++ b/app/conferences_active/conference_interactive_inc.php @@ -268,7 +268,7 @@ else { } //kick someone from the conference if (permission_exists('conferences_active_kick')) { - echo " ".$text['label-kick']." \n"; + echo " ".$text['label-kick']." \n"; } echo "  "; echo "\n"; diff --git a/app/extensions/extension_edit.php b/app/extensions/extension_edit.php index 5778b91152..798655d746 100644 --- a/app/extensions/extension_edit.php +++ b/app/extensions/extension_edit.php @@ -779,6 +779,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql .= "and u.user_enabled = 'true' "; $sql .= "and e.domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and e.extension_uuid = '".$extension_uuid."' "; + $sql .= "order by u.username asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); @@ -797,6 +798,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql = "SELECT * FROM v_users "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and user_enabled = 'true' "; + $sql .= "order by username asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); echo "