| Server IP : 104.21.21.239 / Your IP : 216.73.217.39 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/connectionsdev/mod/ |
Upload File : |
<?php include('_mod_security.php'); ?>
<?php
$sql = '';
switch ($_GET['func']):
case 'grid' :
require_once('classes/lcs_db_grid.php');
$dbg = new lcs_db_grid;
$dbg->start_header_section();
$dbg->start_header();
$dbg->add_column(['label' => 'Date/Time', 'dbcol' => 'r.date_time', 'width' => '120px']);
$dbg->add_column(['label' => 'Previous Data', 'dbcol' => 'r.previous_json', 'sortable' => false, 'searchable' => false, 'width' => '880px']);
//$dbg->add_column(['label' => 'Restore', 'sortable' => false, 'searchable' => false, 'width' => '65px', 'align' => 'center', 'update' => true]);
$dbg->end_header();
$dbg->end_header_section();
$sql = "SELECT r.* FROM revisions r ".
"WHERE ".$dbg->search_spec()." ".$_GET['parm1']." ".$_GET['parm2']." ".$_GET['parm3']." ".
"ORDER BY ".$dbg->sort_spec();
//echo ' === '.$sql.' === ';
$xls_sql = $sql;
$xls_sql_encoded = xls_sql_encrypt($xls_sql);
$result = $db->query($sql) or die('Database Error!');
$dbg->start_data_section();
if ($result->rowCount() > 0) :
while ($row = $result->fetch(PDO::FETCH_OBJ)) :
$dbg->start_row();
$dbg->add_cell('<a href="javascript:show_revision('.$row->id.')">'.$row->date_time.'</a>');
$dbg->add_cell('<a href="javascript:show_revision('.$row->id.')">'.$row->revision_json.'</a>');
//$dbg->add_cell('<a href="javascript:confirm_restore_revision(\'Are you sure?\', '.$row->id.');"><img src="img/reload_icon.png" style="border:none;" /></a>');
$dbg->end_row();
endwhile;
else :
$dbg->start_row();
$dbg->add_cell('No records found');
$dbg->end_row();
endif;
$dbg->end_data_section();
echo json_encode(['row_count' => $result->rowCount(), 'html' => $dbg->get_html(), 'xls_sql' => $xls_sql_encoded, 'extra_data'=> '']);
return;
break;
case 'load_revision' :
$sql = "SELECT * FROM revisions WHERE id = ".nz(trim($_GET['id']), '0')." ";
$result = $db->query($sql) or die(json_encode(['result' => 'Database Error!']));
if ($result->rowCount() > 0) :
$row = $result->fetch(PDO::FETCH_OBJ);
$sql_cur = "SELECT * FROM " . sql_safe_object($row->table_name) . " WHERE " . sql_safe_object($row->id_field) . " = " . nz($row->id_value, '0');
$result_cur = $db->query($sql_cur) or die(json_encode(['result' => 'Database Error!']));
$row_cur = $result_cur->fetch(PDO::FETCH_ASSOC);
$html = '<p>Data prior to revision made on: ' . $row->date_time . '</p>';
$html .= '<table><tr><th>Field</th><th>Current value</th><th>Revision value</th></tr>';
$ar_revisions = json_decode($row->revision_json, true);
$revision_delta = false;
foreach ($ar_revisions as $field => $value) :
$highlight = '';
if ($value !== $row_cur[$field]) :
$highlight = ' class="highlight" ';
$revision_delta = true;
endif;
$html .= "<tr {$highlight} >";
$html .= '<td>' . $field . '</td>';
$html .= '<td>' . $row_cur[$field] . '</td>';
$html .= '<td>' . $value . '</td>';
$html .= '<tr>';
endforeach;
$html .= '</table>';
if ($revision_delta) :
$html .= '<p><button type="button" style="width:150px;" onclick="confirm_restore_revision(\'Are you sure?\', ' . nz(trim($_GET['id']), '0') . ');">Restore this revision?</button></p>';
else :
$html .= '<p>No differences found. Nothing to restore.</p>';
endif;
endif;
$msg = 'Success';
echo json_encode(['result' => $msg, 'html' => $html]);
return;
break;
case 'restore_revision' :
$sql = "SELECT * FROM revisions WHERE id = ".nz(trim($_GET['id']), '0')." ";
$result = $db->query($sql) or die(json_encode(['result' => 'Database Error!']));
if ($result->rowCount() > 0) :
try {
$row = $result->fetch(PDO::FETCH_OBJ);
$ar_revisions = json_decode($row->revision_json, true);
$ar_parms = [];
$ar_set = [];
$sql = 'UPDATE ' . sql_safe_object($row->table_name) . ' SET ';
foreach ($ar_revisions as $field => $value) :
if ($field !== $row->id_field) :
$ar_set[] = sql_safe_object($field) . " = :" . sql_safe_string($field);
$ar_parms[':' . sql_safe_string($field)] = $value;
endif;
endforeach;
$sql .= implode(', ', $ar_set);
$sql .= " WHERE " . sql_safe_object($row->id_field) . " = " . nz($row->id_value, '0');
save_db_revision($row->table_name, $row->id_value, $row->id_field);
$stmt = $db->prepare($sql);
$stmt->execute($ar_parms);
$msg = 'Success';
} catch(Exception $e) {
db_err_rollback($e, false);
$msg = 'Error';
}
endif;
echo json_encode(['result' => $msg]);
return;
break;
endswitch;
?>