"error", "message" => "Unknown error"]; try { if ($_SERVER["REQUEST_METHOD"] === "POST") { $projectname = $_POST["projectname"] ?? ''; $erfno = $_POST["erfno"] ?? ''; $allotment = $_POST["allotment"] ?? ''; $client = $_POST["client"] ?? ''; $deposit = $_POST["deposit"] ?? ''; $totalfees = $_POST["totalfees"] ?? ''; if (strpos($projectname, '&') !== false) { $projectname = str_replace('&', '-LBR', $projectname); } if (strpos($projectname, '
') !== false) { $projectname = preg_replace('//i', '', $projectname); } date_default_timezone_set('Africa/Johannesburg'); $currentDateTime = date('Y-m-d H:i'); $clientprogress = $currentDateTime; $db2 = new SQLite3('database/clients.db'); $query2 = "SELECT name, id FROM clients"; $result2 = $db2->query($query2); $clientid = null; while ($row2 = $result2->fetchArray()) { if ($row2['name'] == $client) { $clientid = $row2['id']; break; } } $db2->close(); if ($clientid === null) { throw new Exception("Client ID not found for client: $client"); } $db = new SQLite3('database/projects.db'); $insertQuery = "INSERT INTO projects (projectname, erfno, allotment, client, clientid, clientprogress) VALUES ('$projectname', '$erfno', '$allotment', '$client', $clientid, '$clientprogress')"; if (!$db->exec($insertQuery)) { throw new Exception("Insert failed: " . $db->lastErrorMsg()); } $newRowID = $db->lastInsertRowID(); $currentDate = date('Y-m-d'); $currentYear = date('Y'); $numericPartTotalfees = preg_replace('/[^0-9.]/', '', $totalfees); $phaseFeeValueTotalfees = floatval($numericPartTotalfees); $numericPartDeposit = preg_replace('/[^0-9.]/', '', $deposit); $phaseFeeValueDeposit = floatval($numericPartDeposit); $Fees = $phaseFeeValueTotalfees - $phaseFeeValueDeposit; // You might want to move this function definition outside function formatNumberWithSpaces($number) { return number_format($number, 2, '.', ' '); } $formattedFees = formatNumberWithSpaces($Fees); $formattedDeposit = formatNumberWithSpaces($deposit); $clientprogress = $currentDate . "«" . $projectname . "«" . $currentYear . $newRowID . "«" . "50%" . "«" . "Project Started, Coming Soon" . "«" . "100%, 0%" . "«" . $currentDate . " - Started., Not Started" . "«" . $currentDateTime . ", " . $currentDateTime . "«" . $formattedDeposit . ", " . $formattedFees; $updateQuery = "UPDATE projects SET clientprogress = '$clientprogress' WHERE rowid = $newRowID"; if (!$db->exec($updateQuery)) { throw new Exception("Update failed: " . $db->lastErrorMsg()); } $db->close(); $ftp_server = "blackhoundenterprises.myqnapcloud.com"; $ftp_username = "BHDomain02"; $ftp_password = "h&92#8C7g92d}&B"; $ftp_port = 21; $directory = "/2025/"; // Establish FTP connection $conn_id = ftp_connect($ftp_server, $ftp_port); if (!$conn_id) { die("Couldn't connect to FTP server."); } if ($conn_id && ftp_login($conn_id, $ftp_username, $ftp_password)) { ftp_pasv($conn_id, true); // Enable passive mode if needed $items = ftp_nlist($conn_id, $directory); $maxNumber = 0; $nextNumber = 0; foreach ($items as $item) { if (preg_match('/x0*(\d+)\s*-\s*/', $item, $matches)) { $number = (int)$matches[1]; // Already trimmed leading zeros if ($number > $maxNumber) { $maxNumber = $number; } } } ftp_close($conn_id); foreach ($items as $item) { if (preg_match('/x(\d+)\s*-\s*(.+)/', $item, $matches)) { $textPart = $matches[2]; //echo "Text: " . $textPart . "\n"; } else { } } } else { // echo "Couldn't connect or login to FTP server."; } if (!empty($_FILES['files']['name'][0])) { $nextNumber = $maxNumber + 1; //echo $nextNumber; $formatted = 'x' . str_pad($nextNumber, 3, '0', STR_PAD_LEFT); $remote_directory1 = "/" . $currentYear; $remote_directory2 = "/" . $formatted . " - " . $projectname; $remote_directory3 = "/Received"; // Establish FTP connection $conn_id = ftp_connect($ftp_server, $ftp_port); if (!$conn_id) { die("Couldn't connect to FTP server."); } // Login to FTP $login_result = ftp_login($conn_id, $ftp_username, $ftp_password); if (!$login_result) { ftp_close($conn_id); die("Couldn't log in to FTP server."); } // Set passive mode ftp_pasv($conn_id, true); // Check if the upload folder exists $remote_folder_exists = ftp_chdir($conn_id, $remote_directory1); if (!$remote_folder_exists) { // Folder doesn't exist, so create it if (!ftp_mkdir($conn_id, $remote_directory1)) { ftp_close($conn_id); die("Failed to create 'Upload' directory on FTP server."); } // Change to the newly created directory ftp_chdir($conn_id, $remote_directory1); } // Check if the upload folder exists $remote_folder_exists = ftp_chdir($conn_id, $remote_directory1 . $remote_directory2); if (!$remote_folder_exists) { // Folder doesn't exist, so create it if (!ftp_mkdir($conn_id, $remote_directory1 . $remote_directory2)) { ftp_close($conn_id); die("Failed to create 'Upload' directory on FTP server."); } // Change to the newly created directory ftp_chdir($conn_id, $remote_directory1 . $remote_directory2); } // Check if the upload folder exists $remote_folder_exists = ftp_chdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3); if (!$remote_folder_exists) { // Folder doesn't exist, so create it if (!ftp_mkdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3)) { ftp_close($conn_id); die("Failed to create 'Upload' directory on FTP server."); } // Change to the newly created directory ftp_chdir($conn_id, $remote_directory1 . $remote_directory2 . $remote_directory3); } // Ensure files are uploaded if (!empty($_FILES['files']['name'][0])) { foreach ($_FILES['files']['name'] as $key => $name) { $tmpName = $_FILES['files']['tmp_name'][$key]; $remote_file = $remote_directory1 . $remote_directory2 . $remote_directory3 . "/" . basename($name); // Upload file to FTP server if (ftp_put($conn_id, $remote_file, $tmpName, FTP_BINARY)) { // echo "$name uploaded successfully to FTP.\n"; } else { //echo "Failed to upload $name to FTP.\n"; } } } else { echo "No files selected."; } // Close FTP connection ftp_close($conn_id); } $response = ["status" => "success", "message" => "Project saved successfully.", "rowid" => $newRowID]; } } catch (Exception $e) { $response["message"] = $e->getMessage(); } echo json_encode($response); ?>