MCPcopy Create free account
hub / github.com/Icinga/icinga2 / OnConfigUpdateHeavy

Method OnConfigUpdateHeavy

lib/db_ido/userdbobject.cpp:63–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63void UserDbObject::OnConfigUpdateHeavy()
64{
65 User::Ptr user = static_pointer_cast<User>(GetObject());
66
67 /* groups */
68 Array::Ptr groups = user->GetGroups();
69
70 std::vector<DbQuery> queries;
71
72 DbQuery query1;
73 query1.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
74 query1.Type = DbQueryDelete;
75 query1.Category = DbCatConfig;
76 query1.WhereCriteria = new Dictionary({
77 { "contact_object_id", user }
78 });
79 queries.emplace_back(std::move(query1));
80
81 if (groups) {
82 ObjectLock olock(groups);
83 for (String groupName : groups) {
84 UserGroup::Ptr group = UserGroup::GetByName(groupName);
85
86 DbQuery query2;
87 query2.Table = DbType::GetByName("UserGroup")->GetTable() + "_members";
88 query2.Type = DbQueryInsert | DbQueryUpdate;
89 query2.Category = DbCatConfig;
90 query2.Fields = new Dictionary({
91 { "instance_id", 0 }, /* DbConnection class fills in real ID */
92 { "contactgroup_id", DbValue::FromObjectInsertID(group) },
93 { "contact_object_id", user }
94 });
95 query2.WhereCriteria = new Dictionary({
96 { "instance_id", 0 }, /* DbConnection class fills in real ID */
97 { "contactgroup_id", DbValue::FromObjectInsertID(group) },
98 { "contact_object_id", user }
99 });
100 queries.emplace_back(std::move(query2));
101 }
102 }
103
104 DbObject::OnMultipleQueries(queries);
105
106 queries.clear();
107
108 DbQuery query2;
109 query2.Table = "contact_addresses";
110 query2.Type = DbQueryDelete;
111 query2.Category = DbCatConfig;
112 query2.WhereCriteria = new Dictionary({
113 { "contact_id", DbValue::FromObjectInsertID(user) }
114 });
115 queries.emplace_back(std::move(query2));
116
117 Dictionary::Ptr vars = user->GetVars();
118
119 if (vars) { /* This is sparta. */
120 for (int i = 1; i <= 6; i++) {

Callers

nothing calls this directly

Calls 4

GetTableMethod · 0.80
clearMethod · 0.45
ContainsMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected