Пример #1
0
MCONTACT FacebookProto::AddToList(int flags, PROTOSEARCHRESULT* psr)
{
	ptrA id(mir_t2a_cp(psr->id.t, CP_UTF8));
	ptrA name(mir_t2a_cp(psr->firstName.t, CP_UTF8));
	ptrA surname(mir_t2a_cp(psr->lastName.t, CP_UTF8));

	if (id == NULL)
		return NULL;

	facebook_user fbu;
	fbu.user_id = id;
	if (name != NULL)
		fbu.real_name = name;
	if (surname != NULL) {
		fbu.real_name += " ";
		fbu.real_name += surname;
	}

	if (fbu.user_id.find_first_not_of("0123456789") != std::string::npos) {
		MessageBox(0, TranslateT("Facebook ID must be numeric value."), m_tszUserName, MB_ICONERROR | MB_OK);
		return NULL;
	}

	bool add_temporarily = (flags & PALF_TEMPORARY);
	MCONTACT hContact = AddToContactList(&fbu, CONTACT_NONE, false, add_temporarily);

	// Reset NotOnList flag if present and we're adding this contact not temporarily
	if (hContact && !add_temporarily && db_get_b(hContact, "CList", "NotOnList", 0)) {
		db_unset(hContact, "CList", "Hidden");
		db_unset(hContact, "CList", "NotOnList");
	}

	return hContact;
}
Пример #2
0
int WhatsAppProto::onGroupChatEvent(WPARAM wParam, LPARAM lParam)
{
	GCHOOK *gch = (GCHOOK*)lParam;
	if (mir_strcmp(gch->pDest->pszModule, m_szModuleName))
		return 0;

	std::string chat_id(T2Utf(gch->pDest->ptszID));
	WAChatInfo *pInfo = SafeGetChat(chat_id);
	if (pInfo == NULL)
		return 0;

	switch (gch->pDest->iType) {
	case GC_USER_LOGMENU:
		ChatLogMenuHook(pInfo, gch);
		break;

	case GC_USER_NICKLISTMENU:
		NickListMenuHook(pInfo, gch);
		break;

	case GC_USER_MESSAGE:
		if (isOnline()) {
			std::string msg(T2Utf(gch->ptszText));
			
			try {
				int msgId = GetSerial();
				time_t now = time(NULL);
				std::string id = Utilities::intToStr(now) + "-" + Utilities::intToStr(msgId);

				FMessage fmsg(chat_id, true, id);
				fmsg.timestamp = now;
				fmsg.data = msg;
				m_pConnection->sendMessage(&fmsg);

				pInfo->m_unsentMsgs[id] = gch->ptszText;
			}
			CODE_BLOCK_CATCH_ALL
		}
		break;

	case GC_USER_PRIVMESS:
		string jid = string(_T2A(gch->ptszUID)) + "@s.whatsapp.net";
		MCONTACT hContact = ContactIDToHContact(jid);
		if (hContact == 0) {
			hContact = AddToContactList(jid, (char*)_T2A(gch->ptszUID));
			setWord(hContact, "Status", ID_STATUS_ONLINE);

			db_set_b(hContact, "CList", "Hidden", 1);
			setTString(hContact, "Nick", gch->ptszUID);
			db_set_dw(hContact, "Ignore", "Mask1", 0);
		}
		CallService(MS_MSG_SENDMESSAGE, hContact, 0);
		break;
	}

	return 0;
}
Пример #3
0
MCONTACT WhatsAppProto::AddToList(int flags, PROTOSEARCHRESULT *psr)
{
	if (psr->id.t == NULL)
		return NULL;

	std::string phone(T2Utf(psr->id.t));
	std::string jid(phone + "@s.whatsapp.net");

	MCONTACT hContact = AddToContactList(jid, phone.c_str());
	if (!(flags & PALF_TEMPORARY))
		db_unset(hContact, "CList", "NotOnList");

	m_pConnection->sendPresenceSubscriptionRequest(jid.c_str());
	return hContact;
}
Пример #4
0
MCONTACT FacebookProto::AddToList(int flags, PROTOSEARCHRESULT* psr)
{
	ptrA id( mir_t2a_cp(psr->id, CP_UTF8));
	ptrA name( mir_t2a_cp(psr->firstName, CP_UTF8));
	ptrA surname( mir_t2a_cp(psr->lastName, CP_UTF8));

	if (id == NULL)
		return NULL;

	facebook_user fbu;
	fbu.user_id = id;
	if (name != NULL)
		fbu.real_name = name;
	if (surname != NULL) {
		fbu.real_name += " ";
		fbu.real_name += surname;
	}

	if (fbu.user_id.find_first_not_of("0123456789") != std::string::npos) {
		MessageBox(0, TranslateT("Facebook ID must be numeric value."), m_tszUserName, MB_ICONERROR | MB_OK);
		return NULL;
	}

	MCONTACT hContact = AddToContactList(&fbu, CONTACT_NONE);
	if (hContact) {
		if (flags & PALF_TEMPORARY) {
			db_set_b(hContact, "Clist", "Hidden", 1);
			db_set_b(hContact, "Clist", "NotOnList", 1);
		}
		else if (db_get_b(hContact, "CList", "NotOnList", 0)) {
			db_unset(hContact, "CList", "Hidden");
			db_unset(hContact, "CList", "NotOnList");
		}
	}

	return hContact;
}
Пример #5
0
static void AddSpecMember (
  ButtoN b
)

