diff --git a/app/bridges/resources/classes/bridges.php b/app/bridges/resources/classes/bridges.php index 8fd620b4c1..08844252b9 100644 --- a/app/bridges/resources/classes/bridges.php +++ b/app/bridges/resources/classes/bridges.php @@ -1,10 +1,30 @@ + Portions created by the Initial Developer are Copyright (C) 2008-2019 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//define the bridges class if (!class_exists('bridges')) { class bridges { diff --git a/app/call_centers/resources/classes/call_center.php b/app/call_centers/resources/classes/call_center.php index 082fc39dce..e03eb5b005 100644 --- a/app/call_centers/resources/classes/call_center.php +++ b/app/call_centers/resources/classes/call_center.php @@ -52,7 +52,6 @@ private $list_page; private $table; private $uuid_prefix; - private $enabled_prefix; /** * Called when the object is created diff --git a/app/calls/resources/classes/call_forward.php b/app/calls/resources/classes/call_forward.php index ba6402d56a..f04485f3e0 100644 --- a/app/calls/resources/classes/call_forward.php +++ b/app/calls/resources/classes/call_forward.php @@ -217,7 +217,7 @@ include "root.php"; message::add($text['message-toggle']); } - unset($records, $states); + unset($records, $extensions, $extension); } } diff --git a/app/calls/resources/classes/do_not_disturb.php b/app/calls/resources/classes/do_not_disturb.php index 2233955372..dbf5b947e3 100644 --- a/app/calls/resources/classes/do_not_disturb.php +++ b/app/calls/resources/classes/do_not_disturb.php @@ -231,7 +231,7 @@ include "root.php"; message::add($text['message-toggle']); } - unset($records, $states); + unset($records, $extensions, $extension); } } diff --git a/app/calls/resources/classes/follow_me.php b/app/calls/resources/classes/follow_me.php index 0f7a0b890d..a0eba6d852 100644 --- a/app/calls/resources/classes/follow_me.php +++ b/app/calls/resources/classes/follow_me.php @@ -395,7 +395,7 @@ include "root.php"; message::add($text['message-toggle']); } - unset($records, $states); + unset($records, $extensions, $extension); } } diff --git a/app/conference_centers/conference_centers.php b/app/conference_centers/conference_centers.php index ed793ed8ad..4d83189756 100644 --- a/app/conference_centers/conference_centers.php +++ b/app/conference_centers/conference_centers.php @@ -27,9 +27,10 @@ //includes require_once "root.php"; require_once "resources/require.php"; + require_once "resources/check_auth.php"; + require_once "resources/paging.php"; //check permissions - require_once "resources/check_auth.php"; if (permission_exists('conference_center_view')) { //access granted } @@ -42,6 +43,51 @@ $language = new text; $text = $language->get(); +//get posted data + if (is_array($_POST['conference_centers'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $conference_centers = $_POST['conference_centers']; + } + +/* +//copy the conference centers + if (permission_exists('conference_center_add')) { + if ($action == 'copy' && is_array($conference_centers) && @sizeof($conference_centers) != 0) { + //copy + $obj = new conference_centers; + $obj->copy_conference_centers($conference_centers); + //redirect + header('Location: conference_centers.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } + +//toggle the conference centers + if (permission_exists('conference_center_edit')) { + if ($action == 'toggle' && is_array($conference_centers) && @sizeof($conference_centers) != 0) { + //toggle + $obj = new conference_centers; + $obj->toggle_conference_centers($conference_centers); + //redirect + header('Location: conference_centers.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } + +//delete the conference centers + if (permission_exists('conference_center_delete')) { + if ($action == 'delete' && is_array($conference_centers) && @sizeof($conference_centers) != 0) { + //delete + $obj = new conference_centers; + $obj->delete_conference_centers($conference_centers); + //redirect + header('Location: conference_centers.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } +*/ + //get variables used to control the order $order_by = $_GET["order_by"]; $order = $_GET["order"]; @@ -58,130 +104,142 @@ $parameters['search'] = '%'.$search.'%'; } -//additional includes - require_once "resources/header.php"; - require_once "resources/paging.php"; - //prepare to page the results - $sql = "select count(conference_center_uuid) from v_conference_centers "; + $sql = "select count(*) from v_conference_centers "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= $sql_search; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); - unset($sql); //prepare to page the results $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ''; + $param = "&search=".$search; $page = $_GET['page']; if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page); + 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 list - $sql = "select * from v_conference_centers "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= $sql_search; + $sql = str_replace('count(*)', '*', $sql); $sql .= order_by($order_by, $order); $sql .= limit_offset($rows_per_page, $offset); $database = new database; - $result = $database->select($sql, $parameters, 'all'); + $conference_centers = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); -//alternate the row style - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//include the header + require_once "resources/header.php"; //show the content - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + /* + if (permission_exists('conference_center_add') && $conference_centers) { + echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'onclick'=>"if (confirm('".$text['confirm-copy']."')) { list_action_set('copy'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + if (permission_exists('conference_center_edit') && $conference_centers) { + echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'onclick'=>"if (confirm('".$text['confirm-toggle']."')) { list_action_set('toggle'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + if (permission_exists('conference_center_delete') && $conference_centers) { + 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'=>'conference_centers.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo " ".$paging_controls_mini.""; + } + echo ""; + if (permission_exists('conference_active_advanced_view')) { + echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>'bolt','link'=>PROJECT_PATH.'/app/conferences_active/conferences_active.php']); + } + echo button::create(['type'=>'button','label'=>$text['button-rooms'],'icon'=>'door-open','link'=>'conference_rooms.php']); + echo "\n"; echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
".$text['title-conference_centers']."
\n"; - echo " \n"; - echo " \n"; - if (permission_exists('conference_active_advanced_view')) { - echo " \n"; + echo "
\n"; + echo "
".$text['title-conference_centers']." (".$num_rows.")
\n"; + echo "
\n"; + if (permission_exists('conference_center_add')) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'conference_center_edit.php']); } - echo " \n"; - echo "
\n"; - echo " ".$text['title_description-conference_centers']."

