public static function moveFtpFile($filename, $process) { $ftp_dir = $process . '/'; $final_destination = '/processed_feed/' . $filename; $ftp_conn = ftp_connect(config('monster.ftp_server'), 21); if ($ftp_conn) { $ftp_login = ftp_login($ftp_conn, config('monster.ftp_user'), config('monster.ftp_password')); if ($ftp_login) { $is_passive = ftp_pasv($ftp_conn, true); if ($is_passive) { $is_dir_changed = ftp_chdir($ftp_conn, $ftp_dir); if (!$is_dir_changed) { ftp_close($ftp_conn); } else { // move ftp file $ftp_files = ftp_nlist($ftp_conn, ""); if (in_array($filename, $ftp_files)) { if ($process == 'test' || $process == 'processed_feed') { // TO DO: keep it to test the export process $is_deleted = ftp_delete($ftp_conn, '/' . $ftp_dir . $filename); if ($is_deleted) { ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'was deleted from FTP [' . $process . '] folder']); FileInProgress::where(['file_name' => $filename])->delete(); } else { ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'cannot be deleted']); FileInProgress::where(['file_name' => $filename])->delete(); } } else { $is_moved = ftp_rename($ftp_conn, $filename, $final_destination); if ($is_moved) { ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'was moved to FTP [processed_feed] folder']); FileInProgress::where(['file_name' => $filename])->delete(); } else { ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'cannot be moved to [' . $final_destination . ']']); } } } else { ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'is not found on the FTP server']); } } } } ftp_close($ftp_conn); } //queue local file for deletion FileDeleteQueue::create(['file_name' => $filename]); }