bool MySqlStorage::addContactToRoster(QString jid, Contact contact) { if (contactExists(jid, contact.getJid())) { updateNameToContact(jid, contact.getJid(), contact.getName()); updateGroupToContact(jid, contact.getJid(), contact.getGroups()); return true; } else { if (userExists(contact.getJid())) { QJsonDocument document; QJsonObject object; object.insert("groups", QJsonArray::fromStringList(QStringList::fromSet(contact.getGroups()))); document.setObject(object); QSqlQuery query; query.prepare("INSERT INTO qjabberd_contact(user_id, approved, ask, groups, jid, name, subscription, version)" " VALUES(:user_id, :approved, :ask, :groups, :jid, :name, :subscription, :version)"); query.bindValue(":user_id", getUserId(jid)); query.bindValue(":version", contact.getVersion()); query.bindValue(":approved", (int)contact.getApproved()); query.bindValue(":ask", contact.getAsk()); query.bindValue(":jid", contact.getJid()); query.bindValue(":name", contact.getName()); query.bindValue(":subscription", contact.getSubscription()); query.bindValue(":groups", document.toJson()); return query.exec(); } } return false; }
bool MySqlStorage::updateSubscriptionToContact(QString jid, QString contactJid, QString subscription) { if (!contactExists(jid, contactJid)) { Contact contact("", false, "", contactJid, "", subscription, QSet<QString>()); return addContactToRoster(jid, contact); } QString contactSubscription = getContact(jid, contactJid).getSubscription(); QSqlQuery query; query.prepare("UPDATE qjabberd_contact SET subscription = :subscription WHERE user_id = :user_id AND jid = :jid"); query.bindValue(":user_id", getUserId(jid)); query.bindValue(":jid", contactJid); if (((subscription == "from") && (contactSubscription == "to")) || ((subscription == "to") && (contactSubscription == "from"))) { query.bindValue(":subscription", "both"); } else { query.bindValue(":subscription", subscription); } return query.exec(); }
void ContactManager::addContact(const std::string& name, const sockaddr_in& addresse, const std::string& computerName) { InstanceContact contact; contact.name = name; contact.addresse = addresse; if(contactExists(contact) == false && contact.name != computerName) { m_contacts.push_back(contact); } printContactList(); }