Save only config differences back to DB

On each page load the sccpsettings table would get truncated and repopulated with the same data causing a big bottleneck. Now we will only attempt to save settings to the DB that have changed.
This commit is contained in:
John Volk 2023-08-14 19:50:22 -04:00 committed by GitHub
parent d8183ce9fe
commit 7183c01a22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -95,6 +95,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
private $cnf_wr = null;
public $sccppath = array();
public $sccpvalues = array();
private $dbsccpvalues = array();
public $sccp_conf_init = array();
public $xml_data;
public $class_error; //error construct
@ -136,6 +137,7 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
}
$this->sccpvalues = $this->dbinterface->get_db_SccpSetting(); //Initialise core settings
$this->dbsccpvalues = $this->sccpvalues; //Copy settings from DB for future reference
$this->initializeSccpPath(); //Set required Paths
$this->updateTimeZone(); // Get timezone from FreePBX
//$this->findInstLangs();
@ -800,9 +802,9 @@ class Sccp_manager extends \FreePBX_Helpers implements \BMO {
*/
private function saveSccpSettings($save_value = array()) {
$diffToSave = array_udiff_assoc($this->sccpvalues, $this->dbsccpvalues, array($this, "compareArrays"));
if (empty($save_value)) {
$this->dbinterface->write('sccpsettings', $this->sccpvalues, 'replace'); //Change to replace as clearer
$this->dbinterface->write('sccpsettings', $diffToSave, 'update');
} else {
$this->dbinterface->write('sccpsettings', $save_value, 'update');
}