Minor: Format code

pull/5135/head
Angel Fernando Quiroz Campos 2 years ago
parent 5d1faa2990
commit cf0cd9681f
  1. 33
      src/CoreBundle/Controller/SocialController.php
  2. 5
      src/CoreBundle/Repository/ExtraFieldOptionsRepository.php
  3. 30
      src/CoreBundle/Repository/MessageRepository.php
  4. 71
      src/CoreBundle/Repository/Node/UserRepository.php
  5. 33
      src/CoreBundle/Repository/Node/UsergroupRepository.php
  6. 16
      src/CoreBundle/Repository/TrackEOnlineRepository.php

@ -362,7 +362,7 @@ class SocialController extends AbstractController
$profileFieldsVisibilityJson = $settingsManager->getSetting('profile.profile_fields_visibility'); $profileFieldsVisibilityJson = $settingsManager->getSetting('profile.profile_fields_visibility');
$profileFieldsVisibility = json_decode($profileFieldsVisibilityJson, true)['options'] ?? []; $profileFieldsVisibility = json_decode($profileFieldsVisibilityJson, true)['options'] ?? [];
$vCardUserLink = $profileFieldsVisibility['vcard'] ?? true ? $baseUrl.'/main/social/vcard_export.php?userId='.intval($userId) : ''; $vCardUserLink = $profileFieldsVisibility['vcard'] ?? true ? $baseUrl.'/main/social/vcard_export.php?userId='.(int) $userId : '';
$languageInfo = null; $languageInfo = null;
if ($profileFieldsVisibility['language'] ?? true) { if ($profileFieldsVisibility['language'] ?? true) {
@ -417,7 +417,7 @@ class SocialController extends AbstractController
continue; continue;
} }
$fieldValue = is_array($value) ? implode(', ', $value) : $value; $fieldValue = \is_array($value) ? implode(', ', $value) : $value;
switch ($extraField['type']) { switch ($extraField['type']) {
case ExtraField::FIELD_TYPE_RADIO: case ExtraField::FIELD_TYPE_RADIO:
@ -429,15 +429,17 @@ class SocialController extends AbstractController
}, $extraFieldOptions); }, $extraFieldOptions);
$fieldValue = implode(', ', $optionTexts); $fieldValue = implode(', ', $optionTexts);
} }
break; break;
case ExtraField::FIELD_TYPE_GEOLOCALIZATION_COORDINATES: case ExtraField::FIELD_TYPE_GEOLOCALIZATION_COORDINATES:
case ExtraField::FIELD_TYPE_GEOLOCALIZATION: case ExtraField::FIELD_TYPE_GEOLOCALIZATION:
$geoData = explode('::', $fieldValue); $geoData = explode('::', $fieldValue);
$locationName = $geoData[0]; $locationName = $geoData[0];
$coordinates = $geoData[1] ?? ''; $coordinates = $geoData[1] ?? '';
$fieldValue = $locationName; $fieldValue = $locationName;
break;
break;
} }
$extraFieldsFormatted[] = [ $extraFieldsFormatted[] = [
@ -531,8 +533,8 @@ class SocialController extends AbstractController
$numberOfItems = $request->query->getInt('number_of_items', 1000); $numberOfItems = $request->query->getInt('number_of_items', 1000);
$formattedResults = []; $formattedResults = [];
if ($type === 'user') { if ('user' === $type) {
/* @var User $user */ /** @var User $user */
$user = $this->getUser(); $user = $this->getUser();
$results = $userRepository->searchUsersByTags($query, $user->getId(), 0, $from, $numberOfItems); $results = $userRepository->searchUsersByTags($query, $user->getId(), 0, $from, $numberOfItems);
foreach ($results as $item) { foreach ($results as $item) {
@ -542,13 +544,13 @@ class SocialController extends AbstractController
'id' => $item['id'], 'id' => $item['id'],
'name' => $item['firstname'].' '.$item['lastname'], 'name' => $item['firstname'].' '.$item['lastname'],
'avatar' => $userRepository->getUserPicture($item['id']), 'avatar' => $userRepository->getUserPicture($item['id']),
'role' => $item['status'] === 5 ? 'student' : 'teacher', 'role' => 5 === $item['status'] ? 'student' : 'teacher',
'status' => $isUserOnline ? 'online' : 'offline', 'status' => $isUserOnline ? 'online' : 'offline',
'url' => '/social?id='.$item['id'], 'url' => '/social?id='.$item['id'],
'relationType' => $relation['relationType'] ?? null, 'relationType' => $relation['relationType'] ?? null,
]; ];
} }
} elseif ($type === 'group') { } elseif ('group' === $type) {
// Perform group search // Perform group search
$results = $usergroupRepository->searchGroupsByTags($query, $from, $numberOfItems); $results = $usergroupRepository->searchGroupsByTags($query, $from, $numberOfItems);
foreach ($results as $item) { foreach ($results as $item) {
@ -571,13 +573,13 @@ class SocialController extends AbstractController
UsergroupRepository $usergroupRepository, UsergroupRepository $usergroupRepository,
TrackEOnlineRepository $trackOnlineRepository TrackEOnlineRepository $trackOnlineRepository
): JsonResponse { ): JsonResponse {
/* @var User $user */ /** @var User $user */
$user = $this->getUser(); $user = $this->getUser();
if (!$user) { if (!$user) {
return $this->json(['error' => 'User not authenticated'], Response::HTTP_UNAUTHORIZED); return $this->json(['error' => 'User not authenticated'], Response::HTTP_UNAUTHORIZED);
} }
/* @var Usergroup $group */ /** @var Usergroup $group */
$group = $usergroupRepository->find($groupId); $group = $usergroupRepository->find($groupId);
if (!$group) { if (!$group) {
return $this->json(['error' => 'Group not found'], Response::HTTP_NOT_FOUND); return $this->json(['error' => 'Group not found'], Response::HTTP_NOT_FOUND);
@ -606,7 +608,6 @@ class SocialController extends AbstractController
#[Route('/group-action', name: 'chamilo_core_social_group_action')] #[Route('/group-action', name: 'chamilo_core_social_group_action')]
public function groupAction(Request $request, UsergroupRepository $usergroupRepository, EntityManagerInterface $em): JsonResponse public function groupAction(Request $request, UsergroupRepository $usergroupRepository, EntityManagerInterface $em): JsonResponse
{ {
$data = json_decode($request->getContent(), true); $data = json_decode($request->getContent(), true);
$userId = $data['userId'] ?? null; $userId = $data['userId'] ?? null;
@ -621,10 +622,12 @@ class SocialController extends AbstractController
switch ($action) { switch ($action) {
case 'join': case 'join':
$usergroupRepository->addUserToGroup($userId, $groupId); $usergroupRepository->addUserToGroup($userId, $groupId);
break; break;
case 'leave': case 'leave':
$usergroupRepository->removeUserFromGroup($userId, $groupId); $usergroupRepository->removeUserFromGroup($userId, $groupId);
break; break;
default: default:
@ -634,7 +637,7 @@ class SocialController extends AbstractController
$em->flush(); $em->flush();
return $this->json(['success' => 'Action completed successfully']); return $this->json(['success' => 'Action completed successfully']);
} catch (\Exception $e) { } catch (Exception $e) {
return $this->json(['error' => $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); return $this->json(['error' => $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
} }
} }
@ -673,10 +676,12 @@ class SocialController extends AbstractController
if (!$result) { if (!$result) {
return $this->json(['error' => 'Invitation already exists or could not be sent'], Response::HTTP_BAD_REQUEST); return $this->json(['error' => 'Invitation already exists or could not be sent'], Response::HTTP_BAD_REQUEST);
} }
break; break;
case 'send_message': case 'send_message':
$result = MessageManager::send_message($targetUserId, $subject, $content); $result = MessageManager::send_message($targetUserId, $subject, $content);
break; break;
case 'add_friend': case 'add_friend':
@ -686,10 +691,12 @@ class SocialController extends AbstractController
$userRepository->relateUsers($userReceiver, $userSender, $relationType); $userRepository->relateUsers($userReceiver, $userSender, $relationType);
$messageRepository->invitationAccepted($userSender, $userReceiver); $messageRepository->invitationAccepted($userSender, $userReceiver);
break; break;
case 'deny_friend': case 'deny_friend':
$messageRepository->invitationDenied($userSender, $userReceiver); $messageRepository->invitationDenied($userSender, $userReceiver);
break; break;
default: default:
@ -699,7 +706,7 @@ class SocialController extends AbstractController
$em->flush(); $em->flush();
return $this->json(['success' => 'Action completed successfully']); return $this->json(['success' => 'Action completed successfully']);
} catch (\Exception $e) { } catch (Exception $e) {
return $this->json(['error' => $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); return $this->json(['error' => $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
} }
} }
@ -708,6 +715,6 @@ class SocialController extends AbstractController
{ {
$userStatus = $userRepository->getExtraUserDataByField($userId, 'user_chat_status'); $userStatus = $userRepository->getExtraUserDataByField($userId, 'user_chat_status');
return !empty($userStatus) && isset($userStatus['user_chat_status']) && (int) $userStatus['user_chat_status'] === 1; return !empty($userStatus) && isset($userStatus['user_chat_status']) && 1 === (int) $userStatus['user_chat_status'];
} }
} }

@ -20,8 +20,6 @@ class ExtraFieldOptionsRepository extends ServiceEntityRepository
/** /**
* Get the secondary options. For double select extra field. * Get the secondary options. For double select extra field.
*
* @return array
*/ */
public function findSecondaryOptions(ExtraFieldOptions $option): array public function findSecondaryOptions(ExtraFieldOptions $option): array
{ {
@ -53,7 +51,8 @@ class ExtraFieldOptionsRepository extends ServiceEntityRepository
'fieldId' => $fieldId, 'fieldId' => $fieldId,
'optionValue' => $optionValue, 'optionValue' => $optionValue,
'itemType' => $itemType, 'itemType' => $itemType,
]); ])
;
$result = $qb->getQuery()->getResult(); $result = $qb->getQuery()->getResult();

@ -10,6 +10,7 @@ use Chamilo\CoreBundle\Entity\Message;
use Chamilo\CoreBundle\Entity\MessageRelUser; use Chamilo\CoreBundle\Entity\MessageRelUser;
use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Traits\Repository\RepositoryQueryBuilderTrait; use Chamilo\CoreBundle\Traits\Repository\RepositoryQueryBuilderTrait;
use DateTime;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry; use Doctrine\Persistence\ManagerRegistry;
@ -97,7 +98,8 @@ class MessageRepository extends ServiceEntityRepository
'status' => Message::MESSAGE_STATUS_INVITATION_PENDING, 'status' => Message::MESSAGE_STATUS_INVITATION_PENDING,
]) ])
->getQuery() ->getQuery()
->getResult(); ->getResult()
;
} }
public function findSentInvitationsByUser(User $user): array public function findSentInvitationsByUser(User $user): array
@ -112,7 +114,8 @@ class MessageRepository extends ServiceEntityRepository
'status' => Message::MESSAGE_STATUS_INVITATION_PENDING, 'status' => Message::MESSAGE_STATUS_INVITATION_PENDING,
]) ])
->getQuery() ->getQuery()
->getResult(); ->getResult()
;
} }
public function sendInvitationToFriend(User $userSender, User $userReceiver, string $messageTitle, string $messageContent): bool public function sendInvitationToFriend(User $userSender, User $userReceiver, string $messageTitle, string $messageContent): bool
@ -120,10 +123,10 @@ class MessageRepository extends ServiceEntityRepository
$existingInvitations = $this->findSentInvitationsByUserAndStatus($userSender, $userReceiver, [ $existingInvitations = $this->findSentInvitationsByUserAndStatus($userSender, $userReceiver, [
Message::MESSAGE_STATUS_INVITATION_PENDING, Message::MESSAGE_STATUS_INVITATION_PENDING,
Message::MESSAGE_STATUS_INVITATION_ACCEPTED, Message::MESSAGE_STATUS_INVITATION_ACCEPTED,
Message::MESSAGE_STATUS_INVITATION_DENIED Message::MESSAGE_STATUS_INVITATION_DENIED,
]); ]);
if (count($existingInvitations) > 0) { if (\count($existingInvitations) > 0) {
// Invitation already exists // Invitation already exists
return false; return false;
} }
@ -132,7 +135,7 @@ class MessageRepository extends ServiceEntityRepository
$message->setSender($userSender); $message->setSender($userSender);
$message->setMsgType(Message::MESSAGE_TYPE_INVITATION); $message->setMsgType(Message::MESSAGE_TYPE_INVITATION);
$message->setStatus(Message::MESSAGE_STATUS_INVITATION_PENDING); $message->setStatus(Message::MESSAGE_STATUS_INVITATION_PENDING);
$message->setSendDate(new \DateTime()); $message->setSendDate(new DateTime());
$message->setTitle($messageTitle); $message->setTitle($messageTitle);
$message->setContent(nl2br($messageContent)); $message->setContent(nl2br($messageContent));
@ -161,7 +164,8 @@ class MessageRepository extends ServiceEntityRepository
'receiver' => $userReceiver, 'receiver' => $userReceiver,
'msgType' => Message::MESSAGE_TYPE_INVITATION, 'msgType' => Message::MESSAGE_TYPE_INVITATION,
'statuses' => $statuses, 'statuses' => $statuses,
]); ])
;
return $qb->getQuery()->getResult(); return $qb->getQuery()->getResult();
} }
@ -175,20 +179,22 @@ class MessageRepository extends ServiceEntityRepository
->where('m.sender = :sender') ->where('m.sender = :sender')
->andWhere('m.status = :status') ->andWhere('m.status = :status')
->setParameter('sender', $sender) ->setParameter('sender', $sender)
->setParameter('status', Message::MESSAGE_STATUS_INVITATION_PENDING); ->setParameter('status', Message::MESSAGE_STATUS_INVITATION_PENDING)
;
$messages = $queryBuilder->getQuery()->getResult(); $messages = $queryBuilder->getQuery()->getResult();
foreach ($messages as $message) { foreach ($messages as $message) {
$messageRelUser = $this->_em->getRepository(MessageRelUser::class)->findOneBy([ $messageRelUser = $this->_em->getRepository(MessageRelUser::class)->findOneBy([
'message' => $message, 'message' => $message,
'receiver' => $receiver 'receiver' => $receiver,
]); ]);
if ($messageRelUser) { if ($messageRelUser) {
$invitation = $messageRelUser->getMessage(); $invitation = $messageRelUser->getMessage();
$invitation->setStatus(Message::MESSAGE_STATUS_INVITATION_ACCEPTED); $invitation->setStatus(Message::MESSAGE_STATUS_INVITATION_ACCEPTED);
$this->_em->flush(); $this->_em->flush();
return true; return true;
} }
} }
@ -196,7 +202,6 @@ class MessageRepository extends ServiceEntityRepository
return false; return false;
} }
public function invitationDenied(User $sender, User $receiver): bool public function invitationDenied(User $sender, User $receiver): bool
{ {
$queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder = $this->_em->createQueryBuilder();
@ -206,24 +211,25 @@ class MessageRepository extends ServiceEntityRepository
->where('m.sender = :sender') ->where('m.sender = :sender')
->andWhere('m.status = :status') ->andWhere('m.status = :status')
->setParameter('sender', $sender) ->setParameter('sender', $sender)
->setParameter('status', Message::MESSAGE_STATUS_INVITATION_PENDING); ->setParameter('status', Message::MESSAGE_STATUS_INVITATION_PENDING)
;
$messages = $queryBuilder->getQuery()->getResult(); $messages = $queryBuilder->getQuery()->getResult();
foreach ($messages as $message) { foreach ($messages as $message) {
$messageRelUser = $this->_em->getRepository(MessageRelUser::class)->findOneBy([ $messageRelUser = $this->_em->getRepository(MessageRelUser::class)->findOneBy([
'message' => $message, 'message' => $message,
'receiver' => $receiver 'receiver' => $receiver,
]); ]);
if ($messageRelUser) { if ($messageRelUser) {
$this->_em->remove($messageRelUser); $this->_em->remove($messageRelUser);
$this->_em->flush(); $this->_em->flush();
return true; return true;
} }
} }
return false; return false;
} }
} }

