diff --git a/agent/files.php b/agent/files.php index bbdf54cd..469d4296 100644 --- a/agent/files.php +++ b/agent/files.php @@ -256,6 +256,7 @@ if ($view == 1) { $file_mime_type = nullable_htmlentities($row['file_mime_type']); $file_uploaded_by = nullable_htmlentities($row['user_name']); $file_created_at = nullable_htmlentities($row['file_created_at']); + $file_archived_at = $row['file_archived_at']; // determine icon if ($file_ext == 'pdf') { @@ -293,6 +294,7 @@ if ($view == 1) { 'size' => $file_size, 'created_at' => $file_created_at, 'created_by' => $file_uploaded_by, + 'archived_at' => $file_archived_at, ]; } @@ -303,6 +305,7 @@ if ($view == 1) { $document_description = nullable_htmlentities($row['document_description']); $document_created_by_name = nullable_htmlentities($row['user_name']); $document_created_at = $row['document_created_at']; + $document_archived_at = $row['document_archived_at']; $items[] = [ 'kind' => 'document', @@ -313,6 +316,7 @@ if ($view == 1) { 'size' => null, 'created_at' => $document_created_at, 'created_by' => $document_created_by_name, + 'archived_at' => $document_archived_at, ]; } @@ -462,11 +466,24 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) data-bulk="true"> Move Files + + + + + + + @@ -512,6 +529,7 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) $file_size_KB = number_format($file_size / 1024); $file_mime_type = nullable_htmlentities($row['file_mime_type']); $file_uploaded_by = nullable_htmlentities($row['user_name']); + $file_archived_at = nullable_htmlentities($row['file_archived_at']); $files[] = [ 'id' => $file_id, @@ -547,16 +565,23 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) Move - Asset + Link Asset - - - Archive - - + - )"> - Delete + + Restore + + + + )"> + Delete + + + + + + Archive @@ -629,6 +654,7 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) $file_mime_type = $item['mime']; $file_uploaded_by = $item['created_by']; $file_created_at = $item['created_at']; + $file_archived_at = $item['archived_at']; // Shared? $sql_shared = mysqli_query( @@ -707,16 +733,23 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) Move - Asset + Link Asset - - - Archive - - + - )"> - Delete + + Restore + + + + )"> + Delete + + + + + + Archive @@ -733,6 +766,7 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) $document_description = $item['description']; $document_created_by_name = $item['created_by']; $document_created_at = date("m/d/Y", strtotime($item['created_at'])); + $document_archived_at = $item['archived_at']; $sql_shared = mysqli_query( $mysqli, @@ -819,14 +853,21 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']) data-modal-url="modals/document/document_move.php?id="> Move - + - - Archive + + Restore + + + + Delete + + + - - Delete + + Archive diff --git a/agent/post/document.php b/agent/post/document.php index 39ef579e..de467358 100644 --- a/agent/post/document.php +++ b/agent/post/document.php @@ -700,6 +700,28 @@ if (isset($_GET['archive_document'])) { } +if (isset($_GET['restore_document'])) { + + enforceUserPermission('module_support', 2); + + $document_id = intval($_GET['restore_document']); + + // Get Document Name and Client ID for logging and alert message + $sql = mysqli_query($mysqli,"SELECT document_name, document_client_id FROM documents WHERE document_id = $document_id"); + $row = mysqli_fetch_assoc($sql); + $document_name = sanitizeInput($row['document_name']); + $client_id = intval($row['document_client_id']); + + mysqli_query($mysqli,"UPDATE documents SET document_archived_at = NULL WHERE document_id = $document_id"); + + logAction("Document", "Restore", "$session_name restored document $document_name", $client_id, $document_id); + + flash_alert("Document $document_name Restored"); + + redirect(); + +} + if (isset($_GET['delete_document_version'])) { enforceUserPermission('module_support', 3); diff --git a/agent/post/file.php b/agent/post/file.php index 30b6da5b..59aafaa5 100644 --- a/agent/post/file.php +++ b/agent/post/file.php @@ -173,6 +173,28 @@ if (isset($_GET['archive_file'])) { } +if (isset($_GET['restore_file'])) { + + enforceUserPermission('module_support', 2); + + $file_id = intval($_GET['restore_file']); + + // Get Document Name and Client ID for logging and alert message + $sql = mysqli_query($mysqli,"SELECT file_name, file_client_id FROM files WHERE file_id = $file_id"); + $row = mysqli_fetch_assoc($sql); + $file_name = sanitizeInput($row['file_name']); + $client_id = intval($row['file_client_id']); + + mysqli_query($mysqli,"UPDATE files SET file_archived_at = NULL WHERE file_id = $file_id"); + + logAction("File", "Restore", "$session_name restored file $file_name", $client_id, $file_id); + + flash_alert("File $file_name Restored"); + + redirect(); + +} + if (isset($_POST['delete_file'])) { validateCSRFToken($_POST['csrf_token']); @@ -208,6 +230,65 @@ if (isset($_POST['delete_file'])) { } +if (isset($_POST['bulk_archive_files'])) { + + validateCSRFToken($_POST['csrf_token']); + + enforceUserPermission('module_support', 3); + + // Archive file loop + if (isset($_POST['file_ids'])) { + + // Get selected file Count + $file_count = count($_POST['file_ids']); + + foreach($_POST['file_ids'] as $file_id) { + + $file_id = intval($file_id); + + $sql_file = mysqli_query($mysqli,"SELECT * FROM files WHERE file_id = $file_id"); + $row = mysqli_fetch_array($sql_file); + $client_id = intval($row['file_client_id']); + $file_name = sanitizeInput($row['file_name']); + + mysqli_query($mysqli,"UPDATE files SET file_archived_at = NOW() WHERE file_id = $file_id"); + + logAction("File", "Archive", "$session_name archived file $file_name", $client_id, $file_id); + } + + } + + // Archive documents loop + if (isset($_POST['document_ids'])) { + + // Get selected document count + $document_count = count($_POST['document_ids']); + + // Delete document loop + foreach($_POST['document_ids'] as $document_id) { + $document_id = intval($document_id); + // Get document name for logging + $sql = mysqli_query($mysqli,"SELECT document_name, document_client_id FROM documents WHERE document_id = $document_id"); + $row = mysqli_fetch_array($sql); + $document_name = sanitizeInput($row['document_name']); + $client_id = intval($row['document_client_id']); + + mysqli_query($mysqli,"UPDATE documents SET document_archived_at = NOW() WHERE document_id = $document_id"); + + logAction("Document", "Archive", "$session_name archived document $document_name", $client_id, $document_id); + + } + + } + + logAction("File", "Bulk Archive", "$session_name archived $document_count document(s) and $file_count file(s)", $client_id); + + flash_alert("Archived $document_count Documents and $file_count files", 'error'); + + redirect(); + +} + if (isset($_POST['bulk_delete_files'])) { validateCSRFToken($_POST['csrf_token']); @@ -257,11 +338,11 @@ if (isset($_POST['bulk_delete_files'])) { // Delete document loop foreach($_POST['document_ids'] as $document_id) { $document_id = intval($document_id); - // Get document name for logging + // Get Document Name and Client ID for logging $sql = mysqli_query($mysqli,"SELECT document_name, document_client_id FROM documents WHERE document_id = $document_id"); $row = mysqli_fetch_array($sql); - $document_name = sanitizeInput($row['document_name']); $client_id = intval($row['document_client_id']); + $document_name = sanitizeInput($row['document_name']); mysqli_query($mysqli,"DELETE FROM documents WHERE document_id = $document_id"); @@ -277,9 +358,68 @@ if (isset($_POST['bulk_delete_files'])) { } - logAction("File", "Bulk Delete", "$session_name deleted $document_count document(s) and all versions and $file_count file(s)", $client_id); + logAction("File", "Bulk Delete", "$session_name deleted $document_count document(s) and $file_count file(s)", $client_id); - flash_alert("Deleted $document_count Documents and associated document versions and $file_count files", 'error'); + flash_alert("Deleted $document_count Documents and $file_count files", 'error'); + + redirect(); + +} + +if (isset($_POST['bulk_restore_files'])) { + + validateCSRFToken($_POST['csrf_token']); + + enforceUserPermission('module_support', 2); + + // Restore file loop + if (isset($_POST['file_ids'])) { + + // Get selected file Count + $file_count = count($_POST['file_ids']); + + foreach($_POST['file_ids'] as $file_id) { + + $file_id = intval($file_id); + + $sql_file = mysqli_query($mysqli,"SELECT * FROM files WHERE file_id = $file_id"); + $row = mysqli_fetch_array($sql_file); + $client_id = intval($row['file_client_id']); + $file_name = sanitizeInput($row['file_name']); + + mysqli_query($mysqli,"UPDATE files SET file_archived_at = NULL WHERE file_id = $file_id"); + + logAction("File", "Restore", "$session_name restored file $file_name", $client_id, $file_id); + } + + } + + // Restore documents loop + if (isset($_POST['document_ids'])) { + + // Get selected document count + $document_count = count($_POST['document_ids']); + + // Restore document loop + foreach($_POST['document_ids'] as $document_id) { + $document_id = intval($document_id); + // Get document name for logging + $sql = mysqli_query($mysqli,"SELECT document_name, document_client_id FROM documents WHERE document_id = $document_id"); + $row = mysqli_fetch_array($sql); + $document_name = sanitizeInput($row['document_name']); + $client_id = intval($row['document_client_id']); + + mysqli_query($mysqli,"UPDATE documents SET document_archived_at = NULL WHERE document_id = $document_id"); + + logAction("Document", "Restore", "$session_name restored document $document_name", $client_id, $document_id); + + } + + } + + logAction("File", "Bulk Restore", "$session_name restored $document_count document(s) and $file_count file(s)", $client_id); + + flash_alert("Restored $document_count Documents and $file_count files"); redirect();