diff --git a/app/phrases/phrase_edit.php b/app/phrases/phrase_edit.php
index d6e3435d62..415eee723a 100644
--- a/app/phrases/phrase_edit.php
+++ b/app/phrases/phrase_edit.php
@@ -25,245 +25,245 @@
*/
//includes files
- require_once dirname(__DIR__, 2) . "/resources/require.php";
- require_once "resources/check_auth.php";
+require_once dirname(__DIR__, 2) . "/resources/require.php";
+require_once "resources/check_auth.php";
//check permissions
- if (permission_exists('phrase_add') || permission_exists('phrase_edit')) {
- //access granted
- }
- else {
- echo "access denied";
- exit;
- }
+if (permission_exists('phrase_add') || permission_exists('phrase_edit')) {
+ //access granted
+}
+else {
+ echo "access denied";
+ exit;
+}
//add multi-lingual support
- $language = new text;
- $text = $language->get();
+$language = new text;
+$text = $language->get();
//ensure we have a database object
- if (!($database instanceof database)) {
- $database = database::new();
- }
+if (!($database instanceof database)) {
+ $database = database::new();
+}
//add the defaults
- $phrase_name = '';
- $phrase_language = '';
- $phrase_description = '';
+$phrase_name = '';
+$phrase_language = '';
+$phrase_description = '';
//set the action as an add or an update
- if (!empty($_REQUEST["id"])) {
- $action = "update";
- $phrase_uuid = $_REQUEST["id"];
- }
- else {
- $action = "add";
- }
+if (!empty($_REQUEST["id"])) {
+ $action = "update";
+ $phrase_uuid = $_REQUEST["id"];
+}
+else {
+ $action = "add";
+}
//get the form value and set to php variables
- if (count($_POST) > 0) {
+if (count($_POST) > 0) {
- //process the http post data by submitted action
- if (!empty($_POST['action']) && is_uuid($_POST['phrase_uuid'])) {
- $array[0]['checked'] = 'true';
- $array[0]['uuid'] = $_POST['phrase_uuid'];
+ //process the http post data by submitted action
+ if (!empty($_POST['action']) && is_uuid($_POST['phrase_uuid'])) {
+ $array[0]['checked'] = 'true';
+ $array[0]['uuid'] = $_POST['phrase_uuid'];
- switch ($_POST['action']) {
- case 'delete':
- if (permission_exists('phrase_delete')) {
- $obj = new phrases;
- $obj->delete($array);
- }
- break;
- }
-
- header('Location: phrases.php');
- exit;
+ switch ($_POST['action']) {
+ case 'delete':
+ if (permission_exists('phrase_delete')) {
+ $obj = new phrases;
+ $obj->delete($array);
+ }
+ break;
}
- if (permission_exists('phrase_domain')) {
- $domain_uuid = $_POST["domain_uuid"];
+ header('Location: phrases.php');
+ exit;
}
- $phrase_name = $_POST["phrase_name"];
- $phrase_language = $_POST["phrase_language"];
- $phrase_enabled = $_POST["phrase_enabled"] ?? 'false';
- $phrase_description = $_POST["phrase_description"];
- $phrase_details_delete = $_POST["phrase_details_delete"] ?? '';
- //clean the name
- $phrase_name = str_replace(" ", "_", $phrase_name);
- $phrase_name = str_replace("'", "", $phrase_name);
+ if (permission_exists('phrase_domain')) {
+ $domain_uuid = $_POST["domain_uuid"];
}
+ $phrase_name = $_POST["phrase_name"];
+ $phrase_language = $_POST["phrase_language"];
+ $phrase_enabled = $_POST["phrase_enabled"] ?? 'false';
+ $phrase_description = $_POST["phrase_description"];
+ $phrase_details_delete = $_POST["phrase_details_delete"] ?? '';
+
+ //clean the name
+ $phrase_name = str_replace(" ", "_", $phrase_name);
+ $phrase_name = str_replace("'", "", $phrase_name);
+}
//process the changes from the http post
if (count($_POST) > 0 && empty($_POST["persistformvar"])) {
//get the uuid
- if ($action == "update") {
- $phrase_uuid = $_POST["phrase_uuid"];
- }
+ if ($action == "update") {
+ $phrase_uuid = $_POST["phrase_uuid"];
+ }
//validate the token
- $token = new token;
- if (!$token->validate($_SERVER['PHP_SELF'])) {
- message::add($text['message-invalid_token'],'negative');
- header('Location: phrases.php');
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: phrases.php');
+ exit;
+ }
+
+ //check for all required data
+ $msg = '';
+ if (empty($phrase_name)) { $msg .= $text['message-required']." ".$text['label-name']."
\n"; }
+ if (empty($phrase_language)) { $msg .= $text['message-required']." ".$text['label-language']."
\n"; }
+ if (!empty($msg) && empty($_POST["persistformvar"])) {
+ require_once "resources/header.php";
+ require_once "resources/persist_form_var.php";
+ echo "
\n";
+ echo "
\n";
+ echo $msg." ";
+ echo " |
\n";
+ persistformvar($_POST);
+ echo "
\n";
+ require_once "resources/footer.php";
+ return;
+ }
+
+ //add the phrase
+ if (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true") {
+ if ($action == "add" && permission_exists('phrase_add')) {
+ //build data array
+ $phrase_uuid = uuid();
+ $array['phrases'][0]['domain_uuid'] = $domain_uuid;
+ $array['phrases'][0]['phrase_uuid'] = $phrase_uuid;
+ $array['phrases'][0]['phrase_name'] = $phrase_name;
+ $array['phrases'][0]['phrase_language'] = $phrase_language;
+ $array['phrases'][0]['phrase_enabled'] = $phrase_enabled;
+ $array['phrases'][0]['phrase_description'] = $phrase_description;
+
+ if ($_POST['phrase_detail_function'] != '') {
+ if ($_POST['phrase_detail_function'] == 'execute' && substr($_POST['phrase_detail_data'], 0,5) != "sleep" && !permission_exists("phrase_execute")) {
+ header("Location: phrase_edit.php");
+ exit;
+ }
+ $_POST['phrase_detail_tag'] = 'action'; // default, for now
+ $_POST['phrase_detail_group'] = "0"; // one group, for now
+
+ if ($_POST['phrase_detail_data'] != '') {
+ $phrase_detail_uuid = uuid();
+ $array['phrase_details'][0]['phrase_detail_uuid'] = $phrase_detail_uuid;
+ $array['phrase_details'][0]['phrase_uuid'] = $phrase_uuid;
+ $array['phrase_details'][0]['domain_uuid'] = $domain_uuid;
+ $array['phrase_details'][0]['phrase_detail_order'] = $_POST['phrase_detail_order'];
+ $array['phrase_details'][0]['phrase_detail_tag'] = $_POST['phrase_detail_tag'];
+ $array['phrase_details'][0]['phrase_detail_pattern'] = $_POST['phrase_detail_pattern'] ?? null;
+ $array['phrase_details'][0]['phrase_detail_function'] = $_POST['phrase_detail_function'];
+ $array['phrase_details'][0]['phrase_detail_data'] = $_POST['phrase_detail_data'];
+ $array['phrase_details'][0]['phrase_detail_method'] = $_POST['phrase_detail_method'] ?? null;
+ $array['phrase_details'][0]['phrase_detail_type'] = $_POST['phrase_detail_type'] ?? null;
+ $array['phrase_details'][0]['phrase_detail_group'] = $_POST['phrase_detail_group'];
+ }
+ }
+
+ //execute insert
+ $p = new permissions;
+ $p->add('phrase_detail_add', 'temp');
+ $database->app_name = 'phrases';
+ $database->app_uuid = '5c6f597c-9b78-11e4-89d3-123b93f75cba';
+ $database->save($array);
+ unset($array);
+
+ $p->delete('phrase_detail_add', 'temp');
+
+ //save the xml to the file system if the phrase directory is set
+ //save_phrases_xml();
+
+ //clear the cache
+ $cache = new cache;
+ $cache->delete("languages:".$phrase_language.".".$phrase_uuid);
+
+ //clear the destinations session array
+ if (isset($_SESSION['destinations']['array'])) {
+ unset($_SESSION['destinations']['array']);
+ }
+
+ //send a redirect
+ message::add($text['message-add']);
+ header("Location: phrase_edit.php?id=".$phrase_uuid);
exit;
}
- //check for all required data
- $msg = '';
- if (empty($phrase_name)) { $msg .= $text['message-required']." ".$text['label-name']."
\n"; }
- if (empty($phrase_language)) { $msg .= $text['message-required']." ".$text['label-language']."
\n"; }
- if (!empty($msg) && empty($_POST["persistformvar"])) {
- require_once "resources/header.php";
- require_once "resources/persist_form_var.php";
- echo "\n";
- echo "
\n";
- echo $msg." ";
- echo " |
\n";
- persistformvar($_POST);
- echo "
\n";
- require_once "resources/footer.php";
- return;
- }
-
- //add the phrase
- if (empty($_POST["persistformvar"]) || $_POST["persistformvar"] != "true") {
- if ($action == "add" && permission_exists('phrase_add')) {
- //build data array
- $phrase_uuid = uuid();
- $array['phrases'][0]['domain_uuid'] = $domain_uuid;
- $array['phrases'][0]['phrase_uuid'] = $phrase_uuid;
- $array['phrases'][0]['phrase_name'] = $phrase_name;
- $array['phrases'][0]['phrase_language'] = $phrase_language;
- $array['phrases'][0]['phrase_enabled'] = $phrase_enabled;
- $array['phrases'][0]['phrase_description'] = $phrase_description;
-
- if ($_POST['phrase_detail_function'] != '') {
- if ($_POST['phrase_detail_function'] == 'execute' && substr($_POST['phrase_detail_data'], 0,5) != "sleep" && !permission_exists("phrase_execute")) {
- header("Location: phrase_edit.php");
- exit;
- }
- $_POST['phrase_detail_tag'] = 'action'; // default, for now
- $_POST['phrase_detail_group'] = "0"; // one group, for now
-
- if ($_POST['phrase_detail_data'] != '') {
- $phrase_detail_uuid = uuid();
- $array['phrase_details'][0]['phrase_detail_uuid'] = $phrase_detail_uuid;
- $array['phrase_details'][0]['phrase_uuid'] = $phrase_uuid;
- $array['phrase_details'][0]['domain_uuid'] = $domain_uuid;
- $array['phrase_details'][0]['phrase_detail_order'] = $_POST['phrase_detail_order'];
- $array['phrase_details'][0]['phrase_detail_tag'] = $_POST['phrase_detail_tag'];
- $array['phrase_details'][0]['phrase_detail_pattern'] = $_POST['phrase_detail_pattern'] ?? null;
- $array['phrase_details'][0]['phrase_detail_function'] = $_POST['phrase_detail_function'];
- $array['phrase_details'][0]['phrase_detail_data'] = $_POST['phrase_detail_data'];
- $array['phrase_details'][0]['phrase_detail_method'] = $_POST['phrase_detail_method'] ?? null;
- $array['phrase_details'][0]['phrase_detail_type'] = $_POST['phrase_detail_type'] ?? null;
- $array['phrase_details'][0]['phrase_detail_group'] = $_POST['phrase_detail_group'];
- }
- }
-
- //execute insert
- $p = new permissions;
- $p->add('phrase_detail_add', 'temp');
- $database->app_name = 'phrases';
- $database->app_uuid = '5c6f597c-9b78-11e4-89d3-123b93f75cba';
- $database->save($array);
- unset($array);
-
- $p->delete('phrase_detail_add', 'temp');
-
- //save the xml to the file system if the phrase directory is set
- //save_phrases_xml();
-
- //clear the cache
- $cache = new cache;
- $cache->delete("languages:".$phrase_language.".".$phrase_uuid);
-
- //clear the destinations session array
- if (isset($_SESSION['destinations']['array'])) {
- unset($_SESSION['destinations']['array']);
- }
-
- //send a redirect
- message::add($text['message-add']);
- header("Location: phrase_edit.php?id=".$phrase_uuid);
- exit;
- }
-
//update the phrase
- if ($action == "update" && permission_exists('phrase_edit')) {
- //build data array
- $array['phrases'][0]['domain_uuid'] = $domain_uuid;
- $array['phrases'][0]['phrase_uuid'] = $phrase_uuid;
- $array['phrases'][0]['phrase_name'] = $phrase_name;
- $array['phrases'][0]['phrase_language'] = $phrase_language;
- $array['phrases'][0]['phrase_enabled'] = $phrase_enabled;
- $array['phrases'][0]['phrase_description'] = $phrase_description;
-
- if ($_POST['phrase_detail_function'] != '') {
- if ($_POST['phrase_detail_function'] == 'execute' && substr($_POST['phrase_detail_data'], 0,5) != "sleep" && !permission_exists("phrase_execute")) {
- header("Location: phrase_edit.php?id=".$phrase_uuid);
- exit;
- }
- $_POST['phrase_detail_tag'] = 'action'; // default, for now
- $_POST['phrase_detail_group'] = "0"; // one group, for now
-
- if ($_POST['phrase_detail_data'] != '') {
- $phrase_detail_uuid = uuid();
- $array['phrase_details'][0]['phrase_detail_uuid'] = $phrase_detail_uuid;
- $array['phrase_details'][0]['phrase_uuid'] = $phrase_uuid;
- $array['phrase_details'][0]['domain_uuid'] = $domain_uuid;
- $array['phrase_details'][0]['phrase_detail_order'] = $_POST['phrase_detail_order'];
- $array['phrase_details'][0]['phrase_detail_tag'] = $_POST['phrase_detail_tag'];
- $array['phrase_details'][0]['phrase_detail_pattern'] = $_POST['phrase_detail_pattern'] ?? null;
- $array['phrase_details'][0]['phrase_detail_function'] = $_POST['phrase_detail_function'];
- $array['phrase_details'][0]['phrase_detail_data'] = $_POST['phrase_detail_data'];
- $array['phrase_details'][0]['phrase_detail_method'] = $_POST['phrase_detail_method'] ?? null;
- $array['phrase_details'][0]['phrase_detail_type'] = $_POST['phrase_detail_type'] ?? null;
- $array['phrase_details'][0]['phrase_detail_group'] = $_POST['phrase_detail_group'];
- }
+ if ($action == "update" && permission_exists('phrase_edit')) {
+ $array = [];
+ if (!empty($_POST['phrase_detail_function'])) {
+ for ($i = 0; $i < count($_POST['phrase_detail_function']); $i++) {
+ //build data array
+ $array['phrases'][$i]['domain_uuid'] = $domain_uuid;
+ $array['phrases'][$i]['phrase_uuid'] = $phrase_uuid;
+ $array['phrases'][$i]['phrase_name'] = $phrase_name;
+ $array['phrases'][$i]['phrase_language'] = $phrase_language;
+ $array['phrases'][$i]['phrase_enabled'] = $phrase_enabled;
+ $array['phrases'][$i]['phrase_description'] = $phrase_description;
+ if ($_POST['phrase_detail_function'][$i] == 'execute' && substr($_POST['phrase_detail_data'][$i], 0,5) != "sleep" && !permission_exists("phrase_execute")) {
+ header("Location: phrase_edit.php?id=".$phrase_uuid);
+ exit;
}
+ $_POST['phrase_detail_tag'] = 'action'; // default, for now
+ $_POST['phrase_detail_group'] = "0"; // one group, for now
+
+ if (!empty($_POST['phrase_detail_data'][$i])) {
+ $phrase_detail_uuid = uuid();
+ $array['phrase_details'][$i]['phrase_detail_uuid'] = $phrase_detail_uuid;
+ $array['phrase_details'][$i]['phrase_uuid'] = $phrase_uuid;
+ $array['phrase_details'][$i]['domain_uuid'] = $domain_uuid;
+ $array['phrase_details'][$i]['phrase_detail_order'] = $i;
+ $array['phrase_details'][$i]['phrase_detail_tag'] = $_POST['phrase_detail_tag'];
+ $array['phrase_details'][$i]['phrase_detail_pattern'] = $_POST['phrase_detail_pattern'] ?? null;
+ $array['phrase_details'][$i]['phrase_detail_function'] = $_POST['phrase_detail_function'][$i];
+ $array['phrase_details'][$i]['phrase_detail_data'] = $_POST['phrase_detail_data'][$i];
+ $array['phrase_details'][$i]['phrase_detail_method'] = $_POST['phrase_detail_method'] ?? null;
+ $array['phrase_details'][$i]['phrase_detail_type'] = $_POST['phrase_detail_type'] ?? null;
+ $array['phrase_details'][$i]['phrase_detail_group'] = $_POST['phrase_detail_group'];
+ }
+ }
//execute update/insert
- $p = new permissions;
- $p->add('phrase_detail_add', 'temp');
- $database->app_name = 'phrases';
- $database->app_uuid = '5c6f597c-9b78-11e4-89d3-123b93f75cba';
+ $p = new permissions;
+ $p->add('phrase_detail_add', 'temp');
+ $database->app_name = 'phrases';
+ $database->app_uuid = '5c6f597c-9b78-11e4-89d3-123b93f75cba';
+ if (count($array) > 0) {
$database->save($array);
- unset($array);
-
- $p->delete('phrase_detail_add', 'temp');
-
- //remove checked phrase details
- if (
- is_array($phrase_details_delete)
- && @sizeof($phrase_details_delete) != 0
- ) {
- $obj = new phrases;
- $obj->phrase_uuid = $phrase_uuid;
- $obj->delete_details($phrase_details_delete);
- }
-
- //clear the cache
- $cache = new cache;
- $cache->delete("languages:".$phrase_language.".".$phrase_uuid);
-
- //clear the destinations session array
- if (isset($_SESSION['destinations']['array'])) {
- unset($_SESSION['destinations']['array']);
- }
-
- //send a redirect
- message::add($text['message-update']);
- header("Location: phrase_edit.php?id=".$phrase_uuid);
- exit;;
-
+ }
}
+ $p->delete('phrase_detail_add', 'temp');
+
+ //remove checked phrase details
+ if (
+ is_array($phrase_details_delete)
+ && @sizeof($phrase_details_delete) != 0
+ ) {
+ $obj = new phrases;
+ $obj->phrase_uuid = $phrase_uuid;
+ $obj->delete_details($phrase_details_delete);
+ }
+
+ //clear the cache
+ $cache = new cache;
+ $cache->delete("languages:".$phrase_language.".".$phrase_uuid);
+
+ //clear the destinations session array
+ if (isset($_SESSION['destinations']['array'])) {
+ unset($_SESSION['destinations']['array']);
+ }
+
+ //send a redirect
+ message::add($text['message-update']);
+ header("Location: phrase_edit.php?id=".$phrase_uuid);
+ exit;
}
-
+ }
}
//pre-populate the form
diff --git a/app/phrases/resources/javascript/phrase_edit.js b/app/phrases/resources/javascript/phrase_edit.js
index 4eff6902c7..83cee83a34 100644
--- a/app/phrases/resources/javascript/phrase_edit.js
+++ b/app/phrases/resources/javascript/phrase_edit.js
@@ -93,11 +93,11 @@ function add_row() {
const select_recording = select_list[1];
//set the new id and name for action
- select_action.id = 'phrase_detail_function[' + tbody.childElementCount - 1 + ']'
- select_action.setAttribute('name', 'phrase_detail_function[' + tbody.childElementCount - 1 + ']');
+ select_action.id = 'phrase_detail_function[' + tbody.childElementCount + ']'
+ select_action.setAttribute('name', 'phrase_detail_function[' + tbody.childElementCount + ']');
//set the new id and name for recording
- select_recording.id = 'phrase_detail_data[' + tbody.childElementCount - 1 + ']'
- select_recording.setAttribute('name', 'phrase_detail_data[' + tbody.childElementCount - 1 + ']');
+ select_recording.id = 'phrase_detail_data[' + tbody.childElementCount + ']'
+ select_recording.setAttribute('name', 'phrase_detail_data[' + tbody.childElementCount + ']');
//add the row to the table body