\n"; - echo "
\n"; + echo " \n"; + echo "
\n"; + echo "\n"; - echo "\n"; - echo "\n"; + echo $text['title_description-conference_centers']."\n"; + echo "

\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + /* + if (permission_exists('conference_center_add') || permission_exists('conference_center_edit') || permission_exists('conference_center_delete')) { + echo " \n"; + } + */ echo th_order_by('conference_center_name', $text['label-conference_center_name'], $order_by, $order); echo th_order_by('conference_center_extension', $text['label-conference_center_extension'], $order_by, $order); echo th_order_by('conference_center_greeting', $text['label-conference_center_greeting'], $order_by, $order); echo th_order_by('conference_center_pin_length', $text['label-conference_center_pin_length'], $order_by, $order); echo th_order_by('conference_center_enabled', $text['label-conference_center_enabled'], $order_by, $order); - echo th_order_by('conference_center_description', $text['label-conference_center_description'], $order_by, $order); - echo "\n"; } - else { - echo " \n"; - } - echo "\n"; - echo "\n"; - - if (is_array($result) && sizeof($result) != 0) { - foreach($result as $row) { - if (permission_exists('conference_center_edit')) { - $tr_link = "href='conference_center_edit.php?id=".$row['conference_center_uuid']."'"; - } - echo "\n"; - echo " \n"; - echo " \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); - } //end if results - - echo "\n"; - echo "\n"; echo "\n"; - echo "
\n"; + echo " \n"; + echo " "; - if (permission_exists('conference_center_add')) { - echo "$v_link_label_add"; + echo th_order_by('conference_center_description', $text['label-conference_center_description'], $order_by, $order, null, "class='hide-sm-dn'"); + if (permission_exists('conference_center_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo "  
".escape($row['conference_center_name'])." ".escape($row['conference_center_extension'])." ".escape($row['conference_center_greeting'])." ".escape($row['conference_center_pin_length'])." ".escape($row['conference_center_enabled'])." ".escape($row['conference_center_description'])." "; - if (permission_exists('conference_center_edit')) { - echo "$v_link_label_edit"; - } - if (permission_exists('conference_center_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_center_add')) { - echo "$v_link_label_add"; - } - else { - echo " "; - } - echo "
\n"; - echo "
"; - echo "

"; + + if (is_array($conference_centers) && @sizeof($conference_centers) != 0) { + $x = 0; + foreach($conference_centers as $row) { + if (permission_exists('conference_center_edit')) { + $list_row_url = "conference_center_edit.php?id=".$row['conference_center_uuid']; + } + echo "\n"; + /* + if (permission_exists('conference_center_add') || permission_exists('conference_center_edit') || permission_exists('conference_center_delete')) { + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + } + */ + echo " ".escape($row['conference_center_name'])." \n"; + echo " ".escape($row['conference_center_extension'])." \n"; + echo " ".escape($row['conference_center_greeting'])." \n"; + echo " ".escape($row['conference_center_pin_length'])." \n"; + echo " ".$text['label-'.$row['conference_center_enabled']]." \n"; + echo " ".escape($row['conference_center_description'])." \n"; + if (permission_exists('conference_center_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " "; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo " \n"; + } + echo "\n"; + $x++; + } + unset($conference_centers); + } + + 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 e8d0751608..5a97fddb95 100644 --- a/app/conference_centers/resources/classes/conference_centers.php +++ b/app/conference_centers/resources/classes/conference_centers.php @@ -1,33 +1,37 @@ - Portions created by the Initial Developer are Copyright (C) 2008-2018 - the Initial Developer. All Rights Reserved. +The Initial Developer of the Original Code is +Mark J Crane +Portions created by the Initial Developer are Copyright (C) 2008-2019 +the Initial Developer. All Rights Reserved. - Contributor(s): - Mark J Crane - Luis Daniel Lucio Quiroz +Contributor(s): +Mark J Crane +Luis Daniel Lucio Quiroz */ -//define the conference center class +//define the conference centers class +if (!class_exists('conference_centers')) { class conference_centers { + /** + * define the variables + */ public $domain_uuid; public $meeting_uuid; public $order_by; @@ -39,11 +43,31 @@ public $count; public $created_by; + /** + * declare private variables + */ + /* + private $app_name; + private $app_uuid; + private $permission_prefix; + private $list_page; + private $table; + private $uuid_prefix; + private $toggle_field; + private $toggle_values; + */ + /** * Called when the object is created */ public function __construct() { + //assign private variables + /* + $this->app_name = 'conference_centers'; + $this->app_uuid = '8d083f5a-f726-42a8-9ffa-8d28f848f10e'; + */ + } /** @@ -276,7 +300,281 @@ } } //end download method - } + /** + * delete records + */ + /* + public function delete_conference_centers($records) { + + //assign private variables + $this->permission_prefix = 'conference_center_'; + $this->list_page = 'conference_centers.php'; + $this->table = 'conference_centers'; + $this->uuid_prefix = 'conference_center_'; + + 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'])) { + + //get the dialplan uuid + $sql = "select dialplan_uuid from v_conference_centers "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and conference_center_uuid = :conference_center_uuid "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $parameters['conference_center_uuid'] = $conference_center_uuid; + $database = new database; + $dialplan_uuid = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + + //create array + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['dialplan_details'][$x]['dialplan_uuid'] = $dialplan_uuid; + $array['dialplan_details'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['dialplans'][$x]['dialplan_uuid'] = $dialplan_uuid; + $array['dialplans'][$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('dialplan_detail_delete', 'temp'); + $p->add('dialplan_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('dialplan_detail_delete', 'temp'); + $p->delete('dialplan_delete', 'temp'); + + //clear the cache + $cache = new cache; + $cache->delete("dialplan:".$_SESSION["context"]); + + //syncrhonize configuration + save_dialplan_xml(); + + //apply settings reminder + $_SESSION["reload_xml"] = true; + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + */ + + /** + * toggle records + */ + /* + public function toggle_conference_centers($records) { + + //assign private variables + $this->permission_prefix = 'conference_center_'; + $this->list_page = 'conference_centers.php'; + $this->table = 'conference_centers'; + $this->uuid_prefix = 'conference_center_'; + $this->toggle_field = 'conference_center_enabled'; + $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) { + + //get current toggle state + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'"; + } + } + if (is_array($record_uuids) && @sizeof($record_uuids) != 0) { + $sql = "select ".$this->uuid_prefix."uuid as uuid, ".$this->toggle_field." as toggle, dialplan_uuid from v_".$this->table." "; + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; + $sql .= "and ( ".implode(' or ', $record_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) { + $conference_centers[$row['uuid']]['state'] = $row['toggle']; + $conference_centers[$row['uuid']]['dialplan_uuid'] = $row['dialplan_uuid']; + } + } + unset($sql, $parameters, $rows, $row); + } + + //build update array + $x = 0; + foreach($conference_centers as $uuid => $conference_center) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid; + $array[$this->table][$x][$this->toggle_field] = $conference_center['state'] == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0]; + $array['dialplans'][$x]['dialplan_uuid'] = $conference_center['dialplan_uuid']; + $array['dialplans'][$x]['dialplan_enabled'] = $conference_center['state'] == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0]; + $x++; + } + + //save the changes + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add("dialplan_edit", "temp"); + + //save the array + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->save($array); + unset($array); + + //revoke temporary permissions + $p->delete("dialplan_edit", "temp"); + + //syncrhonize configuration + save_dialplan_xml(); + + //apply settings reminder + $_SESSION["reload_xml"] = true; + + //clear the cache + $cache = new cache; + $cache->delete("dialplan:".$_SESSION["context"]); + + //set message + message::add($text['message-toggle']); + + } + unset($records, $conference_centers, $conference_center); + } + + } + } + */ + + /** + * copy records + */ + /* + public function copy_conference_centers($records) { + + //assign private variables + $this->permission_prefix = 'conference_center_'; + $this->list_page = 'conference_centers.php'; + $this->table = 'conference_centers'; + $this->uuid_prefix = 'conference_center_'; + + if (permission_exists($this->permission_prefix.'add')) { + + //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; + } + + //copy the checked records + if (is_array($records) && @sizeof($records) != 0) { + + //get checked records + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'"; + } + } + + //create insert array from existing data + if (is_array($record_uuids) && @sizeof($record_uuids) != 0) { + $sql = "select * from v_".$this->table." "; + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; + $sql .= "and ( ".implode(' or ', $record_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 $x => $row) { + + //copy data + $array[$this->table][$x] = $row; + + //overwrite + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = uuid(); + $array[$this->table][$x]['_description'] = trim($row['_description'].' ('.$text['label-copy'].')'); + + } + } + unset($sql, $parameters, $rows, $row); + } + + //save the changes and set the message + 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-copy']); + + } + unset($records); + } + + } + } + */ + + + } //class +} //example conference center /* diff --git a/themes/default/css.php b/themes/default/css.php index c52d6ad0c7..3a56841046 100644 --- a/themes/default/css.php +++ b/themes/default/css.php @@ -2321,3 +2321,9 @@ $default_login = ($_REQUEST['login'] == 'default') ? true : false; .list-row > .no-wrap { white-space: nowrap; } + +/* MODAL ************************************************************************/ + + div.modal-footer { + justify-content: space-between; + }