function copyViaFtpRecursively($uploadLocation, $previewPath, $remoteDirectory, $ftpType) { $errorMessage = ''; $connectionId = getFtpConnection($uploadLocation['host'], $uploadLocation['username'], $uploadLocation['password'], $uploadLocation['port']); switch ($ftpType) { case 'active': ftp_pasv($connectionId, False); break; case 'passive': ftp_pasv($connectionId, True); break; } $baseDirectory = $uploadLocation['baseDirectory']; if (substr($baseDirectory, strlen($baseDirectory) - 1, 1) != '/') { $baseDirectory .= '/'; } ftp_mkdir($connectionId, $baseDirectory); // No point showing an error message if the directory exists (most likely cause of error) because it will exist (at least) after the first time. $remoteBaseDirectory = $baseDirectory . $remoteDirectory; if (substr($remoteBaseDirectory, strlen($remoteBaseDirectory) - 1, 1) == '/') { $remoteBaseDirectory = substr($remoteBaseDirectory, 0, strlen($remoteBaseDirectory) - 1); } $remoteBaseDirectory .= '/'; $errorMessage .= copyFileViaFtp($previewPath, $remoteBaseDirectory, $connectionId); ftp_close($connectionId); $errorHtml = ''; if ($errorMessage) { $errorHtml = nl2br($errorMessage); } return $errorHtml; }
} else { echo "Failed\n"; } break; case 'a': echo "Doing whole site sync.\n"; echo "Scanning local files..."; $localFiles = scanLocal($localRoot); // Scan local files if ($localFiles === false) { echo "Failed!\n"; die; } else { echo "OK\n"; } $ftp = getFtpConnection($ftpHost, $ftpPort, $ftpUser, $ftpPass, $activeMode); echo "Scanning remote files..."; $remoteFiles = scanRemote($ftp, $remoteRoot); //Scan remote files. if ($remoteFiles === false) { echo "Failed!\n"; die; } else { echo "OK\n"; } //Find out and upload newer files. echo "Comparing files..."; $cache = $localFiles; foreach ($localFiles as $f => $t) { if (isset($remoteFiles[$f]) && $t <= $remoteFiles[$f]) { unset($localFiles[$f]);