WtHome::WtHome(const WEnvironment& env) : Home(env, "Wt, C++ Web Toolkit", "wt-home", "css/wt") { addLanguage(Lang("en", "/", "en", "English")); addLanguage(Lang("cn", "/cn/", "汉语", "中文 (Chinese)")); addLanguage(Lang("ru", "/ru/", "ру", "Русский (Russian)")); char* wtExamplePath = getenv("WT_EXAMPLE_PATH"); if (wtExamplePath) wtExamplePath_ = wtExamplePath; else wtExamplePath_ = "../"; init(); }
std::string Language::DefaultPluralFormsExpr() const { if (!IsValid()) return std::string(); static const std::unordered_map<std::string, std::string> forms = { #include "language_impl_plurals.h" }; auto i = forms.find(m_code); if ( i != forms.end() ) return i->second; i = forms.find(LangAndCountry()); if ( i != forms.end() ) return i->second; i = forms.find(Lang()); if ( i != forms.end() ) return i->second; return std::string(); }
HRESULT WINAPI Plugin::Initialize(IAIMPCore *Core) { Gdiplus::GdiplusStartupInput gdiplusStartupInput; if (Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL) != Gdiplus::Status::Ok) return E_FAIL; m_core = Core; AIMPString::Init(Core); if (FAILED(m_core->QueryInterface(IID_IAIMPServiceMUI, reinterpret_cast<void **>(&m_muiService)))) { Finalize(); return E_FAIL; } if (!Config::Init(Core)) { Finalize(); return E_FAIL; } if (!AimpHTTP::Init(Core)) { Finalize(); return E_FAIL; } if (!AimpMenu::Init(Core)) { Finalize(); return E_FAIL; } Config::LoadExtendedConfig(); m_accessToken = Config::GetString(L"AccessToken"); if (AimpMenu *addMenu = AimpMenu::Get(AIMP_MENUID_PLAYER_PLAYLIST_ADDING)) { addMenu->Add(Lang(L"SoundCloud.Menu\\AddURL"), [this](IAIMPMenuItem *) { AddURLDialog::Show(); }, IDB_ICON)->Release(); delete addMenu; } if (AimpMenu *playlistMenu = AimpMenu::Get(AIMP_MENUID_PLAYER_PLAYLIST_MANAGE)) { playlistMenu->Add(Lang(L"SoundCloud.Menu\\MyTracksAndPlaylists"), [this](IAIMPMenuItem *) { SoundCloudAPI::LoadMyTracksAndPlaylists(); }, IDB_ICON, [this](IAIMPMenuItem *item) { item->SetValueAsInt32(AIMP_MENUITEM_PROPID_VISIBLE, isConnected()); })->Release(); playlistMenu->Add(Lang(L"SoundCloud.Menu\\MyStream"), [this](IAIMPMenuItem *) { if (!isConnected()) { OptionsDialog::Connect(SoundCloudAPI::LoadStream); return; } SoundCloudAPI::LoadStream(); }, IDB_ICON)->Release(); playlistMenu->Add(Lang(L"SoundCloud.Menu\\MyLikes"), [this](IAIMPMenuItem *) { if (!isConnected()) { OptionsDialog::Connect(SoundCloudAPI::LoadLikes); return; } SoundCloudAPI::LoadLikes(); }, IDB_ICON)->Release(); delete playlistMenu; } auto enableIfValid = [this](IAIMPMenuItem *item) { int valid = 0; ForSelectedTracks([&valid](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) valid++; return 0; }); item->SetValueAsInt32(AIMP_MENUITEM_PROPID_VISIBLE, valid > 0); }; if (AimpMenu *contextMenu = AimpMenu::Get(AIMP_MENUID_PLAYER_PLAYLIST_CONTEXT_FUNCTIONS)) { AimpMenu *recommendations = new AimpMenu(contextMenu->Add(Lang(L"SoundCloud.Menu\\LoadRecommendations", 0), nullptr, IDB_ICON, enableIfValid)); recommendations->Add(Lang(L"SoundCloud.Menu\\LoadRecommendations", 1), [this](IAIMPMenuItem *) { ForSelectedTracks([](IAIMPPlaylist *pl, IAIMPPlaylistItem *item, int64_t id) -> int { if (id > 0) { SoundCloudAPI::LoadRecommendations(id, false, item); } return 0; }); })->Release(); recommendations->Add(Lang(L"SoundCloud.Menu\\LoadRecommendations", 2), [this](IAIMPMenuItem *) { ForSelectedTracks([](IAIMPPlaylist *pl, IAIMPPlaylistItem *item, int64_t id) -> int { if (id > 0) { SoundCloudAPI::LoadRecommendations(id, true, item); } return 0; }); })->Release(); delete recommendations; contextMenu->Add(Lang(L"SoundCloud.Menu\\OpenInBrowser"), [this](IAIMPMenuItem *) { ForSelectedTracks([this](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) { wchar_t url[256]; wsprintf(url, L"https://api.soundcloud.com/tracks/%ld?client_id=" TEXT(CLIENT_ID) L"&oauth_token=", id); AimpHTTP::Get(url + m_accessToken, [this](unsigned char *data, int size) { rapidjson::Document d; d.Parse(reinterpret_cast<const char *>(data)); if (d.IsObject() && d.HasMember("permalink_url")) { ShellExecuteA(GetMainWindowHandle(), "open", d["permalink_url"].GetString(), NULL, NULL, SW_SHOWNORMAL); } }); } return 0; }); }, IDB_ICON, enableIfValid)->Release(); contextMenu->Add(Lang(L"SoundCloud.Menu\\AddToExclusions"), [this](IAIMPMenuItem *) { ForSelectedTracks([](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) { Config::TrackExclusions.insert(id); return FLAG_DELETE_ITEM; } return 0; }); Config::SaveExtendedConfig(); }, IDB_ICON, enableIfValid)->Release(); contextMenu->Add(Lang(L"SoundCloud.Menu\\Repost"), [this](IAIMPMenuItem *) { ForSelectedTracks([](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) { SoundCloudAPI::RepostSong(id); } return 0; }); }, IDB_ICON, enableIfValid)->Release(); contextMenu->Add(Lang(L"SoundCloud.Menu\\LikeUnlike", 0), [this](IAIMPMenuItem *) { ForSelectedTracks([](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) { if (Config::Likes.find(id) != Config::Likes.end()) { SoundCloudAPI::UnlikeSong(id); Config::Likes.erase(id); } else { SoundCloudAPI::LikeSong(id); Config::Likes.insert(id); } } return 0; }); Timer::SingleShot(1000, SoundCloudAPI::LoadLikes); Config::SaveExtendedConfig(); }, IDB_ICON, [this](IAIMPMenuItem *item) { int likes = 0; int unlikes = 0; int valid = 0; ForSelectedTracks([&](IAIMPPlaylist *, IAIMPPlaylistItem *, int64_t id) -> int { if (id > 0) { valid++; if (Config::Likes.find(id) != Config::Likes.end()) { unlikes++; } else { likes++; } } return 0; }); if (valid == 0) { item->SetValueAsInt32(AIMP_MENUITEM_PROPID_VISIBLE, false); return; } item->SetValueAsInt32(AIMP_MENUITEM_PROPID_VISIBLE, true); if (unlikes == 0) { item->SetValueAsObject(AIMP_MENUITEM_PROPID_NAME, AIMPString(Lang(L"SoundCloud.Menu\\LikeUnlike", 1))); // Like } else if (likes == 0) { item->SetValueAsObject(AIMP_MENUITEM_PROPID_NAME, AIMPString(Lang(L"SoundCloud.Menu\\LikeUnlike", 2))); // Unlike } else { item->SetValueAsObject(AIMP_MENUITEM_PROPID_NAME, AIMPString(Lang(L"SoundCloud.Menu\\LikeUnlike", 0))); // Like / Unlike } })->Release(); delete contextMenu; } if (FAILED(m_core->QueryInterface(IID_IAIMPServicePlaylistManager, reinterpret_cast<void **>(&m_playlistManager)))) { Finalize(); return E_FAIL; } if (FAILED(m_core->QueryInterface(IID_IAIMPServiceMessageDispatcher, reinterpret_cast<void **>(&m_messageDispatcher)))) { Finalize(); return E_FAIL; } m_messageHook = new MessageHook(this); if (FAILED(m_messageDispatcher->Hook(m_messageHook))) { delete m_messageHook; Finalize(); return E_FAIL; } if (FAILED(m_core->RegisterExtension(IID_IAIMPServiceOptionsDialog, static_cast<OptionsDialog::Base *>(new OptionsDialog(this))))) { Finalize(); return E_FAIL; } if (FAILED(m_core->RegisterExtension(IID_IAIMPServicePlaylistManager, new PlaylistListener()))) { Finalize(); return E_FAIL; } if (Config::GetInt32(L"CheckOnStartup", 1)) { Timer::SingleShot(2000, MonitorCallback); } StartMonitorTimer(); return S_OK; }
int main(void) { TCGI cgi; cgi.makeHeader( "text/html; charset=Windows-1251" "\nExpires: Mon, 26 Jul 1997 05:00:00 GMT" "\nX-Accel-Expires: 0" // "\nPragma: no-cache" "\nCache-Control: none"); cgi.init(); TStr Link(cgi.getParamValueByName("Link")); TStr Referrer(cgi.getParamValueByName("Referrer")); TStr Lang(cgi.getEnvironment("HTTP_ACCEPT_LANGUAGE")); if( Referrer.isEmpty() ) Referrer = cgi.getEnvironment("HTTP_REFERER"); TStr Language; #ifdef CASINO_VABANK Lang = Lang.Copy(0,2); if( Lang != "en" && Lang != "ru" ) Lang = "ru"; TStr Cookie(cgi.getEnvironment("HTTP_COOKIE")); Cookie = Cookie.CopyAfter("lang=").CopyBefore(";"); if( !Cookie.isEmpty() ) { if( Cookie == "1" || Cookie == "RU" ) Lang = "RU"; else Lang = "EN"; } if( TStr(cgi.getParamValueByName("lang")) == "ru" ) Lang = "RU"; if( TStr(cgi.getParamValueByName("lang")) == "en" ) Lang = "EN"; if( Lang.isEmpty() ) Lang = "RU"; if( Lang == "ru" ) Language = "russian"; else Language = "english"; #else Lang = "EN"; Language = "english"; #endif TStr PID(cgi.getParamValueByName("cid")), PIDKEY; if( !PID.isEmpty() ) { PIDKEY = PID.CopyBefore(5); } else { if( cgi.paramCount() > 0 ) if( cgi.getParamValue(0)[0] == '\0' && TStr(cgi.getParamName(0)) != "referrer" && TStr(cgi.getParamName(0)) != "link" ) PID = cgi.getParamName(0); if( !PID.isEmpty() ) PIDKEY = PID.CopyBefore(","); } TStr QUERY(cgi.getEnvironment("QUERY_STRING")); TStr IP(cgi.getEnvironment("REMOTE_ADDR")); m_classes::TMySqlConnect database; database.setHostName("localhost"); database.setDatabase("casino_last"); database.setLogin("root"); database.setPasswd(""); database.connect(); m_classes::TMySqlQuery query(&database); query.execSql( "INSERT INTO log_url (" "fdate," "ftime," "freferrer," "fip," "fid," "fidkey," "fquery" ") VALUES (" "now()," "now()," "'"+StrToSQL(Referrer)+"'," "'"+StrToSQL(IP)+"'," "'"+StrToSQL(PID)+"'," "'"+StrToSQL(PIDKEY)+"'," "'"+StrToSQL(QUERY)+"'" ")"); TStr RefID(query.last_id()); try { TFile f; f.OpenLoad("index.ini"); char Str[10000]; int FileLen = fread(Str, 1, 10000, f.stream); Str[FileLen] = '\0'; TStr _Str(Str,FileLen); _Str = _Str.Replace("$tb$",__escape(cgi.getParamValueByName("tb"))); _Str = _Str.Replace("$LOG_PageReferrer$",__escape(cgi.getParamValueByName("Referrer"))); _Str = _Str.Replace("$REFID$",RefID); _Str = _Str.Replace("$LANG$",ToLowerCase(Lang)); _Str = _Str.Replace("$LANGUAGE$",Language); if( !Link.isEmpty() ) Link = "&helpDefaultLink="+Link+"&"; _Str = _Str.Replace("$LINK$",Link); printf("%s",_Str.c_str()); } catch( ... ) { printf("error"); } return 0; }