public function update() { //udate the ivr menu if (strlen($this->ivr_menu_option_action) == 0) { //get the dialplan uuid $database = new database(); if ($this->db) { $database->db = $this->db; } $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']; } //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->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(); //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(); //if the dialplan entry does not exist then add it if (!$dialplan_exists) { $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->add(); } //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(); //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(); } //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}'; } else { $database->fields['dialplan_detail_data'] = 'ringback=' . $this->ivr_menu_ringback; } $database->fields['dialplan_detail_order'] = '025'; $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'] = 'transfer_ringback=${hold_music}'; } else { $database->fields['dialplan_detail_data'] = 'transfer_ringback=' . $this->ivr_menu_ringback; } $database->fields['dialplan_detail_order'] = '030'; $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'] = 'ivr'; if (count($_SESSION["domains"]) > 1) { $database->fields['dialplan_detail_data'] = $_SESSION['domain_name'].'-'.$this->ivr_menu_name; } else { $database->fields['dialplan_detail_data'] = $this->ivr_menu_name; } $database->fields['dialplan_detail_order'] = '035'; $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'] = 'ivr_menu_uuid=' . $this->ivr_menu_uuid; $database->fields['dialplan_detail_order'] = '035'; $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'] = 'lua'; $database->fields['dialplan_detail_data'] = 'ivr_menu.lua'; $database->fields['dialplan_detail_order'] = '040'; $database->add(); 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(); } } //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(); } }
public function dialplan() { //create the database object $database = new database(); if ($this->db) { $database->db = $this->db; } //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(); //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(); } //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(); //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(); } //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}'; } else { $database->fields['dialplan_detail_data'] = 'ringback=' . $this->ivr_menu_ringback; } $database->fields['dialplan_detail_order'] = '025'; $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'] = 'transfer_ringback=${hold_music}'; } else { $database->fields['dialplan_detail_data'] = 'transfer_ringback=' . $this->ivr_menu_ringback; } $database->fields['dialplan_detail_order'] = '030'; $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'] = 'ivr_menu_uuid=' . $this->ivr_menu_uuid; $database->fields['dialplan_detail_order'] = '035'; $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 if ($_SESSION['ivr menu']['application']['text'] == "lua") { $database->fields['dialplan_detail_type'] = 'lua'; $database->fields['dialplan_detail_data'] = 'ivr_menu.lua'; } else { $database->fields['dialplan_detail_type'] = 'ivr'; $database->fields['dialplan_detail_data'] = $this->ivr_menu_uuid; } $database->fields['dialplan_detail_order'] = '040'; $database->add(); 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(); } //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); } }