static void fill_settings( MythSettingList &settings, MSqlQuery &query, MythSetting::SettingType stype) { QMap<QString,QString> map; while (query.next()) map[query.value(0).toString()] = query.value(1).toString(); MythSettingList::const_iterator it = settings.begin(); for (; it != settings.end(); ++it) fill_setting(*it, map, stype); }
bool load_settings(MythSettingList &settings, const QString &hostname) { MSqlQuery query(MSqlQuery::InitCon()); QString list = extract_query_list(settings, MythSetting::kFile); if (!list.isEmpty()) { QMap<QString,QString> map = GetConfigFileSettingValues(); if (map.isEmpty()) return false; MythSettingList::const_iterator it = settings.begin(); for (; it != settings.end(); ++it) fill_setting(*it, map, MythSetting::kFile); } list = extract_query_list(settings, MythSetting::kHost); QString qstr = "SELECT value, data " "FROM settings " "WHERE hostname = '" + hostname + "' AND " " value in (" + list + ")"; if (!list.isEmpty()) { if (!query.exec(qstr)) { MythDB::DBError("HttpConfig::LoadMythSettings() 1", query); return false; } fill_settings(settings, query, MythSetting::kHost); } list = extract_query_list(settings, MythSetting::kGlobal); qstr = "SELECT value, data " "FROM settings " "WHERE hostname IS NULL AND " " value in (" + list + ")"; if (!list.isEmpty()) { if (!query.exec(qstr)) { MythDB::DBError("HttpConfig::LoadMythSettings() 2", query); return false; } fill_settings(settings, query, MythSetting::kGlobal); } return true; }
static QString extract_query_list( const MythSettingList &settings, MythSetting::SettingType stype) { QString list; MythSettingList::const_iterator it = settings.begin(); for (; it != settings.end(); ++it) { const MythSettingGroup *group = dynamic_cast<const MythSettingGroup*>(*it); if (group) { list += extract_query_list(group->m_settings, stype); continue; } const MythSetting *setting = dynamic_cast<const MythSetting*>(*it); if (setting && (setting->m_stype == stype)) list += QString(",'%1'").arg(setting->m_value); } if (!list.isEmpty() && (list[0] == QChar(','))) list = list.mid(1); return list; }