(string) ($_POST['date'] ?? ''), 'amount' => (string) ($_POST['amount'] ?? ''), 'from' => intval($_POST['account_from'] ?? 0), 'to' => intval($_POST['account_to'] ?? 0), 'method' => (string) ($_POST['transfer_method'] ?? ''), 'notes' => (string) ($_POST['notes'] ?? ''), 'deposit' => array_map('strval', (array) ($_POST['deposit'] ?? [])), ]; } if (isset($_POST['add_transfer'])) { validateCSRFToken(); enforceUserPermission('module_financial', 2); $transfer_id = transferSave(transferPostInput(), 0, $error); if (!$transfer_id) { flashAlert(escapeHtml($error), 'error'); redirect(); } $row = transferRow($transfer_id); logAudit("Account Transfer", "Create", "$session_name transferred " . escapeSql(transferLabel($row)), 0, $transfer_id); flashAlert("Moved " . escapeHtml(transferLabel($row)) . ""); redirect(); } if (isset($_POST['edit_transfer'])) { validateCSRFToken(); enforceUserPermission('module_financial', 2); $transfer_id = intval($_POST['transfer_id'] ?? 0); if (!transferSave(transferPostInput(), $transfer_id, $error)) { flashAlert(escapeHtml($error), 'error'); redirect(); } $row = transferRow($transfer_id); logAudit("Account Transfer", "Edit", "$session_name edited the transfer " . escapeSql(transferLabel($row)), 0, $transfer_id); flashAlert("Transfer " . escapeHtml(transferLabel($row)) . " saved"); redirect(); } if (isset($_GET['delete_transfer'])) { validateCSRFToken(); enforceUserPermission('module_financial', 3); $row = transferDelete(intval($_GET['delete_transfer']), $error); if (!$row) { flashAlert(escapeHtml($error), 'error'); redirect(); } logAudit("Account Transfer", "Delete", "$session_name deleted the transfer " . escapeSql(transferLabel($row))); flashAlert("Transfer " . escapeHtml(transferLabel($row)) . " deleted", 'error'); redirect(); }