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
This commit is contained in:
steve-lad 2021-08-10 09:48:53 +02:00
parent 3a1a89fdb8
commit c209932eb5
3 changed files with 24 additions and 16 deletions

View file

@ -1085,12 +1085,20 @@ function cleanUpSccpSettings() {
// get chan-sccp defaults
$sysConfiguration = $aminterface->getSCCPConfigMetaData('general');
foreach ($sysConfiguration['Options'] as $key => $valueArray) {
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("<li>" . _("Updating invalid enums in sccpsettings") . "</li>");

View file

@ -1,7 +1,7 @@
<module>
<rawname>sccp_manager</rawname>
<name>SCCP Manager</name>
<version>14.3.0.8</version>
<version>14.3.0.9</version>
<type>setup</type>
<category>SCCP Connectivity</category>
<publisher>Steve Lad, Alex GP</publisher>

View file

@ -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');