diff --git a/sccpManClasses/dbinterface.class.php b/sccpManClasses/dbinterface.class.php index 55cc299..02fd6a6 100644 --- a/sccpManClasses/dbinterface.class.php +++ b/sccpManClasses/dbinterface.class.php @@ -56,7 +56,7 @@ class dbinterface switch ($dataid) { case 'extGrid': // only called by getExtensionGrid from hardware.extension.php view - $stmts = $this->db->prepare("SELECT sccpline.name, sccpline.label, sccpbuttonconfig.ref as mac + $stmts = $this->db->prepare("SELECT sccpline.name, sccpline.label, sccpbuttonconfig.ref AS mac, '-|-' AS line_status FROM sccpline LEFT JOIN sccpbuttonconfig ON sccpline.name = TRIM(TRAILING '!silent' FROM sccpbuttonconfig.name) ORDER BY sccpline.name"); break; diff --git a/sccpManTraits/ajaxHelper.php b/sccpManTraits/ajaxHelper.php index c16004b..3aa2a20 100644 --- a/sccpManTraits/ajaxHelper.php +++ b/sccpManTraits/ajaxHelper.php @@ -295,33 +295,21 @@ trait ajaxHelper { return array(); } $activeDevices = $this->aminterface->sccp_get_active_device(); - foreach ($lineList as $key => $lineArr) { - if (!empty($outLineList[$lineList[$key]['name']])) { - $outLineList[$lineList[$key]['name']]['mac'] .= "
".$lineList[$key]['mac']; - if (array_key_exists($lineArr['mac'], $activeDevices)) { - $actDevStat = $activeDevices[$lineArr['mac']]; - $outLineList[$lineList[$key]['name']]['line_status'] .= "
" . "{$actDevStat['status']} | {$actDevStat['act']}"; - } else { - $outLineList[$lineList[$key]['name']]['line_status'] .= "
" . '|'; - } - } else { - $outLineList[$lineList[$key]['name']] = $lineList[$key]; - if (array_key_exists($lineArr['mac'], $activeDevices)) { - $actDevStat = $activeDevices[$lineArr['mac']]; - $outLineList[$lineList[$key]['name']]['line_status'] = "{$actDevStat['status']} | {$actDevStat['act']}"; - } else { - // create a new output list - $outLineList[$lineList[$key]['name']] = $lineList[$key]; - $outLineList[$lineList[$key]['name']]['line_status'] = '|'; - } + $uniqueLineList = array(); + foreach ($lineList as $key => &$lineArr) { + if (array_key_exists($lineArr['mac'], $activeDevices)) { + $lineArr['line_status'] = "{$activeDevices[$lineArr['mac']]['status']} | {$activeDevices[$lineArr['mac']]['act']}"; } + if (array_key_exists($lineArr['name'], $uniqueLineList)) { + $lineList[$uniqueLineList[$lineArr['name']]]['mac'] .= '
' . $lineArr['mac']; + $lineList[$uniqueLineList[$lineArr['name']]]['line_status'] .= '
' . $lineArr['line_status']; + unset($lineList[$key]); // Drop this array as no longer used + continue; + } + $uniqueLineList[$lineArr['name']] = $key; } - unset($lineList); - // Html wants an anonymous array rather than a keyed array, so remove keys. - foreach ($outLineList as $valueArray) { - $lineList[] = $valueArray; - } - return $lineList; + unset($lineArr, $uniqueLineList); // unset reference and temp vars. + return array_values($lineList); // Reindex array and return break; case 'getPhoneGrid': $dbDevices = array(); @@ -350,6 +338,7 @@ trait ajaxHelper { $dev_id['address'] = '- -'; } } + unset($dev_id); // unset reference. if (!empty($activeDevices)) { // Have a device that is connected but is not currently in the database