displayNameDrivers[$identifier] = $driver; return $this; } /** * Dynamically process a user's list of groups when calculating permissions. * This can be used to give a user permissions for groups they aren't actually in, based on context. * It will not change the group badges displayed for the user. * * @param callable $callable * * The callable can be a closure or invokable class, and should accept: * - \Flarum\User\User $user: the user in question. * - array $groupIds: an array of ids for the groups the user belongs to. * * The callable should return: * - array $groupIds: an array of ids for the groups the user belongs to. */ public function permissionGroups(callable $callable) { $this->groupProcessors[] = $callable; return $this; } public function extend(Container $container, Extension $extension = null) { $container->extend('flarum.user.display_name.supported_drivers', function ($existingDrivers) { return array_merge($existingDrivers, $this->displayNameDrivers); }); $container->extend('flarum.user.group_processors', function ($existingRelations) { return array_merge($existingRelations, $this->groupProcessors); }); } }