Fix issue with not saving all settings

An erroneous break instead of continue was truncating sccpsettings

Simplify logic by avoiding create then delete for settings where data was empty
This commit is contained in:
steve-lad 2021-06-13 16:43:31 +02:00
parent 3d1b8015c5
commit 7107dbe86b
2 changed files with 4 additions and 13 deletions

View file

@ -163,10 +163,10 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
$this->initVarfromXml(); // Overwrite Exist
}
if (get_class($freepbx) === 'FreePBX') {
//if (get_class($freepbx) === 'FreePBX') {
// only save settings when building a new FreePBX object
$this->saveSccpSettings();
}
//}
}
/*

View file

@ -239,7 +239,6 @@ class dbinterface
// mode update - update / replace record
$dbh = \FreePBX::Database();
$result = false;
$delete_value = array();
switch ($table_name) {
case 'sccpsettings':
if ($mode == 'replace') { // Change mode name to be more transparent
@ -250,9 +249,8 @@ class dbinterface
}
foreach ($save_value as $key => $dataArr) {
if (!empty($dataArr) && isset($dataArr['data'])) {
if ($dataArr['data'] == $this->val_null) {
$delete_value[] = $save_value[$key]['keyword'];
break;
if (empty($dataArr['data'])) {
continue;
}
}
$stmt->bindParam(':keyword',$dataArr['keyword'],\PDO::PARAM_STR);
@ -261,13 +259,6 @@ class dbinterface
$stmt->bindParam(':type',$dataArr['type'],\PDO::PARAM_INT);
$result = $stmt->execute();
}
if (!empty($delete_value)) {
$stmt = $dbh->prepare('DELETE FROM sccpsettings WHERE keyword = :keyword');
foreach ($delete_value as $del_key) {
$stmt->bindParam(':keyword',$del_key,\PDO::PARAM_STR);
$result = $stmt->execute();
}
}
break;
case 'sccpdevmodel': // Fall through to next intentionally
case 'sccpdevice': // Fall through to next intentionally