123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- diff --git a/flag_lists.module b/flag_lists.module
- index cd81104..3decec0 100644
- --- a/flag_lists.module
- +++ b/flag_lists.module
- @@ -237,47 +237,49 @@ function flag_lists_flag_action_access($action, FlagInterface $flag, AccountInte
- // Allow both users flag and the corresponding template.
- // Currently only the users flag lists are accepted.
- // This needs to corrected to allow also global lists.
- - $flagListsService = Drupal::service('flaglists');
- - $flagLists = $flagListsService->getAllFlaggingCollections();
- - foreach ($flagLists as $flagList) {
- - if ($flag->id() == $flagList->getRelatedFlag()->id()) {
- - if ($flagList->getBaseFlag()->isGlobal()) {
- - // The flag list is global.
- - return AccessResult::allowedIfHasPermission($account,
- - 'access global flag lists');
- - }
- - elseif ($flagList->getOwnerId() == $account->id()) {
- - // The flag list is owned by current user.
- - return AccessResult::allowedIfHasPermission($account,
- - 'view own flag lists');
- - }
- - else {
- - // The user is allowed to see all flag lists.
- - return AccessResult::allowedIfHasPermission($account,
- - 'view flag lists');
- + if ($flag){
- + $flagListsService = Drupal::service('flaglists');
- + $flagLists = $flagListsService->getAllFlaggingCollections();
- + foreach ($flagLists as $flagList) {
- + if ($flag->id() == $flagList->getRelatedFlag()->id()) {
- + if ($flagList->getBaseFlag()->isGlobal()) {
- + // The flag list is global.
- + return AccessResult::allowedIfHasPermission($account,
- + 'access global flag lists');
- + }
- + elseif ($flagList->getOwnerId() == $account->id()) {
- + // The flag list is owned by current user.
- + return AccessResult::allowedIfHasPermission($account,
- + 'view own flag lists');
- + }
- + else {
- + // The user is allowed to see all flag lists.
- + return AccessResult::allowedIfHasPermission($account,
- + 'view flag lists');
- + }
- }
- }
- - }
- -
- - // Check for access for the used template as well.
- - $flagTemplates = $flagListsService->getAllFlagForList();
- - foreach ($flagTemplates as $flagTemplate) {
- - if ($flag->id() == $flagTemplate->id()) {
- - // This is one of the template flags.
- - // But is it global?
- - $baseFlag = Drupal::service('flag')->getFlagById($flagTemplate->getBaseFlag());
- - if ($baseFlag->isGlobal()) {
- - return AccessResult::allowedIfHasPermission($account,
- - 'access global flag lists');
- - }
- - else {
- - return AccessResult::allowedIfHasPermissions($account, [
- - 'administer flag lists',
- - 'view own flag lists',
- - 'view flag lists',
- - ],
- - 'OR'
- - );
- +
- + // Check for access for the used template as well.
- + $flagTemplates = $flagListsService->getAllFlagForList();
- + foreach ($flagTemplates as $flagTemplate) {
- + if ($flag->id() == $flagTemplate->id()) {
- + // This is one of the template flags.
- + // But is it global?
- + $baseFlag = Drupal::service('flag')->getFlagById($flagTemplate->getBaseFlag());
- + if ($baseFlag->isGlobal()) {
- + return AccessResult::allowedIfHasPermission($account,
- + 'access global flag lists');
- + }
- + else {
- + return AccessResult::allowedIfHasPermissions($account, [
- + 'administer flag lists',
- + 'view own flag lists',
- + 'view flag lists',
- + ],
- + 'OR'
- + );
- + }
- }
- }
- }
|