diff --git a/app/basic_operator_panel/app_config.php b/app/basic_operator_panel/app_config.php
index ab1473f8ab..39cd6bf82a 100644
--- a/app/basic_operator_panel/app_config.php
+++ b/app/basic_operator_panel/app_config.php
@@ -67,5 +67,13 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the refresh rate in seconds (<=120) or milliseconds (>=500).";
$y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0c273cad-1ee4-48d9-9336-08bc8260579a";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "operator_panel";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "group_extensions";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Set if extensions are grouped by call_group when viewing all extensions.";
+ $y++;
?>
\ No newline at end of file
diff --git a/app/basic_operator_panel/resources/content.php b/app/basic_operator_panel/resources/content.php
index e71a5d7492..ae123ba9ba 100644
--- a/app/basic_operator_panel/resources/content.php
+++ b/app/basic_operator_panel/resources/content.php
@@ -168,6 +168,11 @@ echo " ";
echo "";
echo "
";
+// Define the arrays to ensure no errors are omitted below with the sizeof operators
+$user_extensions = array();
+$grouped_extensions = array();
+$other_extensions = array();
+
if (is_array($activity)) foreach ($activity as $extension => $ext) {
unset($block);
@@ -453,42 +458,49 @@ if (is_array($activity)) foreach ($activity as $extension => $ext) {
if (in_array($extension, $_SESSION['user']['extensions'])) {
$user_extensions[] = $block;
- }
- else {
+ } elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'], FILTER_VALIDATE_BOOLEAN)) {
+ $grouped_extensions[$ext['call_group']][] = $block;
+ } else {
$other_extensions[] = $block;
}
}
-
-if (is_array($user_extensions) && @sizeof($user_extensions) > 0) {
+if (sizeof($user_extensions) > 0) {
echo "
| ";
if (is_array($user_extensions)) foreach ($user_extensions as $ext_block) {
echo $ext_block;
}
- echo " |
";
+ echo "
";
}
-if ($_REQUEST['group'] != '') {
- if (is_array($user_extensions) && @sizeof($user_extensions) > 0) { echo "
"; }
- echo "".ucwords(escape($_REQUEST['group']))."";
- echo "
";
-}
-else if (is_array($user_extensions) && @sizeof($user_extensions) > 0) {
- echo "
";
- echo "".$text['label-other_extensions']."";
- echo "
";
+if (sizeof($grouped_extensions) > 0) {
+ // Ensure alphabetical order
+ ksort($grouped_extensions);
+ foreach ($grouped_extensions as $group => $extensions) {
+ echo "".ucwords(escape($group))."";
+ echo "
";
+ echo "| ";
+ foreach ($extensions as $ext_block) {
+ echo $ext_block;
+ }
+ echo " |
";
+ }
}
if (sizeof($other_extensions) > 0) {
+ echo "".$text['label-other_extensions']."";
+ echo "
";
echo "| ";
- if (is_array($other_extensions)) foreach ($other_extensions as $ext_block) {
+ foreach ($other_extensions as $ext_block) {
echo $ext_block;
}
echo " |
";
}
-else {
+
+if (sizeof($other_extensions) + sizeof($grouped_extensions) < 1) {
echo $text['label-no_extensions_found'];
}
+
echo "
";
/*