From 378edba9408a9a12389ab2da24eb82ebbd2ae541 Mon Sep 17 00:00:00 2001 From: Nate Date: Mon, 13 Jan 2020 17:15:42 -0700 Subject: [PATCH] Conference Centers - Rooms: List view updates, token integration, added bulk actions within class. --- app/conference_centers/app_languages.php | 21 + app/conference_centers/conference_rooms.php | 454 +++++++++++------- .../resources/classes/conference_centers.php | 198 +++++++- 3 files changed, 495 insertions(+), 178 deletions(-) diff --git a/app/conference_centers/app_languages.php b/app/conference_centers/app_languages.php index 4a75a4c5e0..7803735660 100644 --- a/app/conference_centers/app_languages.php +++ b/app/conference_centers/app_languages.php @@ -61,6 +61,27 @@ $text['title_description-conference_centers']['ru-ru'] = "Конференс-ц $text['title_description-conference_centers']['sv-se'] = "Konferenscenter är en grupp med konferensrum. De kan sorteras på kostnadscenter, geografisk placering eller andra kriterier."; $text['title_description-conference_centers']['uk-ua'] = "Конференц-центри є група конференц-залів. Вони можуть бути організовані МВЗ, географічно або інших критеріїв."; +$text['title_description-conference_rooms']['en-us'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['ar-eg'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['de-at'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['de-ch'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['de-de'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['es-cl'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['es-mx'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['fr-ca'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['fr-fr'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['he-il'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['it-it'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['nl-nl'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['pl-pl'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['pt-br'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['pt-pt'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['ro-ro'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['ru-ru'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['sv-se'] = "Conference Rooms are individual meeting places within a Conference Center."; +$text['title_description-conference_rooms']['uk-ua'] = "Conference Rooms are individual meeting places within a Conference Center."; + + $text['label-conference_center_name']['en-us'] = "Name"; $text['label-conference_center_name']['ar-eg'] = ""; $text['label-conference_center_name']['de-at'] = "Name"; //copied from de-de diff --git a/app/conference_centers/conference_rooms.php b/app/conference_centers/conference_rooms.php index 248085ee25..ab4a6d5040 100644 --- a/app/conference_centers/conference_rooms.php +++ b/app/conference_centers/conference_rooms.php @@ -43,6 +43,36 @@ $language = new text; $text = $language->get(); +//get the http post data + if (is_array($_POST['conference_rooms'])) { + $action = $_POST['action']; + $toggle_field = $_POST['toggle_field']; + $search = $_POST['search']; + $conference_rooms = $_POST['conference_rooms']; + } + +//process the http post data by action + if ($action != '' && is_array($conference_rooms) && @sizeof($conference_rooms) != 0) { + switch ($action) { + case 'toggle': + if (permission_exists('conference_room_edit')) { + $obj = new conference_centers; + $obj->toggle_field = $toggle_field; + $obj->toggle_conference_rooms($conference_rooms); + } + break; + case 'delete': + if (permission_exists('conference_room_delete')) { + $obj = new conference_centers; + $obj->delete_conference_rooms($conference_rooms); + } + break; + } + + header('Location: conference_rooms.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + //get the meeting_uuid using the pin number $search = preg_replace('{\D}', '', $_GET["search"]); if (strlen($search) > 0) { @@ -59,6 +89,7 @@ $meeting_uuid = $database->select($sql, $parameters, 'column'); } +/* //if the $_GET array exists then process it if (count($_GET) > 0 && strlen($_GET["search"]) == 0) { //get http GET variables and set them as php variables @@ -114,6 +145,7 @@ $message = $database->message; unset($array); } +*/ //get conference array $switch_cmd = "conference xml_list"; @@ -152,99 +184,137 @@ $order_by = $_GET["order_by"]; $order = $_GET["order"]; +//get the conference room count + $conference_center = new conference_centers; + $conference_center->db = $db; + $conference_center->domain_uuid = $_SESSION['domain_uuid']; + if (strlen($meeting_uuid) > 0) { + $conference_center->meeting_uuid = $meeting_uuid; + } + if (strlen($search) > 0) { + $conference_center->search = $search; + } + $num_rows = $conference_center->room_count(); + +//prepare to page the results + $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; + $param = $search ? "&search=".$search : null; + if (isset($_GET['page'])) { + $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); + list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); + $offset = $rows_per_page * $page; + } + +//get the conference rooms + $conference_center->rows_per_page = $rows_per_page; + $conference_center->offset = $offset; + $conference_center->order_by = $order_by; + $conference_center->order = $order; + if (strlen($meeting_uuid) > 0) { + $conference_center->meeting_uuid = $meeting_uuid; + } + if (strlen($search) > 0) { + $conference_center->search = $search; + } + $result = $conference_center->rooms(); + +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + //include header $document['title'] = $text['title-conference_rooms']; require_once "resources/header.php"; +//javascript for toggle select box + echo "\n"; + //show the content - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo "
\n"; + echo "
".$text['title-conference_rooms']." (".$num_rows.")
\n"; + echo "
\n"; + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'style'=>'margin-right: 15px;','link'=>'conference_centers.php']); + if (permission_exists('conference_room_add')) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'conference_room_edit.php']); + } + if (permission_exists('conference_room_edit') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'onclick'=>"toggle_select(); this.blur();"]); + echo ""; + } + if (permission_exists('conference_room_delete') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'onclick'=>"if (confirm('".$text['confirm-delete']."')) { list_action_set('delete'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + echo "\n"; + echo ""; + echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]); + echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'bridges.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo "".$paging_controls_mini."\n"; + } echo " \n"; - echo "
\n"; - echo "
".$text['title-conference_rooms']."\n"; - echo " "; - echo " "; - echo "
\n"; - echo "

