Number Translations: Edit - Add bulk delete of Details, dynamic Delete button action, Copy function. Remove deprecated details delete script.

This commit is contained in:
Nate
2020-02-28 07:35:52 -07:00
parent cb86601fd4
commit 53ffb4e1dd
3 changed files with 115 additions and 104 deletions

View File

@@ -1,94 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2017
the Initial Developer. All Rights Reserved.
*/
//includes
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//add multi-lingual support
$language = new text;
$text = $language->get();
//delete the data
if (is_array($_REQUEST['number_translations']) && @sizeof($_REQUEST['number_translations']) != 0 && permission_exists('number_translation_delete')) {
//get the ids, build array
foreach ($_REQUEST['number_translations'] as $index => $number_translation_uuid) {
if (is_uuid($number_translation_uuid)) {
//delete the child data
$array['number_translation_details'][$index]['number_translation_uuid'] = $number_translation_uuid;
//delete number_translation
$array['number_translations'][$index]['number_translation_uuid'] = $number_translation_uuid;
}
}
if (is_array($array) && @sizeof($array) != 0) {
//execute
$database = new database;
$database->app_name = 'number_translations';
$database->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33';
$database->delete($array);
unset($array);
//delete the message
message::add($text['message-delete']);
}
//redirect the user
header('Location: number_translations.php');
exit;
}
//delete the child data
if (is_uuid($_REQUEST["number_translation_detail_uuid"]) && permission_exists('number_translation_detail_delete')) {
//select from v_number_translation_details
$sql = "select number_translation_uuid from v_number_translation_details ";
$sql .= "where number_translation_detail_uuid = :number_translation_detail_uuid ";
$parameters['number_translation_detail_uuid'] = $_REQUEST["number_translation_detail_uuid"];
$database = new database;
$number_translation_uuid = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
//delete the row
$array['number_translation_details'][0]['number_translation_detail_uuid'] = $_REQUEST["number_translation_detail_uuid"];
//execute
$database = new database;
$database->app_name = 'number_translations';
$database->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33';
$database->delete($array);
unset($array);
//delete the message
message::add($text['message-delete']);
//redirect the user
header('Location: number_translation_edit.php?id='.$number_translation_uuid);
exit;
}
//default redirect
header('Location: number_translations.php');
exit;
?>

View File

