From 752a55d9b7c7d7023a287fdc77c1ca35ef9f0d55 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Thu, 14 Jul 2016 01:13:02 -0600 Subject: [PATCH] Update ivr_menu.php Update the ivr_menu class to use the orm class this simplifies and reduces the size of the code. --- app/ivr_menus/resources/classes/ivr_menu.php | 523 +++++++------------ 1 file changed, 188 insertions(+), 335 deletions(-) diff --git a/app/ivr_menus/resources/classes/ivr_menu.php b/app/ivr_menus/resources/classes/ivr_menu.php index 3e03617268..c966958bd3 100644 --- a/app/ivr_menus/resources/classes/ivr_menu.php +++ b/app/ivr_menus/resources/classes/ivr_menu.php @@ -158,203 +158,49 @@ include "root.php"; return $database->find(); } - public function add() { - - //create the database object - $database = new database; - if ($this->db) { - $database->db = $this->db; + public function save($array) { + //action add or update + if (strlen($this->ivr_menu_uuid) == 0) { + $action = "add"; } - - //add the ivr menu - if (strlen($this->ivr_menu_extension) > 0) { - //set the ivr menu uuid - if (strlen($this->ivr_menu_uuid) == 0) { - $this->ivr_menu_uuid = uuid(); - } - - //ensure the dialplan_uuid has a uuid - if (strlen($this->dialplan_uuid) == 0) { - $this->dialplan_uuid = uuid(); - } - - //add the ivr menu - $database->table = "v_ivr_menus"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['ivr_menu_extension'] = $this->ivr_menu_extension; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['ivr_menu_uuid'] = $this->ivr_menu_uuid; - $database->fields['ivr_menu_name'] = $this->ivr_menu_name; - $database->fields['ivr_menu_greet_long'] = $this->ivr_menu_greet_long; - $database->fields['ivr_menu_greet_short'] = $this->ivr_menu_greet_short; - $database->fields['ivr_menu_invalid_sound'] = $this->ivr_menu_invalid_sound; - $database->fields['ivr_menu_exit_sound'] = $this->ivr_menu_exit_sound; - $database->fields['ivr_menu_confirm_macro'] = $this->ivr_menu_confirm_macro; - $database->fields['ivr_menu_confirm_key'] = $this->ivr_menu_confirm_key; - $database->fields['ivr_menu_tts_engine'] = $this->ivr_menu_tts_engine; - $database->fields['ivr_menu_tts_voice'] = $this->ivr_menu_tts_voice; - $database->fields['ivr_menu_confirm_attempts'] = $this->ivr_menu_confirm_attempts; - $database->fields['ivr_menu_timeout'] = $this->ivr_menu_timeout; - $database->fields['ivr_menu_exit_app'] = $this->ivr_menu_exit_app; - $database->fields['ivr_menu_exit_data'] = $this->ivr_menu_exit_data; - $database->fields['ivr_menu_inter_digit_timeout'] = $this->ivr_menu_inter_digit_timeout; - $database->fields['ivr_menu_max_failures'] = $this->ivr_menu_max_failures; - $database->fields['ivr_menu_max_timeouts'] = $this->ivr_menu_max_timeouts; - $database->fields['ivr_menu_max_timeouts'] = $this->ivr_menu_max_timeouts; - $database->fields['ivr_menu_digit_len'] = $this->ivr_menu_digit_len; - $database->fields['ivr_menu_digit_len'] = $this->ivr_menu_digit_len; - $database->fields['ivr_menu_direct_dial'] = $this->ivr_menu_direct_dial; - $database->fields['ivr_menu_ringback'] = $this->ivr_menu_ringback; - $database->fields['ivr_menu_cid_prefix'] = $this->ivr_menu_cid_prefix; - $database->fields['ivr_menu_enabled'] = $this->ivr_menu_enabled; - $database->fields['ivr_menu_description'] = $this->ivr_menu_description; - $database->add(); - } - - //add the ivr menu option - if (strlen($this->ivr_menu_option_action) > 0) { - $database = new database; - $database->table = "v_ivr_menu_options"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['ivr_menu_uuid'] = $this->ivr_menu_uuid; - $database->fields['ivr_menu_option_uuid'] = $this->ivr_menu_option_uuid; - $database->fields['ivr_menu_option_digits'] = $this->ivr_menu_option_digits; - $database->fields['ivr_menu_option_action'] = $this->ivr_menu_option_action; - $database->fields['ivr_menu_option_param'] = $this->ivr_menu_option_param; - $database->fields['ivr_menu_option_order'] = $this->ivr_menu_option_order; - $database->fields['ivr_menu_option_description'] = $this->ivr_menu_option_description; - $database->add(); + else { + $action = "update"; } //update the dialplan - $this->dialplan(); - } + $this->dialplan($array); + $array['dialplan_uuid'] = $this->dialplan_uuid; - public function update() { + //save the ivr_menus + $orm = new orm; + $orm->name('ivr_menus'); + if (strlen($this->ivr_menu_uuid) > 0) { + $orm->uuid($this->ivr_menu_uuid); + } + $orm->save($array); - //create the database object - $database = new database; - if ($this->db) { - $database->db = $this->db; + //set the add message + if ($action == "add" && permission_exists('ivr_menu_add')) { + $_SESSION['message'] = $text['message-add']; } - //get the dialplan uuid - $database->table = "v_ivr_menus"; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'ivr_menu_uuid'; - $database->where[1]['value'] = $this->ivr_menu_uuid; - $database->where[1]['operator'] = '='; - $result = $database->find(); - foreach($result as $row) { - $this->dialplan_uuid = $row['dialplan_uuid']; + //set the update message + if ($action == "update" && permission_exists('ivr_menu_edit')) { + $_SESSION['message'] = $text['message-update']; } - - //if the extension number is empty and the dialplan exists then delete the dialplan - if (strlen($this->ivr_menu_extension) == 0) { - if (strlen($this->dialplan_uuid) > 0) { - //delete dialplan entry - $database = new database; - $database->table = "v_dialplan_details"; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'dialplan_uuid'; - $database->where[1]['value'] = $this->dialplan_uuid; - $database->where[1]['operator'] = '='; - $database->delete(); - - //delete the child dialplan information - $database = new database; - $database->table = "v_dialplans"; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'dialplan_uuid'; - $database->where[1]['value'] = $this->dialplan_uuid; - $database->where[1]['operator'] = '='; - $database->delete(); - - //update the table to remove the dialplan_uuid - $this->dialplan_uuid = ''; - } - } - - //update the ivr menu - if (strlen($this->ivr_menu_extension) > 0) { - if (strlen($this->dialplan_uuid) == 0) { - $this->dialplan_uuid = uuid(); - } - $database = new database; - $database->table = "v_ivr_menus"; - $database->fields['ivr_menu_uuid'] = $this->ivr_menu_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['ivr_menu_name'] = $this->ivr_menu_name; - $database->fields['ivr_menu_extension'] = $this->ivr_menu_extension; - $database->fields['ivr_menu_greet_long'] = $this->ivr_menu_greet_long; - $database->fields['ivr_menu_greet_short'] = $this->ivr_menu_greet_short; - $database->fields['ivr_menu_invalid_sound'] = $this->ivr_menu_invalid_sound; - $database->fields['ivr_menu_exit_sound'] = $this->ivr_menu_exit_sound; - $database->fields['ivr_menu_confirm_macro'] = $this->ivr_menu_confirm_macro; - $database->fields['ivr_menu_confirm_key'] = $this->ivr_menu_confirm_key; - $database->fields['ivr_menu_tts_engine'] = $this->ivr_menu_tts_engine; - $database->fields['ivr_menu_tts_voice'] = $this->ivr_menu_tts_voice; - $database->fields['ivr_menu_confirm_attempts'] = $this->ivr_menu_confirm_attempts; - $database->fields['ivr_menu_timeout'] = $this->ivr_menu_timeout; - $database->fields['ivr_menu_exit_app'] = $this->ivr_menu_exit_app; - $database->fields['ivr_menu_exit_data'] = $this->ivr_menu_exit_data; - $database->fields['ivr_menu_inter_digit_timeout'] = $this->ivr_menu_inter_digit_timeout; - $database->fields['ivr_menu_max_failures'] = $this->ivr_menu_max_failures; - $database->fields['ivr_menu_max_timeouts'] = $this->ivr_menu_max_timeouts; - $database->fields['ivr_menu_max_timeouts'] = $this->ivr_menu_max_timeouts; - $database->fields['ivr_menu_digit_len'] = $this->ivr_menu_digit_len; - $database->fields['ivr_menu_digit_len'] = $this->ivr_menu_digit_len; - $database->fields['ivr_menu_direct_dial'] = $this->ivr_menu_direct_dial; - $database->fields['ivr_menu_ringback'] = $this->ivr_menu_ringback; - $database->fields['ivr_menu_cid_prefix'] = $this->ivr_menu_cid_prefix; - $database->fields['ivr_menu_enabled'] = $this->ivr_menu_enabled; - $database->fields['ivr_menu_description'] = $this->ivr_menu_description; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'ivr_menu_uuid'; - $database->where[1]['value'] = $this->ivr_menu_uuid; - $database->where[1]['operator'] = '='; - $database->update(); - } - - //update the ivr menu option - if (strlen($this->ivr_menu_option_action) > 0) { - $database = new database; - $database->table = "v_ivr_menu_options"; - $database->fields['ivr_menu_option_digits'] = $this->ivr_menu_option_digits; - $database->fields['ivr_menu_option_action'] = $this->ivr_menu_option_action; - $database->fields['ivr_menu_option_param'] = $this->ivr_menu_option_param; - $database->fields['ivr_menu_option_order'] = $this->ivr_menu_option_order; - $database->fields['ivr_menu_option_description'] = $this->ivr_menu_option_description; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'ivr_menu_uuid'; - $database->where[1]['value'] = $this->ivr_menu_uuid; - $database->where[1]['operator'] = '='; - $database->where[2]['name'] = 'ivr_menu_option_uuid'; - $database->where[2]['value'] = $this->ivr_menu_option_uuid; - $database->where[2]['operator'] = '='; - $database->update(); - } - - //update the dialplan - $this->dialplan(); + + //return the result + return $orm->message; } function delete() { + //create the database object $database = new database; if ($this->db) { $database->db = $this->db; } + //start the transaction //$count = $database->db->exec("BEGIN;"); @@ -437,183 +283,190 @@ include "root.php"; } } - public function dialplan() { - //create the database object + public function dialplan($field) { + + //set global variables + global $db; + + //action add or update + if (strlen($field['dialplan_uuid']) == 0) { + $field['dialplan_uuid'] = uuid(); + $action = "add"; + } + else { + $action = "update"; + } + + //delete child data + if ($action == "update") { + $sql = "delete from v_dialplan_details "; + $sql .= "where dialplan_uuid = '".$field["dialplan_uuid"]."'; "; + $db->query($sql); + unset($sql); + } + + //get dialplan details from the database + if ($action == "update") { + $sql = "select * from v_dialplan_details "; + $sql .= "where dialplan_uuid = '".$field["dialplan_uuid"]."' "; + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $dialplan_details = $prep_statement->fetchAll(PDO::FETCH_NAMED); + } + unset($sql, $prep_statement, $row); + } + + //get the array from the database + /* $database = new database; - if ($this->db) { - $database->db = $this->db; - } + if ($this->db) { $database->db = $this->db; } + $database->table = "v_ivr_menu_details"; + $database->where[0]['name'] = 'ivr_menu_uuid'; + $database->where[0]['value'] = $field["ivr_menu_uuid"]; + $database->where[0]['operator'] = '='; + $ivr_menu_details = $database->find(); + */ - //check to see if the dialplan entry exists - $dialplan = new dialplan; - $dialplan->domain_uuid = $_SESSION["domain_uuid"]; - $dialplan->dialplan_uuid = $this->dialplan_uuid; - $dialplan_exists = $dialplan->dialplan_exists(); + //add the details array + $x=0; + $details[$x]['dialplan_detail_tag'] = 'condition'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'destination_number'; + $details[$x]['dialplan_detail_data'] = '^'.$field['ivr_menu_extension'].'$'; + $details[$x]['dialplan_detail_order'] = '005'; - //if the dialplan entry does not exist then add it - if (!$dialplan_exists) { - $database = new database; - $database->table = "v_dialplans"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_name'] = $this->ivr_menu_name; - $database->fields['dialplan_order'] = '333'; - $database->fields['dialplan_context'] = $_SESSION['context']; - $database->fields['dialplan_enabled'] = $this->ivr_menu_enabled; - $database->fields['dialplan_description'] = $this->ivr_menu_description; - $database->fields['app_uuid'] = $this->app_uuid; - $database->add(); - } + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'answer'; + $details[$x]['dialplan_detail_data'] = ''; + $details[$x]['dialplan_detail_order'] = '010'; - //if the dialplan entry exists then update it - if ($dialplan_exists && strlen($this->ivr_menu_extension) > 0) { - //update the dialplan - $database = new database; - $database->table = "v_dialplans"; - $database->fields['dialplan_name'] = $this->ivr_menu_name; - $database->fields['dialplan_order'] = '333'; - $database->fields['dialplan_context'] = $_SESSION['context']; - $database->fields['dialplan_enabled'] = $this->ivr_menu_enabled; - $database->fields['dialplan_description'] = $this->ivr_menu_description; - $database->fields['app_uuid'] = $this->app_uuid; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'dialplan_uuid'; - $database->where[1]['value'] = $this->dialplan_uuid; - $database->where[1]['operator'] = '='; - $database->update(); + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'sleep'; + $details[$x]['dialplan_detail_data'] = '1000'; + $details[$x]['dialplan_detail_order'] = '015'; - //delete the old dialplan details to prepare for new details - $database = new database; - $database->table = "v_dialplan_details"; - $database->where[0]['name'] = 'domain_uuid'; - $database->where[0]['value'] = $this->domain_uuid; - $database->where[0]['operator'] = '='; - $database->where[1]['name'] = 'dialplan_uuid'; - $database->where[1]['value'] = $this->dialplan_uuid; - $database->where[1]['operator'] = '='; - $database->delete(); - } + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'set'; + $details[$x]['dialplan_detail_data'] = 'hangup_after_bridge=true'; + $details[$x]['dialplan_detail_order'] = '020'; - //add the dialplan details - $detail_data = '^'.$this->ivr_menu_extension.'$'; - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'condition'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'destination_number'; - $database->fields['dialplan_detail_data'] = $detail_data; - $database->fields['dialplan_detail_order'] = '005'; - $database->add(); - - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'answer'; - $database->fields['dialplan_detail_data'] = ''; - $database->fields['dialplan_detail_order'] = '010'; - $database->add(); - - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'sleep'; - $database->fields['dialplan_detail_data'] = '1000'; - $database->fields['dialplan_detail_order'] = '015'; - $database->add(); - - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'set'; - $database->fields['dialplan_detail_data'] = 'hangup_after_bridge=true'; - $database->fields['dialplan_detail_order'] = '020'; - $database->add(); - - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'set'; - if ($this->ivr_menu_ringback == "music" || $this->ivr_menu_ringback == "") { - $database->fields['dialplan_detail_data'] = 'ringback=${hold_music}'; + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'set'; + if ($field['ivr_menu_ringback'] == "music" || $field['ivr_menu_ringback'] == "") { + $details[$x]['dialplan_detail_data'] = 'ringback=${hold_music}'; } else { - $database->fields['dialplan_detail_data'] = 'ringback='.$this->ivr_menu_ringback; + $details[$x]['dialplan_detail_data'] = 'ringback='.$field['ivr_menu_ringback']; } - $database->fields['dialplan_detail_order'] = '025'; - $database->add(); + $details[$x]['dialplan_detail_order'] = '025'; - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'set'; - if ($this->ivr_menu_ringback == "music" || $this->ivr_menu_ringback == "") { - $database->fields['dialplan_detail_data'] = 'transfer_ringback=${hold_music}'; + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'set'; + if ($field['ivr_menu_ringback'] == "music" || $field['ivr_menu_ringback'] == "") { + $details[$x]['dialplan_detail_data'] = 'transfer_ringback=${hold_music}'; } else { - $database->fields['dialplan_detail_data'] = 'transfer_ringback='.$this->ivr_menu_ringback; + $details[$x]['dialplan_detail_data'] = 'transfer_ringback='.$field['ivr_menu_ringback']; } - $database->fields['dialplan_detail_order'] = '030'; - $database->add(); + $details[$x]['dialplan_detail_order'] = '030'; - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = 'set'; - $database->fields['dialplan_detail_data'] = 'ivr_menu_uuid='.$this->ivr_menu_uuid; - $database->fields['dialplan_detail_order'] = '035'; - $database->add(); + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = 'set'; + $details[$x]['dialplan_detail_data'] = 'ivr_menu_uuid='.$this->ivr_menu_uuid; + $details[$x]['dialplan_detail_order'] = '035'; - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction if ($_SESSION['ivr menu']['application']['text'] == "lua") { - $database->fields['dialplan_detail_type'] = 'lua'; - $database->fields['dialplan_detail_data'] = 'ivr_menu.lua'; + $details[$x]['dialplan_detail_type'] = 'lua'; + $details[$x]['dialplan_detail_data'] = 'ivr_menu.lua'; } else { - $database->fields['dialplan_detail_type'] = 'ivr'; - $database->fields['dialplan_detail_data'] = $this->ivr_menu_uuid; + $details[$x]['dialplan_detail_type'] = 'ivr'; + $details[$x]['dialplan_detail_data'] = $this->ivr_menu_uuid; } - $database->fields['dialplan_detail_order'] = '040'; - $database->add(); + $details[$x]['dialplan_detail_order'] = '040'; - if (strlen($this->ivr_menu_exit_app) > 0) { - $database->table = "v_dialplan_details"; - $database->fields['domain_uuid'] = $this->domain_uuid; - $database->fields['dialplan_uuid'] = $this->dialplan_uuid; - $database->fields['dialplan_detail_uuid'] = uuid(); - $database->fields['dialplan_detail_tag'] = 'action'; //condition, action, antiaction - $database->fields['dialplan_detail_type'] = $this->ivr_menu_exit_app; - $database->fields['dialplan_detail_data'] = $this->ivr_menu_exit_data; - $database->fields['dialplan_detail_order'] = '045'; - $database->add(); + if (strlen($field['ivr_menu_exit_app']) > 0) { + $x++; + $details[$x]['dialplan_detail_tag'] = 'action'; //condition, action, antiaction + $details[$x]['dialplan_detail_type'] = $field['ivr_menu_exit_app']; + $details[$x]['dialplan_detail_data'] = $field['ivr_menu_exit_data']; + $details[$x]['dialplan_detail_order'] = '045'; + $x++; } + //build the array + $array['domain_uuid'] = $field['domain_uuid']; + $array['dialplan_uuid'] = $field['dialplan_uuid']; + $array['dialplan_name'] = $field['ivr_menu_name']; + $array['dialplan_order'] = '333'; + $array['dialplan_context'] = $_SESSION['context']; + $array['dialplan_enabled'] = $field['ivr_menu_enabled']; + $array['dialplan_description'] = $field['ivr_menu_description']; + $array['app_uuid'] = $this->app_uuid; + $x=0; + foreach ($details as $row) { + //find the matching uuid + /* + foreach ($dialplan_details as $database) { + if ($database['dialplan_detail_tag'] == $row['dialplan_detail_tag'] + && $database['dialplan_detail_type'] == $row['dialplan_detail_type'] + && $database['dialplan_detail_data'] == $row['dialplan_detail_data']) { + $array['dialplan_details'][$x]['dialplan_detail_uuid'] = $database['dialplan_detail_uuid']; + } + } + */ + + //add to the array + $array['dialplan_details'][$x]['domain_uuid'] = $field['domain_uuid']; + $array['dialplan_details'][$x]['dialplan_uuid'] = $field['dialplan_uuid']; + $array['dialplan_details'][$x]['dialplan_detail_tag'] = $row['dialplan_detail_tag']; + $array['dialplan_details'][$x]['dialplan_detail_type'] = $row['dialplan_detail_type']; + $array['dialplan_details'][$x]['dialplan_detail_data'] = $row['dialplan_detail_data']; + $array['dialplan_details'][$x]['dialplan_detail_order'] = $row['dialplan_detail_order']; + + //increment the row + $x++; + } + + //debug + //echo "
\n";
+				//print_r($dialplan_details);
+				//print_r($array);
+				//echo "
\n"; + //exit; + + //save the dialplan + $orm = new orm; + $orm->name('dialplans'); + $orm->save($array); + $response = $orm->message; + if (strlen($response['uuid']) > 0) { + $this->dialplan_uuid = $response['uuid']; + } + + //debug + //echo "
\n";
+				//print_r($response);
+				//echo "
\n"; + //exit; + + //synchronize the xml config + save_dialplan_xml(); + //delete the dialplan context from memcache - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - if ($fp) { - $switch_cmd .= "memcache delete dialplan:".$_SESSION["context"]."@".$_SESSION['domain_name']; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - } + //$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + //if ($fp) { + // $switch_cmd .= "memcache delete dialplan:".$_SESSION["context"]."@".$_SESSION['domain_name']; + // $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + //} } function get_xml(){ @@ -779,4 +632,4 @@ include "root.php"; } -?> \ No newline at end of file +?>