void GlooxCLEntry::addToPrivacyList (bool add) { const auto& jid = GetJID (); auto lists = Account_->GetClientConnection ()->GetPrivacyListsManager (); auto current = lists->GetCurrentList (); auto items = current.GetItems (); for (const auto& item : items) { if (item.GetType () != PrivacyListItem::TJid) continue; if (item.GetValue () != jid) continue; if ((item.GetAction () == PrivacyListItem::AAllow && !add) || (item.GetAction () == PrivacyListItem::ADeny && add)) return; if (!add) { items.removeAll (item); break; } } if (add) items.append (PrivacyListItem (jid, PrivacyListItem::TJid)); if (items.size () == current.GetItems ().size ()) return; current.SetItems (items); lists->SetList (current); }
void PrivacyList::fromXml(const QDomElement& el) { //qDebug("privacy.cpp: Parsing privacy list"); if (el.isNull() || el.tagName() != "list") { qWarning("privacy.cpp: Invalid root tag for privacy list."); return; } setName(el.attribute("name")); for(QDomNode n = el.firstChild(); !n.isNull(); n = n.nextSibling()) { QDomElement e = n.toElement(); if (!e.isNull()) items_.append(PrivacyListItem(e)); } qSort(items_); }
QList<PrivacyListItem> MySqlStorage::getPrivacyList(QString jid, QString privacyListName) { QSqlQuery query; query.prepare("SELECT ptype, pvalue, action, iorder, child FROM qjabberd_privacylist WHERE user_id = :user_id AND privacyListName = :privacyListName"); query.bindValue(":user_id", getUserId(jid)); query.bindValue(":privacyListName", privacyListName); query.exec(); QList<PrivacyListItem> itemList; while (query.next()) { itemList << PrivacyListItem(query.value(0).toString(), query.value(1).toString(), query.value(2).toString(), query.value(3).toInt(), QJsonDocument::fromJson(query.value(4).toByteArray()).object().value("childs").toVariant().toStringList().toSet()); } qSort(itemList.begin(), itemList.end()); return itemList; }