Add user in the resource_node table, change "admin" tool to "global".

Create user repo using in the resource repository factory.
pull/3064/head
Julio 6 years ago
parent 99d196df37
commit bf9357cf5a
  1. 153
      public/main/inc/lib/usermanager.lib.php
  2. 23
      src/CoreBundle/Controller/ResourceController.php
  3. 5
      src/CoreBundle/Migrations/Schema/V200/Version20.php
  4. 2
      src/CoreBundle/Repository/ResourceRepository.php
  5. 13
      src/CoreBundle/Resources/config/tools.yml
  6. 4
      src/CoreBundle/Tool/GlobalTool.php
  7. 64
      src/UserBundle/Entity/User.php
  8. 24
      src/UserBundle/Repository/UserRepository.php
  9. 8
      src/UserBundle/Resources/config/services.yml

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField; use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Entity\SkillRelUser; use Chamilo\CoreBundle\Entity\SkillRelUser;
use Chamilo\CoreBundle\Entity\SkillRelUserComment; use Chamilo\CoreBundle\Entity\SkillRelUserComment;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
@ -336,7 +337,25 @@ class UserManager
if (!empty($expirationDate)) { if (!empty($expirationDate)) {
$user->setExpirationDate($expirationDate); $user->setExpirationDate($expirationDate);
} }
try { try {
$factory = Container::$container->get('Chamilo\CoreBundle\Repository\ResourceFactory');
$repo = $factory->createRepository('global', 'users');
// Add user as a node:
$url = api_get_url_entity($access_url_id);
$resourceNode = new ResourceNode();
$resourceNode
->setSlug($loginName)
->setCreator(api_get_user_entity($creatorId))
->setResourceType($repo->getResourceType())
->setParent($url->getResourceNode())
;
$repo->getEntityManager()->persist($resourceNode);
$user->setResourceNode($resourceNode);
$repo->getEntityManager()->persist($user);
$userManager->updateUser($user); $userManager->updateUser($user);
$userId = $user->getId(); $userId = $user->getId();
@ -738,8 +757,8 @@ class UserManager
$user = api_get_user_entity($user_id); $user = api_get_user_entity($user_id);
// Unsubscribe the user from all groups in all his courses // Unsubscribe the user from all groups in all his courses
$sql = "SELECT c.id $sql = "SELECT c.id
FROM $table_course c FROM $table_course c
INNER JOIN $table_course_user cu INNER JOIN $table_course_user cu
ON (c.id = cu.c_id) ON (c.id = cu.c_id)
WHERE WHERE
@ -2279,13 +2298,13 @@ class UserManager
</a>'; </a>';
if ($showDelete) { if ($showDelete) {
$production_list .= '&nbsp;&nbsp; $production_list .= '&nbsp;&nbsp;
<input <input
style="width:16px;" style="width:16px;"
type="image" type="image"
name="remove_production['.urlencode($file).']" name="remove_production['.urlencode($file).']"
src="'.$del_image.'" src="'.$del_image.'"
alt="'.$del_text.'" alt="'.$del_text.'"
title="'.$del_text.' '.htmlentities($file).'" title="'.$del_text.' '.htmlentities($file).'"
onclick="javascript: return confirmation(\''.htmlentities($file).'\');" /></li>'; onclick="javascript: return confirmation(\''.htmlentities($file).'\');" /></li>';
} }
} }
@ -2677,7 +2696,7 @@ class UserManager
$res = Database::query($sql); $res = Database::query($sql);
if (Database::num_rows($res) > 0) { if (Database::num_rows($res) > 0) {
while ($row = Database::fetch_array($res)) { while ($row = Database::fetch_array($res)) {
$sqlu = "SELECT value as fval FROM $t_ufv v $sqlu = "SELECT value as fval FROM $t_ufv v
INNER JOIN $t_uf f INNER JOIN $t_uf f
ON (v.field_id = f.id) ON (v.field_id = f.id)
WHERE WHERE
@ -3356,7 +3375,7 @@ class UserManager
INNER JOIN $tbl_course AS course INNER JOIN $tbl_course AS course
ON course.id = session_course_user.c_id AND session_course_user.session_id = $session_id ON course.id = session_course_user.c_id AND session_course_user.session_id = $session_id
LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id LEFT JOIN $tblCourseCategory course_category ON course.category_id = course_category.id
INNER JOIN $tbl_session as session INNER JOIN $tbl_session as session
ON session_course_user.session_id = session.id ON session_course_user.session_id = session.id
LEFT JOIN $tbl_user as user ON user.id = session_course_user.user_id LEFT JOIN $tbl_user as user ON user.id = session_course_user.user_id
WHERE session_course_user.user_id = $user_id WHERE session_course_user.user_id = $user_id
@ -3444,7 +3463,7 @@ class UserManager
if (api_is_allowed_to_create_course()) { if (api_is_allowed_to_create_course()) {
$sql = "SELECT DISTINCT $sql = "SELECT DISTINCT
c.visibility, c.visibility,
c.id as real_id, c.id as real_id,
c.code as course_code, c.code as course_code,
sc.position sc.position
@ -3754,7 +3773,7 @@ class UserManager
return false; return false;
} }
$t_api = Database::get_main_table(TABLE_MAIN_USER_API_KEY); $t_api = Database::get_main_table(TABLE_MAIN_USER_API_KEY);
$sql = "SELECT id FROM $t_api $sql = "SELECT id FROM $t_api
WHERE user_id=".$user_id." AND api_service='".$api_service."'"; WHERE user_id=".$user_id." AND api_service='".$api_service."'";
$res = Database::query($sql); $res = Database::query($sql);
$num = Database::num_rows($res); $num = Database::num_rows($res);
@ -3788,7 +3807,7 @@ class UserManager
} }
$t_api = Database::get_main_table(TABLE_MAIN_USER_API_KEY); $t_api = Database::get_main_table(TABLE_MAIN_USER_API_KEY);
$api_service = Database::escape_string($api_service); $api_service = Database::escape_string($api_service);
$sql = "SELECT id FROM $t_api $sql = "SELECT id FROM $t_api
WHERE user_id=".$user_id." AND api_service='".$api_service."'"; WHERE user_id=".$user_id." AND api_service='".$api_service."'";
$res = Database::query($sql); $res = Database::query($sql);
if (Database::num_rows($res) < 1) { if (Database::num_rows($res) < 1) {
@ -3836,14 +3855,14 @@ class UserManager
$t_a = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $t_a = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
if (api_is_multiple_url_enabled()) { if (api_is_multiple_url_enabled()) {
$sql = "SELECT count(u.id) $sql = "SELECT count(u.id)
FROM $t_u u FROM $t_u u
INNER JOIN $t_a url_user INNER JOIN $t_a url_user
ON (u.id = url_user.user_id) ON (u.id = url_user.user_id)
WHERE url_user.access_url_id = $access_url_id WHERE url_user.access_url_id = $access_url_id
"; ";
} else { } else {
$sql = "SELECT count(u.id) $sql = "SELECT count(u.id)
FROM $t_u u FROM $t_u u
WHERE 1 = 1 "; WHERE 1 = 1 ";
} }
@ -4488,10 +4507,10 @@ class UserManager
$js = '<script> $js = '<script>
extra_field_toogle(); extra_field_toogle();
function extra_field_toogle() { function extra_field_toogle() {
if (jQuery("select[name=search_type]").val() != "1") { if (jQuery("select[name=search_type]").val() != "1") {
jQuery(".extra_field").hide(); jQuery(".extra_field").hide();
} else { } else {
jQuery(".extra_field").show(); jQuery(".extra_field").show();
} }
} }
</script>'; </script>';
@ -4605,13 +4624,13 @@ class UserManager
$extra_condition = ' AND relation_type = '.intval($with_status_condition); $extra_condition = ' AND relation_type = '.intval($with_status_condition);
} }
$sql = 'DELETE FROM '.$tbl_my_friend.' $sql = 'DELETE FROM '.$tbl_my_friend.'
WHERE WHERE
relation_type <> '.USER_RELATION_TYPE_RRHH.' AND relation_type <> '.USER_RELATION_TYPE_RRHH.' AND
friend_user_id='.$friend_id.' '.$extra_condition; friend_user_id='.$friend_id.' '.$extra_condition;
Database::query($sql); Database::query($sql);
$sql = 'DELETE FROM '.$tbl_my_friend.' $sql = 'DELETE FROM '.$tbl_my_friend.'
WHERE WHERE
relation_type <> '.USER_RELATION_TYPE_RRHH.' AND relation_type <> '.USER_RELATION_TYPE_RRHH.' AND
user_id='.$friend_id.' '.$extra_condition; user_id='.$friend_id.' '.$extra_condition;
Database::query($sql); Database::query($sql);
} else { } else {
@ -4628,16 +4647,16 @@ class UserManager
WHERE user_id='.$user_id.' AND friend_user_id='.$friend_id; WHERE user_id='.$user_id.' AND friend_user_id='.$friend_id;
$sql_j = 'UPDATE '.$tbl_my_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.' $sql_j = 'UPDATE '.$tbl_my_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.'
WHERE WHERE
user_receiver_id='.$user_id.' AND user_receiver_id='.$user_id.' AND
user_sender_id='.$friend_id.' AND update_date="0000-00-00 00:00:00" '; user_sender_id='.$friend_id.' AND update_date="0000-00-00 00:00:00" ';
// Delete user // Delete user
$sql_ij = 'UPDATE '.$tbl_my_friend.' SET relation_type='.USER_RELATION_TYPE_DELETED.' $sql_ij = 'UPDATE '.$tbl_my_friend.' SET relation_type='.USER_RELATION_TYPE_DELETED.'
WHERE user_id='.$friend_id.' AND friend_user_id='.$user_id; WHERE user_id='.$friend_id.' AND friend_user_id='.$user_id;
$sql_ji = 'UPDATE '.$tbl_my_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.' $sql_ji = 'UPDATE '.$tbl_my_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_DENIED.'
WHERE WHERE
user_receiver_id='.$friend_id.' AND user_receiver_id='.$friend_id.' AND
user_sender_id='.$user_id.' AND user_sender_id='.$user_id.' AND
update_date="0000-00-00 00:00:00" '; update_date="0000-00-00 00:00:00" ';
Database::query($sql_i); Database::query($sql_i);
Database::query($sql_j); Database::query($sql_j);
@ -4647,15 +4666,15 @@ class UserManager
} }
// Delete accepted invitations // Delete accepted invitations
$sql = "DELETE FROM $tbl_my_message $sql = "DELETE FROM $tbl_my_message
WHERE WHERE
msg_status = ".MESSAGE_STATUS_INVITATION_ACCEPTED." AND msg_status = ".MESSAGE_STATUS_INVITATION_ACCEPTED." AND
( (
user_receiver_id = $user_id AND user_receiver_id = $user_id AND
user_sender_id = $friend_id user_sender_id = $friend_id
) OR ) OR
( (
user_sender_id = $user_id AND user_sender_id = $user_id AND
user_receiver_id = $friend_id user_receiver_id = $friend_id
) )
"; ";
@ -4874,7 +4893,7 @@ class UserManager
$tbl_session_rel_access_url session_rel_access_rel_user $tbl_session_rel_access_url session_rel_access_rel_user
ON session_rel_access_rel_user.session_id = s.id ON session_rel_access_rel_user.session_id = s.id
WHERE access_url_id = ".api_get_current_access_url_id()." WHERE access_url_id = ".api_get_current_access_url_id()."
$sessionConditionsCoach $sessionConditionsCoach
) OR sru.session_id IN ( ) OR sru.session_id IN (
SELECT DISTINCT(s.id) FROM $tbl_session s SELECT DISTINCT(s.id) FROM $tbl_session s
INNER JOIN $tbl_session_rel_access_url url INNER JOIN $tbl_session_rel_access_url url
@ -4884,7 +4903,7 @@ class UserManager
WHERE access_url_id = ".api_get_current_access_url_id()." WHERE access_url_id = ".api_get_current_access_url_id()."
$sessionConditionsTeacher $sessionConditionsTeacher
) )
) )
$userConditions $userConditions
) )
UNION ALL( UNION ALL(
@ -5053,29 +5072,29 @@ class UserManager
if ($deleteOtherAssignedUsers) { if ($deleteOtherAssignedUsers) {
if (api_get_multiple_access_url()) { if (api_get_multiple_access_url()) {
// Deleting assigned users to hrm_id // Deleting assigned users to hrm_id
$sql = "SELECT s.user_id $sql = "SELECT s.user_id
FROM $userRelUserTable s FROM $userRelUserTable s
INNER JOIN $userRelAccessUrlTable a INNER JOIN $userRelAccessUrlTable a
ON (a.user_id = s.user_id) ON (a.user_id = s.user_id)
WHERE WHERE
friend_user_id = $userId AND friend_user_id = $userId AND
relation_type = $relationType AND relation_type = $relationType AND
access_url_id = ".api_get_current_access_url_id(); access_url_id = ".api_get_current_access_url_id();
} else { } else {
$sql = "SELECT user_id $sql = "SELECT user_id
FROM $userRelUserTable FROM $userRelUserTable
WHERE WHERE
friend_user_id = $userId AND friend_user_id = $userId AND
relation_type = $relationType"; relation_type = $relationType";
} }
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
$sql = "DELETE FROM $userRelUserTable $sql = "DELETE FROM $userRelUserTable
WHERE WHERE
user_id = {$row['user_id']} AND user_id = {$row['user_id']} AND
friend_user_id = $userId AND friend_user_id = $userId AND
relation_type = $relationType"; relation_type = $relationType";
Database::query($sql); Database::query($sql);
} }
@ -5083,8 +5102,8 @@ class UserManager
} }
if ($deleteUsersBeforeInsert) { if ($deleteUsersBeforeInsert) {
$sql = "DELETE FROM $userRelUserTable $sql = "DELETE FROM $userRelUserTable
WHERE WHERE
user_id = $userId AND user_id = $userId AND
relation_type = $relationType"; relation_type = $relationType";
Database::query($sql); Database::query($sql);
@ -5094,11 +5113,11 @@ class UserManager
if (is_array($subscribedUsersId)) { if (is_array($subscribedUsersId)) {
foreach ($subscribedUsersId as $subscribedUserId) { foreach ($subscribedUsersId as $subscribedUserId) {
$subscribedUserId = (int) $subscribedUserId; $subscribedUserId = (int) $subscribedUserId;
$sql = "SELECT id $sql = "SELECT id
FROM $userRelUserTable FROM $userRelUserTable
WHERE WHERE
user_id = $subscribedUserId AND user_id = $subscribedUserId AND
friend_user_id = $userId AND friend_user_id = $userId AND
relation_type = $relationType"; relation_type = $relationType";
$result = Database::query($sql); $result = Database::query($sql);
@ -5213,7 +5232,7 @@ class UserManager
$user_id = (int) $user_id; $user_id = (int) $user_id;
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE); $table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
$sql = 'SELECT path_certificate $sql = 'SELECT path_certificate
FROM '.$table.' FROM '.$table.'
WHERE WHERE
cat_id = "'.$cat_id.'" AND cat_id = "'.$cat_id.'" AND
@ -5248,12 +5267,12 @@ class UserManager
$session_condition = " AND session_id = $session_id"; $session_condition = " AND session_id = $session_id";
} }
$sql = 'SELECT * FROM '.$tbl_grade_certificate.' $sql = 'SELECT * FROM '.$tbl_grade_certificate.'
WHERE cat_id = ( WHERE cat_id = (
SELECT id FROM '.$tbl_grade_category.' SELECT id FROM '.$tbl_grade_category.'
WHERE WHERE
course_code = "'.Database::escape_string($course_code).'" '.$session_condition.' course_code = "'.Database::escape_string($course_code).'" '.$session_condition.'
LIMIT 1 LIMIT 1
) AND user_id='.intval($user_id); ) AND user_id='.intval($user_id);
$rs = Database::query($sql); $rs = Database::query($sql);
@ -5422,7 +5441,7 @@ class UserManager
} }
$userRelUserTable = Database::get_main_table(TABLE_MAIN_USER_REL_USER); $userRelUserTable = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$sql = "DELETE FROM $userRelUserTable $sql = "DELETE FROM $userRelUserTable
WHERE user_id = $userId AND relation_type = ".USER_RELATION_TYPE_BOSS; WHERE user_id = $userId AND relation_type = ".USER_RELATION_TYPE_BOSS;
Database::query($sql); Database::query($sql);
@ -5752,7 +5771,7 @@ class UserManager
$sql = <<<SQL $sql = <<<SQL
SELECT id, username, lastname, firstname SELECT id, username, lastname, firstname
FROM $userTable FROM $userTable
WHERE WHERE
firstname LIKE '$firstname%' AND firstname LIKE '$firstname%' AND
lastname LIKE '$lastname%' lastname LIKE '$lastname%'
SQL; SQL;
@ -6492,11 +6511,11 @@ SQL;
$tableCareer = Database::get_main_table(TABLE_CAREER); $tableCareer = Database::get_main_table(TABLE_CAREER);
$userId = (int) $userId; $userId = (int) $userId;
$sql = "SELECT c.id, c.name $sql = "SELECT c.id, c.name
FROM $table uc FROM $table uc
INNER JOIN $tableCareer c INNER JOIN $tableCareer c
ON uc.career_id = c.id ON uc.career_id = c.id
WHERE user_id = $userId WHERE user_id = $userId
ORDER BY uc.created_at ORDER BY uc.created_at
"; ";
$result = Database::query($sql); $result = Database::query($sql);

@ -17,6 +17,7 @@ use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter; use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter;
use Chamilo\CourseBundle\Controller\CourseControllerInterface; use Chamilo\CourseBundle\Controller\CourseControllerInterface;
use Chamilo\CourseBundle\Controller\CourseControllerTrait; use Chamilo\CourseBundle\Controller\CourseControllerTrait;
use Chamilo\UserBundle\Entity\User;
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria; use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
@ -59,8 +60,17 @@ class ResourceController extends AbstractResourceController implements CourseCon
$tool = $request->get('tool'); $tool = $request->get('tool');
$type = $request->get('type'); $type = $request->get('type');
$course = $this->getCourse(); $repository = $this->getRepositoryFromRequest($request);
$grid = $this->getGrid($request, $grid, $course->getResourceNode()->getId());
$entityName = $repository->getResourceType()->getEntityName();
$parentResource = $this->getCourse();
if (null === $parentResource) {
/** @var User $user */
$parentResource = $this->getUser();
}
$grid = $this->getGrid($request, $grid, $parentResource->getResourceNode()->getId());
$breadcrumb = $this->getBreadCrumb(); $breadcrumb = $this->getBreadCrumb();
$breadcrumb->addChild( $breadcrumb->addChild(
@ -939,12 +949,15 @@ class ResourceController extends AbstractResourceController implements CourseCon
} }
/** /**
* @param string $mode show or download * @param Request $request
* @param string $filter * @param ResourceNode $resourceNode
* @param string $mode
* @param Glide|null $glide
* @param string $filter
* *
* @return mixed|StreamedResponse * @return mixed|StreamedResponse
*/ */
private function showFile(Request $request, ResourceNode $resourceNode, string $mode = 'show', Glide $glide = null, $filter = '') private function showFile(Request $request, ResourceNode $resourceNode, $mode = 'show', Glide $glide = null, $filter = '')
{ {
$this->denyAccessUnlessGranted( $this->denyAccessUnlessGranted(
ResourceNodeVoter::VIEW, ResourceNodeVoter::VIEW,

@ -965,6 +965,11 @@ class Version20 extends AbstractMigrationChamilo
$this->addSql("ALTER TABLE c_link ADD CONSTRAINT FK_9209C2A01BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;"); $this->addSql("ALTER TABLE c_link ADD CONSTRAINT FK_9209C2A01BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;");
$this->addSql("CREATE UNIQUE INDEX UNIQ_9209C2A01BAD783F ON c_link (resource_node_id);"); $this->addSql("CREATE UNIQUE INDEX UNIQ_9209C2A01BAD783F ON c_link (resource_node_id);");
$this->addSql("ALTER TABLE user ADD resource_node_id INT DEFAULT NULL;");
$this->addSql("ALTER TABLE user ADD CONSTRAINT FK_8D93D6491BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE;");
$this->addSql("CREATE UNIQUE INDEX UNIQ_8D93D6491BAD783F ON user (resource_node_id);");
$this->addSql("ALTER TABLE user_audit ADD resource_node_id INT DEFAULT NULL;");
/* $this->addSql(""); /* $this->addSql("");
$this->addSql(""); $this->addSql("");
$this->addSql("");*/ $this->addSql("");*/

@ -166,7 +166,7 @@ class ResourceRepository extends EntityRepository
* @param null $lockMode * @param null $lockMode
* @param null $lockVersion * @param null $lockVersion
*/ */
public function find($id, $lockMode = null, $lockVersion = null): ?AbstractResource public function find($id, $lockMode = null, $lockVersion = null) //: ?AbstractResource
{ {
return $this->getRepository()->find($id); return $this->getRepository()->find($id);
} }

@ -9,12 +9,12 @@ services:
# Tool chain is filled in file DependencyInjection/Compiler/ToolCompilerClass.php # Tool chain is filled in file DependencyInjection/Compiler/ToolCompilerClass.php
Chamilo\CoreBundle\ToolChain: ~ Chamilo\CoreBundle\ToolChain: ~
# Admin # Admin
chamilo_core.tool.admin: chamilo_core.tool.global:
class: Chamilo\CoreBundle\Tool\Admin class: Chamilo\CoreBundle\Tool\GlobalTool
arguments: arguments:
- 'admin' - 'global'
- 'admin' - ''
- 'admin' - ''
- '' - ''
- urls: - urls:
entity: Chamilo\CoreBundle\Entity\AccessUrl entity: Chamilo\CoreBundle\Entity\AccessUrl
@ -22,6 +22,9 @@ services:
courses: courses:
entity: Chamilo\CoreBundle\Entity\Course entity: Chamilo\CoreBundle\Entity\Course
repository: Chamilo\CoreBundle\Repository\CourseRepository repository: Chamilo\CoreBundle\Repository\CourseRepository
users:
entity: Chamilo\UserBundle\Entity\User
repository: Chamilo\UserBundle\Repository\UserRepository
- 1 - 1
tags: tags:
- {name: chamilo_core.tool} - {name: chamilo_core.tool}

@ -4,8 +4,8 @@
namespace Chamilo\CoreBundle\Tool; namespace Chamilo\CoreBundle\Tool;
/** /**
* Class Admin. * Class GlobalTool.
*/ */
class Admin extends AbstractTool class GlobalTool extends AbstractTool
{ {
} }

@ -6,6 +6,8 @@ namespace Chamilo\UserBundle\Entity;
use Chamilo\CoreBundle\Entity\AccessUrl; use Chamilo\CoreBundle\Entity\AccessUrl;
use Chamilo\CoreBundle\Entity\AccessUrlRelUser; use Chamilo\CoreBundle\Entity\AccessUrlRelUser;
use Chamilo\CoreBundle\Entity\Course; use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Entity\Skill; use Chamilo\CoreBundle\Entity\Skill;
use Chamilo\CoreBundle\Entity\UsergroupRelUser; use Chamilo\CoreBundle\Entity\UsergroupRelUser;
use Chamilo\ThemeBundle\Model\UserInterface as ThemeUser; use Chamilo\ThemeBundle\Model\UserInterface as ThemeUser;
@ -16,7 +18,6 @@ use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Sonata\UserBundle\Entity\BaseUser; use Sonata\UserBundle\Entity\BaseUser;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Security\Core\User\EquatableInterface; use Symfony\Component\Security\Core\User\EquatableInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints as Assert;
@ -178,15 +179,6 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
*/ */
protected $address; protected $address;
/**
* Vich\UploadableField(mapping="user_image", fileNameProperty="picture_uri").
*
* note This is not a mapped field of entity metadata, just a simple property.
*
* @var File
*/
protected $imageFile;
/** /**
* @var AccessUrl * @var AccessUrl
*/ */
@ -506,6 +498,30 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
*/ */
protected $receivedMessages; protected $receivedMessages;
/**
*
* @ORM\OneToOne(
* targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", cascade={"remove"}, orphanRemoval=true
* )
* @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="CASCADE")
*/
public $resourceNode;
/**
* @return $this
*/
public function setResourceNode(ResourceNode $resourceNode): self
{
$this->resourceNode = $resourceNode;
return $this;
}
public function getResourceNode(): ResourceNode
{
return $this->resourceNode;
}
/** /**
* Constructor. * Constructor.
*/ */
@ -1432,34 +1448,6 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
return $this->getId(); return $this->getId();
} }
/**
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance
* of 'UploadedFile' is injected into this setter to trigger the update. If this
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
* must be able to accept an instance of 'File' as the bundle will inject one here
* during Doctrine hydration.
*
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*/
public function setImageFile(File $image)
{
$this->imageFile = $image;
if ($image) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = new \DateTime('now');
}
}
/**
* @return File
*/
public function getImageFile()
{
return $this->imageFile;
}
/** /**
* @return string * @return string
*/ */

@ -27,6 +27,8 @@ use Chamilo\CoreBundle\Entity\UserApiKey;
use Chamilo\CoreBundle\Entity\UserCourseCategory; use Chamilo\CoreBundle\Entity\UserCourseCategory;
use Chamilo\CoreBundle\Entity\UsergroupRelUser; use Chamilo\CoreBundle\Entity\UsergroupRelUser;
use Chamilo\CoreBundle\Entity\UserRelCourseVote; use Chamilo\CoreBundle\Entity\UserRelCourseVote;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CoreBundle\Repository\ResourceRepositoryInterface;
use Chamilo\CourseBundle\Entity\CAttendanceResult; use Chamilo\CourseBundle\Entity\CAttendanceResult;
use Chamilo\CourseBundle\Entity\CAttendanceSheet; use Chamilo\CourseBundle\Entity\CAttendanceSheet;
use Chamilo\CourseBundle\Entity\CBlogPost; use Chamilo\CourseBundle\Entity\CBlogPost;
@ -59,19 +61,19 @@ use Symfony\Component\Serializer\Serializer;
* All functions that query the database (selects) * All functions that query the database (selects)
* Functions should return query builders. * Functions should return query builders.
*/ */
class UserRepository class UserRepository extends ResourceRepository
{ {
/** /**
* @var EntityRepository * @var EntityRepository
*/ */
private $repository; //private $repository;
public function __construct(EntityManagerInterface $entityManager) /*public function __construct(EntityManagerInterface $entityManager)
{ {
$this->repository = $entityManager->getRepository(User::class); $this->repository = $entityManager->getRepository(User::class);
} }*/
public function find($id): ?User /*public function find($id)
{ {
$user = $this->repository->find($id); $user = $this->repository->find($id);
@ -80,7 +82,7 @@ class UserRepository
} }
return $user; return $user;
} }*/
public function findByUsername(string $username): ?User public function findByUsername(string $username): ?User
{ {
@ -455,7 +457,7 @@ class UserRepository
} else { } else {
$dql = "SELECT DISTINCT U $dql = "SELECT DISTINCT U
FROM ChamiloCoreBundle:AccessUrlRelUser R, ChamiloCoreBundle:UserRelUser UF FROM ChamiloCoreBundle:AccessUrlRelUser R, ChamiloCoreBundle:UserRelUser UF
INNER JOIN ChamiloUserBundle:User AS U INNER JOIN ChamiloUserBundle:User AS U
WITH UF.friendUserId = U WITH UF.friendUserId = U
WHERE WHERE
U.active = 1 AND U.active = 1 AND
@ -473,7 +475,7 @@ class UserRepository
if ($allowSendMessageToAllUsers === 'true') { if ($allowSendMessageToAllUsers === 'true') {
$dql = "SELECT DISTINCT U $dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U FROM ChamiloUserBundle:User U
LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R LEFT JOIN ChamiloCoreBundle:AccessUrlRelUser R
WITH U = R.user WITH U = R.user
WHERE WHERE
U.active = 1 AND U.active = 1 AND
@ -486,10 +488,10 @@ class UserRepository
$limit_date = api_get_utc_datetime($online_time); $limit_date = api_get_utc_datetime($online_time);
$dql = "SELECT DISTINCT U $dql = "SELECT DISTINCT U
FROM ChamiloUserBundle:User U FROM ChamiloUserBundle:User U
INNER JOIN ChamiloCoreBundle:TrackEOnline T INNER JOIN ChamiloCoreBundle:TrackEOnline T
WITH U.id = T.loginUserId WITH U.id = T.loginUserId
WHERE WHERE
U.active = 1 AND U.active = 1 AND
T.loginDate >= '".$limit_date."'"; T.loginDate >= '".$limit_date."'";
} }
} }

@ -12,5 +12,11 @@ services:
chamilo_user.security.login_form_authenticator: chamilo_user.security.login_form_authenticator:
class: Chamilo\UserBundle\Security\LoginFormAuthenticator class: Chamilo\UserBundle\Security\LoginFormAuthenticator
Chamilo\UserBundle\Repository\UserRepository: ~ Chamilo\UserBundle\Repository\UserRepository:
arguments:
$tool: 'global'
$type: 'users'
# call a method on the specified factory service
factory: ['@Chamilo\CoreBundle\Repository\ResourceFactory', 'createRepository']
Chamilo\UserBundle\Repository\GroupRepository: ~ Chamilo\UserBundle\Repository\GroupRepository: ~

Loading…
Cancel
Save