Portions created by the Initial Developer are Copyright (C) 2016 - 2017 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes require_once "root.php"; require_once "resources/require.php"; //check permissions require_once "resources/check_auth.php"; if (permission_exists('database_transaction_add') || permission_exists('database_transaction_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //action add or update if (isset($_REQUEST["id"])) { //$action = "update"; $database_transaction_uuid = check_str($_REQUEST["id"]); } //else { // $action = "add"; //} //get http post variables and set them to php variables /* if (count($_POST) > 0) { $user_uuid = check_str($_POST["user_uuid"]); $app_uuid = check_str($_POST["app_uuid"]); $transaction_code = check_str($_POST["transaction_code"]); $transaction_address = check_str($_POST["transaction_address"]); $transaction_type = check_str($_POST["transaction_type"]); $transaction_date = check_str($_POST["transaction_date"]); $transaction_old = check_str($_POST["transaction_old"]); $transaction_new = check_str($_POST["transaction_new"]); $transaction_result = check_str($_POST["transaction_result"]); } */ //process the data /* if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; if ($action == "update") { $database_transaction_uuid = check_str($_POST["database_transaction_uuid"]); } //check for all required data if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."
\n"; } if (strlen($user_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-user_uuid']."
\n"; } if (strlen($app_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-app_uuid']."
\n"; } if (strlen($transaction_code) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_code']."
\n"; } if (strlen($transaction_address) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_address']."
\n"; } if (strlen($transaction_type) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_type']."
\n"; } if (strlen($transaction_date) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_date']."
\n"; } if (strlen($transaction_old) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_old']."
\n"; } if (strlen($transaction_new) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_new']."
\n"; } if (strlen($transaction_result) == 0) { $msg .= $text['message-required']." ".$text['label-transaction_result']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { 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 or update the database if ($_POST["persistformvar"] != "true") { if ($action == "add" && permission_exists('database_transaction_add')) { $sql = "insert into v_database_transactions "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "database_transaction_uuid, "; $sql .= "domain_uuid, "; $sql .= "user_uuid, "; $sql .= "app_uuid, "; $sql .= "transaction_code, "; $sql .= "transaction_address, "; $sql .= "transaction_type, "; $sql .= "transaction_date, "; $sql .= "transaction_old, "; $sql .= "transaction_new, "; $sql .= "transaction_result "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'$domain_uuid', "; $sql .= "'".uuid()."', "; $sql .= "'$domain_uuid', "; $sql .= "'$user_uuid', "; $sql .= "'$app_uuid', "; $sql .= "'$transaction_code', "; $sql .= "'$transaction_address', "; $sql .= "'$transaction_type', "; $sql .= "now(), "; $sql .= "'$transaction_old', "; $sql .= "'$transaction_new', "; $sql .= "'$transaction_result' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); messages::add($text['message-add']); header("Location: database_transactions.php"); return; } //if ($action == "add") if ($action == "update" && permission_exists('database_transaction_edit')) { $sql = "update v_database_transactions set "; $sql .= "domain_uuid = '$domain_uuid', "; $sql .= "user_uuid = '$user_uuid', "; $sql .= "app_uuid = '$app_uuid', "; $sql .= "transaction_code = '$transaction_code', "; $sql .= "transaction_address = '$transaction_address', "; $sql .= "transaction_type = '$transaction_type', "; $sql .= "transaction_date = now(), "; $sql .= "transaction_old = '$transaction_old', "; $sql .= "transaction_new = '$transaction_new', "; $sql .= "transaction_result = '$transaction_result' "; $sql .= "where database_transaction_uuid = '$database_transaction_uuid'"; $sql .= "and domain_uuid = '$domain_uuid' "; $db->exec(check_sql($sql)); unset($sql); messages::add($text['message-update']); header("Location: database_transactions.php"); return; } //if ($action == "update") } //if ($_POST["persistformvar"] != "true") } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) */ //pre-populate the form if (count($_GET) > 0 && $_POST["persistformvar"] != "true") { $database_transaction_uuid = check_str($_GET["id"]); $sql = "select "; $sql .= "t.database_transaction_uuid, d.domain_name, u.username, t.user_uuid, t.app_name, t.app_uuid, "; $sql .= "t.transaction_code, t.transaction_address, t.transaction_type, t.transaction_date, "; $sql .= "t.transaction_old, t.transaction_new, t.transaction_result "; $sql .= "from v_database_transactions as t, v_domains as d, v_users as u "; $sql .= "where t.domain_uuid = '$domain_uuid' "; $sql .= "and t.database_transaction_uuid = '$database_transaction_uuid' "; $sql .= "and t.user_uuid = u.user_uuid "; $sql .= "and t.domain_uuid = d.domain_uuid "; //$sql = "select *, u.username from v_database_transactions as t, v_users as u "; //$sql .= "where domain_uuid = '$domain_uuid' "; //$sql .= "t.user_uuid = u.user_uuid "; //$sql .= "and database_transaction_uuid = '$database_transaction_uuid' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $user_uuid = $row["user_uuid"]; $app_name = $row["app_name"]; $app_uuid = $row["app_uuid"]; $domain_name = $row["domain_name"]; $username = $row["username"]; $transaction_code = $row["transaction_code"]; $transaction_address = $row["transaction_address"]; //$transaction_type = $row["transaction_type"]; $transaction_date = $row["transaction_date"]; $transaction_old = $row["transaction_old"]; $transaction_new = $row["transaction_new"]; $transaction_result = $row["transaction_result"]; } unset ($prep_statement); } //show the header require_once "resources/header.php"; //show the content //echo "
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['title-database_transaction']."