{
  Char             buf [128];
  DollarAmountPtr  dap;
  Int2             days = 0;
  MiscRatePtr      mrp;
  SscSpecPtr       ssp;
  SscTablesPtr     stp;
  Int2             which;

  ssp = (SscSpecPtr) GetObjectExtra (b);
  if (ssp == NULL) return;
  stp = ssp->tables;
  if (stp == NULL) return;
  mrp = stp->miscrate_table;
  if (mrp == NULL) return;

  GetTitle (ssp->name, buf, sizeof (buf));
  if (StringHasNoText (buf)) return;
  TrimSpacesAroundString (buf);

  if (! NormalizeAuthorCaps (buf)) return;

  which = GetValue (ssp->whichspec);
  if (which < 1) return;

  switch (which) {
    case 1 :
      days = mrp->special_memb_days;
      if (days < 0) {
        days = 0;
      }
      if (AddToTempMemberList (stp, buf, days)) {
        AddToContactList (stp->new_contacts, buf, VISITING_MEMBER);

        if (GetStatus (ssp->visitfee)) {
          dap = mrp->visiting_fee;
          if (dap != NULL) {
            AddFeeItem (stp->fees, buf, 0, NULL, dap->dollars, dap->cents,
                        VISITING_MEMB_FEE, NULL, NULL);
          }
        }
      }
      break;
    case 2 :
      days = mrp->special_memb_days;
      if (days < 0) {
        days = 0;
      }
      if (AddToTempMemberList (stp, buf, days)) {
        AddToContactList (stp->new_contacts, buf, AFFIL_MEMBER);

        if (GetStatus (ssp->affilfee)) {
          dap = mrp->affiliated_fee;
          if (dap != NULL) {
            AddFeeItem (stp->fees, buf, 0, NULL, dap->dollars, dap->cents,
                        AFFIL_MEMB_FEE, NULL, NULL);
          }
        }
      }
      break;
    case 3 :
      if (AddToFullMemberList (stp, buf, ssp->jobs)) {
        AddToContactList (stp->new_contacts, buf, TRANSIENT_MEMBER);

        if (GetStatus (ssp->transfee)) {
          dap = &(ssp->proratedtrans);
          if (dap != NULL) {
            AddFeeItem (stp->fees, buf, 0, NULL, dap->dollars, dap->cents,
                        TRANS_MEMB_FEE, NULL, NULL);
          }
        }

        if (GetStatus (ssp->transssa)) {
          dap = &(ssp->proratedssa);
          if (dap != NULL) {
            AddFeeItem (stp->fees, buf, 0, NULL, dap->dollars, dap->cents,
                        SSA_DUES_FEE, NULL, NULL);
          }
        }
      }
      break;
    default :
      break;
  }

  SafeHide (ssp->namegroup);

  SafeHide (ssp->controls [ssp->currPage]);
  SafeSetValue (ssp->whichspec, 0);

  ssp->currPage = 0;

  SetTitle (ssp->name, "");

  SetStatus (ssp->visitfee, TRUE);
  SetStatus (ssp->affilfee, TRUE);
  SetStatus (ssp->transfee, TRUE);
  SetStatus (ssp->transssa, TRUE);

  SetClubJobs (ssp->jobs, FALSE, FALSE, FALSE, FALSE);

  Disable (b);

  Update ();
}
Пример #6
0
int FacebookProto::OnGCEvent(WPARAM, LPARAM lParam)
{
	GCHOOK *hook = reinterpret_cast<GCHOOK*>(lParam);

	if (mir_strcmp(hook->pDest->pszModule, m_szModuleName))
		return 0;

	// Ignore for special chatrooms
	if (!mir_tstrcmp(hook->pDest->ptszID, _T(FACEBOOK_NOTIFICATIONS_CHATROOM)))
		return 0;

	switch (hook->pDest->iType)
	{
	case GC_USER_MESSAGE:
	{
		std::string msg = _T2A(hook->ptszText, CP_UTF8);
		std::string chat_id = _T2A(hook->pDest->ptszID, CP_UTF8);

		if (isOnline()) {
			debugLogA("  > Chat - Outgoing message");
			ForkThread(&FacebookProto::SendChatMsgWorker, new send_chat(chat_id, msg));
		}

		break;
	}

	case GC_USER_PRIVMESS:
	{
		facebook_user fbu;
		fbu.user_id = _T2A(hook->ptszUID, CP_UTF8);

		// Find this contact in list or add new temporary contact
		MCONTACT hContact = AddToContactList(&fbu, CONTACT_NONE, false, true);

		if (!hContact)
			break;

		CallService(MS_MSG_SENDMESSAGET, hContact);
		break;
	}

	/*
	case GC_USER_LOGMENU:
	{
	switch(hook->dwData)
	{
	case 10:
	DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), NULL, invite_to_chat_dialog,
	LPARAM(new invite_chat_param(item->id, this)));
	break;

	case 20:
	//chat_leave(id);
	break;
	}
	break;
	}
	*/

	case GC_USER_NICKLISTMENU:
	{
		MCONTACT hContact = NULL;
		if (hook->dwData == 10 || hook->dwData == 20) {
			facebook_user fbu;
			fbu.user_id = _T2A(hook->ptszUID, CP_UTF8);

			// Find this contact in list or add new temporary contact
			hContact = AddToContactList(&fbu, CONTACT_NONE, false, true);

			if (!hContact)
				break;
		}

		switch (hook->dwData)
		{
		case 10:
			CallService(MS_USERINFO_SHOWDIALOG, hContact);
			break;

		case 20:
			CallService(MS_HISTORY_SHOWCONTACTHISTORY, hContact);
			break;

		case 110:
			//chat_leave(id);
			break;
		}

		break;
	}

	case GC_USER_LEAVE:
	case GC_SESSION_TERMINATE:
		break;
	}

	return 0;
}