diff --git a/app/number_translations/number_translations.php b/app/number_translations/number_translations.php
index e9f1aa39d1..e5850e82c9 100644
--- a/app/number_translations/number_translations.php
+++ b/app/number_translations/number_translations.php
@@ -21,6 +21,7 @@
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
+ require_once "resources/paging.php";
//check permissions
if (permission_exists('number_translation_view')) {
@@ -35,182 +36,192 @@
$language = new text;
$text = $language->get();
-//get the action
- if (is_array($_POST["number_translations"])) {
- $number_translations = $_POST["number_translations"];
- foreach($number_translations as $row) {
- if ($row['action'] == 'delete') {
- $action = 'delete';
- break;
- }
+//get posted data
+ if (is_array($_POST['number_translations'])) {
+ $action = $_POST['action'];
+ $search = $_POST['search'];
+ $number_translations = $_POST['number_translations'];
+ }
+
+//copy the number translations
+ if (permission_exists('number_translation_add')) {
+ if ($action == 'copy' && is_array($number_translations) && @sizeof($number_translations) != 0) {
+ //copy
+ $obj = new number_translations;
+ $obj->copy($number_translations);
+ //redirect
+ header('Location: number_translations.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
}
}
-//delete the number_translations
+//toggle the number translations
+ if (permission_exists('number_translation_edit')) {
+ if ($action == 'toggle' && is_array($number_translations) && @sizeof($number_translations) != 0) {
+ //toggle
+ $obj = new number_translations;
+ $obj->toggle($number_translations);
+ //redirect
+ header('Location: number_translations.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+ }
+
+//delete the number translations
if (permission_exists('number_translation_delete')) {
- if ($action == "delete") {
- //download
+ if ($action == 'delete' && is_array($number_translations) && @sizeof($number_translations) != 0) {
+ //delete
$obj = new number_translations;
$obj->delete($number_translations);
- //delete message
- message::add($text['message-delete']);
+ //redirect
+ header('Location: number_translations.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
}
}
-//get variables used to control the order
+//get order and order by
$order_by = $_GET["order_by"];
$order = $_GET["order"];
//add the search term
$search = strtolower($_GET["search"]);
if (strlen($search) > 0) {
- $sql_search = " (";
- $sql_search .= " lower(number_translation_name) like :search ";
- $sql_search .= " or lower(number_translation_enabled) like :search ";
- $sql_search .= " or lower(number_translation_description) like :search ";
- $sql_search .= " ) ";
+ $sql_search = "where (";
+ $sql_search .= "lower(number_translation_name) like :search ";
+ $sql_search .= "or lower(number_translation_enabled) like :search ";
+ $sql_search .= "or lower(number_translation_description) like :search ";
+ $sql_search .= ") ";
$parameters['search'] = '%'.$search.'%';
}
-//additional includes
- require_once "resources/header.php";
- require_once "resources/paging.php";
-
//prepare to page the results
$sql = "select count(*) from v_number_translations ";
- if (isset($sql_search)) {
- $sql .= "where ".$sql_search;
- }
+ $sql .= $sql_search;
$database = new database;
- $num_rows = $database->select($sql, (is_array($parameters) ? $parameters : null), 'column');
+ $num_rows = $database->select($sql, $parameters, 'column');
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "&search=".$search;
- $page = $_GET['page'];
- if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
- list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
+ $page = is_numeric($_GET['page']) ? $_GET['page'] : 0;
+ list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
+ list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
$offset = $rows_per_page * $page;
//get the list
$sql = str_replace('count(*)', '*', $sql);
- $sql .= order_by($order_by, $order);
+ $sql .= order_by($order_by, $order, 'number_translation_name', 'asc');
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
- $result = $database->select($sql, (is_array($parameters) ? $parameters : null), 'all');
+ $number_translations = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
-//alternate the row style
- $c = 0;
- $row_style["0"] = "row_style0";
- $row_style["1"] = "row_style1";
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
-//define the checkbox_toggle function
- echo "\n";
+//additional includes
+ require_once "resources/header.php";
//show the content
- echo "
\n";
- echo " \n";
- echo " | ".$text['title-number_translations']." | \n";
- echo " \n";
- echo " \n";
- echo " | \n";
- echo "
\n";
- echo " \n";
- echo " \n";
- echo " ".$text['title_description-number_translation']."
\n";
- echo " | \n";
- echo "
\n";
- echo "
\n";
-
- echo "\n";
- echo "
";
//include the footer
require_once "resources/footer.php";
diff --git a/app/number_translations/resources/classes/number_translations.php b/app/number_translations/resources/classes/number_translations.php
index 9fe595771c..93f91efb7f 100644
--- a/app/number_translations/resources/classes/number_translations.php
+++ b/app/number_translations/resources/classes/number_translations.php
@@ -1,46 +1,64 @@
- Portions created by the Initial Developer are Copyright (C) 2017
- the Initial Developer. All Rights Reserved.
+ The Initial Developer of the Original Code is
+ Mark J Crane
+ Portions created by the Initial Developer are Copyright (C) 2008-2019
+ the Initial Developer. All Rights Reserved.
- Contributor(s):
- Matthew Vale
+ Contributor(s):
+ Mark J Crane
*/
-/**
- * call_recordings class
- *
- * @method null download
- */
+//define the number translations class
if (!class_exists('number_translations')) {
class number_translations {
/**
- * Called when the object is created
+ * declare private variables
+ */
+ private $app_name;
+ private $app_uuid;
+ private $permission_prefix;
+ private $list_page;
+ private $table;
+ private $uuid_prefix;
+ private $toggle_field;
+ private $toggle_values;
+
+ /**
+ * called when the object is created
*/
public function __construct() {
+ //assign private variables
+ $this->app_name = 'number_translations';
+ $this->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33';
+ $this->permission_prefix = 'number_translation_';
+ $this->list_page = 'number_translations.php';
+ $this->table = 'number_translations';
+ $this->uuid_prefix = 'number_translation_';
+ $this->toggle_field = 'number_translation_enabled';
+ $this->toggle_values = ['true','false'];
+
}
/**
- * Called when there are no references to a particular object
+ * called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
@@ -130,48 +148,228 @@ if (!class_exists('number_translations')) {
}
/**
- * delete number_translations
+ * delete records
*/
- public function delete($number_translations) {
- if (permission_exists('number_translation_delete')) {
+ public function delete($records) {
+ if (permission_exists($this->permission_prefix.'delete')) {
- //delete multiple number_translations
- if (is_array($number_translations)) {
- //get the action
- foreach ($number_translations as $row) {
- if ($row['action'] == 'delete') {
- $action = 'delete';
- break;
+ //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['number_translation_details'][$x][$this->uuid_prefix.'uuid'] = $record['uuid'];
}
}
+
//delete the checked rows
- if ($action == 'delete') {
- foreach ($number_translations as $row) {
- if ($row['action'] == 'delete' or $row['checked'] == 'true') {
- //build delete array
- $array['number_translations'][]['number_translation_uuid'] = $row['number_translation_uuid'];
- }
- if (is_array($array) && @sizeof($array) != 0) {
- //grant temporary permissions
- $p = new permissions;
- $p->add('number_translation_delete', 'temp');
- //execute delete
- $database = new database;
- $database->app_name = 'number_translations';
- $database->app_uuid = '6ad54de6-4909-11e7-a919-92ebcb67fe33';
- $database->delete($array);
- unset($array);
- //revoke temporary permissions
- $p->delete('number_translation_delete', 'temp');
- }
- }
- unset($number_translations);
+ if (is_array($array) && @sizeof($array) != 0) {
+
+ //grant temporary permissions
+ $p = new permissions;
+ $p->add('number_translation_details_delete', 'temp');
+
+ //execute delete
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->delete($array);
+ unset($array);
+
+ //revoke temporary permissions
+ $p->delete('number_translation_details_delete', 'temp');
+
+ //set message
+ message::add($text['message-delete']);
}
+ unset($records);
}
}
- } //end the delete function
+ }
- } //end the class
+ /**
+ * toggle records
+ */
+ public function toggle($records) {
+ if (permission_exists($this->permission_prefix.'edit')) {
+
+ //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;
+ }
+
+ //toggle the checked records
+ if (is_array($records) && @sizeof($records) != 0) {
+
+ //get current toggle state
+ foreach($records as $x => $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'";
+ }
+ }
+ if (is_array($record_uuids) && @sizeof($record_uuids) != 0) {
+ $sql = "select ".$this->uuid_prefix."uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." ";
+ $sql .= "where ( ".implode(' or ', $record_uuids)." ) ";
+ $database = new database;
+ $rows = $database->select($sql, $parameters, 'all');
+ if (is_array($rows) && @sizeof($rows) != 0) {
+ foreach ($rows as $row) {
+ $states[$row['uuid']] = $row['toggle'];
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //build update array
+ $x = 0;
+ foreach($states as $uuid => $state) {
+ $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $uuid;
+ $array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0];
+ $x++;
+ }
+
+ //save the changes
+ if (is_array($array) && @sizeof($array) != 0) {
+
+ //save the array
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->save($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-toggle']);
+ }
+ unset($records, $states);
+ }
+
+ }
+ }
+
+ /**
+ * copy records
+ */
+ public function copy($records) {
+ if (permission_exists($this->permission_prefix.'add')) {
+
+ //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;
+ }
+
+ //copy the checked records
+ if (is_array($records) && @sizeof($records) != 0) {
+
+ //get checked records
+ foreach($records as $x => $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'";
+ }
+ }
+
+ //create insert array from existing data
+ if (is_array($record_uuids) && @sizeof($record_uuids) != 0) {
+
+ //primary table
+ $sql = "select * from v_".$this->table." ";
+ $sql .= "where ".implode(' or ', $record_uuids)." ";
+ $database = new database;
+ $rows = $database->select($sql, $parameters, 'all');
+ if (is_array($rows) && @sizeof($rows) != 0) {
+ $y = 0;
+ foreach ($rows as $x => $row) {
+ $primary_uuid = uuid();
+
+ //copy data
+ $array[$this->table][$x] = $row;
+
+ //overwrite
+ $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid;
+ $array[$this->table][$x]['number_translation_description'] = trim($row['number_translation_description'].' ('.$text['label-copy'].')');
+
+ //nodes sub table
+ $sql_2 = "select * from v_number_translation_details where number_translation_uuid = :number_translation_uuid";
+ $parameters_2['number_translation_uuid'] = $row['number_translation_uuid'];
+ $database = new database;
+ $rows_2 = $database->select($sql_2, $parameters_2, 'all');
+ if (is_array($rows_2) && @sizeof($rows_2) != 0) {
+ foreach ($rows_2 as $row_2) {
+
+ //copy data
+ $array['number_translation_details'][$y] = $row_2;
+
+ //overwrite
+ $array['number_translation_details'][$y]['number_translation_detail_uuid'] = uuid();
+ $array['number_translation_details'][$y]['number_translation_uuid'] = $primary_uuid;
+
+ //increment
+ $y++;
+
+ }
+ }
+ unset($sql_2, $parameters_2, $rows_2, $row_2);
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //save the changes and set the message
+ if (is_array($array) && @sizeof($array) != 0) {
+
+ //grant temporary permissions
+ $p = new permissions;
+ $p->add('number_translation_detail_add', 'temp');
+
+ //save the array
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->save($array);
+ unset($array);
+
+ //revoke temporary permissions
+ $p->delete('number_translation_detail_add', 'temp');
+
+ //set message
+ message::add($text['message-copy']);
+
+ }
+ unset($records);
+ }
+
+ }
+ } //method
+
+ } //class
}
/*