X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fuser%2Fsrc%2FPlugin%2Fviews%2Ffilter%2FRoles.php;fp=web%2Fcore%2Fmodules%2Fuser%2Fsrc%2FPlugin%2Fviews%2Ffilter%2FRoles.php;h=a6986f2257cf923b00d745098a4bb99a9bb9f868;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=47adafb8b6986cba33ba2610fdf95e95235755e1;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/web/core/modules/user/src/Plugin/views/filter/Roles.php b/web/core/modules/user/src/Plugin/views/filter/Roles.php index 47adafb8b..a6986f225 100644 --- a/web/core/modules/user/src/Plugin/views/filter/Roles.php +++ b/web/core/modules/user/src/Plugin/views/filter/Roles.php @@ -74,10 +74,20 @@ class Roles extends ManyToOne { */ public function calculateDependencies() { $dependencies = []; + if (in_array($this->operator, ['empty', 'not empty'])) { return $dependencies; } - foreach ($this->value as $role_id) { + + // The value might be a string due to the wrong plugin being used for role + // field data, and subsequently the incorrect config schema object and + // value. In the empty case stop early. Otherwise we cast it to an array + // later. + if (is_string($this->value) && $this->value === '') { + return []; + } + + foreach ((array) $this->value as $role_id) { $role = $this->roleStorage->load($role_id); $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName(); }