From 8bd59ccbf7ab58c8366d956a95cd93cab1d8b57d Mon Sep 17 00:00:00 2001 From: Nate Date: Sat, 30 Nov 2019 09:09:43 -0700 Subject: [PATCH] Ring Groups: List view updates. --- app/ring_groups/app_languages.php | 20 ++ .../resources/classes/ring_groups.php | 328 ++++++++++++++++++ app/ring_groups/ring_groups.php | 294 ++++++++-------- 3 files changed, 506 insertions(+), 136 deletions(-) create mode 100644 app/ring_groups/resources/classes/ring_groups.php diff --git a/app/ring_groups/app_languages.php b/app/ring_groups/app_languages.php index 7d7e66a759..650fc8a3bf 100644 --- a/app/ring_groups/app_languages.php +++ b/app/ring_groups/app_languages.php @@ -1021,6 +1021,26 @@ $text['label-call-forward']['ru-ru'] = "Переадресация вызова" $text['label-call-forward']['sv-se'] = "Vidarekoppling"; $text['label-call-forward']['uk-ua'] = "Переадресація"; +$text['label-forwarding']['en-us'] = "Forwarding"; +$text['label-forwarding']['ar-eg'] = "تحويل"; +$text['label-forwarding']['de-at'] = "Weiterleiten"; //copied from de-de +$text['label-forwarding']['de-ch'] = "Weiterleiten"; //copied from de-de +$text['label-forwarding']['de-de'] = "Weiterleiten"; +$text['label-forwarding']['es-cl'] = "Adelante"; +$text['label-forwarding']['es-mx'] = "Adelante"; //copied from es-cl +$text['label-forwarding']['fr-ca'] = "Avant"; //copied from fr-fr +$text['label-forwarding']['fr-fr'] = "Avant"; +$text['label-forwarding']['he-il'] = "העבר"; +$text['label-forwarding']['it-it'] = "Inoltra"; +$text['label-forwarding']['nl-nl'] = "Doorsturen"; +$text['label-forwarding']['pl-pl'] = "Przekierowanie"; +$text['label-forwarding']['pt-br'] = "Encaminhar"; //copied from pt-pt +$text['label-forwarding']['pt-pt'] = "Encaminhar"; +$text['label-forwarding']['ro-ro'] = ""; +$text['label-forwarding']['ru-ru'] = "Переадресация"; +$text['label-forwarding']['sv-se'] = "Vidarekoppla"; +$text['label-forwarding']['uk-ua'] = ""; + $text['header-ring-group-forward']['en-us'] = "Ring Group Forward"; $text['header-ring-group-forward']['ar-eg'] = ""; $text['header-ring-group-forward']['de-at'] = "Rufgruppe weiterleiten"; //copied from de-de diff --git a/app/ring_groups/resources/classes/ring_groups.php b/app/ring_groups/resources/classes/ring_groups.php new file mode 100644 index 0000000000..631f604eb0 --- /dev/null +++ b/app/ring_groups/resources/classes/ring_groups.php @@ -0,0 +1,328 @@ + + Portions created by the Initial Developer are Copyright (C) 2010-2019 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//define the ring groups class +if (!class_exists('ring_groups')) { + class ring_groups { + + /** + * 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 = 'ring_groups'; + $this->app_uuid = '1d61fb65-1eec-bc73-a6ee-a6203b4fe6f2'; + $this->permission_prefix = 'ring_group_'; + $this->list_page = 'ring_groups.php'; + $this->table = 'ring_groups'; + $this->uuid_prefix = 'ring_group_'; + $this->toggle_field = 'ring_group_enabled'; + $this->toggle_values = ['true','false']; + + } + + /** + * called when there are no references to a particular object + * unset the variables used in the class + */ + public function __destruct() { + foreach ($this as $key => $value) { + unset($this->$key); + } + } + + /** + * delete records + */ + public function delete($records) { + 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'])) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['ring_group_users'][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array['ring_group_users'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['ring_group_destinations'][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array['ring_group_destinations'][$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('ring_group_user_delete', 'temp'); + $p->add('ring_group_destination_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('ring_group_user_delete', 'temp'); + $p->delete('ring_group_destination_delete', 'temp'); + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + + /** + * toggle records + */ + public function toggle($records) { + 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 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) { + $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]; + $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); + } + + } + } + + /** + * copy records + */ + public function copy($records) { + 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) { + $y = $z = 0; + foreach ($rows as $x => $row) { + $primary_uuid = uuid(); + + //copy data + $array[$this->table][$x] = $row; + + //overwrite + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid; + $array[$this->table][$x]['ring_group_description'] = trim($row['ring_group_description'].' ('.$text['label-copy'].')'); + + //users sub table + $sql_2 = "select * from v_ring_group_users where ring_group_uuid = :ring_group_uuid"; + $parameters_2['ring_group_uuid'] = $row['ring_group_uuid']; + $database = new database; + $rows_2 = $database->select($sql_2, $parameters_2, 'all'); + if (is_array($rows_2) && @sizeof($rows_2) != 0) { + foreach ($rows_2 as $row_2) { + + //copy data + $array['ring_group_users'][$y] = $row_2; + + //overwrite + $array['ring_group_users'][$y]['ring_group_user_uuid'] = uuid(); + $array['ring_group_users'][$y]['ring_group_uuid'] = $primary_uuid; + + //increment + $y++; + + } + } + unset($sql_2, $parameters_2, $rows_2, $row_2); + + //destinations sub table + $sql_3 = "select * from v_ring_group_destinations where ring_group_uuid = :ring_group_uuid"; + $parameters_3['ring_group_uuid'] = $row['ring_group_uuid']; + $database = new database; + $rows_3 = $database->select($sql_3, $parameters_3, 'all'); + if (is_array($rows_3) && @sizeof($rows_3) != 0) { + foreach ($rows_3 as $row_3) { + + //copy data + $array['ring_group_destinations'][$z] = $row_3; + + //overwrite + $array['ring_group_destinations'][$z]['ring_group_destination_uuid'] = uuid(); + $array['ring_group_destinations'][$z]['ring_group_uuid'] = $primary_uuid; + + //increment + $z++; + + } + } + unset($sql_3, $parameters_3, $rows_3, $row_3); + + } + } + unset($sql, $parameters, $rows, $row); + } + + //save the changes and set the message + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('ring_group_user_add', 'temp'); + $p->add('ring_group_destination_add', '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('ring_group_user_add', 'temp'); + $p->delete('ring_group_destination_add', 'temp'); + + //set message + message::add($text['message-copy']); + + } + unset($records); + } + + } + } + + } +} + +?> \ No newline at end of file diff --git a/app/ring_groups/ring_groups.php b/app/ring_groups/ring_groups.php index 1a5e113640..e868df21d9 100644 --- a/app/ring_groups/ring_groups.php +++ b/app/ring_groups/ring_groups.php @@ -29,6 +29,7 @@ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; + require_once "resources/paging.php"; //check permissions if (permission_exists('ring_group_view')) { @@ -43,124 +44,145 @@ $language = new text; $text = $language->get(); -//additional includes - require_once "resources/header.php"; - require_once "resources/paging.php"; +//get posted data + if (is_array($_POST['ring_groups'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $ring_groups = $_POST['ring_groups']; + } -//get variables used to control the order +//process posted data by action + if ($action != '' && is_array($ring_groups) && @sizeof($ring_groups) != 0) { + $obj = new ring_groups; + + switch ($action) { + case 'copy': + $obj->copy($ring_groups); + break; + + case 'toggle': + $obj->toggle($ring_groups); + break; + + case 'delete': + $obj->delete($ring_groups); + break; + } + + header('Location: ring_groups.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + +//get order and order by $order_by = $_GET["order_by"]; $order = $_GET["order"]; //add the search term $search = strtolower($_GET["search"]); - -//show the content - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
".$text['title-ring_groups']."
\n"; - if (permission_exists('ring_group_all')) { - if ($_GET['show'] == 'all') { - echo " "; - } - else { - echo " \n"; - } + if (strlen($search) > 0) { + $sql_search = "and ("; + $sql_search .= "lower(ring_group_name) like :search "; + $sql_search .= "or lower(ring_group_extension) like :search "; + $sql_search .= "or lower(ring_group_description) like :search "; + $sql_search .= "or lower(ring_group_enabled) like :search "; + $sql_search .= "or lower(ring_group_strategy) like :search "; + $sql_search .= ") "; + $parameters['search'] = '%'.$search.'%'; } - echo " \n"; - echo " \n"; - echo "
\n"; - echo " ".$text['description']."

