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; }
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; }
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; }
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; }
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 (); }
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; }