void PhpSFTPHandler::DoSyncFileWithRemote(const wxFileName& localFile) { // Check to see if we got a remote-upload setup PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProjectForFile(localFile); if(!pProject) { // Not a workspace file clDEBUG() << localFile << "is not a PHP workspace file, will not sync it with remote" << clEndl; return; } SSHWorkspaceSettings workspaceSettings; workspaceSettings.Load(); if(!EnsureAccountExists(workspaceSettings)) { return; } // Convert the local path to remote path wxString remotePath = GetRemotePath(workspaceSettings, localFile.GetFullPath()); if(remotePath.IsEmpty()) { return; } // Fire this event, if the sftp plugin is ON, it will handle it clSFTPEvent eventSave(wxEVT_SFTP_SAVE_FILE); eventSave.SetAccount(workspaceSettings.GetAccount()); eventSave.SetLocalFile(localFile.GetFullPath()); eventSave.SetRemoteFile(remotePath); EventNotifier::Get()->AddPendingEvent(eventSave); }
void PhpPlugin::OnFileSaved(clCommandEvent& e) { e.Skip(); // Check to see if we got a remote-upload setup SSHWorkspaceSettings settings; settings.Load(); if(settings.IsRemoteUploadSet() && settings.IsRemoteUploadEnabled()) { // Post an event to the SFTP plugin and ask it to save our file wxFileName fnLocalFile(e.GetString()); fnLocalFile.MakeRelativeTo(PHPWorkspace::Get()->GetFilename().GetPath()); fnLocalFile.MakeAbsolute(wxFileName(settings.GetRemoteFolder(), "", wxPATH_UNIX).GetPath()); wxString remoteFile = fnLocalFile.GetFullPath(wxPATH_UNIX); wxString localFile = e.GetString(); JSONRoot root(cJSON_Object); root.toElement().addProperty("account", settings.GetAccount()); root.toElement().addProperty("local_file", localFile); root.toElement().addProperty("remote_file", remoteFile); clCommandEvent eventSave(XRCID("wxEVT_SFTP_SAVE_FILE")); eventSave.SetString(root.toElement().format()); EventNotifier::Get()->AddPendingEvent(eventSave); } }
void PhpPlugin::DoSyncFileWithRemote(const wxFileName& localFile) { // Check to see if we got a remote-upload setup PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetProjectForFile(localFile); if(!pProject) { // Not a workspace file clDEBUG() << localFile << "is not a PHP workspace file, will not sync it with remote" << clEndl; return; } SSHWorkspaceSettings settings; settings.Load(); if(settings.IsRemoteUploadSet() && settings.IsRemoteUploadEnabled()) { // Post an event to the SFTP plugin and ask it to save our file wxFileName fnLocalFile = localFile; fnLocalFile.MakeRelativeTo(PHPWorkspace::Get()->GetFilename().GetPath()); fnLocalFile.MakeAbsolute(wxFileName(settings.GetRemoteFolder(), "", wxPATH_UNIX).GetPath()); wxString remoteFile = fnLocalFile.GetFullPath(wxPATH_UNIX); // Fire this event, if the sftp plugin is ON, it will handle it clSFTPEvent eventSave(wxEVT_SFTP_SAVE_FILE); eventSave.SetAccount(settings.GetAccount()); eventSave.SetLocalFile(localFile.GetFullPath()); eventSave.SetRemoteFile(remoteFile); EventNotifier::Get()->AddPendingEvent(eventSave); } }
bool PhpSFTPHandler::EnsureAccountExists(SSHWorkspaceSettings& workspaceSettings) { // Do we need to sync? if(!(workspaceSettings.IsRemoteUploadSet() && workspaceSettings.IsRemoteUploadEnabled())) { return false; } SFTPSettings sftpSettings; sftpSettings.Load(); // Try to locate hte SSH account for this workspace SSHAccountInfo account; if(!sftpSettings.GetAccount(workspaceSettings.GetAccount(), account)) { // Failed to locate the SSH account, disable sync wxString msg; msg << _("Failed to locate SSH account: ") << workspaceSettings.GetAccount() << "\n"; ::wxMessageBox(msg, _("SFTP"), wxOK | wxICON_ERROR); // Clear the sync settings and return workspaceSettings.Reset(); workspaceSettings.Save(); return false; } return true; }
void PHPWorkspaceView::DoOpenSSHAccountManager() { SSHWorkspaceSettings settings; settings.Load(); SFTPBrowserDlg dlg(EventNotifier::Get()->TopFrame(), _("Select the remote folder corrseponding to the current workspace file"), "", clSFTP::SFTP_BROWSE_FOLDERS); // Browse for folders only dlg.Initialize(settings.GetAccount(), settings.GetRemoteFolder()); if(dlg.ShowModal() == wxID_OK) { settings.SetAccount(dlg.GetAccount()); settings.SetRemoteFolder(dlg.GetPath()); settings.Save(); } }
void PhpSFTPHandler::OnFileRenamed(clFileSystemEvent& e) { e.Skip(); if(!PHPWorkspace::Get()->IsOpen()) { return; } SSHWorkspaceSettings settings; settings.Load(); if(!EnsureAccountExists(settings)) { return; } wxString oldPath = GetRemotePath(settings, e.GetPath()); wxString newPath = GetRemotePath(settings, e.GetNewpath()); if(oldPath.IsEmpty() || newPath.IsEmpty()) { return; } clDEBUG() << "PHP SFTP: Renaming:" << oldPath << "->" << newPath; // Fire this event, if the sftp plugin is ON, it will handle it clSFTPEvent eventRename(wxEVT_SFTP_RENAME_FILE); eventRename.SetAccount(settings.GetAccount()); eventRename.SetRemoteFile(oldPath); eventRename.SetNewRemoteFile(newPath); EventNotifier::Get()->AddPendingEvent(eventRename); }
void PhpSFTPHandler::OnFileDeleted(clFileSystemEvent& e) { e.Skip(); if(!PHPWorkspace::Get()->IsOpen()) { return; } SSHWorkspaceSettings settings; settings.Load(); if(!EnsureAccountExists(settings)) { return; } const wxArrayString& paths = e.GetPaths(); if(paths.IsEmpty()) { return; } for(size_t i = 0; i < paths.size(); ++i) { wxString remotePath = GetRemotePath(settings, paths.Item(i)); if(remotePath.IsEmpty()) { return; } // Fire this event, if the sftp plugin is ON, it will handle it clSFTPEvent eventDelete(wxEVT_SFTP_DELETE_FILE); eventDelete.SetAccount(settings.GetAccount()); eventDelete.SetRemoteFile(remotePath); EventNotifier::Get()->AddPendingEvent(eventDelete); } }