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); } }
wxString PhpSFTPHandler::GetRemotePath(const SSHWorkspaceSettings& sshSettings, const wxString& localpath) const { if(!sshSettings.IsRemoteUploadEnabled() || !sshSettings.IsRemoteUploadEnabled()) { return ""; } wxFileName fnLocalFile = localpath; fnLocalFile.MakeRelativeTo(PHPWorkspace::Get()->GetFilename().GetPath()); fnLocalFile.MakeAbsolute(wxFileName(sshSettings.GetRemoteFolder(), "", wxPATH_UNIX).GetPath()); return fnLocalFile.GetFullPath(wxPATH_UNIX); }
wxStringMap_t XDebugManager::GetFileMapping(PHPProject::Ptr_t pProject) const { wxASSERT(pProject); wxStringMap_t mappings; const PHPProjectSettingsData& settings = pProject->GetSettings(); mappings = settings.GetFileMapping(); // Add the SFTP mappings SSHWorkspaceSettings sftpSettings; sftpSettings.Load(); if ( !sftpSettings.GetRemoteFolder().IsEmpty() && sftpSettings.IsRemoteUploadEnabled() ) { mappings.insert( std::make_pair(PHPWorkspace::Get()->GetFilename().GetPath(), sftpSettings.GetRemoteFolder()) ); } return mappings; }
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 XDebugManager::DoApplyBreakpoints() { CL_DEBUG("CodeLite >>> Applying breakpoints"); CHECK_PTR_RET(m_readerThread); PHPProject::Ptr_t pProject = PHPWorkspace::Get()->GetActiveProject(); CHECK_PTR_RET(pProject); const PHPProjectSettingsData& settings = pProject->GetSettings(); bool bRunAsWebserver = ( pProject->GetSettings().GetRunAs() == PHPProjectSettingsData::kRunAsWebsite); XDebugBreakpoint::List_t& breakpoints = m_breakpointsMgr.GetBreakpoints(); XDebugBreakpoint::List_t::iterator iter = breakpoints.begin(); for( ; iter != breakpoints.end(); ++iter ) { // apply only breakpoints without xdebug-id attached to them if ( iter->IsApplied() ) { continue; } wxStringMap_t sftpMapping; SSHWorkspaceSettings sftpSettings; sftpSettings.Load(); if ( !sftpSettings.GetRemoteFolder().IsEmpty() && sftpSettings.IsRemoteUploadEnabled() ) { sftpMapping.insert( std::make_pair(PHPWorkspace::Get()->GetFilename().GetPath(), sftpSettings.GetRemoteFolder()) ); } wxString command; XDebugCommandHandler::Ptr_t handler( new XDebugBreakpointCmdHandler(this, ++TranscationId, *iter) ); wxString filepath = bRunAsWebserver ? settings.GetMappdPath( iter->GetFileName(), true , sftpMapping) : iter->GetFileName(); command << "breakpoint_set -i " << handler->GetTransactionId() << " -t line" << " -f " << filepath << " -n " << iter->GetLine(); DoSocketWrite( command ); AddHandler( handler ); } }