From c209932eb56d86739f584add11af9158bf44114d Mon Sep 17 00:00:00 2001 From: steve-lad <72376554+steve-lad@users.noreply.github.com> Date: Tue, 10 Aug 2021 09:48:53 +0200 Subject: [PATCH] Get all chan-sccp settings Prior only included general section - now get from all sections Get all settings fields even if empty or SccpClass will raise an exception --- install.php | 35 ++++++++++++++++++------------ module.xml | 2 +- sccpManClasses/Sccp.class.php.v433 | 3 ++- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/install.php b/install.php index b7f7a11..15e0cc0 100644 --- a/install.php +++ b/install.php @@ -1085,12 +1085,20 @@ function cleanUpSccpSettings() { // get chan-sccp defaults - $sysConfiguration = $aminterface->getSCCPConfigMetaData('general'); - - foreach ($sysConfiguration['Options'] as $key => $valueArray) { - if ($valueArray['Flags'][0] == 'Obsolete' || $valueArray['Flags'][0] == 'Deprecated') { - continue; + foreach (array('general','line', 'device') as $section) { + $sysConfig = $aminterface->getSCCPConfigMetaData($section); + foreach ($sysConfig['Options'] as $valueArray) { + if ($valueArray['Flags'][0] == 'Obsolete' || $valueArray['Flags'][0] == 'Deprecated') { + continue; + } + if (isset($sysConfiguration[$valueArray['Name']])) { + continue; + } + $sysConfiguration[$valueArray['Name']] = $valueArray; } + } + unset($sysConfig); + foreach ($sysConfiguration as $key => $valueArray) { // 2 special cases deny|permit & disallow|allow where need to parse on |. $newKeyword = explode("|", $valueArray['Name'], 2); @@ -1110,19 +1118,18 @@ function cleanUpSccpSettings() { } $i++; } - if (array_key_exists($valueArray['Name'],$settingsFromDb)){ - unset($settingsFromDb[$valueArray['Name']]); + if (array_key_exists($key, $settingsFromDb)){ + unset($settingsFromDb[$key]); } } else { - ($sysConfiguration[$valueArray['Name']]['DefaultValue'] == '(null)') ? '' : $sysConfiguration[$valueArray['Name']]['DefaultValue']; - $sysConfiguration[$valueArray['Name']] = $valueArray; - if (array_key_exists($valueArray['Name'],$settingsFromDb)) { - if (!empty($sysConfiguration[$valueArray['Name']]['DefaultValue'])) { + ($sysConfiguration[$key]['DefaultValue'] == '(null)') ? '' : $sysConfiguration[$key]['DefaultValue']; + if (array_key_exists($key,$settingsFromDb)) { + if (!empty($sysConfiguration[$key2]['DefaultValue'])) { // Preserve sequence and type - $settingsFromDb[$valueArray['Name']]['systemdefault'] = $sysConfiguration[$valueArray['Name']]['DefaultValue']; + $settingsFromDb[$key]['systemdefault'] = $sysConfiguration[$key]['DefaultValue']; } } else { - $settingsFromDb[$valueArray['Name']] = array('keyword' => $valueArray['Name'], 'seq' => 0, 'type' => 0, 'data' => '', 'systemdefault' => $sysConfiguration[$valueArray['Name']]['DefaultValue']); + $settingsFromDb[$key] = array('keyword' => $key, 'seq' => 0, 'type' => 0, 'data' => '', 'systemdefault' => $sysConfiguration[$key]['DefaultValue']); } } // Override certain chan-sccp defaults as they are based on a non-FreePbx system @@ -1131,7 +1138,7 @@ function cleanUpSccpSettings() { unset($sysConfiguration[$key]); } - unset($sysConfiguration['Options']); + unset($sysConfiguration); // Update enums in sccpsettings - values have changed over versions so need to update values in db that are not compliant outn("
  • " . _("Updating invalid enums in sccpsettings") . "
  • "); diff --git a/module.xml b/module.xml index 1184b9a..fa67a9b 100644 --- a/module.xml +++ b/module.xml @@ -1,7 +1,7 @@ sccp_manager SCCP Manager - 14.3.0.8 + 14.3.0.9 setup SCCP Connectivity Steve Lad, Alex GP diff --git a/sccpManClasses/Sccp.class.php.v433 b/sccpManClasses/Sccp.class.php.v433 index 0131878..f6e568c 100644 --- a/sccpManClasses/Sccp.class.php.v433 +++ b/sccpManClasses/Sccp.class.php.v433 @@ -78,7 +78,7 @@ class Sccp extends \FreePBX\modules\Core\Driver { $this->freepbx = $parent_class; $this->database = $parent_class->Database(); // Get system defaults [systemdefault] and sitedefaults [data] from sccpsettings. - $stmt = $this->database->prepare("SELECT * FROM sccpsettings WHERE systemdefault !=''"); + $stmt = $this->database->prepare("SELECT * FROM sccpsettings"); $stmt->execute(); $raw_settings = $stmt->fetchAll(\PDO::FETCH_ASSOC); foreach ($raw_settings as $key => $valueArray) { @@ -218,6 +218,7 @@ class Sccp extends \FreePBX\modules\Core\Driver { public function getDefaultDeviceSettings($id, $displayname, &$flag) { // FreePBX required method $settings = array(); + dbug($this->line_defaults); $settingsFields = array('mailbox', 'incominglimit', 'context', 'directed_pickup_context', 'callgroup', 'pickupgroup', 'namedcallgroup', 'namedpickupgroup', 'adhocNumber', 'secondary_dialtone_digits', 'secondary_dialtone_tone', 'directed_pickup', 'pickup_modeanswer', 'transfer', 'echocancel', 'dnd', 'silencesuppression', 'musicclass', 'pin', 'allow', 'disallow');