Efficiency for app defaults.
This commit is contained in:
+23
-101
@@ -24,57 +24,8 @@
|
|||||||
Mark J Crane <markjcrane@fusionpbx.com>
|
Mark J Crane <markjcrane@fusionpbx.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//if there is more than one domain then set the default context to the domain name
|
|
||||||
/*
|
|
||||||
if (count($_SESSION['domains']) > 1) {
|
|
||||||
$sql = "select * from v_dialplans ";
|
|
||||||
$sql .= "where dialplan_context = 'default' ";
|
|
||||||
$prep_statement = $db->prepare(check_sql($sql));
|
|
||||||
$prep_statement->execute();
|
|
||||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
|
||||||
foreach ($result as &$row) {
|
|
||||||
$domain_uuid = $row["domain_uuid"];
|
|
||||||
$dialplan_uuid = $row["dialplan_uuid"];
|
|
||||||
$dialplan_context = $_SESSION['domains'][$domain_uuid]['domain_name'];
|
|
||||||
$sql = "update v_dialplans set ";
|
|
||||||
$sql .= "dialplan_context = '$dialplan_context' ";
|
|
||||||
$sql .= "where domain_uuid = '$domain_uuid' ";
|
|
||||||
$sql .= "and dialplan_uuid = '$dialplan_uuid' ";
|
|
||||||
$db->exec(check_sql($sql));
|
|
||||||
unset($sql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
//remove the global dialplan that calls app.lua dialplan
|
|
||||||
if (count($_SESSION['domains']) > 1) {
|
|
||||||
//get the dialplan data
|
|
||||||
$sql = "select * from v_dialplans ";
|
|
||||||
$sql .= "where app_uuid = '34dd307b-fffe-4ead-990c-3d070e288126' ";
|
|
||||||
$prep_statement = $db->prepare(check_sql($sql));
|
|
||||||
$prep_statement->execute();
|
|
||||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
|
||||||
foreach ($result as &$row) {
|
|
||||||
$dialplan_uuid = $row["dialplan_uuid"];
|
|
||||||
}
|
|
||||||
unset($prep_statement);
|
|
||||||
//delete child data
|
|
||||||
if (isset($dialplan_uuid)) {
|
|
||||||
$sql = "delete from v_dialplan_details ";
|
|
||||||
$sql .= "where dialplan_uuid = '".$dialplan_uuid."'; ";
|
|
||||||
$db->query($sql);
|
|
||||||
unset($sql);
|
|
||||||
}
|
|
||||||
//delete parent data
|
|
||||||
if (isset($dialplan_uuid)) {
|
|
||||||
$sql = "delete from v_dialplans ";
|
|
||||||
$sql .= "where dialplan_uuid = '".$dialplan_uuid."'; ";
|
|
||||||
$db->query($sql);
|
|
||||||
unset($sql,$dialplan_uuid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//only run the following code if the directory exists
|
//only run the following code if the directory exists
|
||||||
|
/*
|
||||||
if (is_dir($_SESSION['switch']['dialplan']['dir'])) {
|
if (is_dir($_SESSION['switch']['dialplan']['dir'])) {
|
||||||
//write the dialplan/default.xml if it does not exist
|
//write the dialplan/default.xml if it does not exist
|
||||||
//set the path
|
//set the path
|
||||||
@@ -102,62 +53,33 @@
|
|||||||
fclose($fh);
|
fclose($fh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//get the $apps array from the installed apps from the core and mod directories
|
//get the $apps array from the installed apps from the core and mod directories
|
||||||
$xml_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/resources/switch/conf/dialplan/*.xml");
|
|
||||||
foreach ($xml_list as &$xml_file) {
|
|
||||||
//get and parse the xml
|
|
||||||
$xml_string = file_get_contents($xml_file);
|
|
||||||
//get the order number prefix from the file name
|
|
||||||
$name_array = explode('_', basename($xml_file));
|
|
||||||
if (is_numeric($name_array[0])) {
|
|
||||||
$dialplan_order = $name_array[0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$dialplan_order = 0;
|
|
||||||
}
|
|
||||||
//dialplan class
|
|
||||||
$dialplan = new dialplan;
|
|
||||||
$dialplan->domain_uuid = $domain_uuid;
|
|
||||||
$dialplan->dialplan_order = $dialplan_order;
|
|
||||||
$dialplan->default_context = $domain_name;
|
|
||||||
if ($display_type == "text") {
|
|
||||||
$dialplan->display_type = 'text';
|
|
||||||
}
|
|
||||||
$dialplan->xml = $xml_string;
|
|
||||||
$dialplan->import();
|
|
||||||
}
|
|
||||||
|
|
||||||
//add the global dialplan to inbound routes
|
|
||||||
/*
|
|
||||||
if ($domains_processed == 1) {
|
if ($domains_processed == 1) {
|
||||||
$sql = "select count(*) as num_rows from v_dialplans ";
|
$xml_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/resources/switch/conf/dialplan/*.xml");
|
||||||
$sql .= "where dialplan_uuid = 'd4e06654-e394-444a-b3af-4c3d54aebbec' ";
|
foreach ($xml_list as &$xml_file) {
|
||||||
$prep_statement = $db->prepare(check_sql($sql));
|
//get and parse the xml
|
||||||
if ($prep_statement) {
|
$xml_string = file_get_contents($xml_file);
|
||||||
$prep_statement->execute();
|
//get the order number prefix from the file name
|
||||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
$name_array = explode('_', basename($xml_file));
|
||||||
if ($row['num_rows'] == 0) {
|
if (is_numeric($name_array[0])) {
|
||||||
$sql = "INSERT INTO v_dialplans ";
|
$dialplan_order = $name_array[0];
|
||||||
$sql .= "(dialplan_uuid, app_uuid, dialplan_context, dialplan_name, dialplan_continue, dialplan_order, dialplan_enabled) ";
|
}
|
||||||
$sql .= "VALUES ('d4e06654-e394-444a-b3af-4c3d54aebbec', 'c03b422e-13a8-bd1b-e42b-b6b9b4d27ce4', 'public', 'global', 'true', '0', 'false');";
|
else {
|
||||||
$db->query($sql);
|
$dialplan_order = 0;
|
||||||
|
}
|
||||||
$sql = "INSERT INTO v_dialplan_details ";
|
//dialplan class
|
||||||
$sql .= "(dialplan_uuid, dialplan_detail_uuid, dialplan_detail_tag, dialplan_detail_type, dialplan_detail_data, dialplan_detail_order) ";
|
$dialplan = new dialplan;
|
||||||
$sql .= "VALUES ('d4e06654-e394-444a-b3af-4c3d54aebbec', '5e1062d8-6842-4890-a78a-388e8dd5bbaf', 'condition', 'context', 'public', '10');";
|
$dialplan->dialplan_order = $dialplan_order;
|
||||||
$db->query($sql);
|
$dialplan->default_context = $domain_name;
|
||||||
|
if ($display_type == "text") {
|
||||||
$sql = "INSERT INTO v_dialplan_details ";
|
$dialplan->display_type = 'text';
|
||||||
$sql .= "(dialplan_uuid, dialplan_detail_uuid, dialplan_detail_tag, dialplan_detail_type, dialplan_detail_data, dialplan_detail_order) ";
|
}
|
||||||
$sql .= "VALUES ('d4e06654-e394-444a-b3af-4c3d54aebbec', 'bdafd4aa-6633-48fc-970e-bc2778f3f022', 'action', 'lua', 'app.lua dialplan', '20');";
|
$dialplan->xml = $xml_string;
|
||||||
$db->query($sql);
|
$dialplan->import();
|
||||||
unset($sql);
|
|
||||||
}
|
|
||||||
unset($prep_statement);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
//add not found dialplan to inbound routes
|
//add not found dialplan to inbound routes
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -228,39 +228,39 @@ include "root.php";
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function app_uuid_exists() {
|
private function app_uuid_exists() {
|
||||||
$sql = "select count(*) as num_rows from v_dialplans ";
|
$sql = "select domain_uuid from v_dialplans ";
|
||||||
$sql .= "where (domain_uuid = '".$this->domain_uuid."' or domain_uuid is null) ";
|
$sql .= "where (domain_uuid = '".$this->domain_uuid."' or domain_uuid is null) ";
|
||||||
$sql .= "and app_uuid = '".$this->app_uuid."' ";
|
$sql .= "and app_uuid = '".$this->app_uuid."' ";
|
||||||
$prep_statement = $this->db->prepare(check_sql($sql));
|
$prep_statement = $this->db->prepare(check_sql($sql));
|
||||||
if ($prep_statement) {
|
if ($prep_statement) {
|
||||||
$prep_statement->execute();
|
$prep_statement->execute();
|
||||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||||
if ($row['num_rows'] > 0) {
|
if (count($result)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($prep_statement, $result);
|
unset($sql, $prep_statement, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dialplan_exists() {
|
public function dialplan_exists() {
|
||||||
$sql = "select count(*) as num_rows from v_dialplans ";
|
$sql = "select domain_uuid from v_dialplans ";
|
||||||
$sql .= "where (domain_uuid = '".$this->domain_uuid."' or domain_uuid is null)";
|
$sql .= "where (domain_uuid = '".$this->domain_uuid."' or domain_uuid is null)";
|
||||||
$sql .= "and dialplan_uuid = '".$this->dialplan_uuid."' ";
|
$sql .= "and dialplan_uuid = '".$this->dialplan_uuid."' ";
|
||||||
$prep_statement = $this->db->prepare(check_sql($sql));
|
$prep_statement = $this->db->prepare(check_sql($sql));
|
||||||
if ($prep_statement) {
|
if ($prep_statement) {
|
||||||
$prep_statement->execute();
|
$prep_statement->execute();
|
||||||
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||||
if ($row['num_rows'] > 0) {
|
if (count($result)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($prep_statement, $result);
|
unset($sql, $prep_statement, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function import() {
|
public function import() {
|
||||||
@@ -289,108 +289,123 @@ include "root.php";
|
|||||||
$dialplan['extension']['condition'][0] = $tmp;
|
$dialplan['extension']['condition'][0] = $tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//check if the dialplan app uuid exists
|
|
||||||
|
//get the app_uuid
|
||||||
$this->app_uuid = $dialplan['extension']['@attributes']['app_uuid'];
|
$this->app_uuid = $dialplan['extension']['@attributes']['app_uuid'];
|
||||||
if ($this->app_uuid_exists()) {
|
|
||||||
//dialplan entry already exists do nothing
|
//get the list of domains
|
||||||
|
if (!isset($_SESSION['domains'])) {
|
||||||
|
$sql = "select * from v_domains; ";
|
||||||
|
$prep_statement = $this->db->prepare($sql);
|
||||||
|
$prep_statement->execute();
|
||||||
|
$_SESSION['domains'] = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
unset($sql, $prep_statement);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
//start the transaction
|
//check if the dialplan app uuid exists
|
||||||
$this->db->beginTransaction();
|
foreach ($_SESSION['domains'] as $row) {
|
||||||
//get the attributes
|
//get the domain_uuid
|
||||||
$this->dialplan_uuid = uuid();
|
$this->domain_uuid $row['domain_uuid'];
|
||||||
$this->dialplan_name = $dialplan['extension']['@attributes']['name'];
|
|
||||||
$this->dialplan_number = $dialplan['extension']['@attributes']['number'];
|
//check if the dialplan exists
|
||||||
$this->dialplan_context = $dialplan['@attributes']['name'];
|
if (!$this->app_uuid_exists()) {
|
||||||
if (strlen($dialplan['extension']['@attributes']['global']) > 0) {
|
//start the transaction
|
||||||
if ($dialplan['extension']['@attributes']['global'] == "true") {
|
$this->db->beginTransaction();
|
||||||
$this->domain_uuid = null;
|
//get the attributes
|
||||||
|
$this->dialplan_uuid = uuid();
|
||||||
|
$this->dialplan_name = $dialplan['extension']['@attributes']['name'];
|
||||||
|
$this->dialplan_number = $dialplan['extension']['@attributes']['number'];
|
||||||
|
$this->dialplan_context = $dialplan['@attributes']['name'];
|
||||||
|
if (strlen($dialplan['extension']['@attributes']['global']) > 0) {
|
||||||
|
if ($dialplan['extension']['@attributes']['global'] == "true") {
|
||||||
|
$this->domain_uuid = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if ($this->display_type == "text") {
|
||||||
if ($this->display_type == "text") {
|
echo " ".$this->dialplan_name.": added\n";
|
||||||
echo " ".$this->dialplan_name.": added\n";
|
|
||||||
}
|
|
||||||
if (strlen($dialplan['extension']['@attributes']['continue']) > 0) {
|
|
||||||
$this->dialplan_continue = $dialplan['extension']['@attributes']['continue'];
|
|
||||||
}
|
|
||||||
if (strlen($dialplan['extension']['@attributes']['enabled']) > 0) {
|
|
||||||
$this->dialplan_enabled = $dialplan['extension']['@attributes']['enabled'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$this->dialplan_enabled = "true";
|
|
||||||
}
|
|
||||||
$this->dialplan_description = '';
|
|
||||||
$this->dialplan_add();
|
|
||||||
//loop through the condition array
|
|
||||||
$x = 0;
|
|
||||||
$group = 0;
|
|
||||||
$order = 5;
|
|
||||||
if (isset($dialplan['extension']['condition'])) foreach ($dialplan['extension']['condition'] as &$row) {
|
|
||||||
unset($this->dialplan_detail_break);
|
|
||||||
unset($this->dialplan_detail_inline);
|
|
||||||
$this->dialplan_detail_tag = 'condition';
|
|
||||||
$this->dialplan_detail_type = $row['@attributes']['field'];
|
|
||||||
$this->dialplan_detail_data = $row['@attributes']['expression'];
|
|
||||||
$this->dialplan_detail_group = $group;
|
|
||||||
$this->dialplan_detail_order = $order;
|
|
||||||
if (strlen($row['@attributes']['break']) > 0) {
|
|
||||||
$this->dialplan_detail_break = $row['@attributes']['break'];
|
|
||||||
}
|
}
|
||||||
$this->dialplan_detail_add();
|
if (strlen($dialplan['extension']['@attributes']['continue']) > 0) {
|
||||||
if (is_array($row['action']) || is_array($row['anti-action'])) {
|
$this->dialplan_continue = $dialplan['extension']['@attributes']['continue'];
|
||||||
$condition_self_closing_tag = false;
|
}
|
||||||
if (!is_array($row['action'][0])) {
|
if (strlen($dialplan['extension']['@attributes']['enabled']) > 0) {
|
||||||
if ($row['action']['@attributes']['application']) {
|
$this->dialplan_enabled = $dialplan['extension']['@attributes']['enabled'];
|
||||||
$tmp = $row['action'];
|
|
||||||
unset($row['action']);
|
|
||||||
$row['action'][0] = $tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!is_array($row['anti-action'][0])) {
|
|
||||||
if ($row['anti-action']['@attributes']['application']) {
|
|
||||||
$tmp = $row['anti-action'];
|
|
||||||
unset($row['anti-action']);
|
|
||||||
$row['anti-action'][0] = $tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$order = $order + 5;
|
|
||||||
unset($this->dialplan_detail_break);
|
|
||||||
unset($this->dialplan_detail_inline);
|
|
||||||
if (isset($row['action'])) foreach ($row['action'] as &$row2) {
|
|
||||||
$this->dialplan_detail_tag = 'action';
|
|
||||||
$this->dialplan_detail_type = $row2['@attributes']['application'];
|
|
||||||
$this->dialplan_detail_data = $row2['@attributes']['data'];
|
|
||||||
if (strlen($row2['@attributes']['inline']) > 0) {
|
|
||||||
$this->dialplan_detail_inline = $row2['@attributes']['inline'];
|
|
||||||
}
|
|
||||||
$this->dialplan_detail_group = $group;
|
|
||||||
$this->dialplan_detail_order = $order;
|
|
||||||
$this->dialplan_detail_add();
|
|
||||||
$order = $order + 5;
|
|
||||||
}
|
|
||||||
if (isset($row['anti-action'])) foreach ($row['anti-action'] as &$row2) {
|
|
||||||
$this->dialplan_detail_tag = 'anti-action';
|
|
||||||
$this->dialplan_detail_type = $row2['@attributes']['application'];
|
|
||||||
$this->dialplan_detail_data = $row2['@attributes']['data'];
|
|
||||||
$this->dialplan_detail_group = $group;
|
|
||||||
$this->dialplan_detail_order = $order;
|
|
||||||
$this->dialplan_detail_add();
|
|
||||||
$order = $order + 5;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$condition_self_closing_tag = true;
|
$this->dialplan_enabled = "true";
|
||||||
}
|
}
|
||||||
//if not a self closing tag then increment the group
|
$this->dialplan_description = '';
|
||||||
if (!$condition_self_closing_tag) {
|
$this->dialplan_add();
|
||||||
$group++;
|
//loop through the condition array
|
||||||
|
$x = 0;
|
||||||
|
$group = 0;
|
||||||
|
$order = 5;
|
||||||
|
if (isset($dialplan['extension']['condition'])) foreach ($dialplan['extension']['condition'] as &$row) {
|
||||||
|
unset($this->dialplan_detail_break);
|
||||||
|
unset($this->dialplan_detail_inline);
|
||||||
|
$this->dialplan_detail_tag = 'condition';
|
||||||
|
$this->dialplan_detail_type = $row['@attributes']['field'];
|
||||||
|
$this->dialplan_detail_data = $row['@attributes']['expression'];
|
||||||
|
$this->dialplan_detail_group = $group;
|
||||||
|
$this->dialplan_detail_order = $order;
|
||||||
|
if (strlen($row['@attributes']['break']) > 0) {
|
||||||
|
$this->dialplan_detail_break = $row['@attributes']['break'];
|
||||||
|
}
|
||||||
|
$this->dialplan_detail_add();
|
||||||
|
if (is_array($row['action']) || is_array($row['anti-action'])) {
|
||||||
|
$condition_self_closing_tag = false;
|
||||||
|
if (!is_array($row['action'][0])) {
|
||||||
|
if ($row['action']['@attributes']['application']) {
|
||||||
|
$tmp = $row['action'];
|
||||||
|
unset($row['action']);
|
||||||
|
$row['action'][0] = $tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!is_array($row['anti-action'][0])) {
|
||||||
|
if ($row['anti-action']['@attributes']['application']) {
|
||||||
|
$tmp = $row['anti-action'];
|
||||||
|
unset($row['anti-action']);
|
||||||
|
$row['anti-action'][0] = $tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$order = $order + 5;
|
||||||
|
unset($this->dialplan_detail_break);
|
||||||
|
unset($this->dialplan_detail_inline);
|
||||||
|
if (isset($row['action'])) foreach ($row['action'] as &$row2) {
|
||||||
|
$this->dialplan_detail_tag = 'action';
|
||||||
|
$this->dialplan_detail_type = $row2['@attributes']['application'];
|
||||||
|
$this->dialplan_detail_data = $row2['@attributes']['data'];
|
||||||
|
if (strlen($row2['@attributes']['inline']) > 0) {
|
||||||
|
$this->dialplan_detail_inline = $row2['@attributes']['inline'];
|
||||||
|
}
|
||||||
|
$this->dialplan_detail_group = $group;
|
||||||
|
$this->dialplan_detail_order = $order;
|
||||||
|
$this->dialplan_detail_add();
|
||||||
|
$order = $order + 5;
|
||||||
|
}
|
||||||
|
if (isset($row['anti-action'])) foreach ($row['anti-action'] as &$row2) {
|
||||||
|
$this->dialplan_detail_tag = 'anti-action';
|
||||||
|
$this->dialplan_detail_type = $row2['@attributes']['application'];
|
||||||
|
$this->dialplan_detail_data = $row2['@attributes']['data'];
|
||||||
|
$this->dialplan_detail_group = $group;
|
||||||
|
$this->dialplan_detail_order = $order;
|
||||||
|
$this->dialplan_detail_add();
|
||||||
|
$order = $order + 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$condition_self_closing_tag = true;
|
||||||
|
}
|
||||||
|
//if not a self closing tag then increment the group
|
||||||
|
if (!$condition_self_closing_tag) {
|
||||||
|
$group++;
|
||||||
|
}
|
||||||
|
$row['group'] = $group;
|
||||||
|
$order = $order + 5;
|
||||||
|
$x++;
|
||||||
}
|
}
|
||||||
$row['group'] = $group;
|
//end the transaction
|
||||||
$order = $order + 5;
|
$this->db->commit();
|
||||||
$x++;
|
}
|
||||||
}
|
|
||||||
//end the transaction
|
|
||||||
$this->db->commit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user