diff --git a/app/ivr_menus/ivr_menu_edit.php b/app/ivr_menus/ivr_menu_edit.php index 39aa7b45e0..3bef5ff91f 100644 --- a/app/ivr_menus/ivr_menu_edit.php +++ b/app/ivr_menus/ivr_menu_edit.php @@ -126,6 +126,7 @@ $ivr_menu_cid_prefix = $_POST["ivr_menu_cid_prefix"]; $ivr_menu_enabled = $_POST["ivr_menu_enabled"]; $ivr_menu_description = $_POST["ivr_menu_description"]; + $ivr_menu_options_delete = $_POST["ivr_menu_options_delete"]; $dialplan_uuid = $_POST["dialplan_uuid"]; //set the context for users that do not have the permission @@ -374,6 +375,18 @@ $p->delete("dialplan_add", "temp"); $p->delete("dialplan_edit", "temp"); + //remove checked options + if ( + $action == 'update' + && permission_exists('ivr_menu_option_delete') + && is_array($ivr_menu_options_delete) + && @sizeof($ivr_menu_options_delete) != 0 + ) { + $obj = new ivr_menu; + $obj->ivr_menu_uuid = $ivr_menu_uuid; + $obj->delete_options($ivr_menu_options_delete); + } + //clear the cache $cache = new cache; $cache->delete("dialplan:".$_SESSION["context"]); @@ -460,10 +473,12 @@ if (count($ivr_menu_options) == 0) { $rows = $_SESSION['ivr_menu']['option_add_rows']['numeric']; $id = 0; + $show_option_delete = false; } if (count($ivr_menu_options) > 0) { $rows = $_SESSION['ivr_menu']['option_edit_rows']['numeric']; $id = count($ivr_menu_options)+1; + $show_option_delete = true; } for ($x = 0; $x < $rows; $x++) { $ivr_menu_options[$id]['ivr_menu_option_digits'] = ''; @@ -919,23 +934,25 @@ echo " "; echo " \n"; echo " \n"; - echo " \n"; + echo " \n"; echo " \n"; echo " \n"; echo " \n"; - echo " \n"; + if ($show_option_delete) { + echo " \n"; + } echo " \n"; if (is_array($ivr_menu_options)) { - $c = 0; + $x = 0; foreach($ivr_menu_options as $field) { //add the primary key uuid if (strlen($field['ivr_menu_option_uuid']) > 0) { - echo " \n"; + echo " \n"; } - echo "\n"; echo "\n"; echo "\n"; echo "\n"; - echo " \n"; - echo " \n"; + echo "\n"; - $c++; + echo "\n"; + + $x++; } } unset($sql, $result); diff --git a/app/ivr_menus/resources/classes/ivr_menu.php b/app/ivr_menus/resources/classes/ivr_menu.php index 089fdcb57e..38fdad07fb 100644 --- a/app/ivr_menus/resources/classes/ivr_menu.php +++ b/app/ivr_menus/resources/classes/ivr_menu.php @@ -54,12 +54,7 @@ if (!class_exists('ivr_menu')) { //assign private variables $this->app_name = 'ivr_menus'; $this->app_uuid = 'a5788e9b-58bc-bd1b-df59-fff5d51253ab'; - $this->permission_prefix = 'ivr_menu_'; $this->list_page = 'ivr_menus.php'; - $this->table = 'ivr_menus'; - $this->uuid_prefix = 'ivr_menu_'; - $this->toggle_field = 'ivr_menu_enabled'; - $this->toggle_values = ['true','false']; } @@ -92,6 +87,11 @@ if (!class_exists('ivr_menu')) { * delete records */ public function delete($records) { + //assign private variables + $this->permission_prefix = 'ivr_menu_'; + $this->table = 'ivr_menus'; + $this->uuid_prefix = 'ivr_menu_'; + if (permission_exists($this->permission_prefix.'delete')) { //add multi-lingual support @@ -147,7 +147,7 @@ if (!class_exists('ivr_menu')) { //grant temporary permissions $p = new permissions; - $p->add('ivr_menu_options_delete', 'temp'); + $p->add('ivr_menu_option_delete', 'temp'); $p->add('dialplan_delete', 'temp'); //execute delete @@ -158,7 +158,7 @@ if (!class_exists('ivr_menu')) { unset($array); //revoke temporary permissions - $p->delete('ivr_menu_options_delete', 'temp'); + $p->delete('ivr_menu_option_delete', 'temp'); $p->delete('dialplan_delete', 'temp'); //synchronize the xml config @@ -181,10 +181,76 @@ if (!class_exists('ivr_menu')) { } } + public function delete_options($records) { + //assign private variables + $this->permission_prefix = 'ivr_menu_option_'; + $this->table = 'ivr_menu_options'; + $this->uuid_prefix = 'ivr_menu_option_'; + + if (permission_exists($this->permission_prefix.'delete')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //delete multiple records + if (is_array($records) && @sizeof($records) != 0) { + + //filter out unchecked ivr menu options, build delete array + $x = 0; + foreach ($records as $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['ivr_menu_uuid'] = $this->ivr_menu_uuid; + $x++; + } + } + + //get ivr menu context + if (is_array($uuids) && @sizeof($uuids) != 0) { + $sql = "select ivr_menu_context from v_ivr_menus "; + $sql .= "where (domain_uuid = :domain_uuid) "; + $sql .= "and ivr_menu_uuid = :ivr_menu_uuid "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $parameters['ivr_menu_uuid'] = $this->ivr_menu_uuid; + $database = new database; + $ivr_menu_context = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + } + + //delete the checked rows + if (is_array($array) && @sizeof($array) != 0) { + //execute delete + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->delete($array); + unset($array); + } + unset($records); + } + } + } + /** * toggle records */ public function toggle($records) { + //assign private variables + $this->permission_prefix = 'ivr_menu_'; + $this->table = 'ivr_menus'; + $this->uuid_prefix = 'ivr_menu_'; + $this->toggle_field = 'ivr_menu_enabled'; + $this->toggle_values = ['true','false']; + if (permission_exists($this->permission_prefix.'edit')) { //add multi-lingual support @@ -274,6 +340,11 @@ if (!class_exists('ivr_menu')) { * copy records */ public function copy($records) { + //assign private variables + $this->permission_prefix = 'ivr_menu_'; + $this->table = 'ivr_menus'; + $this->uuid_prefix = 'ivr_menu_'; + if (permission_exists($this->permission_prefix.'add')) { //add multi-lingual support
".$text['label-option']."".$text['label-option']."".$text['label-destination']."".$text['label-order']."".$text['label-description']."".$text['label-delete']."
\n"; - echo " \n"; + echo "\n"; + echo " \n"; echo "\n"; @@ -943,17 +960,17 @@ if (strlen($field['ivr_menu_option_action'].$field['ivr_menu_option_param']) > 0) { $destination_action = $field['ivr_menu_option_action'].':'.$field['ivr_menu_option_param']; } else { $destination_action = ''; } - echo $destination->select('ivr', 'ivr_menu_options['.$c.'][ivr_menu_option_param]', $destination_action); + echo $destination->select('ivr', 'ivr_menu_options['.$x.'][ivr_menu_option_param]', $destination_action); unset($destination_action); echo "\n"; - echo " \n"; //echo " \n"; if (strlen(htmlspecialchars($field['ivr_menu_option_order']))> 0) { if (strlen($field['ivr_menu_option_order']) == 1) { $field['ivr_menu_option_order'] = "00".$field['ivr_menu_option_order']; } if (strlen($field['ivr_menu_option_order']) == 2) { $field['ivr_menu_option_order'] = "0".$field['ivr_menu_option_order']; } - echo " \n"; + echo " \n"; } $i=0; while($i<=999) { @@ -966,21 +983,22 @@ echo "\n"; - echo " \n"; + echo " \n"; echo ""; - if (strlen($field['ivr_menu_option_uuid']) > 0) { - //echo " $v_link_label_edit"; - echo " $v_link_label_delete"; + echo ""; + if (is_uuid($field['ivr_menu_option_uuid'])) { + echo " \n"; + echo " \n"; } else { - echo "  \n"; + echo " \n"; } - echo "