-
Notifications
You must be signed in to change notification settings - Fork 56
Labels
Description
Using CirclesManager like in the following code, $level is always 9 (owner), regardless of the real membership level of the initiator:
$dataProbe = new DataProbe();
$dataProbe->add(DataProbe::INITIATOR);
$circles = $this->circlesManager->probeCircles(null, $dataProbe);
$level = $circles[0]->getInitiator->getLevel();
This is because the built SQL query fetches the row from oc_circles_memberships that matches the singleId of the user and level = 9 (which will always be the entry for the internal user circle):
SELECT `b`.`unique_id`, `b`.`name`, `b`.`display_name`, `b`.`sanitized_name`, `b`.`source`, `b`.`description`, `b`.`settings`, `b`.`config`, `b`.`contact_addressbook`, `b`.`contact_groupname`, `b`.`creation`,
`b_j`.`single_id` AS `b_j_single_id`, `b_j`.`circle_id` AS `b_j_circle_id`, `b_j`.`level` AS `b_j_level`, `b_j`.`inheritance_first` AS `b_j_inheritance_first`, `b_j`.`inheritance_last` AS `b_j_inheritance_last`, `b_j`.`inheritance_path` AS `b_j_inheritance_path`, `b_j`.`inheritance_depth` AS `b_j_inheritance_depth`,
`b_h`.`circle_id` AS `b_h_circle_id`, `b_h`.`member_id` AS `b_h_member_id`, `b_h`.`single_id` AS `b_h_single_id`, `b_h`.`user_id` AS `b_h_user_id`, `b_h`.`instance` AS `b_h_instance`, `b_h`.`user_type` AS `b_h_user_type`, `b_h`.`level` AS `b_h_level`, `b_h`.`status` AS `b_h_status`, `b_h`.`note` AS `b_h_note`, `b_h`.`contact_id` AS `b_h_contact_id`, `b_h`.`cached_name` AS `b_h_cached_name`, `b_h`.`cached_update` AS `b_h_cached_update`, `b_h`.`contact_meta` AS `b_h_contact_meta`, `b_h`.`joined` AS `b_h_joined`
FROM `oc_circles_circle` `b`
INNER JOIN `oc_circles_membership` `b_j` ON `b_j`.`circle_id` = `b`.`unique_id`
LEFT JOIN `oc_circles_member` `b_h` ON (`b_h`.`circle_id` = `b_j`.`circle_id`) AND (`b_h`.`level` = 9)
WHERE ((`b`.`config` & 1) = 0) AND (`b_j`.`single_id` = 'lJP1dHBWxDPRQVuAiJdMXRINhUQANjp') ORDER BY `b`.`creation` asc;
The query results in the following for a user who is simple member (not admin/owner!) of only one circle:
*************************** 1. row ***************************
unique_id: s1MLI2cvAvaiZiqgZdpNPYKl2IvCRbV
name: Mountpoints
display_name: Mountpoints
sanitized_name: Mountpoints
source: 16
description:
settings: {"population":5,"populationInherited":5}
config: 131072
contact_addressbook: 0
contact_groupname:
creation: 2024-11-18 14:24:11
b_j_single_id: lJP1dHBWxDPRQVuAiJdMXRINhUQANjp
b_j_circle_id: s1MLI2cvAvaiZiqgZdpNPYKl2IvCRbV
b_j_level: 4
b_j_inheritance_first: lJP1dHBWxDPRQVuAiJdMXRINhUQANjp
b_j_inheritance_last: s1MLI2cvAvaiZiqgZdpNPYKl2IvCRbV
b_j_inheritance_path: ["lJP1dHBWxDPRQVuAiJdMXRINhUQANjp"]
b_j_inheritance_depth: 1
b_h_circle_id: s1MLI2cvAvaiZiqgZdpNPYKl2IvCRbV
b_h_member_id: Km4TbpvMCOhECEsOyYQBl1fKp4uJycn
b_h_single_id: LNJW3yFpJny55cWdmLKvQiHc98AFe4H
b_h_user_id: jane
b_h_instance:
b_h_user_type: 1
b_h_level: 9
b_h_status: Member
b_h_note: {"invitedBy":{"id":"LNJW3yFpJny55cWdmLKvQiHc98AFe4H","userId":"jane","userType":1,"displayName":"jane","instance":"nextcloud.local","basedOn":{"id":"LNJW3yFpJny55cWdmLKvQiHc98AFe4H","name":"user:jane:LNJW3yFpJny55cWdmLKvQiHc98AFe4H","displayName":"jane","sanitizedName":"","source":1,"population":0,"config":1,"description":"","url":"\/index.php\/apps\/contacts\/direct\/circle\/LNJW3yFpJny55cWdmLKvQiHc98AFe4H","creation":1731414937,"initiator":null}}}
b_h_contact_id:
b_h_cached_name: jane
b_h_cached_update: 2024-11-18 14:24:11
b_h_contact_meta: NULL
b_h_joined: 2024-11-18 14:24:11
1 row in set (0.004 sec)
See the b_h_level field in the result above. It should be 4 in this case, not 9!