/** * This function will allow to set on of the boolean property of FieldFacetRole * for a fieldFacet and an array of roles. * * @param FieldFacet $fieldFacet * @param array $roles * @param $property (canOpen | canEdit) */ public function setFieldBoolProperty(FieldFacet $fieldFacet, array $roles, $property) { //find each fields sharing the same role as $fieldFacet $fieldFacetsRole = $fieldFacet->getFieldFacetsRole(); //get the correct setter $setterFunc = 'set' . ucfirst($property); //initialize an array of roles wich are not linked to the field $unknownRoles = array(); //initialize an array of fieldFacetRoles wich are going to have their property to true $fieldFacetRolesToChange = array(); //initialize each of field facets property to false foreach ($fieldFacetsRole as $fieldFacetRole) { $fieldFacetRole->{$setterFunc}(false); } //find roles wich are not linked to a field foreach ($roles as $role) { $found = false; foreach ($fieldFacetsRole as $fieldFacetRole) { if ($fieldFacetRole->getRole()->getId() === $role->getId()) { $found = true; $fieldFacetRolesToChange[] = $fieldFacetRole; } } if (!$found) { $unknownRoles[] = $role; } } //create a new FieldFacetRole for each missing role foreach ($unknownRoles as $unknownRole) { $ffr = new FieldFacetRole(); $ffr->setRole($unknownRole); $ffr->setFieldFacet($fieldFacet); //add the new fieldFacetRole to the list of retrieved fieldFacetRoles at the beginning $fieldFacetRolesToChange[] = $ffr; } //set the property correctly foreach ($fieldFacetRolesToChange as $ffr) { $ffr->{$setterFunc}(true); $this->om->persist($ffr); } $this->om->flush(); }
/** * Returns the field role edition in a modal * * @EXT\Route("/field/{field}/roles/form", * name="claro_admin_field_role_form", * options = {"expose"=true} * ) * * @EXT\Template() */ public function fieldRolesFormAction(FieldFacet $field) { $fieldFacetsRole = $field->getFieldFacetsRole(); $platformRoles = $this->roleManager->getPlatformNonAdminRoles(true); return array('fieldFacetsRole' => $fieldFacetsRole, 'field' => $field, 'platformRoles' => $platformRoles); }