Remove unused UserRepository file #2599, update references

- Copy functions from old UserRepository to the new one.
- Use shortcut UserManager::getRepository() instead of all path
pull/2588/merge
Julio Montoya 7 years ago
parent c0cc32a588
commit d7a4bceee6
  1. 2
      main/admin/add_drh_to_user.php
  2. 3
      main/admin/user_information.php
  3. 20
      main/course_info/about.php
  4. 5
      main/inc/ajax/message.ajax.php
  5. 6
      main/inc/ajax/session.ajax.php
  6. 8
      main/inc/lib/api.lib.php
  7. 1
      main/inc/lib/course.lib.php
  8. 5
      main/inc/lib/skill.lib.php
  9. 2
      main/inc/lib/usermanager.lib.php
  10. 5
      main/inc/lib/webservices/Rest.php
  11. 6
      main/session/about.php
  12. 2
      plugin/buycourses/src/configure_course.php
  13. 8
      plugin/buycourses/src/service_process.php
  14. 2
      plugin/buycourses/src/services_add.php
  15. 2
      plugin/buycourses/src/services_edit.php
  16. 1
      src/Chamilo/CoreBundle/Composer/ScriptHandler.php
  17. 354
      src/Chamilo/UserBundle/Entity/Repository/UserRepository.php
  18. 2
      src/Chamilo/UserBundle/Entity/User.php
  19. 138
      src/Chamilo/UserBundle/Repository/UserRepository.php

@ -15,7 +15,7 @@ if (!isset($_REQUEST['u'])) {
}
$em = Database::getManager();
$userRepository = $em->getRepository('ChamiloUserBundle:User');
$userRepository = UserManager::getRepository();
/** @var UserEntity $user */
$user = UserManager::getManager()->find($_REQUEST['u']);

