示例#1
0
 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();
     }
 }
示例#2
0
 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);
     }
 }