Initialise all chan_sccp defaults in sccp_settings
Get default system settings from chan_sccp and add to sccpsettings Remove legacy settings from sccpsettings Change tftpReadTestFile to accept host as argument Change sccpsettings structure to include systemdefaults
This commit is contained in:
parent
f882a66eb4
commit
22d845ced3
154
install.php
154
install.php
|
@ -14,6 +14,7 @@ global $useAmiForSoftKeys;
|
||||||
global $settingsFromDb;
|
global $settingsFromDb;
|
||||||
global $thisInstaller;
|
global $thisInstaller;
|
||||||
global $cnf_int;
|
global $cnf_int;
|
||||||
|
global $sccp_compatible;
|
||||||
$mobile_hw = '0';
|
$mobile_hw = '0';
|
||||||
$autoincrement = (($amp_conf["AMPDBENGINE"] == "sqlite") || ($amp_conf["AMPDBENGINE"] == "sqlite3")) ? "AUTOINCREMENT" : "AUTO_INCREMENT";
|
$autoincrement = (($amp_conf["AMPDBENGINE"] == "sqlite") || ($amp_conf["AMPDBENGINE"] == "sqlite3")) ? "AUTOINCREMENT" : "AUTO_INCREMENT";
|
||||||
$table_req = array('sccpdevice', 'sccpline', 'sccpsettings');
|
$table_req = array('sccpdevice', 'sccpline', 'sccpsettings');
|
||||||
|
@ -41,27 +42,6 @@ foreach ($requiredClasses as $className) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get current default settings from db
|
|
||||||
$stmt = $db->prepare("SELECT * FROM sccpsettings");
|
|
||||||
$stmt->execute();
|
|
||||||
$settingsFromDb = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
|
||||||
foreach ($settingsFromDb as $key => $rowArray) {
|
|
||||||
$settingsFromDb[$rowArray['keyword']] = $rowArray;
|
|
||||||
unset($settingsFromDb[$key]);
|
|
||||||
}
|
|
||||||
// Check that required settings are initialised and update db and $settingsFromDb if not
|
|
||||||
foreach ($extconfigs->getExtConfig('sccpDefaults') as $key => $value) {
|
|
||||||
if (empty($settingsFromDb[$key])) {
|
|
||||||
$settingsFromDb[$key] = array('keyword' => $key, 'data' => $value, 'type' => 0, 'seq' => 0);
|
|
||||||
|
|
||||||
$sql = "REPLACE INTO sccpsettings (keyword, data, seq, type) VALUES ('{$key}', '{$value}', 0, 0)";
|
|
||||||
$results = $db->query($sql);
|
|
||||||
if (DB::IsError($results)) {
|
|
||||||
die_freepbx(_("Error updating sccpsettings: $key"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CheckAsteriskVersion();
|
CheckAsteriskVersion();
|
||||||
$sccp_version = CheckChanSCCPCompatible();
|
$sccp_version = CheckChanSCCPCompatible();
|
||||||
$sccp_compatible = $sccp_version[0];
|
$sccp_compatible = $sccp_version[0];
|
||||||
|
@ -72,21 +52,15 @@ if ($sccp_compatible == 0) {
|
||||||
outn("<font color='red'>Chan Sccp not Found. Install it before continuing !</font>");
|
outn("<font color='red'>Chan Sccp not Found. Install it before continuing !</font>");
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
$db_config = Get_DB_config($sccp_compatible);
|
|
||||||
$sccp_db_ver = CheckSCCPManagerDBVersion();
|
|
||||||
|
|
||||||
// BackUp Old config
|
// BackUp Old config
|
||||||
createBackUpConfig();
|
createBackUpConfig();
|
||||||
RenameConfig();
|
RenameConfig();
|
||||||
|
|
||||||
|
$db_config = Get_DB_config($sccp_compatible);
|
||||||
InstallDB_updateSchema($db_config);
|
InstallDB_updateSchema($db_config);
|
||||||
$stmt = $db->prepare('SELECT CASE WHEN EXISTS(SELECT 1 FROM sccpdevmodel) THEN 0 ELSE 1 END AS IsEmpty;');
|
|
||||||
$stmt->execute();
|
cleanUpSccpSettings();
|
||||||
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
|
||||||
if ($result[0]['IsEmpty']) {
|
|
||||||
outn("Populating sccpdevmodel...");
|
|
||||||
InstallDB_fillsccpdevmodel();
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallDB_createButtonConfigTrigger();
|
InstallDB_createButtonConfigTrigger();
|
||||||
InstallDB_CreateSccpDeviceConfigView($sccp_compatible);
|
InstallDB_CreateSccpDeviceConfigView($sccp_compatible);
|
||||||
|
@ -98,7 +72,7 @@ if ($chanSCCPWarning) {
|
||||||
Setup_RealTime();
|
Setup_RealTime();
|
||||||
addDriver($sccp_compatible);
|
addDriver($sccp_compatible);
|
||||||
checkTftpServer();
|
checkTftpServer();
|
||||||
getConfigMetaData('general');
|
|
||||||
outn("<br>");
|
outn("<br>");
|
||||||
outn("Install Complete !");
|
outn("Install Complete !");
|
||||||
outn("<br>");
|
outn("<br>");
|
||||||
|
@ -321,16 +295,7 @@ function Get_DB_config($sccp_compatible)
|
||||||
|
|
||||||
function CheckSCCPManagerDBVersion()
|
function CheckSCCPManagerDBVersion()
|
||||||
{
|
{
|
||||||
global $db;
|
|
||||||
global $settingsFromDb;
|
|
||||||
outn("<li>" . _("Checking for previous version of Sccp_manager.") . "</li>");
|
|
||||||
|
|
||||||
if (!isset($settingsFromDb['sccp_compatible']['data'])) {
|
|
||||||
outn(_("No previous version found "));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
outn(_("Found DB Schema : {$settingsFromDb['sccp_compatible']['data']}"));
|
|
||||||
return $settingsFromDb['sccp_compatible']['data'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* notused */
|
/* notused */
|
||||||
|
@ -462,7 +427,6 @@ function InstallDB_updateSchema($db_config)
|
||||||
}
|
}
|
||||||
if (!empty($sql_update)) {
|
if (!empty($sql_update)) {
|
||||||
outn("<li>" . _("Updating table rows :") . $affected_rows . "</li>");
|
outn("<li>" . _("Updating table rows :") . $affected_rows . "</li>");
|
||||||
dbug('create', $sql_update);
|
|
||||||
$sql_update = 'BEGIN; ' . $sql_update . ' COMMIT;';
|
$sql_update = 'BEGIN; ' . $sql_update . ' COMMIT;';
|
||||||
sql($sql_update);
|
sql($sql_update);
|
||||||
$affected_rows = $db->affectedRows();
|
$affected_rows = $db->affectedRows();
|
||||||
|
@ -472,7 +436,6 @@ function InstallDB_updateSchema($db_config)
|
||||||
if (!empty($sql_create)) {
|
if (!empty($sql_create)) {
|
||||||
outn("<li>" . _("Adding new columns ...") . "</li>");
|
outn("<li>" . _("Adding new columns ...") . "</li>");
|
||||||
$sql_create = "ALTER TABLE {$tabl_name} " .substr($sql_create, 0, -2);
|
$sql_create = "ALTER TABLE {$tabl_name} " .substr($sql_create, 0, -2);
|
||||||
dbug('create', $sql_create);
|
|
||||||
try {
|
try {
|
||||||
$check = $db->query($sql_create);
|
$check = $db->query($sql_create);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
@ -491,14 +454,16 @@ function InstallDB_updateSchema($db_config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outn("<li>" . _("Total modify count :") . $count_modify . "</li>");
|
outn("<li>" . _("Total modify count :") . $count_modify . "</li>");
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function InstallDB_fillsccpdevmodel()
|
$stmt = $db->prepare('SELECT CASE WHEN EXISTS(SELECT 1 FROM sccpdevmodel) THEN 0 ELSE 1 END AS IsEmpty;');
|
||||||
{
|
$stmt->execute();
|
||||||
global $db;
|
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
||||||
outn("<li>" . _("Fill sccpdevmodel") . "</li>");
|
if (!$result[0]['IsEmpty']) {
|
||||||
$sql = "REPLACE INTO sccpdevmodel (model, vendor, dns, buttons, loadimage, loadinformationid, enabled, nametemplate) VALUES
|
return;
|
||||||
|
} else {
|
||||||
|
outn("Populating sccpdevmodel...");
|
||||||
|
outn("<li>" . _("Fill sccpdevmodel") . "</li>");
|
||||||
|
$sql = "REPLACE INTO sccpdevmodel (model, vendor, dns, buttons, loadimage, loadinformationid, enabled, nametemplate) VALUES
|
||||||
('12 SP', 'CISCO', 1, 1, '', 'loadInformation3', 0, NULL),
|
('12 SP', 'CISCO', 1, 1, '', 'loadInformation3', 0, NULL),
|
||||||
('12 SP+', 'CISCO', 1, 1, '', 'loadInformation2', 0, NULL),
|
('12 SP+', 'CISCO', 1, 1, '', 'loadInformation2', 0, NULL),
|
||||||
('30 SP+', 'CISCO', 1, 1, '', 'loadInformation1', 0, NULL),
|
('30 SP+', 'CISCO', 1, 1, '', 'loadInformation1', 0, NULL),
|
||||||
|
@ -626,11 +591,12 @@ function InstallDB_fillsccpdevmodel()
|
||||||
('7911-sip', 'CISCO-SIP', 1, 1, 'SIP11.9-2-1S', 'loadInformation307', 1, 'SEP0000000000.cnf.xml_791x_sip_template'),
|
('7911-sip', 'CISCO-SIP', 1, 1, 'SIP11.9-2-1S', 'loadInformation307', 1, 'SEP0000000000.cnf.xml_791x_sip_template'),
|
||||||
('9951-sip', 'CISCO-SIP', 1, 1, 'sip9951.9-2-2SR1-9', 'loadinformation537', 1, 'SEP0000000000.cnf.xml_99xx_sip_template'),
|
('9951-sip', 'CISCO-SIP', 1, 1, 'sip9951.9-2-2SR1-9', 'loadinformation537', 1, 'SEP0000000000.cnf.xml_99xx_sip_template'),
|
||||||
('VGC Virtual', 'CISCO', 1, 1, '', 'loadInformation11', 0, NULL);";
|
('VGC Virtual', 'CISCO', 1, 1, '', 'loadInformation11', 0, NULL);";
|
||||||
$check = $db->query($sql);
|
$check = $db->query($sql);
|
||||||
if (DB::IsError($check)) {
|
if (DB::IsError($check)) {
|
||||||
die_freepbx("Can not create sccpdevmodel table, error:$check\n");
|
die_freepbx("Can not create sccpdevmodel table, error:$check\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function InstallDB_createButtonConfigTrigger()
|
function InstallDB_createButtonConfigTrigger()
|
||||||
|
@ -961,11 +927,62 @@ function checkTftpServer() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getConfigMetaData($segment) {
|
function cleanUpSccpSettings() {
|
||||||
global $aminterface;
|
global $thisInstaller;
|
||||||
global $db;
|
|
||||||
global $settingsFromDb;
|
global $settingsFromDb;
|
||||||
$sysConfiguration = $aminterface->getSCCPConfigMetaData($segment);
|
global $db;
|
||||||
|
global $aminterface;
|
||||||
|
global $sccp_compatible;
|
||||||
|
|
||||||
|
// Get current default settings from db
|
||||||
|
$stmt = $db->prepare("SELECT * FROM sccpsettings");
|
||||||
|
$stmt->execute();
|
||||||
|
$settingsFromDb = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
||||||
|
foreach ($settingsFromDb as $key => $rowArray) {
|
||||||
|
$settingsFromDb[$rowArray['keyword']] = $rowArray;
|
||||||
|
unset($settingsFromDb[$key]);
|
||||||
|
}
|
||||||
|
// See if a previous version was installed
|
||||||
|
outn("<li>" . _("Checking for previous version of Sccp_manager.") . "</li>");
|
||||||
|
if (!isset($settingsFromDb['sccp_compatible']['data'])) {
|
||||||
|
outn(_("No previous version found "));
|
||||||
|
} else {
|
||||||
|
outn(_("Found DB Schema : {$settingsFromDb['sccp_compatible']['data']}"));
|
||||||
|
}
|
||||||
|
// Check that required settings are initialised and update db and $settingsFromDb if not
|
||||||
|
/*
|
||||||
|
foreach ($extconfigs->getExtConfig('sccpDefaults') as $key => $value) {
|
||||||
|
if (empty($settingsFromDb[$key])) {
|
||||||
|
$settingsFromDb[$key] = array('keyword' => $key, 'data' => $value, 'type' => 0, 'seq' => 0);
|
||||||
|
|
||||||
|
$sql = "REPLACE INTO sccpsettings (keyword, data, seq, type) VALUES ('{$key}', '{$value}', 0, 0)";
|
||||||
|
$results = $db->query($sql);
|
||||||
|
if (DB::IsError($results)) {
|
||||||
|
die_freepbx(_("Error updating sccpsettings: $key"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Clean up sccpsettings to remove legacy values.
|
||||||
|
$xml_vars = "{$_SERVER['DOCUMENT_ROOT']}/admin/modules/sccp_manager/conf/sccpgeneral.xml.v{$sccp_compatible}";
|
||||||
|
$thisInstaller->xml_data = simplexml_load_file($xml_vars);
|
||||||
|
$thisInstaller->initVarfromXml();
|
||||||
|
foreach ( array_diff_key($settingsFromDb,$thisInstaller->sccpvalues) as $key => $valueArray) {
|
||||||
|
// Remove legacy values
|
||||||
|
unset($settingsFromDb[$key]);
|
||||||
|
}
|
||||||
|
foreach ($settingsFromDb as $key => $valueArray) {
|
||||||
|
$settingsFromDb[$key]['seq'] = $thisInstaller->sccpvalues[$key]['seq'];
|
||||||
|
$settingsFromDb[$key]['type'] = $thisInstaller->sccpvalues[$key]['type'];
|
||||||
|
}
|
||||||
|
$settingsFromDb = array_merge($settingsFromDb, array_diff_key($thisInstaller->sccpvalues, $settingsFromDb));
|
||||||
|
unset($thisInstaller->sccpvalues);
|
||||||
|
|
||||||
|
// get chan-sccp defaults
|
||||||
|
|
||||||
|
$sysConfiguration = $aminterface->getSCCPConfigMetaData('general');
|
||||||
|
|
||||||
foreach ($sysConfiguration['Options'] as $key => $valueArray) {
|
foreach ($sysConfiguration['Options'] as $key => $valueArray) {
|
||||||
if ($valueArray['Flags'][0] == 'Obsolete' || $valueArray['Flags'][0] == 'Deprecated') {
|
if ($valueArray['Flags'][0] == 'Obsolete' || $valueArray['Flags'][0] == 'Deprecated') {
|
||||||
continue;
|
continue;
|
||||||
|
@ -973,14 +990,29 @@ function getConfigMetaData($segment) {
|
||||||
$sysConfiguration[$valueArray['Name']] = $valueArray;
|
$sysConfiguration[$valueArray['Name']] = $valueArray;
|
||||||
if (array_key_exists($valueArray['Name'],$settingsFromDb)) {
|
if (array_key_exists($valueArray['Name'],$settingsFromDb)) {
|
||||||
if (!empty($sysConfiguration[$valueArray['Name']]['DefaultValue'])) {
|
if (!empty($sysConfiguration[$valueArray['Name']]['DefaultValue'])) {
|
||||||
$sql = "UPDATE sccpsettings SET systemdefault = '{$valueArray['DefaultValue']}' WHERE keyword = '{$valueArray['Name']}'";
|
$settingsFromDb[$valueArray['Name']]['systemdefault'] = $sysConfiguration[$valueArray['Name']]['DefaultValue'];
|
||||||
$results = $db->query($sql);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$settingsFromDb[$valueArray['Name']] = array('keyword' => $valueArray['Name'], 'seq' => 0, 'type' => 0, 'data' => '', 'systemdefault' => $sysConfiguration[$valueArray['Name']]['DefaultValue']);
|
||||||
}
|
}
|
||||||
unset($sysConfiguration[$key]);
|
unset($sysConfiguration[$key]);
|
||||||
}
|
}
|
||||||
unset($sysConfiguration['Options']);
|
unset($sysConfiguration['Options']);
|
||||||
dbug('sysconfig', $sysConfiguration);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Write settings back to db
|
||||||
|
$sql = "TRUNCATE sccpsettings";
|
||||||
|
$results = $db->query($sql);
|
||||||
|
foreach ( $settingsFromDb as $key =>$valueArray ) {
|
||||||
|
$sql = "REPLACE INTO sccpsettings
|
||||||
|
(keyword, seq, type, data, systemdefault)
|
||||||
|
VALUES
|
||||||
|
( '{$settingsFromDb[$key]['keyword']}',
|
||||||
|
{$settingsFromDb[$key]['seq']},
|
||||||
|
{$settingsFromDb[$key]['type']},
|
||||||
|
'{$settingsFromDb[$key]['data']}',
|
||||||
|
'{$settingsFromDb[$key]['systemdefault']}'
|
||||||
|
)";
|
||||||
|
$results = $db->query($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -166,9 +166,10 @@
|
||||||
</table>
|
</table>
|
||||||
<table name="sccpsettings">
|
<table name="sccpsettings">
|
||||||
<field name="keyword" type="string" length="50" primarykey="true"/>
|
<field name="keyword" type="string" length="50" primarykey="true"/>
|
||||||
<field name="data" type="string" length="255"/>
|
<field name="data" type="string" length="255" notnull="false"/>
|
||||||
<field name="seq" type="boolean" primarykey="true"/>
|
<field name="seq" type="boolean" primarykey="true"/>
|
||||||
<field name="type" type="boolean" primarykey="true"/>
|
<field name="type" type="boolean" primarykey="true"/>
|
||||||
|
<field name="systemdefault" type="string" length="255" notnull="false"/>
|
||||||
</table>
|
</table>
|
||||||
</database>
|
</database>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
@ -249,9 +249,9 @@ class dbinterface
|
||||||
case 'sccpsettings':
|
case 'sccpsettings':
|
||||||
if ($mode == 'replace') { // Change mode name to be more transparent
|
if ($mode == 'replace') { // Change mode name to be more transparent
|
||||||
$dbh->prepare('TRUNCATE sccpsettings')->execute();
|
$dbh->prepare('TRUNCATE sccpsettings')->execute();
|
||||||
$stmt = $dbh->prepare('INSERT INTO sccpsettings (keyword, data, seq, type) VALUES (:keyword,:data,:seq,:type)');
|
$stmt = $dbh->prepare('INSERT INTO sccpsettings (keyword, data, seq, type, systemdefault) VALUES (:keyword,:data,:seq,:type,:systemdefault)');
|
||||||
} else {
|
} else {
|
||||||
$stmt = $dbh->prepare('REPLACE INTO sccpsettings (keyword, data, seq, type) VALUES (:keyword,:data,:seq,:type)');
|
$stmt = $dbh->prepare('REPLACE INTO sccpsettings (keyword, data, seq, type, systemdefault) VALUES (:keyword,:data,:seq,:type, :systemdefault)');
|
||||||
}
|
}
|
||||||
foreach ($save_value as $key => $dataArr) {
|
foreach ($save_value as $key => $dataArr) {
|
||||||
if (empty($dataArr)) {
|
if (empty($dataArr)) {
|
||||||
|
@ -261,6 +261,7 @@ class dbinterface
|
||||||
$stmt->bindParam(':data',$dataArr['data'],\PDO::PARAM_STR);
|
$stmt->bindParam(':data',$dataArr['data'],\PDO::PARAM_STR);
|
||||||
$stmt->bindParam(':seq',$dataArr['seq'],\PDO::PARAM_INT);
|
$stmt->bindParam(':seq',$dataArr['seq'],\PDO::PARAM_INT);
|
||||||
$stmt->bindParam(':type',$dataArr['type'],\PDO::PARAM_INT);
|
$stmt->bindParam(':type',$dataArr['type'],\PDO::PARAM_INT);
|
||||||
|
$stmt->bindParam(':systemdefault',$dataArr['systemdefault'],\PDO::PARAM_STR);
|
||||||
$result = $stmt->execute();
|
$result = $stmt->execute();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -161,7 +161,7 @@ trait helperfunctions {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function tftpReadTestFile($remoteFileName, $host = "127.0.0.1";)
|
function tftpReadTestFile($remoteFileName, $host = "127.0.0.1")
|
||||||
{
|
{
|
||||||
// https://datatracker.ietf.org/doc/html/rfc1350
|
// https://datatracker.ietf.org/doc/html/rfc1350
|
||||||
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
||||||
|
|
Loading…
Reference in a new issue