@@ -56,11 +56,35 @@
$number_translation_details = $_POST["number_translation_details"];
$number_translation_enabled = $_POST["number_translation_enabled"];
$number_translation_description = $_POST["number_translation_description"];
$number_translation_details_delete = $_POST["number_translation_details_delete"];
}
//process the user data and save it to the database
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//process the http post data by submitted action
if ($_POST['action'] != '' && is_uuid($number_translation_uuid)) {
$array[0]['checked'] = 'true';
$array[0]['uuid'] = $number_translation_uuid;
switch ($_POST['action']) {
case 'copy':
if (permission_exists('number_translation_add')) {
$obj = new number_translations;
$obj->copy($array);
}
break;
case 'delete':
if (permission_exists('number_translation_delete')) {
$obj = new number_translations;
$obj->delete($array);
}
break;
}
header('Location: number_translations.php');
exit;
}
//validate the token
$token = new token;
@@ -116,6 +140,18 @@
$database->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33';
$database->save($array);
//remove checked details
if (
$action == 'update'
&& permission_exists('number_translation_detail_delete')
&& is_array($number_translation_details_delete)
&& @sizeof($number_translation_details_delete) != 0
) {
$obj = new number_translations;
$obj->number_translation_uuid = $number_translation_uuid;
$obj->delete_details($number_translation_details_delete);
}
//redirect the user
if (isset($action)) {
if ($action == "add") {
@@ -150,8 +186,8 @@
if (is_uuid($number_translation_uuid)) {
$sql = "select * from v_number_translation_details ";
$sql .= "where number_translation_uuid = :number_translation_uuid ";
$sql .= "order by cast(number_translation_detail_order as integer) asc";
$parameters['number_translation_uuid'] = $number_translation_uuid;
$sql .= "order by number_translation_detail_order";
$database = new database;
$number_translation_details = $database->select($sql, $parameters, 'all');
unset ($sql, $parameters);
@@ -165,7 +201,7 @@
//add an empty row
$x = is_array($number_translation_details) ? count($number_translation_details) : 0;
$number_translation_details[$x]['number_translation_uuid'] = $number_translation_uuid;
$number_translation_details[$x]['number_translation_detail_uuid'] = uuid();
$number_translation_details[$x]['number_translation_detail_uuid'] = '';
$number_translation_details[$x]['number_translation_detail_regex'] = '';
$number_translation_details[$x]['number_translation_detail_replace'] = '';
$number_translation_details[$x]['number_translation_detail_order'] = '';
@@ -185,6 +221,14 @@
echo " <div class='heading'><b>".$text['title-number_translation']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'number_translations.php']);
if ($action == "update") {
if (permission_exists('number_translation_add')) {
echo button::create(['type'=>'submit','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'name'=>'action','value'=>'copy','onclick'=>"if (!confirm('".$text['confirm-copy']."')) { this.blur(); return false; }"]);
}
if (permission_exists('number_translation_delete') || permission_exists('number_translation_detail_delete')) {
echo button::create(['type'=>'submit','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'action','value'=>'delete','style'=>'margin-right: 15px;','onclick'=>"if (!confirm('".$text['confirm-delete']."')) { this.blur(); return false; }"]);
}
}
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>'hide-xs']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
@@ -213,13 +257,18 @@
echo " <th class='vtablereq'>".$text['label-number_translation_detail_regex']."</th>\n";
echo " <th class='vtablereq'>".$text['label-number_translation_detail_replace']."</th>\n";
echo " <th class='vtablereq'>".$text['label-number_translation_detail_order']."</th>\n";
echo " <td></td>\n";
if (is_array($number_translation_details) && @sizeof($number_translation_details) > 1 && permission_exists('number_translation_detail_delete')) {
echo " <td class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n";
echo " <span id='delete_label_details'>".$text['label-delete']."</span>\n";
echo " <span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details');\"></span>\n";
echo " </td>\n";
}
echo " </tr>\n";
$x = 0;
foreach($number_translation_details as $row) {
echo " <tr>\n";
echo " <input type='hidden' name='number_translation_details[$x][number_translation_uuid]' value=\"".escape($row["number_translation_uuid"])."\">\n";
echo " <input type='hidden' name='number_translation_details[$x][number_translation_detail_uuid]' value=\"".escape($row["number_translation_detail_uuid"])."\">\n";
echo " <input type='hidden' name='number_translation_details[$x][number_translation_detail_uuid]' value=\"".(is_uuid($row["number_translation_detail_uuid"]) ? $row["number_translation_detail_uuid"] : uuid())."\">\n";
echo " <td><input class='formfld' type='text' name='number_translation_details[$x][number_translation_detail_regex]' maxlength='255' value=\"".escape($row["number_translation_detail_regex"])."\"></td>\n";
echo " <td><input class='formfld' type='text' name='number_translation_details[$x][number_translation_detail_replace]' maxlength='255' value=\"".escape($row["number_translation_detail_replace"])."\"></td>\n";
echo " <td>\n";
@@ -240,11 +289,14 @@
}
echo " </select>\n";
echo " </td>\n";
echo " <td class='list_control_icons' style='width: 25px;'>\n";
if ($x < sizeof($number_translation_details) - 1) {
echo " <a href='number_translation_delete.php?number_translation_detail_uuid=".escape($row['number_translation_detail_uuid'])."&a=delete' alt=\"".$text['button-delete']."\" onclick=\"return confirm('".$text['confirm-delete']."');\">".$v_link_label_delete."</a>\n";
if (is_array($number_translation_details) && @sizeof($number_translation_details) > 1 && permission_exists('number_translation_detail_delete')) {
echo " <td style='text-align: center;'>";
if (is_uuid($row['number_translation_detail_uuid'])) {
echo " <input type='checkbox' name='number_translation_details_delete[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"edit_delete_action('details');\">\n";
echo " <input type='hidden' name='number_translation_details_delete[".$x."][uuid]' value='".escape($row['number_translation_detail_uuid'])."' />\n";
}
echo " </td>\n";
}
echo " </td>\n";
echo " </tr>\n";
$x++;
}

View File

@@ -40,6 +40,11 @@ if (!class_exists('number_translations')) {
private $toggle_field;
private $toggle_values;
/**
* declare public variables
*/
public $number_translation_uuid;
/**
* called when the object is created
*/
@@ -181,7 +186,7 @@ if (!class_exists('number_translations')) {
//grant temporary permissions
$p = new permissions;
$p->add('number_translation_details_delete', 'temp');
$p->add('number_translation_detail_delete', 'temp');
//execute delete
$database = new database;
@@ -191,7 +196,7 @@ if (!class_exists('number_translations')) {
unset($array);
//revoke temporary permissions
$p->delete('number_translation_details_delete', 'temp');
$p->delete('number_translation_detail_delete', 'temp');
//set message
message::add($text['message-delete']);
@@ -201,6 +206,54 @@ if (!class_exists('number_translations')) {
}
}
public function delete_details($records) {
//assign private variables
$this->permission_prefix = 'number_translation_detail_';
$this->table = 'number_translation_details';
$this->uuid_prefix = 'number_translation_detail_';
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) {
//build the delete array
foreach ($records as $x => $record) {
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
$array[$this->table][$x]['number_translation_uuid'] = $this->number_translation_uuid;
}
}
//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
*/