@ -39,17 +39,17 @@ use const MB_CASE_LOWER;
class UserRepository extends ResourceRepository implements PasswordUpgraderInterface class UserRepository extends ResourceRepository implements PasswordUpgraderInterface
{ {
protected ?UserPasswordHasherInterface $hasher = null; protected ?UserPasswordHasherInterface $hasher = null;
private $illustrationRepository;
const USER_IMAGE_SIZE_SMALL = 1; public const USER_IMAGE_SIZE_SMALL = 1;
const USER_IMAGE_SIZE_MEDIUM = 2; public const USER_IMAGE_SIZE_MEDIUM = 2;
const USER_IMAGE_SIZE_BIG = 3; public const USER_IMAGE_SIZE_BIG = 3;
const USER_IMAGE_SIZE_ORIGINAL = 4; public const USER_IMAGE_SIZE_ORIGINAL = 4;
public function __construct(ManagerRegistry $registry, IllustrationRepository $illustrationRepository) public function __construct(
{ ManagerRegistry $registry,
private readonly IllustrationRepository $illustrationRepository
) {
parent::__construct($registry, User::class); parent::__construct($registry, User::class);
$this->illustrationRepository = $illustrationRepository;
} }
public function loadUserByIdentifier(string $identifier): ?User public function loadUserByIdentifier(string $identifier): ?User
@ -655,7 +655,8 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
->leftJoin(ExtraFieldValues::class, 'efv', Join::WITH, 'efv.field = ef.id AND efv.itemId = :userId') ->leftJoin(ExtraFieldValues::class, 'efv', Join::WITH, 'efv.field = ef.id AND efv.itemId = :userId')
->where('ef.itemType = :itemType') ->where('ef.itemType = :itemType')
->setParameter('userId', $userId) ->setParameter('userId', $userId)
->setParameter('itemType', ExtraField::USER_FIELD_TYPE); ->setParameter('itemType', ExtraField::USER_FIELD_TYPE)
;
// Apply visibility filters // Apply visibility filters
if (!$allVisibility) { if (!$allVisibility) {
@ -665,7 +666,8 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
// Apply field filter if provided // Apply field filter if provided
if (null !== $fieldFilter) { if (null !== $fieldFilter) {
$qb->andWhere('ef.id = :fieldFilter') $qb->andWhere('ef.id = :fieldFilter')
->setParameter('fieldFilter', $fieldFilter); ->setParameter('fieldFilter', $fieldFilter)
;
} }
// Order by field order // Order by field order
@ -680,7 +682,7 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
$value = $row['fval'] ?? $row['fval_df']; $value = $row['fval'] ?? $row['fval_df'];
// Handle multiple values if necessary // Handle multiple values if necessary
if ($splitMultiple && in_array($row['type'], [ExtraField::USER_FIELD_TYPE_SELECT_MULTIPLE], true)) { if ($splitMultiple && \in_array($row['type'], [ExtraField::USER_FIELD_TYPE_SELECT_MULTIPLE], true)) {
$value = explode(';', $value); $value = explode(';', $value);
} }
@ -688,9 +690,9 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
$key = $prefix ? 'extra_'.$row['fvar'] : $row['fvar']; $key = $prefix ? 'extra_'.$row['fvar'] : $row['fvar'];
// Special handling for certain field types // Special handling for certain field types
if ($row['type'] == ExtraField::USER_FIELD_TYPE_TAG) { if (ExtraField::USER_FIELD_TYPE_TAG == $row['type']) {
// Implement your logic to handle tags // Implement your logic to handle tags
} elseif ($row['type'] == ExtraField::USER_FIELD_TYPE_RADIO && $prefix) { } elseif (ExtraField::USER_FIELD_TYPE_RADIO == $row['type'] && $prefix) {
$extraData[$key][$key] = $value; $extraData[$key][$key] = $value;
} else { } else {
$extraData[$key] = $value; $extraData[$key] = $value;
@ -714,7 +716,8 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
'userId' => $userId, 'userId' => $userId,
'fieldVariable' => $fieldVariable, 'fieldVariable' => $fieldVariable,
'itemType' => ExtraField::USER_FIELD_TYPE, 'itemType' => ExtraField::USER_FIELD_TYPE,
]); ])
;
if (!$allVisibility) { if (!$allVisibility) {
$qb->andWhere('e.visibleToSelf = true'); $qb->andWhere('e.visibleToSelf = true');
@ -739,7 +742,7 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
public function searchUsersByTags( public function searchUsersByTags(
string $tag, string $tag,
int $excludeUserId = null, ?int $excludeUserId = null,
int $fieldId = 0, int $fieldId = 0,
int $from = 0, int $from = 0,
int $number_of_items = 10, int $number_of_items = 10,
@ -755,16 +758,19 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
$qb->innerJoin('u.portals', 'urlRelUser') $qb->innerJoin('u.portals', 'urlRelUser')
->leftJoin(UserRelTag::class, 'uv', 'WITH', 'u = uv.user') ->leftJoin(UserRelTag::class, 'uv', 'WITH', 'u = uv.user')
->leftJoin(Tag::class, 'ut', 'WITH', 'uv.tag = ut'); ->leftJoin(Tag::class, 'ut', 'WITH', 'uv.tag = ut')
;
if ($fieldId !== 0) { if (0 !== $fieldId) {
$qb->andWhere('ut.field = :fieldId') $qb->andWhere('ut.field = :fieldId')
->setParameter('fieldId', $fieldId); ->setParameter('fieldId', $fieldId)
;
} }
if ($excludeUserId !== null) { if (null !== $excludeUserId) {
$qb->andWhere('u.id != :excludeUserId') $qb->andWhere('u.id != :excludeUserId')
->setParameter('excludeUserId', $excludeUserId); ->setParameter('excludeUserId', $excludeUserId)
;
} }
$qb->andWhere( $qb->andWhere(
@ -784,18 +790,21 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
) )
) )
->setParameter('tag', $tag.'%') ->setParameter('tag', $tag.'%')
->setParameter('likeTag', '%' . $tag . '%'); ->setParameter('likeTag', '%'.$tag.'%')
;
// Only active users and not anonymous // Only active users and not anonymous
$qb->andWhere('u.active = :active') $qb->andWhere('u.active = :active')
->andWhere('u.status != :anonymous') ->andWhere('u.status != :anonymous')
->setParameter('active', true) ->setParameter('active', true)
->setParameter('anonymous', 6); ->setParameter('anonymous', 6)
;
if (!$getCount) { if (!$getCount) {
$qb->orderBy('u.username') $qb->orderBy('u.username')
->setFirstResult($from) ->setFirstResult($from)
->setMaxResults($number_of_items); ->setMaxResults($number_of_items)
;
} }
return $getCount ? $qb->getQuery()->getSingleScalarResult() : $qb->getQuery()->getResult(); return $getCount ? $qb->getQuery()->getSingleScalarResult() : $qb->getQuery()->getResult();
@ -810,11 +819,10 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
->where('u.id = :userId AND f.id = :friendId') ->where('u.id = :userId AND f.id = :friendId')
->setParameter('userId', $userId) ->setParameter('userId', $userId)
->setParameter('friendId', $friendId) ->setParameter('friendId', $friendId)
->setMaxResults(1); ->setMaxResults(1)
;
$result = $qb->getQuery()->getOneOrNullResult();
return $result; return $qb->getQuery()->getOneOrNullResult();
} }
public function relateUsers(User $user1, User $user2, int $relationType): void public function relateUsers(User $user1, User $user2, int $relationType): void
@ -859,26 +867,31 @@ class UserRepository extends ResourceRepository implements PasswordUpgraderInter
int $size = self::USER_IMAGE_SIZE_MEDIUM, int $size = self::USER_IMAGE_SIZE_MEDIUM,
$addRandomId = true, $addRandomId = true,
) { ) {
$user = $this->find($userId); $user = $this->find($userId);
if (!$user) { if (!$user) {
return '/img/icons/64/unknown.png'; return '/img/icons/64/unknown.png';
} }
switch ($size) { switch ($size) {
case self::USER_IMAGE_SIZE_SMALL: case self::USER_IMAGE_SIZE_SMALL:
$width = 32; $width = 32;
break; break;
case self::USER_IMAGE_SIZE_MEDIUM: case self::USER_IMAGE_SIZE_MEDIUM:
$width = 64; $width = 64;
break; break;
case self::USER_IMAGE_SIZE_BIG: case self::USER_IMAGE_SIZE_BIG:
$width = 128; $width = 128;
break; break;
case self::USER_IMAGE_SIZE_ORIGINAL: case self::USER_IMAGE_SIZE_ORIGINAL:
default: default:
$width = 0; $width = 0;
break; break;
} }

@ -15,12 +15,11 @@ use Exception;
class UsergroupRepository extends ResourceRepository class UsergroupRepository extends ResourceRepository
{ {
private $illustrationRepository; public function __construct(
ManagerRegistry $registry,
public function __construct(ManagerRegistry $registry, IllustrationRepository $illustrationRepository) private readonly IllustrationRepository $illustrationRepository
{ ) {
parent::__construct($registry, Usergroup::class); parent::__construct($registry, Usergroup::class);
$this->illustrationRepository = $illustrationRepository;
} }
/** /**
@ -193,14 +192,13 @@ class UsergroupRepository extends ResourceRepository
'user' => $user, 'user' => $user,
]); ]);
if (!$existingRelation) { if (!$existingRelation) {
$existingRelation = new UsergroupRelUser(); $existingRelation = new UsergroupRelUser();
$existingRelation->setUsergroup($group); $existingRelation->setUsergroup($group);
$existingRelation->setUser($user); $existingRelation->setUser($user);
} }
if ($group->getVisibility() === Usergroup::GROUP_PERMISSION_CLOSED) { if (Usergroup::GROUP_PERMISSION_CLOSED === $group->getVisibility()) {
$relationType = Usergroup::GROUP_USER_PERMISSION_PENDING_INVITATION; $relationType = Usergroup::GROUP_USER_PERMISSION_PENDING_INVITATION;
} }
@ -212,7 +210,7 @@ class UsergroupRepository extends ResourceRepository
public function removeUserFromGroup(int $userId, int $groupId): bool public function removeUserFromGroup(int $userId, int $groupId): bool
{ {
/* @var Usergroup $group */ /** @var Usergroup $group */
$group = $this->find($groupId); $group = $this->find($groupId);
$user = $this->_em->getRepository(User::class)->find($userId); $user = $this->_em->getRepository(User::class)->find($userId);
@ -283,7 +281,8 @@ class UsergroupRepository extends ResourceRepository
$urlId = $this->getCurrentAccessUrlId(); $urlId = $this->getCurrentAccessUrlId();
$qb->innerJoin('g.accessUrls', 'a', 'WITH', 'g.id = a.usergroup') $qb->innerJoin('g.accessUrls', 'a', 'WITH', 'g.id = a.usergroup')
->andWhere('a.accessUrl = :urlId') ->andWhere('a.accessUrl = :urlId')
->setParameter('urlId', $urlId); ->setParameter('urlId', $urlId)
;
} }
$qb->where( $qb->where(
@ -293,12 +292,14 @@ class UsergroupRepository extends ResourceRepository
$qb->expr()->like('g.url', ':tag') $qb->expr()->like('g.url', ':tag')
) )
) )
->setParameter('tag', '%' . $tag . '%'); ->setParameter('tag', '%'.$tag.'%')
;
if (!$getCount) { if (!$getCount) {
$qb->orderBy('g.title', 'ASC') $qb->orderBy('g.title', 'ASC')
->setFirstResult($from) ->setFirstResult($from)
->setMaxResults($number_of_items); ->setMaxResults($number_of_items)
;
} }
return $getCount ? $qb->getQuery()->getSingleScalarResult() : $qb->getQuery()->getResult(); return $getCount ? $qb->getQuery()->getSingleScalarResult() : $qb->getQuery()->getResult();
@ -306,10 +307,8 @@ class UsergroupRepository extends ResourceRepository
public function getUsergroupPicture($userGroupId): string public function getUsergroupPicture($userGroupId): string
{ {
$usergroup = $this->find($userGroupId); $usergroup = $this->find($userGroupId);
if (!$usergroup) { if (!$usergroup) {
return '/img/icons/64/group_na.png'; return '/img/icons/64/group_na.png';
} }
@ -336,7 +335,7 @@ class UsergroupRepository extends ResourceRepository
Usergroup::GROUP_USER_PERMISSION_HRM, Usergroup::GROUP_USER_PERMISSION_HRM,
]; ];
return in_array($userRole, $allowedRoles, true); return \in_array($userRole, $allowedRoles, true);
} }
public function getUserGroupRole(int $groupId, int $userId): ?int public function getUserGroupRole(int $groupId, int $userId): ?int
@ -346,9 +345,11 @@ class UsergroupRepository extends ResourceRepository
->where('g.id = :groupId AND gu.user = :userId') ->where('g.id = :groupId AND gu.user = :userId')
->setParameter('groupId', $groupId) ->setParameter('groupId', $groupId)
->setParameter('userId', $userId) ->setParameter('userId', $userId)
->select('gu.relationType'); ->select('gu.relationType')
;
$result = $qb->getQuery()->getOneOrNullResult(); $result = $qb->getQuery()->getOneOrNullResult();
return $result ? $result['relationType'] : null; return $result ? $result['relationType'] : null;
} }
@ -356,7 +357,7 @@ class UsergroupRepository extends ResourceRepository
{ {
$relationType = $this->getUserGroupRole($groupId, $userId); $relationType = $this->getUserGroupRole($groupId, $userId);
return in_array($relationType, [ return \in_array($relationType, [
Usergroup::GROUP_USER_PERMISSION_ADMIN, Usergroup::GROUP_USER_PERMISSION_ADMIN,
Usergroup::GROUP_USER_PERMISSION_MODERATOR, Usergroup::GROUP_USER_PERMISSION_MODERATOR,
]); ]);

@ -8,18 +8,18 @@ namespace Chamilo\CoreBundle\Repository;
use Chamilo\CoreBundle\Entity\TrackEOnline; use Chamilo\CoreBundle\Entity\TrackEOnline;
use Chamilo\CoreBundle\Settings\SettingsManager; use Chamilo\CoreBundle\Settings\SettingsManager;
use DateTime;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NonUniqueResultException;
use Doctrine\Persistence\ManagerRegistry; use Doctrine\Persistence\ManagerRegistry;
class TrackEOnlineRepository extends ServiceEntityRepository class TrackEOnlineRepository extends ServiceEntityRepository
{ {
private $settingsManager; public function __construct(
ManagerRegistry $registry,
public function __construct(ManagerRegistry $registry, SettingsManager $settingsManager) private readonly SettingsManager $settingsManager
{ ) {
parent::__construct($registry, TrackEOnline::class); parent::__construct($registry, TrackEOnline::class);
$this->settingsManager = $settingsManager;
} }
public function isUserOnline(int $userId): bool public function isUserOnline(int $userId): bool
@ -27,7 +27,7 @@ class TrackEOnlineRepository extends ServiceEntityRepository
$accessUrlId = 1; $accessUrlId = 1;
$timeLimit = $this->settingsManager->getSetting('display.time_limit_whosonline'); $timeLimit = $this->settingsManager->getSetting('display.time_limit_whosonline');
$onlineTime = new \DateTime(); $onlineTime = new DateTime();
$onlineTime->modify("-{$timeLimit} minutes"); $onlineTime->modify("-{$timeLimit} minutes");
$qb = $this->createQueryBuilder('t') $qb = $this->createQueryBuilder('t')
@ -38,10 +38,12 @@ class TrackEOnlineRepository extends ServiceEntityRepository
->setParameter('userId', $userId) ->setParameter('userId', $userId)
->setParameter('accessUrlId', $accessUrlId) ->setParameter('accessUrlId', $accessUrlId)
->setParameter('limitDate', $onlineTime) ->setParameter('limitDate', $onlineTime)
->setMaxResults(1); ->setMaxResults(1)
;
try { try {
$count = $qb->getQuery()->getSingleScalarResult(); $count = $qb->getQuery()->getSingleScalarResult();
return $count > 0; return $count > 0;
} catch (NonUniqueResultException $e) { } catch (NonUniqueResultException $e) {
// Handle exception // Handle exception

Loading…
Cancel
Save