/** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { list($roles, $rolesReadOnly) = $this->rolesBuilder->getRoles(); $resolver->setDefaults(array('choices' => function (Options $options, $parentChoices) use($roles) { return empty($parentChoices) ? array_flip($roles) : array(); }, 'read_only_choices' => function (Options $options) use($rolesReadOnly) { return empty($options['choices']) ? $rolesReadOnly : array(); }, 'data_class' => null)); }
/** * {@inheritdoc} */ public function reverseTransform($selectedRoles) { if ($this->originalRoles === null) { throw new \RuntimeException('Invalid state, originalRoles array is not set'); } list($availableRoles) = $this->rolesBuilder->getRoles(); $hiddenRoles = array_diff($this->originalRoles, array_keys($availableRoles)); return array_merge($selectedRoles, $hiddenRoles); }
public function testWithNoSecurityToken() { $security = $this->getMock('Symfony\\Component\\Security\\Core\\SecurityContextInterface'); $security->expects($this->any())->method('getToken')->will($this->returnValue(null)); $pool = $this->getMockBuilder('Sonata\\AdminBundle\\Admin\\Pool')->disableOriginalConstructor()->getMock(); $builder = new EditableRolesBuilder($security, $pool, array()); list($roles, $rolesReadOnly) = $builder->getRoles(); $this->assertEmpty($roles); $this->assertEmpty($rolesReadOnly); }