/** * Set the value of a field for a user * * @param User $user * @param FieldFacet $field * @param mixed $value * * @throws \Exception */ public function setFieldValue(User $user, FieldFacet $field, $value, $force = false) { if (!$this->authorization->isGranted('edit', $field) && !$force) { throw new AccessDeniedException(); } $fieldFacetValue = $this->om->getRepository('ClarolineCoreBundle:Facet\\FieldFacetValue')->findOneBy(array('user' => $user, 'fieldFacet' => $field)); if ($fieldFacetValue === null) { $fieldFacetValue = new FieldFacetValue(); $fieldFacetValue->setUser($user); $fieldFacetValue->setFieldFacet($field); } switch ($field->getType()) { case FieldFacet::DATE_TYPE: $date = is_string($value) ? \DateTime::createFromFormat($this->translator->trans('date_form_datepicker_php', array(), 'platform'), $value) : $value; $fieldFacetValue->setDateValue($date); break; case FieldFacet::FLOAT_TYPE: $fieldFacetValue->setFloatValue($value); break; case FieldFacet::STRING_TYPE: $fieldFacetValue->setStringValue($value); break; default: throw new \Exception('The facet type ' . $field->getType() . ' is unknown.'); } $this->om->persist($fieldFacetValue); $this->om->flush(); }
/** * Set the value of a field for a user. * * @param User $user * @param FieldFacet $field * @param mixed $value * * @throws \Exception */ public function setFieldValue(User $user, FieldFacet $field, $value, $force = false) { if (!$this->authorization->isGranted('edit', new FieldFacetCollection([$field], $user)) && !$force) { throw new AccessDeniedException(); } $fieldFacetValue = $this->om->getRepository('ClarolineCoreBundle:Facet\\FieldFacetValue')->findOneBy(['user' => $user, 'fieldFacet' => $field]); if ($fieldFacetValue === null) { $fieldFacetValue = new FieldFacetValue(); $fieldFacetValue->setUser($user); $fieldFacetValue->setFieldFacet($field); } switch ($field->getType()) { case FieldFacet::DATE_TYPE: $date = is_string($value) ? new \DateTime($value) : $value; $fieldFacetValue->setDateValue($date); break; case FieldFacet::FLOAT_TYPE: $fieldFacetValue->setFloatValue($value); break; case FieldFacet::CHECKBOXES_TYPE: $fieldFacetValue->setArrayValue($value); break; default: $fieldFacetValue->setStringValue($value); } $this->om->persist($fieldFacetValue); $this->om->flush(); }