getRepository('ChamiloCoreBundle:ExtraField'); $extraField = $extraFieldRepository->findOneBy( [ 'extraFieldType' => ExtraField::USER_FIELD_TYPE, 'variable' => $extraFieldName, ] ) or die("Cannot find user extra field '$extraFieldName'\n"); // Read all values in this extra field $extraFieldValueRepository = Database::getManager()->getRepository('ChamiloCoreBundle:ExtraFieldValues'); foreach ($extraFieldValueRepository->findBy(['field' => $extraField]) as $extraFieldValue) { $extraFieldValues[$extraFieldValue->getItemId()] = $extraFieldValue; } // for each known user $userRepository = Database::getManager()->getRepository('ChamiloUserBundle:User'); foreach ($userRepository->findAll() as $user) { $value = $user->getUserId(); if (array_key_exists($user->getId(), $extraFieldValues)) { // user already has a value in the extra field if ($extraFieldValues[$user->getId()]->getValue() === $value) { // value is already ok, nothing to do } else { // wrong value, fix it $extraFieldValue->setValue($value); Database::getManager()->persist($extraFieldValue); if ($debug) { echo 'Updated ' . $user->getUsername() . ' extra field value to ' . $value . "\n"; } } } else { // user does not have a value in the extra field $extraFieldValue = new ExtraFieldValues(); $extraFieldValue->setValue($value); $extraFieldValue->setField($extraField); $extraFieldValue->setItemId($user->getId()); Database::getManager()->persist($extraFieldValue); $extraFieldValues[$user->getId()] = $extraFieldValue; if ($debug) { echo 'Created ' . $user->getUsername() . ' extra field with value ' . $value . "\n"; } } } try { Database::getManager()->flush(); } catch (OptimisticLockException $exception) { die($exception->getMessage()."\n"); }