mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2026-01-06 11:43:50 +00:00
SIP Profiles: Database class integration.
This commit is contained in:
@@ -28,36 +28,37 @@
|
||||
if ($domains_processed == 1) {
|
||||
|
||||
//add the sip profiles to the database
|
||||
$sql = "select count(*) as num_rows from v_sip_profiles ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] == 0) {
|
||||
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
else {
|
||||
$sip_profile_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
$db->beginTransaction();
|
||||
$xml_files = glob($sip_profile_dir);
|
||||
foreach ($xml_files as &$xml_file) {
|
||||
//load the sip profile xml and save it into an array
|
||||
$sip_profile_xml = file_get_contents($xml_file);
|
||||
$xml = simplexml_load_string($sip_profile_xml);
|
||||
$json = json_encode($xml);
|
||||
$sip_profile = json_decode($json, true);
|
||||
$sip_profile_name = $sip_profile['@attributes']['name'];
|
||||
$sip_profile_enabled = $sip_profile['@attributes']['enabled'];
|
||||
//echo "sip profile name: ".$sip_profile_name."\n";
|
||||
$sql = "select count(*) from v_sip_profiles ";
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, null, 'column');
|
||||
unset($sql);
|
||||
|
||||
if ($sip_profile_name != "{v_sip_profile_name}") {
|
||||
//prepare the description
|
||||
switch ($sip_profile_name) {
|
||||
if ($num_rows == 0) {
|
||||
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
else {
|
||||
$sip_profile_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
|
||||
$xml_files = glob($sip_profile_dir);
|
||||
foreach ($xml_files as $x => &$xml_file) {
|
||||
//load the sip profile xml and save it into an array
|
||||
$sip_profile_xml = file_get_contents($xml_file);
|
||||
$xml = simplexml_load_string($sip_profile_xml);
|
||||
$json = json_encode($xml);
|
||||
$sip_profile = json_decode($json, true);
|
||||
$sip_profile_name = $sip_profile['@attributes']['name'];
|
||||
$sip_profile_enabled = $sip_profile['@attributes']['enabled'];
|
||||
//echo "sip profile name: ".$sip_profile_name."\n";
|
||||
|
||||
if ($sip_profile_name != "{v_sip_profile_name}") {
|
||||
|
||||
//prepare the description
|
||||
switch ($sip_profile_name) {
|
||||
case "internal":
|
||||
$sip_profile_description = "The Internal profile by default requires registration which is used by the endpoints. ";
|
||||
$sip_profile_description .= "By default the Internal profile binds to port 5060. ";
|
||||
@@ -78,184 +79,151 @@
|
||||
break;
|
||||
default:
|
||||
$sip_profile_description = '';
|
||||
}
|
||||
}
|
||||
|
||||
//add the sip profile if it is not false
|
||||
if ($sip_profile_enabled != "false") {
|
||||
//insert the sip profile name, description
|
||||
$sip_profile_uuid = uuid();
|
||||
$sql = "insert into v_sip_profiles";
|
||||
$sql .= "(";
|
||||
$sql .= "sip_profile_uuid, ";
|
||||
$sql .= "sip_profile_name, ";
|
||||
$sql .= "sip_profile_description ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".check_str($sip_profile_uuid)."', ";
|
||||
$sql .= "'".check_str($sip_profile_name)."', ";
|
||||
$sql .= "'".check_str($sip_profile_description)."' ";
|
||||
$sql .= ")";
|
||||
//echo $sql."\n\n";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//get the domain, alias and parse values and set as variables
|
||||
$sip_profile_domain_name = $sip_profile['domains']['domain']['@attributes']['name'];
|
||||
$sip_profile_domain_alias = $sip_profile['domains']['domain']['@attributes']['alias'];
|
||||
$sip_profile_domain_parse = $sip_profile['domains']['domain']['@attributes']['parse'];
|
||||
//add profile name and description
|
||||
$sip_profile_uuid = uuid();
|
||||
$array['sip_profiles'][$x]['sip_profile_uuid'] = $sip_profile_uuid;
|
||||
$array['sip_profiles'][$x]['sip_profile_name'] = $sip_profile_name;
|
||||
$array['sip_profiles'][$x]['sip_profile_description'] = $sip_profile_description;
|
||||
|
||||
//add the sip profile domains name, alias and parse
|
||||
$sip_profile_domain_uuid = uuid();
|
||||
$sql = "insert into v_sip_profile_domains";
|
||||
$sql .= "(";
|
||||
$sql .= "sip_profile_domain_uuid, ";
|
||||
$sql .= "sip_profile_uuid, ";
|
||||
$sql .= "sip_profile_domain_name, ";
|
||||
$sql .= "sip_profile_domain_alias, ";
|
||||
$sql .= "sip_profile_domain_parse ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".$sip_profile_domain_uuid."', ";
|
||||
$sql .= "'".$sip_profile_uuid."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_name)."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_alias)."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_parse)."' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
$array['sip_profiles'][$x]['sip_profile_domains'][$x]['sip_profile_domain_uuid'] = $sip_profile_domain_uuid;
|
||||
$array['sip_profiles'][$x]['sip_profile_domains'][$x]['sip_profile_uuid'] = $sip_profile_uuid;
|
||||
$array['sip_profiles'][$x]['sip_profile_domains'][$x]['sip_profile_domain_name'] = $sip_profile['domains']['domain']['@attributes']['name'];
|
||||
$array['sip_profiles'][$x]['sip_profile_domains'][$x]['sip_profile_domain_alias'] = $sip_profile['domains']['domain']['@attributes']['alias'];
|
||||
$array['sip_profiles'][$x]['sip_profile_domains'][$x]['sip_profile_domain_parse'] = $sip_profile['domains']['domain']['@attributes']['parse'];
|
||||
|
||||
//add the sip profile settings
|
||||
foreach ($sip_profile['settings']['param'] as $row) {
|
||||
//get the name and value pair
|
||||
$sip_profile_setting_name = $row['@attributes']['name'];
|
||||
$sip_profile_setting_value = $row['@attributes']['value'];
|
||||
$sip_profile_setting_enabled = $row['@attributes']['enabled'];
|
||||
if ($sip_profile_setting_enabled != "false") { $sip_profile_setting_enabled = "true"; }
|
||||
//echo "name: $name value: $value\n";
|
||||
//add the profile settings into the database
|
||||
$sip_profile_setting_uuid = uuid();
|
||||
$sql = "insert into v_sip_profile_settings ";
|
||||
$sql .= "(";
|
||||
$sql .= "sip_profile_setting_uuid, ";
|
||||
$sql .= "sip_profile_uuid, ";
|
||||
$sql .= "sip_profile_setting_name, ";
|
||||
$sql .= "sip_profile_setting_value, ";
|
||||
$sql .= "sip_profile_setting_enabled ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".check_str($sip_profile_setting_uuid)."', ";
|
||||
$sql .= "'".check_str($sip_profile_uuid)."', ";
|
||||
$sql .= "'".check_str($sip_profile_setting_name)."', ";
|
||||
$sql .= "'".check_str($sip_profile_setting_value)."', ";
|
||||
$sql .= "'".$sip_profile_setting_enabled."' ";
|
||||
$sql .= ")";
|
||||
//echo $sql."\n\n";
|
||||
$db->exec(check_sql($sql));
|
||||
//add the profile settings
|
||||
foreach ($sip_profile['settings']['param'] as $y => $row) {
|
||||
$sip_profile_setting_uuid = uuid();
|
||||
$array['sip_profiles'][$x]['sip_profile_settings'][$y]['sip_profile_setting_uuid'] = $sip_profile_setting_uuid;
|
||||
$array['sip_profiles'][$x]['sip_profile_settings'][$y]['sip_profile_uuid'] = $sip_profile_uuid;
|
||||
$array['sip_profiles'][$x]['sip_profile_settings'][$y]['sip_profile_setting_name'] = $row['@attributes']['name'];
|
||||
$array['sip_profiles'][$x]['sip_profile_settings'][$y]['sip_profile_setting_value'] = $row['@attributes']['value'];
|
||||
$array['sip_profiles'][$x]['sip_profile_settings'][$y]['sip_profile_setting_enabled'] = $row['@attributes']['enabled'] != 'false' ? 'true' : $row['@attributes']['enabled'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$db->commit();
|
||||
|
||||
//save the sip profile xml
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//execute inserts
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('sip_profile_add', 'temp');
|
||||
$p->add('sip_profile_domain_add', 'temp');
|
||||
$p->add('sip_profile_setting_add', 'temp');
|
||||
|
||||
//execute insert
|
||||
$database = new database;
|
||||
$database->app_name = 'sip_profiles';
|
||||
$database->app_uuid = '159a8da8-0e8c-a26b-6d5b-19c532b6d470';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('sip_profile_add', 'temp');
|
||||
$p->delete('sip_profile_domain_add', 'temp');
|
||||
$p->delete('sip_profile_setting_add', 'temp');
|
||||
}
|
||||
|
||||
//save the sip profile xml
|
||||
save_sip_profile_xml();
|
||||
|
||||
//apply settings reminder
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
}
|
||||
unset($prep_statement);
|
||||
}
|
||||
|
||||
|
||||
//upgrade - add missing sip profiles domain settings
|
||||
$sql = "select count(*) as num_rows from v_sip_profile_domains ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
if ($prep_statement) {
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
||||
if ($row['num_rows'] == 0) {
|
||||
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
else {
|
||||
$sip_profile_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
$db->beginTransaction();
|
||||
$xml_files = glob($sip_profile_dir);
|
||||
foreach ($xml_files as &$xml_file) {
|
||||
//load the sip profile xml and save it into an array
|
||||
$sip_profile_xml = file_get_contents($xml_file);
|
||||
$xml = simplexml_load_string($sip_profile_xml);
|
||||
$json = json_encode($xml);
|
||||
$sip_profile = json_decode($json, true);
|
||||
$sip_profile_name = $sip_profile['@attributes']['name'];
|
||||
$sip_profile_enabled = $sip_profile['@attributes']['enabled'];
|
||||
//echo "sip profile name: ".$sip_profile_name."\n";
|
||||
$sql = "select count(*) from v_sip_profile_domains ";
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, null, 'column');
|
||||
unset($sql);
|
||||
|
||||
//get the domain, alias and parse values and set as variables
|
||||
$sip_profile_domain_name = $sip_profile['domains']['domain']['@attributes']['name'];
|
||||
$sip_profile_domain_alias = $sip_profile['domains']['domain']['@attributes']['alias'];
|
||||
$sip_profile_domain_parse = $sip_profile['domains']['domain']['@attributes']['parse'];
|
||||
if ($num_rows == 0) {
|
||||
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/share/examples/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles')) {
|
||||
$sip_profile_dir = '/usr/local/share/fusionpbx/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
else {
|
||||
$sip_profile_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/sip_profiles/*.xml.noload';
|
||||
}
|
||||
|
||||
//get the sip_profile_uuid using the sip profile name
|
||||
$sql = "select sip_profile_uuid from v_sip_profiles ";
|
||||
$sql .= "where sip_profile_name = '$sip_profile_name' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
$sip_profile_uuid = $result[0]["sip_profile_uuid"];
|
||||
unset ($prep_statement);
|
||||
$xml_files = glob($sip_profile_dir);
|
||||
foreach ($xml_files as $x => &$xml_file) {
|
||||
//load the sip profile xml and save it into an array
|
||||
$sip_profile_xml = file_get_contents($xml_file);
|
||||
$xml = simplexml_load_string($sip_profile_xml);
|
||||
$json = json_encode($xml);
|
||||
$sip_profile = json_decode($json, true);
|
||||
$sip_profile_name = $sip_profile['@attributes']['name'];
|
||||
$sip_profile_enabled = $sip_profile['@attributes']['enabled'];
|
||||
|
||||
//add the sip profile domains name, alias and parse
|
||||
if ($sip_profile_uuid) {
|
||||
$sip_profile_domain_uuid = uuid();
|
||||
$sql = "insert into v_sip_profile_domains";
|
||||
$sql .= "(";
|
||||
$sql .= "sip_profile_domain_uuid, ";
|
||||
$sql .= "sip_profile_uuid, ";
|
||||
$sql .= "sip_profile_domain_name, ";
|
||||
$sql .= "sip_profile_domain_alias, ";
|
||||
$sql .= "sip_profile_domain_parse ";
|
||||
$sql .= ") ";
|
||||
$sql .= "values ";
|
||||
$sql .= "( ";
|
||||
$sql .= "'".$sip_profile_domain_uuid."', ";
|
||||
$sql .= "'".$sip_profile_uuid."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_name)."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_alias)."', ";
|
||||
$sql .= "'".check_str($sip_profile_domain_parse)."' ";
|
||||
$sql .= ")";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
//unset the sip_profile_uuid
|
||||
unset($sip_profile_uuid);
|
||||
//get the sip_profile_uuid using the sip profile name
|
||||
$sql = "select sip_profile_uuid from v_sip_profiles ";
|
||||
$sql .= "where sip_profile_name = :sip_profile_name ";
|
||||
$parameters['sip_profile_name'] = $sip_profile_name;
|
||||
$database = new database;
|
||||
$sip_profile_uuid = $database->select($sql, $parameters, 'column');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//add the sip profile domains name, alias and parse
|
||||
if (is_uuid($sip_profile_uuid)) {
|
||||
$sip_profile_domain_uuid = uuid();
|
||||
$array['sip_profile_domains'][$x]['sip_profile_domain_uuid'] = $sip_profile_domain_uuid;
|
||||
$array['sip_profile_domains'][$x]['sip_profile_uuid'] = $sip_profile_uuid;
|
||||
$array['sip_profile_domains'][$x]['sip_profile_domain_name'] = $sip_profile['domains']['domain']['@attributes']['name'];
|
||||
$array['sip_profile_domains'][$x]['sip_profile_domain_alias'] = $sip_profile['domains']['domain']['@attributes']['alias'];
|
||||
$array['sip_profile_domains'][$x]['sip_profile_domain_parse'] = $sip_profile['domains']['domain']['@attributes']['parse'];
|
||||
}
|
||||
|
||||
//unset the sip_profile_uuid
|
||||
unset($sip_profile_uuid);
|
||||
}
|
||||
|
||||
//execute inserts
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
//grant temporary permissions
|
||||
$p = new permissions;
|
||||
$p->add('sip_profile_domain_add', 'temp');
|
||||
|
||||
//execute insert
|
||||
$database = new database;
|
||||
$database->app_name = 'sip_profiles';
|
||||
$database->app_uuid = '159a8da8-0e8c-a26b-6d5b-19c532b6d470';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//revoke temporary permissions
|
||||
$p->delete('sip_profile_domain_add', 'temp');
|
||||
}
|
||||
$db->commit();
|
||||
|
||||
//save the sip profile xml
|
||||
//save the sip profile xml
|
||||
save_sip_profile_xml();
|
||||
|
||||
//apply settings reminder
|
||||
//apply settings reminder
|
||||
$_SESSION["reload_xml"] = true;
|
||||
}
|
||||
unset($prep_statement);
|
||||
}
|
||||
|
||||
|
||||
//if empty, set enabled to true
|
||||
$sql = "update v_sip_profiles set ";
|
||||
$sql .= "sip_profile_enabled = 'true' ";
|
||||
$sql .= "where sip_profile_enabled is null ";
|
||||
$sql .= "or sip_profile_enabled = '' ";
|
||||
$database = new database;
|
||||
$database->execute($sql);
|
||||
unset($sql);
|
||||
|
||||
}
|
||||
|
||||
//if empty, set sip_profile_enabled = true
|
||||
if ($domains_processed == 1) {
|
||||
$sql = "update v_sip_profiles set ";
|
||||
$sql .= "sip_profile_enabled = 'true' ";
|
||||
$sql .= "where sip_profile_enabled is null ";
|
||||
$sql .= "or sip_profile_enabled = '' ";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
}
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user