| Index: Shared/PluginSettings.cpp |
| =================================================================== |
| --- a/Shared/PluginSettings.cpp |
| +++ b/Shared/PluginSettings.cpp |
| @@ -238,6 +238,8 @@ |
| { |
| if (m_settingsFile->IsValidChecksum()) |
| { |
| + m_properties = m_settingsFile->GetSectionData("Settings"); |
| + |
| #ifdef SUPPORT_FILTER |
| // Unpack filter URLs |
| CPluginIniFileW::TSectionData filters = m_settingsFile->GetSectionData("Filters"); |
| @@ -359,6 +361,11 @@ |
| bool CPluginSettings::MakeRequestForUpdate() |
| { |
| + time_t updateTime = this->GetValue(SETTING_LAST_UPDATE_TIME); |
| + |
| + if (time(NULL) <= updateTime) |
| + return false; |
| + |
| CPluginHttpRequest httpRequest(PLUGIN_UPDATE_URL); |
| CPluginSystem* system = CPluginSystem::GetInstance(); |
| @@ -371,6 +378,7 @@ |
| httpRequest.Send(); |
| + this->SetValue(SETTING_LAST_UPDATE_TIME, time(NULL) + (5 * 24 * 60 * 60) * ((rand() % 100) / 100 * 0.4 + 0.8)); |
| if (httpRequest.IsValidResponse()) |
| { |
| const std::auto_ptr<CPluginIniFile>& iniFile = httpRequest.GetResponseFile(); |
| @@ -401,43 +409,68 @@ |
| } |
| bool CPluginSettings::CheckFilterAndDownload() |
| { |
| - TFilterUrlList currentFilterUrlList = this->GetFilterUrlList(); |
| - std::map<CString, CString> fileNamesList = this->GetFilterFileNamesList(); |
| + s_criticalSectionLocal.Lock(); |
| + TFilterUrlList currentFilterUrlList = this->GetFilterUrlList(); |
| + std::map<CString, CString> fileNamesList = this->GetFilterFileNamesList(); |
| - for (TFilterUrlList::iterator it = currentFilterUrlList.begin(); it != currentFilterUrlList.end(); ++it) |
| + bool filterAvailable = false; |
| + for (TFilterUrlList::iterator it = currentFilterUrlList.begin(); it != currentFilterUrlList.end(); ++it) |
| + { |
| + CString downloadFilterName = it->first; |
| + |
| + std::map<CString, CString>::const_iterator fni = fileNamesList.find(downloadFilterName); |
| + CString filename = ""; |
| + if (fni != fileNamesList.end()) |
| + { |
| + filename = fni->second; |
| + } |
| + else |
| + { |
| + filename = downloadFilterName.Trim().Right(downloadFilterName.GetLength() - downloadFilterName.ReverseFind('/') - 1).Trim(); |
| + } |
| + int version = it->second; |
| + if ((this->FilterShouldLoad(downloadFilterName))) |
| { |
| - CString downloadFilterName = it->first; |
| - |
| - std::map<CString, CString>::const_iterator fni = fileNamesList.find(downloadFilterName); |
| - CString filename = ""; |
| - if (fni != fileNamesList.end()) |
| + filterAvailable = true; |
| + if (this->FilterlistExpired(downloadFilterName)) |
| { |
| - filename = fni->second; |
| - } |
| - else |
| - { |
| - filename = downloadFilterName.Trim().Right(downloadFilterName.GetLength() - downloadFilterName.ReverseFind('/') - 1).Trim(); |
| - } |
| - int version = it->second; |
| - |
| - if (this->FilterlistExpired(downloadFilterName) && (this->FilterShouldLoad(downloadFilterName))) |
| - { |
| - CPluginFilter::DownloadFilterFile(downloadFilterName, filename); |
| + CPluginFilter::DownloadFilterFile(downloadFilterName, filename); |
| this->SetFilterRefreshDate(downloadFilterName, time(NULL) + (5 * 24 * 60 * 60) * ((rand() % 100) / 100 * 0.4 + 0.8)); |
| - } |
| - else |
| - { |
| - //Cleanup, since we don't need the filter definition |
| - DeleteFile(CPluginSettings::GetDataPath(filename)); |
| - this->SetFilterRefreshDate(downloadFilterName, 0); |
| } |
| } |
| + else |
| + { |
| + //Cleanup, since we don't need the filter definition |
| + DeleteFile(CPluginSettings::GetDataPath(filename)); |
| + this->SetFilterRefreshDate(downloadFilterName, 0); |
| + } |
| + } |
| - this->Write(); |
| + if (!filterAvailable) |
| + { |
| + //If no filter list found, default to "en" |
| - this->IncrementTabVersion(SETTING_TAB_FILTER_VERSION); |
| + this->SetString(SETTING_LANGUAGE, (BSTR)L"en"); |
| - return true; |
| + CPluginDictionary* dict = CPluginDictionary::GetInstance(); |
| + dict->SetLanguage(L"en"); |
| + |
| + for (std::map<CString, CString>::iterator it = m_filterLanguagesList.begin(); it != m_filterLanguagesList.end(); ++it) |
| + { |
| + if (it->second == L"en") |
| + { |
| + CPluginFilter::DownloadFilterFile(it->first, m_filterFileNameList.find(it->first)->second); |
| + this->SetFilterRefreshDate(it->first, time(NULL) + (5 * 24 * 60 * 60) * ((rand() % 100) / 100 * 0.4 + 0.8)); |
| + } |
| + } |
| + } |
| + |
| + this->Write(); |
| + |
| + this->IncrementTabVersion(SETTING_TAB_FILTER_VERSION); |
| + |
| + s_criticalSectionLocal.Unlock(); |
| + return true; |
| } |
| CString CPluginSettings::GetDataPathParent() |