1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
#include "phpoptions.h"
#include "cl_standard_paths.h"
#include "codelite_events.h"
#include "event_notifier.h"
#include "fileutils.h"
#include "globals.h"
#include <wx/filename.h>
PhpOptions::PhpOptions()
: clConfigItem("PHPConfigurationData")
, m_phpExe("")
, m_errorReporting("E_ALL & ~E_NOTICE")
{
wxFileName newConfigFile = clStandardPaths::Get().GetUserDataDir() + wxFileName::GetPathSeparator() + "config" +
wxFileName::GetPathSeparator() + "php-general.conf";
if(!newConfigFile.FileExists()) {
wxFileName oldConfigFile = clStandardPaths::Get().GetUserDataDir() + wxFileName::GetPathSeparator() + "config" +
wxFileName::GetPathSeparator() + "php.conf";
// first time, copy the values from the old settings
JSON root(oldConfigFile);
JSONItem oldJson = root.toElement().namedObject("PHPConfigurationData");
m_phpExe = oldJson.namedObject("m_phpExe").toString();
if(m_phpExe.empty()) {
wxFileName fnPHP;
if(::clFindExecutable("php", fnPHP)) {
m_phpExe = fnPHP.GetFullPath();
}
}
m_includePaths = oldJson.namedObject("m_includePaths").toArrayString();
m_errorReporting = oldJson.namedObject("m_errorReporting").toString(m_errorReporting);
// Save it
wxString buf;
if(FileUtils::ReadBufferFromFile(newConfigFile, buf, 1) && (buf == "[")) {
FileUtils::WriteFileContent(newConfigFile, "{}");
}
if(!newConfigFile.FileExists()) {
FileUtils::WriteFileContent(newConfigFile, "{}");
}
JSON newRoot(newConfigFile);
JSONItem e = JSONItem::createObject(GetName());
e.addProperty("m_phpExe", m_phpExe);
e.addProperty("m_includePaths", m_includePaths);
e.addProperty("m_errorReporting", m_errorReporting);
newRoot.toElement().append(e);
newRoot.save(newConfigFile);
}
}
PhpOptions::~PhpOptions() {}
void PhpOptions::FromJSON(const JSONItem& json)
{
m_phpExe = json.namedObject("m_phpExe").toString(m_phpExe);
if(m_phpExe.IsEmpty()) {
wxFileName phpExe;
clFindExecutable("php", phpExe);
m_phpExe = phpExe.GetFullPath();
}
m_errorReporting = json.namedObject("m_errorReporting").toString(m_errorReporting);
m_includePaths = json.namedObject("m_includePaths").toArrayString();
}
JSONItem PhpOptions::ToJSON() const
{
JSONItem element = JSONItem::createObject(GetName());
element.addProperty("m_phpExe", m_phpExe);
element.addProperty("m_errorReporting", m_errorReporting);
element.addProperty("m_includePaths", m_includePaths);
return element;
}
PhpOptions& PhpOptions::Load()
{
clConfig config("php-general.conf");
config.ReadItem(this);
return *this;
}
PhpOptions& PhpOptions::Save()
{
clConfig config("php-general.conf");
config.WriteItem(this);
// Notify that the PHP settings were modified
clCommandEvent event(wxEVT_PHP_SETTINGS_CHANGED);
EventNotifier::Get()->AddPendingEvent(event);
return *this;
}
|