@@ -168,17 +168,27 @@ public function findAll(?string $userId = null): array {
168168
169169 return $ resultEntities ;
170170 }
171-
172171 public function findForNavBar (string $ userId ): array {
173172 $ qb = $ this ->getFindContextBaseQuery ($ userId );
174- $ qb ->andWhere ($ qb ->expr ()->andX (
173+ $ qb ->andWhere ($ qb ->expr ()->orX (
175174 // default
176- $ qb ->expr ()->gt ('n.display_mode ' , $ qb ->createNamedParameter (Application::NAV_ENTRY_MODE_HIDDEN , IQueryBuilder::PARAM_INT )),
177- // user override
178- $ qb ->expr ()->orX (
179- $ qb ->expr ()->gt ('n2.display_mode ' , $ qb ->createNamedParameter (Application::NAV_ENTRY_MODE_HIDDEN , IQueryBuilder::PARAM_INT )),
175+ $ qb ->expr ()->andX (
176+ // requires lack of user overwrite, indicated by n2.display_mode
180177 $ qb ->expr ()->isNull ('n2.display_mode ' ),
181- )
178+ // requires a display mode also depending on the role…
179+ $ qb ->expr ()->orX (
180+ // not an owner: requires RECIPIENT or ALL
181+ $ qb ->expr ()->andX (
182+ // groups are not considered, yet
183+ $ qb ->expr ()->neq ('c.owner_id ' , $ qb ->createNamedParameter ($ userId )),
184+ $ qb ->expr ()->gt ('n.display_mode ' , $ qb ->createNamedParameter (Application::NAV_ENTRY_MODE_HIDDEN , IQueryBuilder::PARAM_INT )),
185+ ),
186+ // an owner (no explicit check necessary): requires ALL
187+ $ qb ->expr ()->eq ('n.display_mode ' , $ qb ->createNamedParameter (Application::NAV_ENTRY_MODE_ALL , IQueryBuilder::PARAM_INT )),
188+ ),
189+ ),
190+ // user override
191+ $ qb ->expr ()->gt ('n2.display_mode ' , $ qb ->createNamedParameter (Application::NAV_ENTRY_MODE_HIDDEN , IQueryBuilder::PARAM_INT )),
182192 ));
183193
184194 $ result = $ qb ->executeQuery ();
0 commit comments