\n"; + echo " \n"; + echo "
\n"; + echo "\n"; - //get the conference room count - $conference_center = new conference_centers; - $conference_center->db = $db; - $conference_center->domain_uuid = $_SESSION['domain_uuid']; - if (strlen($meeting_uuid) > 0) { - $conference_center->meeting_uuid = $meeting_uuid; - } - if (strlen($search) > 0) { - $conference_center->search = $search; - } - $row_count = $conference_center->room_count(); + echo $text['title_description-conference_rooms']."\n"; + echo "

\n"; - //prepare to page the results - $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ''; - if (isset($_GET['page'])) { - $page = $_GET['page']; - if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var3) = paging($row_count, $param, $rows_per_page); - $offset = $rows_per_page * $page; - } + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; - //get the conference rooms - $conference_center->rows_per_page = $rows_per_page; - $conference_center->offset = $offset; - $conference_center->order_by = $order_by; - $conference_center->order = $order; - if (strlen($meeting_uuid) > 0) { - $conference_center->meeting_uuid = $meeting_uuid; - } - if (strlen($search) > 0) { - $conference_center->search = $search; - } - $result = $conference_center->rooms(); - - //prepare to alternate the row styles - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; - - //table header - echo "\n"; - echo "\n"; - //echo th_order_by('conference_center_uuid', 'Conference UUID', $order_by, $order); - //echo th_order_by('meeting_uuid', 'Meeting UUID', $order_by, $order); - echo "\n"; - echo "\n"; - echo "\n"; - //echo th_order_by('profile', $text['label-profile'], $order_by, $order); - echo th_order_by('record', $text['label-record'], $order_by, $order); - //echo th_order_by('max_members', 'Max', $order_by, $order); - echo th_order_by('wait_mod', $text['label-wait_moderator'], $order_by, $order); - echo th_order_by('announce', $text['label-announce'], $order_by, $order); - //echo th_order_by('enter_sound', 'Enter Sound', $order_by, $order); - echo th_order_by('mute', $text['label-mute'], $order_by, $order); - echo th_order_by('sounds', $text['label-sounds'], $order_by, $order); - echo "\n"; - echo "\n"; - if (permission_exists('conference_room_enabled')) { - echo th_order_by('enabled', $text['label-enabled'], $order_by, $order); - } - echo th_order_by('description', $text['label-description'], $order_by, $order); - echo "\n"; - echo "\n"; + echo "
".$text['label-name']."".$text['label-moderator-pin']."".$text['label-participant-pin']."".$text['label-members']."".$text['label-tools']."\n"; - if (permission_exists('conference_room_add')) { - echo " $v_link_label_add\n"; - } - else { - echo "  \n"; - } - echo "
\n"; + echo "\n"; + if (permission_exists('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) { + echo " \n"; + } + //echo th_order_by('conference_center_uuid', 'Conference UUID', $order_by, $order); + //echo th_order_by('meeting_uuid', 'Meeting UUID', $order_by, $order); + echo "\n"; + echo "\n"; + echo "\n"; + //echo th_order_by('profile', $text['label-profile'], $order_by, $order); + echo th_order_by('record', $text['label-record'], $order_by, $order, null, "class='center'"); + //echo th_order_by('max_members', 'Max', $order_by, $order); + echo th_order_by('wait_mod', $text['label-wait_moderator'], $order_by, $order, null, "class='center'"); + echo th_order_by('announce', $text['label-announce'], $order_by, $order, null, "class='center'"); + //echo th_order_by('enter_sound', 'Enter Sound', $order_by, $order); + echo th_order_by('mute', $text['label-mute'], $order_by, $order, null, "class='center'"); + echo th_order_by('sounds', $text['label-sounds'], $order_by, $order, null, "class='center'"); + echo "\n"; + echo "\n"; + if (permission_exists('conference_room_enabled')) { + echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); + } + echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); + if (permission_exists('conference_room_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; //show the data if (is_array($result) > 0) { - foreach($result as $row) { + $x = 0; + foreach ($result as $row) { $meeting_uuid = $row['meeting_uuid']; $conference_room_name = $row['conference_room_name']; $moderator_pin = $row['moderator_pin']; @@ -256,127 +326,165 @@ $participant_pin = substr($participant_pin, 0, 3) ."-". substr($participant_pin, 3, 3) ."-". substr($participant_pin, -3)."\n"; } - $tr_link = (permission_exists('conference_room_edit')) ? "href='conference_room_edit.php?id=".escape($row['conference_room_uuid'])."'" : null; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; + if (permission_exists('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) { + echo " \n"; } - echo "  \n"; - echo " \n"; - //echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; - echo " \n"; +// echo " \n"; + //echo " \n"; - echo " \n"; +// echo " \n"; + + if (permission_exists('conference_room_edit')) { + echo " \n"; +// echo " \n"; + + if (permission_exists('conference_room_edit')) { + echo " \n"; +// echo " \n"; + + if (permission_exists('conference_room_edit')) { + echo " \n"; +// echo " \n"; if (strlen($conference[$meeting_uuid]["session_uuid"])) { - echo " \n"; + echo " \n"; } else { - echo " \n"; + echo " \n"; } - echo " \n"; if (permission_exists('conference_room_enabled')) { - echo " \n"; +// echo " \n"; + } + + echo " \n"; + if (permission_exists('conference_room_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; } - - echo " \n"; - - echo " \n"; - echo "\n"; - if ($c==0) { $c=1; } else { $c=0; } - } //end foreach - unset($sql, $result, $row_count); - } //end if results - -//show paging - echo "\n"; - echo "\n"; - echo "\n"; -//close the tables - echo "
\n"; + echo " \n"; + echo " ".$text['label-name']."".$text['label-moderator-pin']."".$text['label-participant-pin']."".$text['label-members']."".$text['label-tools']." 
".(($conference_room_name != '') ? "".escape($conference_room_name)."" : " ")."".$moderator_pin."".$participant_pin."".escape($row['conference_center_uuid'])." ".escape($row['meeting_uuid'])." ".escape($row['profile'])." "; - if ($row['record'] == "true") { - echo " ".$text['label-true'].""; + if (permission_exists('conference_room_edit')) { + $list_row_url = "conference_room_edit.php?id=".urlencode($row['conference_room_uuid']); } - else { - echo " ".$text['label-false'].""; + echo "
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " ".$row['max_members']." "; - if ($row['wait_mod'] == "true") { - echo " ".$text['label-true'].""; - } - else { - echo " ".$text['label-false'].""; - } - echo "  \n"; - echo " "; - if ($row['announce'] == "true") { - echo " ".$text['label-true'].""; - } - else { - echo " ".$text['label-false'].""; - } - echo "  \n"; - echo " ".escape($conference_room_name)." ".$moderator_pin."".$participant_pin."".escape($row['conference_center_uuid'])." ".escape($row['meeting_uuid'])." ".escape($row['profile'])." "; - if ($row['mute'] == "true") { - echo " ".$text['label-true']." "; + if (permission_exists('conference_room_edit')) { + echo " \n"; + echo $text['label-'.($row['record'] == "true" ? 'true' : 'false')]; } echo " "; +// if ($row['record'] == "true") { +// echo "".$text['label-true'].""; +// } +// else { +// echo "".$text['label-false'].""; +// } +// echo " ".$row['max_members']." "; - if ($row['sounds'] == "true") { - echo " ".$text['label-true'].""; + if (permission_exists('conference_room_edit')) { + echo " \n"; + echo $text['label-'.($row['wait_mod'] == "true" ? 'true' : 'false')]; } - echo "  \n"; echo " "; +// if ($row['wait_mod'] == "true") { +// echo "".$text['label-true'].""; +// } +// else { +// echo "".$text['label-false'].""; +// } +// echo " \n"; + echo $text['label-'.($row['announce'] == "true" ? 'true' : 'false')]; + } + echo " "; +// if ($row['announce'] == "true") { +// echo "".$text['label-true'].""; +// } +// else { +// echo "".$text['label-false'].""; +// } +// echo " \n"; + echo $text['label-'.($row['mute'] == "true" ? 'true' : 'false')]; + } + echo " "; +// if ($row['mute'] == "true") { +// echo "".$text['label-true']." "; +// } +// else { +// echo "".$text['label-false']." "; +// } +// echo " \n"; + echo $text['label-'.($row['sounds'] == "true" ? 'true' : 'false')]; + } + echo " "; +// if ($row['sounds'] == "true") { +// echo "".$text['label-true'].""; +// } +// else { +// echo "".$text['label-false'].""; +// } +// echo " ".escape($conference[$meeting_uuid]["member_count"])." ".escape($conference[$meeting_uuid]["member_count"])." 00\n"; - echo " ".$text['label-view']." \n"; - echo " ".$text['label-sessions']."\n"; + echo " \n"; + echo " ".$text['label-view']." \n"; + echo " ".$text['label-sessions']."\n"; echo " "; - if ($row['enabled'] == "true") { - echo " ".$text['label-true'].""; + if (permission_exists('conference_room_edit')) { + echo " \n"; + echo $text['label-'.($row['enabled'] == "true" ? 'true' : 'false')]; } - echo "  \n"; + echo " "; +// if ($row['enabled'] == "true") { +// echo "".$text['label-true'].""; +// } +// else { +// echo "".$text['label-false'].""; +// } +// echo " ".escape($row['description'])."\n"; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " "; - echo " ".escape($row['description'])."\n"; - echo "  \n"; - echo " "; - if (permission_exists('conference_room_edit')) { - echo "$v_link_label_edit"; - } - if (permission_exists('conference_room_delete')) { - echo "$v_link_label_delete"; - } - echo "
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
 $paging_controls"; - if (permission_exists('conference_room_add')) { - echo "$v_link_label_add"; + $x++; + } + unset($result); } - echo "
\n"; - echo "
"; - echo "

"; + echo "\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; + echo "\n"; + echo "
\n"; //include the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/conference_centers/resources/classes/conference_centers.php b/app/conference_centers/resources/classes/conference_centers.php index f9a10afa46..34b413295f 100644 --- a/app/conference_centers/resources/classes/conference_centers.php +++ b/app/conference_centers/resources/classes/conference_centers.php @@ -30,19 +30,33 @@ if (!class_exists('conference_centers')) { class conference_centers { /** - * define the variables - */ + * declare public variables + */ public $domain_uuid; public $meeting_uuid; public $order_by; public $order; public $rows_per_page; public $offset; - private $fields; public $search; public $count; public $created_by; + public $toggle_field; + + /** + * declare private variables + */ + private $fields; + + private $app_name; + private $app_uuid; + private $permission_prefix; + private $list_page; + private $table; + private $uuid_prefix; + private $toggle_values; + /** * declare private variables */ @@ -63,10 +77,8 @@ if (!class_exists('conference_centers')) { public function __construct() { //assign private variables - /* $this->app_name = 'conference_centers'; $this->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e'; - */ } @@ -391,6 +403,74 @@ if (!class_exists('conference_centers')) { } */ + public function delete_conference_rooms($records) { + + //assign private variables + $this->permission_prefix = 'conference_room_'; + $this->list_page = 'conference_rooms.php'; + $this->table = 'conference_rooms'; + $this->uuid_prefix = 'conference_room_'; + + if (permission_exists($this->permission_prefix.'delete')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //delete multiple records + if (is_array($records) && @sizeof($records) != 0) { + + //build the delete array + foreach ($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + + //create array + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + if (is_uuid($record['meeting_uuid'])) { + $array['meeting_users'][$x]['meeting_uuid'] = $record['meeting_uuid']; + $array['meeting_users'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['meetings'][$x]['meeting_uuid'] = $record['meeting_uuid']; + $array['meetings'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + } + } + } + + //delete the checked rows + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('meeting_user_delete', 'temp'); + $p->add('meeting_delete', 'temp'); + + //execute delete + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->delete($array); + unset($array); + + //revoke temporary permissions + $p->delete('meeting_user_delete', 'temp'); + $p->delete('meeting_delete', 'temp'); + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + /** * toggle records */ @@ -492,6 +572,114 @@ if (!class_exists('conference_centers')) { } */ + public function toggle_conference_rooms($records) { + + //assign private variables + $this->permission_prefix = 'conference_room_'; + $this->list_page = 'conference_rooms.php'; + $this->table = 'conference_rooms'; + $this->uuid_prefix = 'conference_room_'; + $this->toggle_values = ['true','false']; + + if (permission_exists($this->permission_prefix.'edit')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //toggle the checked records + if (is_array($records) && @sizeof($records) != 0) { + + //validate submitted toggle field + if (!in_array($this->toggle_field, ['record','wait_mod','announce','mute','sounds','enabled'])) { + header('Location: '.$this->list_page); + exit; + } + + //get current toggle state + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $uuids[$x] = "'".$record['uuid']."'"; + if (($this->toggle_field == 'record' || $this->toggle_field == 'enabled') && is_uuid($record['meeting_uuid'])) { + $meeting_uuid[$record['uuid']] = $record['meeting_uuid']; + } + } + } + if (is_array($uuids) && @sizeof($uuids) != 0) { + $sql = "select ".$this->uuid_prefix."uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." "; + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; + $sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $database = new database; + $rows = $database->select($sql, $parameters, 'all'); + if (is_array($rows) && @sizeof($rows) != 0) { + foreach ($rows as $row) { + $states[$row['uuid']] = $row['toggle']; + } + } + unset($sql, $parameters, $rows, $row); + } + + //build update array + $x = 0; + foreach ($states as $uuid => $state) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid; + $array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0]; + if ($this->toggle_field == 'enabled' && is_uuid($meeting_uuid[$uuid])) { + $array['meetings'][$x]['meeting_uuid'] = $meeting_uuid[$uuid]; + $array['meetings'][$x]['enabled'] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0]; + } +/* + //if toggling to true, start recording + if ($this->toggle_field == 'record' && is_uuid($meeting_uuid[$uuid]) && $state == $this->toggle_values[1]) { + //prepare the values and commands + $default_language = 'en'; + $default_dialect = 'us'; + $default_voice = 'callie'; +// $recording_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.date("Y").'/'.date("M").'/'.date("d"); +// $switch_cmd_record = "conference ".$meeting_uuid[$uuid]."@".$_SESSION['domain_name']." record ".$recording_dir.'/'.$meeting_uuid[$uuid].'.wav'; + $switch_cmd_notice = "conference ".$meeting_uuid[$uuid]."@".$_SESSION['domain_name']." play ".$_SESSION['switch']['sounds']['dir']."/".$default_language."/".$default_dialect."/".$default_voice."/ivr/ivr-recording_started.wav"; + //execute api commands +// if (!file_exists($recording_dir.'/'.$meeting_uuid[$uuid].'.wav')) { + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { +// $switch_result = event_socket_request($fp, 'api '.$switch_cmd_record); + $switch_result = event_socket_request($fp, 'api '.$switch_cmd_notice); + } +// } + } +*/ + $x++; + } + + //save the changes + if (is_array($array) && @sizeof($array) != 0) { + + //save the array + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->save($array); + unset($array); + + //set message + message::add($text['message-toggle']); + + } + unset($records, $states, $state); + } + + } + } + /** * copy records */