Пример #1
0
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();
}
Пример #2
0
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();
}
Пример #3
0
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;
}
Пример #4
0
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;
}