\n"; - echo "
\n"; -//get total ring group count +//get total domain ring group count $sql = "select count(*) from v_ring_groups "; $sql .= "where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $total_ring_groups = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); + $num_rows = $total_ring_groups; //get filtered ring group count - $sql = "select count(*) from v_ring_groups "; - if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { - //$sql .= "where true "; + if ($search) { + $sql = "select count(*) from v_ring_groups where true "; + if (!$_GET['show'] == "all" || permission_exists('ring_group_all')) { + $sql .= "and domain_uuid = :domain_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + } + $sql .= $sql_search; + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); } - else { - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_uuid'] = $domain_uuid; - } - if (strlen($search) > 0) { - $sql .= "and ("; - $sql .= "lower(ring_group_name) like :search "; - $sql .= "or lower(ring_group_extension) like :search "; - $sql .= "or lower(ring_group_description) like :search "; - $sql .= "or lower(ring_group_enabled) like :search "; - $sql .= "or lower(ring_group_strategy) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; - } - $database = new database; - $num_rows = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); //prepare to page the results $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $page = $_GET['page']; - $param = "&search=".escape($search); - if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { - $param .= "&show=all"; - } - if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page); + $param = $search ? "&search=".$search : null; + $param = ($_GET['show'] == "all" && permission_exists('ring_group_all')) ? "&show=all" : null; + $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 list - $sql = "select * from v_ring_groups as r, v_domains as d "; - $sql .= "where r.domain_uuid = d.domain_uuid "; - if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { - $sql .= "and true "; - } - else { - $sql .= "and r.domain_uuid = :domain_uuid "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - } - if (strlen($search) > 0) { - $sql .= "and ("; - $sql .= "lower(ring_group_name) like :search "; - $sql .= "or lower(ring_group_extension) like :search "; - $sql .= "or lower(ring_group_description) like :search "; - $sql .= "or lower(ring_group_enabled) like :search "; - $sql .= "or lower(ring_group_strategy) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; - } - - if (strlen($order_by) == 0) { - $sql .= "order by ring_group_name asc, ring_group_extension asc "; - } - else { - $sql .= order_by($order_by, $order); - } + $sql = str_replace('count(*)', '*', $sql); + $sql .= ($order_by) ? order_by($order_by, $order) : "order by ring_group_name asc, ring_group_extension asc "; $sql .= limit_offset($rows_per_page, $offset); $ring_groups = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); -//set the row styles - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//additional includes + require_once "resources/header.php"; //show the content - echo "\n"; - echo "\n"; + echo "
\n"; + echo "
".$text['title-ring_groups']." (".$num_rows.")
\n"; + echo "
\n"; + if (permission_exists('ring_group_add') && (!is_numeric($_SESSION['limit']['ring_groups']['numeric']) || ($total_ring_groups < $_SESSION['limit']['ring_groups']['numeric']))) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'ring_group_edit.php']); + } + if (permission_exists('ring_group_add') && $ring_groups && (!is_numeric($_SESSION['limit']['ring_groups']['numeric']) || ($total_ring_groups < $_SESSION['limit']['ring_groups']['numeric']))) { + 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('ring_group_edit') && $ring_groups) { + 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('ring_group_delete') && $ring_groups) { + 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"; + if (permission_exists('ring_group_all')) { + if ($_GET['show'] == 'all') { + echo " "; + } + else { + echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?show=all']); + } + } + 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'=>'ring_groups.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo "".$paging_controls_mini.""; + } + echo " \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo $text['description']."\n"; + echo "

\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + if (permission_exists('ring_group_add') || permission_exists('ring_group_edit') || permission_exists('ring_group_delete')) { + echo " \n"; + } if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { echo th_order_by('domain_name', $text['label-domain'], $order_by, $order); } @@ -168,70 +190,70 @@ echo th_order_by('ring_group_extension', $text['label-extension'], $order_by, $order); echo th_order_by('ring_group_strategy', $text['label-strategy'], $order_by, $order); echo th_order_by('ring_group_forward_enabled', $text['label-forwarding'], $order_by, $order); - echo th_order_by('ring_group_enabled', $text['label-enabled'], $order_by, $order); - echo th_order_by('ring_group_description', $text['header-description'], $order_by, $order); - echo "\n"; } - echo "\n"; echo "\n"; if (is_array($ring_groups) && @sizeof($ring_groups) != 0) { - foreach($ring_groups as $row) { - $tr_link = (permission_exists('ring_group_edit')) ? "href='ring_group_edit.php?id=".$row['ring_group_uuid']."'" : null; - echo "\n"; - if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { - echo " \n"; - } - echo " \n"; + if (permission_exists('ring_group_add') || permission_exists('ring_group_edit') || permission_exists('ring_group_delete')) { + echo " \n"; + } + if ($_GET['show'] == "all" && permission_exists('ring_group_all')) { + echo " \n"; + } + echo " \n"; - - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; if (permission_exists('ring_group_edit')) { - echo "$v_link_label_edit"; + echo " \n"; + echo " \n"; + if (permission_exists('ring_group_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } echo "\n"; - $c = $c ? 0 : 1; + $x++; } + unset($ring_groups); } - unset($ring_groups, $row); - echo "\n"; - echo "
\n"; + echo " \n"; + echo " "; - if (permission_exists('ring_group_add')) { - if ($_SESSION['limit']['ring_groups']['numeric'] == '' || ($_SESSION['limit']['ring_groups']['numeric'] != '' && $total_ring_groups < $_SESSION['limit']['ring_groups']['numeric'])) { - echo "".$v_link_label_add.""; - } + echo th_order_by('ring_group_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); + echo th_order_by('ring_group_description', $text['header-description'], $order_by, $order, null, "class='hide-sm-dn'"); + if (permission_exists('ring_group_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo "  
".escape($row['domain_name'])." "; + $x = 0; + foreach ($ring_groups as $row) { if (permission_exists('ring_group_edit')) { - echo "".escape($row['ring_group_name']).""; + $list_row_url = "ring_group_edit.php?id=".urlencode($row['ring_group_uuid']); + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " ".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name']).""; + if (permission_exists('ring_group_edit')) { + echo "".escape($row['ring_group_name']).""; } else { - echo $row['ring_group_name']; + echo escape($row['ring_group_name']); } echo " ".escape($row['ring_group_extension'])." ".$text['option-'.escape($row['ring_group_strategy'])]." ".(($row['ring_group_forward_enabled'] == 'true') ? format_phone(escape($row['ring_group_forward_destination'])) : null)." ".$text['label-'.escape($row['ring_group_enabled'])]." ".escape($row['ring_group_description'])." "; + echo " ".escape($row['ring_group_extension'])." ".$text['option-'.escape($row['ring_group_strategy'])]." ".($row['ring_group_forward_enabled'] == 'true' ? format_phone(escape($row['ring_group_forward_destination'])) : null)." "; + echo $text['label-'.$row['ring_group_enabled']]; } echo " ".escape($row['ring_group_description'])." "; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo "
"; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
 $paging_controls"; - if (permission_exists('ring_group_add')) { - if ($_SESSION['limit']['ring_groups']['numeric'] == '' || ($_SESSION['limit']['ring_groups']['numeric'] != '' && $total_ring_groups < $_SESSION['limit']['ring_groups']['numeric'])) { - echo "".$v_link_label_add.""; - } - } - echo "
\n"; - 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