\n"; echo " "; //echo " "; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; /*echo " \n"; echo " \n"; echo " \n"; echo " \n"; */ echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['label-app_name']."\n"; echo " \n"; echo " ".$app_name."\n"; //echo " \n"; //echo "
\n"; //echo " ".$text['description-app_uuid']."\n"; echo "
\n"; echo " ".$text['label-domain']."\n"; echo " \n"; echo " ".$domain_name; //echo " \n"; //echo "
\n"; //echo " ".$text['description-domain']."\n"; echo "
\n"; echo " ".$text['label-user_uuid']."\n"; echo " \n"; echo " ".$username."\n"; //echo " \n"; //echo "
\n"; //echo " ".$text['description-user_uuid']."\n"; echo "
\n"; echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['label-transaction_code']."\n"; echo " \n"; echo " $transaction_code\n"; //echo " \n"; //echo "
\n"; //echo " ".$text['description-transaction_code']."\n"; echo "
\n"; echo " ".$text['label-transaction_address']."\n"; echo " \n"; echo " $transaction_address\n"; //echo " \n"; //echo "
\n"; //echo " ".$text['description-transaction_address']."\n"; echo "
\n"; echo "
\n"; //echo "\n"; //echo "\n"; //echo " ".$text['label-transaction_type']."\n"; //echo "\n"; //echo "\n"; //echo " \n"; //echo "
\n"; //echo $text['description-transaction_type']."\n"; //echo "\n"; //echo "\n"; if ($_REQUEST["debug"] == "true") { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-transaction_old']."\n"; echo "\n"; //echo " \n"; echo " \n"; //echo "
\n"; //echo $text['description-transaction_old']."\n"; echo "
\n"; echo " ".$text['label-transaction_new']."\n"; echo "\n"; //echo " \n"; echo " \n"; //echo "
\n"; //echo $text['description-transaction_new']."\n"; echo "
\n"; echo " ".$text['label-transaction_result']."\n"; echo "\n"; //echo " \n"; echo " \n"; //echo "
\n"; //echo $text['description-transaction_result']."\n"; echo "
"; } //echo " \n"; //echo " \n"; //if ($action == "update") { // echo " \n"; //} //echo " \n"; //echo " \n"; //echo " "; //echo ""; //echo "
"; //echo "

"; //define the array _difference function //this adds old and new values to the array function array_difference($array1, $array2) { $difference = array(); if (is_array($array1)) { foreach($array1 as $key => $value) { if(is_array($array2[$key])) { $difference[$key] = array_difference($array1[$key], $array2[$key]); } else { $difference[$key]['old'] = $value; } } } if (is_array($array2)) { foreach($array2 as $key => $value) { if(is_array($value)) { $difference[$key] = array_difference($array1[$key], $array2[$key]); } else { $difference[$key]['new'] = $value; } } } return $difference; } //show the content from the difference array as a list function show_difference($array) { //loop through the array foreach($array as $key => $value) { if(is_array($value) && !isset($value['old']) && !isset($value['new'])) { if (!is_numeric($key)) { //get the table name $_SESSION['name'] = $key; } else { //get the row id $_SESSION['row'] = $key; } $array = show_difference($value); } else { //set the variables $old = $value['old']; $new = $value['new']; if (is_null($old)) { $old = ''; } if (is_null($new)) { $new = ''; } //determine if the value has changed if (strval($old) == strval($new) && isset($old)) { $color = "#000000"; } else { $color = "#ff0000"; } //set the table header if ($_SESSION['previous_name'] != $_SESSION['name'] || $_SESSION['previous_row'] != $_SESSION['row']) { echo str_replace("name","".$_SESSION['name']."",$_SESSION['table_header']); //echo $_SESSION['table_header']; } $_SESSION['previous_name'] = $_SESSION['name']; $_SESSION['previous_row'] = $_SESSION['row']; //show the results echo "\n"; //echo " ".$_SESSION['name']."\n"; //echo " ".$_SESSION['row']."\n"; echo " $key\n"; echo " ".$old."\n"; echo " ".$new.""; echo "\n"; //echo "\n"; } } } //decode the json to arrays $before = json_decode($transaction_old, true); $after = json_decode($transaction_new, true); //unset the sessions unset($_SESSION['previous_name']); unset($_SESSION['previous_row']); //show the add or update if (count($before) > 0 && count($after) > 0) { //create the table header $array = array_difference($before, $after, 1); $table_header = " \n"; $table_header .= "\n"; //$table_header .= " Table\n"; //$table_header .= " Row\n"; $table_header .= " name\n"; $table_header .= " old\n"; $table_header .= " new\n"; $table_header .= "\n"; $_SESSION['table_header'] = $table_header; //show the difference echo "\n"; show_difference($array); echo "
\n"; } //show the delete if (count($before) > 0 && count($after) == 0) { echo "

Record Deleted


\n"; echo "
\n";
		print_r($before);
		echo "		
\n"; } //add a few lines at the end echo "
\n"; echo "
\n"; //include the footer require_once "resources/footer.php"; ?>