@ -29,6 +29,7 @@ use Doctrine\DBAL\Types\Types; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Doctrine\ORM\Query\Expr\Join;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Doctrine\ORM\QueryBuilder;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Doctrine\Persistence\ManagerRegistry;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Exception;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Symfony\Component\Security\Core\Exception\UserNotFoundException;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -166,8 +167,9 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $em->flush();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $em->getConnection()->commit();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        } catch (\ Exception $e) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        } catch (Exception $e) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $em->getConnection()->rollBack();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            throw $e;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -289,17 +291,17 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        foreach ($relations as $relation) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $entityClass = 'Chamilo\\'  .  $relation['bundle']  .  '\\Entity\\'  .  $relation['entity'];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $entityClass = 'Chamilo\\'.$relation['bundle'].'\\Entity\\'.$relation['entity'];  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $repository = $em->getRepository($entityClass);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $records = $repository->findBy([$relation['field'] => $userToDelete]);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            foreach ($records as $record) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                $setter = 'set'  .  ucfirst($relation['field']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if ($relation['action'] === 'delete' ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                $setter = 'set'.ucfirst($relation['field']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if ('delete' ===  $relation['action']) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    $em->remove($record);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                } elseif (method_exists($record, $setter)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    $valueToSet = $relation['type'] === 'object'  ? $fallbackUser : $fallbackUser->getId();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    $record->$setter($valueToSet);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    $valueToSet = 'object' ===  $relation['type'] ? $fallbackUser : $fallbackUser->getId();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    $record->{ $setter} ($valueToSet);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if (method_exists($record, 'getResourceFile') & &  $record->getResourceFile()) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        $resourceFile = $record->getResourceFile();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if (!$em->contains($resourceFile)) {  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -319,7 +321,7 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $fallbackUser = $this->findOneBy(['status' => User::ROLE_FALLBACK], ['id' => 'ASC']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if (!$fallbackUser) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            throw new \Exception("User not found." );  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            throw new Exception('User not found.' );  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return $fallbackUser;