@ -621,8 +621,7 @@ if ($studentBossList) {
}
$em = Database::getManager();
/** @var \Chamilo\UserBundle\Entity\Repository\UserRepository $userRepository */
$userRepository = $em->getRepository('ChamiloUserBundle:User');
$userRepository = UserManager::getRepository();
$hrmList = $userRepository->getAssignedHrmUserList(
$userEntity->getId(),

@ -1,4 +1,11 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\CourseRelUser;
use Chamilo\CoreBundle\Entity\ExtraField;
use Chamilo\CourseBundle\Entity\CCourseDescription;
/**
* Course about page
* Show information about a course.
@ -7,17 +14,12 @@
*
* @package chamilo.course
*/
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\CourseRelUser;
use Chamilo\CoreBundle\Entity\ExtraField;
use Chamilo\CourseBundle\Entity\CCourseDescription;
use Chamilo\UserBundle\Entity\User;
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
$courseId = isset($_GET['course_id']) ? intval($_GET['course_id']) : 0;
$courseId = isset($_GET['course_id']) ? (int) $_GET['course_id'] : 0;
$token = Security::get_existing_token();
$em = Database::getManager();
//userID
@ -29,8 +31,8 @@ $course = $em->find('ChamiloCoreBundle:Course', $courseId);
if (!$course) {
api_not_allowed(true);
}
/** @var User $userRepo */
$userRepo = $em->getRepository('ChamiloUserBundle:User');
$userRepo = UserManager::getRepository();
$fieldsRepo = $em->getRepository('ChamiloCoreBundle:ExtraField');
$fieldTagsRepo = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
@ -51,9 +53,7 @@ $courseValues = new ExtraFieldValue('course');
$userValues = new ExtraFieldValue('user');
$urlCourse = api_get_path(WEB_PATH).'main/course/about.php?course_id='.$courseId;
$courseTeachers = $course->getTeachers();
$teachersData = [];
/** @var CourseRelUser $teacherSubscription */

@ -1,7 +1,6 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\UserBundle\Entity\Repository\UserRepository;
use Chamilo\UserBundle\Entity\User;
$_dont_save_user_course_access = true;
@ -96,9 +95,7 @@ switch ($action) {
break;
}
/** @var UserRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloUserBundle:User');
$repo = UserManager::getRepository();
$users = $repo->findUsersToSendMessage(
api_get_user_id(),
$_REQUEST['q'],

@ -1,7 +1,7 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\UserBundle\Entity\Repository\UserRepository;
use Chamilo\UserBundle\Repository\UserRepository;
use Chamilo\UserBundle\Entity\User;
/**
@ -187,9 +187,7 @@ switch ($action) {
'items' => [],
];
$entityManager = Database::getManager();
/** @var UserRepository $usersRepo */
$usersRepo = $entityManager->getRepository('ChamiloUserBundle:User');
$usersRepo = UserManager::getRepository();
$users = $usersRepo->searchUsersByStatus($_GET['q'], COURSEMANAGER, api_get_current_access_url_id());
/** @var User $user */
foreach ($users as $user) {

@ -1712,10 +1712,12 @@ function api_get_user_info(
function api_get_user_entity($userId)
{
$userId = (int) $userId;
/** @var \Chamilo\UserBundle\Repository\UserRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloUserBundle:User');
$repo = UserManager::getRepository();
return $repo->find($userId);
/** @var User $user */
$user = $repo->find($userId);
return $user;
}
/**

@ -5978,6 +5978,7 @@ class CourseManager
{
$userList = self::getCourseUsers(true);
$groupList = self::getCourseGroups();
$array = self::buildSelectOptions(
$groupList,
$userList,

@ -5,7 +5,6 @@ use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
use Chamilo\CoreBundle\Entity\Skill as SkillEntity;
use Chamilo\SkillBundle\Entity\SkillRelCourse;
use Chamilo\SkillBundle\Entity\SkillRelItem;
use Chamilo\UserBundle\Entity\Repository\UserRepository;
use Chamilo\UserBundle\Entity\User;
use Fhaculty\Graph\Graph;
use Fhaculty\Graph\Vertex;
@ -2095,9 +2094,7 @@ class Skill extends Model
return true;
}
$entityManager = Database::getManager();
/** @var UserRepository $userRepo */
$userRepo = $entityManager->getRepository('ChamiloUserBundle:User');
$userRepo = UserManager::getRepository();
$fromUserStatus = $fromUser->getStatus();
switch ($fromUserStatus) {

@ -5,7 +5,7 @@ use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField;
use Chamilo\CoreBundle\Entity\Repository\AccessUrlRepository;
use Chamilo\CoreBundle\Entity\SkillRelUser;
use Chamilo\CoreBundle\Entity\SkillRelUserComment;
use Chamilo\UserBundle\Entity\Repository\UserRepository;
use Chamilo\UserBundle\Repository\UserRepository;
use Chamilo\UserBundle\Entity\User;
use ChamiloSession as Session;
use Symfony\Component\Security\Core\Encoder\EncoderFactory;

@ -955,8 +955,7 @@ class Rest extends WebService
*/
public function getMessageUsers($search)
{
/** @var UserRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloUserBundle:User');
$repo = UserManager::getRepository();
$users = $repo->findUsersToSendMessage($this->user->getId(), $search);
@ -1160,8 +1159,6 @@ class Rest extends WebService
$results = [];
$orig_user_id_value = [];
$userManager = UserManager::getManager();
$userRepository = UserManager::getRepository();
$firstName = $user_param['firstname'];
$lastName = $user_param['lastname'];
$status = $user_param['status'];

@ -4,7 +4,6 @@
use Chamilo\CoreBundle\Entity\ExtraField;
use Chamilo\CoreBundle\Entity\SequenceResource;
use Chamilo\CourseBundle\Entity\CCourseDescription;
use Chamilo\UserBundle\Entity\Repository\UserRepository;
use Chamilo\UserBundle\Entity\User;
use ChamiloSession as Session;
@ -21,7 +20,7 @@ $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
$sessionId = isset($_GET['session_id']) ? intval($_GET['session_id']) : 0;
$sessionId = isset($_GET['session_id']) ? (int) $_GET['session_id'] : 0;
$em = Database::getManager();
@ -35,8 +34,7 @@ $courses = [];
$sessionCourses = $em->getRepository('ChamiloCoreBundle:Session')->getCoursesOrderedByPosition($session);
$fieldsRepo = $em->getRepository('ChamiloCoreBundle:ExtraField');
$fieldTagsRepo = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
/** @var UserRepository $userRepo */
$userRepo = $em->getRepository('ChamiloUserBundle:User');
$userRepo = UserManager::getRepository();
$sequenceResourceRepo = $em->getRepository('ChamiloCoreBundle:SequenceResource');
$tagField = $fieldsRepo->findOneBy([

@ -33,7 +33,7 @@ $editingCourse = intval($_REQUEST['t']) === BuyCoursesPlugin::PRODUCT_TYPE_COURS
$editingSession = intval($_REQUEST['t']) === BuyCoursesPlugin::PRODUCT_TYPE_SESSION;
$entityManager = Database::getManager();
$userRepo = $entityManager->getRepository('ChamiloUserBundle:User');
$userRepo = UserManager::getRepository();
$currency = $plugin->getSelectedCurrency();
$currencyIso = null;

@ -116,7 +116,7 @@ $selectOptions = [
];
if ($typeUser) {
$users = $em->getRepository('ChamiloUserBundle:User')->findAll();
$users = UserManager::getRepository()->findAll();
$selectOptions[$userInfo['user_id']] = api_get_person_name(
$userInfo['firstname'],
$userInfo['lastname']
@ -133,7 +133,7 @@ if ($typeUser) {
$form->addSelect('info_select', get_lang('User'), $selectOptions);
} elseif ($typeCourse) {
/** @var User $user */
$user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
$user = UserManager::getRepository()->find($currentUserId);
$courses = $user->getCourses();
$checker = false;
foreach ($courses as $course) {
@ -152,7 +152,7 @@ if ($typeUser) {
} elseif ($typeSession) {
$sessions = [];
/** @var User $user */
$user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
$user = UserManager::getRepository()->find($currentUserId);
$userSubscriptions = $user->getSessionCourseSubscriptions();
/** @var SessionRelCourseRelUser $userSubscription */
@ -175,7 +175,7 @@ if ($typeUser) {
} elseif ($typeFinalLp) {
// We need here to check the current user courses first
/** @var User $user */
$user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
$user = UserManager::getRepository()->find($currentUserId);
$courses = $user->getCourses();
$courseLpList = [];
$sessionLpList = [];

@ -13,7 +13,7 @@ require_once '../../../main/inc/global.inc.php';
$plugin = BuyCoursesPlugin::create();
$currency = $plugin->getSelectedCurrency();
$em = Database::getManager();
$users = $em->getRepository('ChamiloUserBundle:User')->findAll();
$users = UserManager::getRepository()->findAll();
$userOptions = [];
if (!empty($users)) {
foreach ($users as $user) {

@ -19,7 +19,7 @@ if (!$serviceId) {
$plugin = BuyCoursesPlugin::create();
$currency = $plugin->getSelectedCurrency();
$em = Database::getManager();
$users = $em->getRepository('ChamiloUserBundle:User')->findAll();
$users = UserManager::getRepository()->findAll();
$userOptions = [];
if (!empty($users)) {
foreach ($users as $user) {

@ -199,6 +199,7 @@ class ScriptHandler
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/GroupRelTag.php',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/GroupRelUser.php',
__DIR__.'/../../../../src/Chamilo/CoreBundle/Entity/Groups.php',
__DIR__.'/../../../../src/Chamilo/UserBundle/Entity/Repository/UserRepository.php',
__DIR__.'/../../../../app/Resources/public/assets/bootstrap/Gemfile',
__DIR__.'/../../../../app/Resources/public/assets/bootstrap/Gemfile.lock',
__DIR__.'/../../../../app/Resources/public/assets/bootstrap/Gruntfile.js',

@ -1,354 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\UserBundle\Entity\Repository;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\SessionRelCourseRelUser;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
//use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
//use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
/**
* Class UserRepository.
*
* All functions that query the database (selects)
* Functions should return query builders.
*
* @package Chamilo\UserBundle\Repository
*/
class UserRepository extends EntityRepository
{
/**
* @param string $keyword
*
* @return mixed
*/
public function searchUserByKeyword($keyword)
{
$qb = $this->createQueryBuilder('a');
// Selecting user info
$qb->select('DISTINCT b');
$qb->from('Chamilo\UserBundle\Entity\User', 'b');
// Selecting courses for users
//$qb->innerJoin('u.courses', 'c');
//@todo check app settings
$qb->add('orderBy', 'b.firstname ASC');
$qb->where('b.firstname LIKE :keyword OR b.lastname LIKE :keyword ');
$qb->setParameter('keyword', "%$keyword%");
$query = $qb->getQuery();
return $query->execute();
}
/**
* Get course user relationship based in the course_rel_user table.
*
* @return array
*/
/*public function getCourses(User $user)
{
$queryBuilder = $this->createQueryBuilder('user');
// Selecting course info.
$queryBuilder->select('c');
// Loading User.
//$qb->from('Chamilo\UserBundle\Entity\User', 'u');
// Selecting course
$queryBuilder->innerJoin('Chamilo\CoreBundle\Entity\Course', 'c');
//@todo check app settings
//$qb->add('orderBy', 'u.lastname ASC');
$wherePart = $queryBuilder->expr()->andx();
// Get only users subscribed to this course
$wherePart->add($queryBuilder->expr()->eq('user.userId', $user->getUserId()));
$queryBuilder->where($wherePart);
$query = $queryBuilder->getQuery();
return $query->execute();
}
public function getTeachers()
{
$queryBuilder = $this->createQueryBuilder('u');
// Selecting course info.
$queryBuilder
->select('u')
->where('u.groups.id = :groupId')
->setParameter('groupId', 1);
$query = $queryBuilder->getQuery();
return $query->execute();
}*/
/*public function getUsers($group)
{
$queryBuilder = $this->createQueryBuilder('u');
// Selecting course info.
$queryBuilder
->select('u')
->where('u.groups = :groupId')
->setParameter('groupId', $group);
$query = $queryBuilder->getQuery();
return $query->execute();
}*/
/**
* Get a filtered list of user by status and (optionally) access url.
*
* @param string $query The query to filter
* @param int $status The status
* @param int $accessUrlId The access URL ID
*
* @return array
*/
public function searchUsersByStatus($query, $status, $accessUrlId = 0)
{
$accessUrlId = (int) $accessUrlId;
$queryBuilder = $this->createQueryBuilder('u');
if ($accessUrlId > 0) {
$queryBuilder->innerJoin(
'ChamiloCoreBundle:AccessUrlRelUser',
'auru',
Join::WITH,
'u.id = auru.userId'
);
}
$queryBuilder
->where('u.status = :status')
->andWhere('u.username LIKE :query OR u.firstname LIKE :query OR u.lastname LIKE :query')
->setParameter('status', $status)
->setParameter('query', "$query%");
if ($accessUrlId > 0) {
$queryBuilder
->andWhere('auru.accessUrlId = :url')
->setParameter(':url', $accessUrlId);
}
return $queryBuilder->getQuery()->getResult();
}
/**
* Get the coaches for a course within a session.
*
* @param Session $session The session
* @param Course $course The course
*
* @return array
*/
public function getCoachesForSessionCourse(Session $session, Course $course)
{
$queryBuilder = $this->createQueryBuilder('u');
$queryBuilder
->select('u')
->innerJoin(
'ChamiloCoreBundle:SessionRelCourseRelUser',
'scu',
Join::WITH,
'scu.user = u'
)
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('scu.session', $session->getId()),
$queryBuilder->expr()->eq('scu.course', $course->getId()),
$queryBuilder->expr()->eq('scu.status', SessionRelCourseRelUser::STATUS_COURSE_COACH)
)
);
return $queryBuilder->getQuery()->getResult();
}
/**
* Get the sessions admins for a user.
*
* @param User $user The user
*
* @return array
*/
public function getSessionAdmins($user)
{
$queryBuilder = $this->createQueryBuilder('u');
$queryBuilder
->distinct()
->innerJoin(
'ChamiloCoreBundle:SessionRelUser',
'su',
Join::WITH,
$queryBuilder->expr()->eq('u', 'su.user')
)
->innerJoin(
'ChamiloCoreBundle:SessionRelCourseRelUser',
'scu',
Join::WITH,
$queryBuilder->expr()->eq('su.session', 'scu.session')
)
->where(
$queryBuilder->expr()->eq('scu.user', $user->getId())
)
->andWhere(
$queryBuilder->expr()->eq('su.relationType', SESSION_RELATION_TYPE_RRHH)
);
return $queryBuilder->getQuery()->getResult();
}
/**
* Get the student bosses for a user.
*
* @param User $user The user
*
* @return array
*/
public function getStudentBosses($user)
{
$queryBuilder = $this->createQueryBuilder('u');
$queryBuilder
->distinct()
->innerJoin(
'ChamiloCoreBundle:UserRelUser',
'uu',
Join::WITH,
$queryBuilder->expr()->eq('u.id', 'uu.friendUserId')
)
->where(
$queryBuilder->expr()->eq('uu.relationType', USER_RELATION_TYPE_BOSS)
)
->andWhere(
$queryBuilder->expr()->eq('uu.userId', $user->getId())
);
return $queryBuilder->getQuery()->getResult();
}
/**
* Find potential users to send a message.
*
* @param int $currentUserId The current user ID
* @param string $search The search text to filter the user list
* @param int $limit Optional. Sets the maximum number of results to retrieve
*
* @return mixed
*/
public function findUsersToSendMessage($currentUserId, $search, $limit = 10)
{
$allowSendMessageToAllUsers = api_get_setting('allow_send_message_to_all_platform_users');
$accessUrlId = api_get_multiple_access_url() ? api_get_current_access_url_id() : 1;
if (api_get_setting('allow_social_tool') === 'true' &&
api_get_setting('allow_message_tool') === 'true'
) {
// All users
if ($allowSendMessageToAllUsers === 'true' || api_is_platform_admin()) {
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R
WITH U = R.user
WHERE
U.active = 1 AND
U.status != 6 AND
U.id != $currentUserId AND
R.portal = $accessUrlId";
} else {
$dql = "SELECT DISTINCT U
FROM ChamiloCoreBundle:AccessUrlRelUser R, ChamiloCoreBundle:UserRelUser UF
INNER JOIN ChamiloUserBundle:User AS U
WITH UF.friendUserId = U
WHERE
U.active = 1 AND
U.status != 6 AND
UF.relationType NOT IN(".USER_RELATION_TYPE_DELETED.", ".USER_RELATION_TYPE_RRHH.") AND
UF.userId = $currentUserId AND
UF.friendUserId != $currentUserId AND
U = R.user AND
R.portal = $accessUrlId";
}
} elseif (
api_get_setting('allow_social_tool') === 'false' &&
api_get_setting('allow_message_tool') === 'true'
) {
if ($allowSendMessageToAllUsers === 'true') {
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R
WITH U = R.user
WHERE
U.active = 1 AND
U.status != 6 AND
U.id != $currentUserId AND
R.portal = $accessUrlId";
} else {
$time_limit = api_get_setting('time_limit_whosonline');
$online_time = time() - $time_limit * 60;
$limit_date = api_get_utc_datetime($online_time);
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
INNER JOIN ChamiloCoreBundle:TrackEOnline T
WITH U.id = T.loginUserId
WHERE
U.active = 1 AND
T.loginDate >= '".$limit_date."'";
}
}
$dql .= ' AND (U.firstname LIKE :search OR U.lastname LIKE :search OR U.email LIKE :search OR U.username LIKE :search)';
return $this->getEntityManager()
->createQuery($dql)
->setMaxResults($limit)
->setParameters(['search' => "%$search%"])
->getResult();
}
/**
* Get the list of HRM who have assigned this user.
*
* @param int $userId
* @param int $urlId
*
* @return array
*/
public function getAssignedHrmUserList($userId, $urlId)
{
$qb = $this->createQueryBuilder('user');
$hrmList = $qb
->select('uru')
->innerJoin('ChamiloCoreBundle:UserRelUser', 'uru', Join::WITH, 'uru.userId = user.id')
->innerJoin('ChamiloCoreBundle:AccessUrlRelUser', 'auru', Join::WITH, 'auru.userId = uru.friendUserId')
->where(
$qb->expr()->eq('auru.accessUrlId', $urlId)
)
->andWhere(
$qb->expr()->eq('uru.userId', $userId)
)
->andWhere(
$qb->expr()->eq('uru.relationType', USER_RELATION_TYPE_RRHH)
)
->getQuery()
->getResult();
return $hrmList;
}
}

@ -40,7 +40,7 @@ use Symfony\Component\Validator\Mapping\ClassMetadata;
* }
* )
* @UniqueEntity("username")
* @ORM\Entity(repositoryClass="Chamilo\UserBundle\Entity\Repository\UserRepository")
* @ORM\Entity(repositoryClass="Chamilo\UserBundle\Repository\UserRepository")
*/
class User implements UserInterface //implements ParticipantInterface, ThemeUser
{

@ -132,36 +132,35 @@ class UserRepository extends EntityRepository
/**
* Get a filtered list of user by status and (optionally) access url.
*
* @todo not use status
*
* @param string $query The query to filter
* @param int $status The status
* @param int $accessUrlId The access URL ID
*
* @return array
*/
public function searchUsersByStatus($query, $status, $accessUrlId = null)
public function searchUsersByStatus($query, $status, $accessUrlId = 0)
{
$accessUrlId = intval($accessUrlId);
$accessUrlId = (int) $accessUrlId;
$queryBuilder = $this->createQueryBuilder('u');
if ($accessUrlId > 0) {
$queryBuilder->innerJoin(
'ChamiloCoreBundle:AccessUrlRelUser',
'auru',
\Doctrine\ORM\Query\Expr\Join::WITH,
Join::WITH,
'u.id = auru.userId'
);
}
$queryBuilder->where('u.status = :status')
$queryBuilder
->where('u.status = :status')
->andWhere('u.username LIKE :query OR u.firstname LIKE :query OR u.lastname LIKE :query')
->setParameter('status', $status)
->setParameter('query', "$query%");
if ($accessUrlId > 0) {
$queryBuilder->andWhere('auru.accessUrlId = :url')
$queryBuilder
->andWhere('auru.accessUrlId = :url')
->setParameter(':url', $accessUrlId);
}
@ -174,13 +173,14 @@ class UserRepository extends EntityRepository
* @param Session $session The session
* @param Course $course The course
*
* @return \Doctrine\ORM\QueryBuilder
* @return array
*/
public function getCoachesForSessionCourse(Session $session, Course $course)
{
$queryBuilder = $this->createQueryBuilder('u');
$queryBuilder->select('u')
$queryBuilder
->select('u')
->innerJoin(
'ChamiloCoreBundle:SessionRelCourseRelUser',
'scu',
@ -260,10 +260,11 @@ class UserRepository extends EntityRepository
return $query->execute();
}*/
/**
* Get the sessions admins for a user.
*
* @param User $user The user
* @param User $user
*
* @return array
*/
@ -289,8 +290,7 @@ class UserRepository extends EntityRepository
)
->andWhere(
$queryBuilder->expr()->eq('su.relationType', SESSION_RELATION_TYPE_RRHH)
)
;
);
return $queryBuilder->getQuery()->getResult();
}
@ -298,7 +298,7 @@ class UserRepository extends EntityRepository
/**
* Get the student bosses for a user.
*
* @param User $user The user
* @param User $user
*
* @return array
*/
@ -322,4 +322,114 @@ class UserRepository extends EntityRepository
return $queryBuilder->getQuery()->getResult();
}
/**
* Find potential users to send a message.
*
* @param int $currentUserId The current user ID
* @param string $search The search text to filter the user list
* @param int $limit Optional. Sets the maximum number of results to retrieve
*
* @return mixed
*/
public function findUsersToSendMessage($currentUserId, $search, $limit = 10)
{
$allowSendMessageToAllUsers = api_get_setting('allow_send_message_to_all_platform_users');
$accessUrlId = api_get_multiple_access_url() ? api_get_current_access_url_id() : 1;
if (api_get_setting('allow_social_tool') === 'true' &&
api_get_setting('allow_message_tool') === 'true'
) {
// All users
if ($allowSendMessageToAllUsers === 'true' || api_is_platform_admin()) {
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R
WITH U = R.user
WHERE
U.active = 1 AND
U.status != 6 AND
U.id != $currentUserId AND
R.portal = $accessUrlId";
} else {
$dql = "SELECT DISTINCT U
FROM ChamiloCoreBundle:AccessUrlRelUser R, ChamiloCoreBundle:UserRelUser UF
INNER JOIN ChamiloUserBundle:User AS U
WITH UF.friendUserId = U
WHERE
U.active = 1 AND
U.status != 6 AND
UF.relationType NOT IN(".USER_RELATION_TYPE_DELETED.", ".USER_RELATION_TYPE_RRHH.") AND
UF.userId = $currentUserId AND
UF.friendUserId != $currentUserId AND
U = R.user AND
R.portal = $accessUrlId";
}
} elseif (
api_get_setting('allow_social_tool') === 'false' &&
api_get_setting('allow_message_tool') === 'true'
) {
if ($allowSendMessageToAllUsers === 'true') {
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R
WITH U = R.user
WHERE
U.active = 1 AND
U.status != 6 AND
U.id != $currentUserId AND
R.portal = $accessUrlId";
} else {
$time_limit = api_get_setting('time_limit_whosonline');
$online_time = time() - $time_limit * 60;
$limit_date = api_get_utc_datetime($online_time);
$dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U
INNER JOIN ChamiloCoreBundle:TrackEOnline T
WITH U.id = T.loginUserId
WHERE
U.active = 1 AND
T.loginDate >= '".$limit_date."'";
}
}
$dql .= ' AND (U.firstname LIKE :search OR U.lastname LIKE :search OR U.email LIKE :search OR U.username LIKE :search)';
return $this->getEntityManager()
->createQuery($dql)
->setMaxResults($limit)
->setParameters(['search' => "%$search%"])
->getResult();
}
/**
* Get the list of HRM who have assigned this user.
*
* @param int $userId
* @param int $urlId
*
* @return array
*/
public function getAssignedHrmUserList($userId, $urlId)
{
$qb = $this->createQueryBuilder('user');
$hrmList = $qb
->select('uru')
->innerJoin('ChamiloCoreBundle:UserRelUser', 'uru', Join::WITH, 'uru.userId = user.id')
->innerJoin('ChamiloCoreBundle:AccessUrlRelUser', 'auru', Join::WITH, 'auru.userId = uru.friendUserId')
->where(
$qb->expr()->eq('auru.accessUrlId', $urlId)
)
->andWhere(
$qb->expr()->eq('uru.userId', $userId)
)
->andWhere(
$qb->expr()->eq('uru.relationType', USER_RELATION_TYPE_RRHH)
)
->getQuery()
->getResult();
return $hrmList;
}
}

Loading…
Cancel
Save