From 0c7b52a9973306c6896f3dd8e46eb9bcc4cffffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Fri, 27 Sep 2013 11:44:58 +0000 Subject: Facebook: Save names separately into first, second and last name fields git-svn-id: http://svn.miranda-ng.org/main/trunk@6247 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/FacebookRM/src/contacts.cpp | 36 +++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'protocols/FacebookRM/src/contacts.cpp') diff --git a/protocols/FacebookRM/src/contacts.cpp b/protocols/FacebookRM/src/contacts.cpp index b4b2a28603..5449847d08 100644 --- a/protocols/FacebookRM/src/contacts.cpp +++ b/protocols/FacebookRM/src/contacts.cpp @@ -22,6 +22,39 @@ along with this program. If not, see . #include "common.h" +void FacebookProto::SaveName(HANDLE hContact, const facebook_user *fbu) +{ + if (fbu->real_name.empty()) { + delSetting(hContact, FACEBOOK_KEY_NICK); + delSetting(hContact, FACEBOOK_KEY_FIRST_NAME); + delSetting(hContact, FACEBOOK_KEY_SECOND_NAME); + delSetting(hContact, FACEBOOK_KEY_LAST_NAME); + return; + } + + db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_NICK, fbu->real_name.c_str()); + + // Explode whole name into first, second and last name + std::vector names; + utils::text::explode(fbu->real_name, " ", &names); + + db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_FIRST_NAME, names.front().c_str()); + db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_LAST_NAME, names.back().c_str()); + + if (names.size() > 2) { + std::string middle = ""; + for (std::string::size_type i = 1; i < names.size() - 1; i++) { + if (!middle.empty()) + middle += " "; + + middle += names.at(i); + } + db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_SECOND_NAME, middle.c_str()); + } else { + delSetting(hContact, FACEBOOK_KEY_SECOND_NAME); + } +} + bool FacebookProto::IsMyContact(HANDLE hContact, bool include_chat) { const char *proto = GetContactProto(hContact); @@ -91,8 +124,7 @@ HANDLE FacebookProto::AddToContactList(facebook_user* fbu, ContactType type, boo db_set_ts(hContact, "CList", "Group", group); if (!fbu->real_name.empty()) { - db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_NAME, fbu->real_name.c_str()); - db_set_utf(hContact, m_szModuleName, FACEBOOK_KEY_NICK, fbu->real_name.c_str()); + SaveName(hContact, fbu); } if (fbu->gender) -- cgit v1.2.3