Merge pull request #4692 from AngelFQC/annotations-to-attributes

Internal: Migrate annotations to attributes
pull/4700/head
Angel Fernando Quiroz Campos 2 years ago committed by GitHub
commit 8e43c1cd78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 308
      src/CoreBundle/Entity/AbstractResource.php
  2. 162
      src/CoreBundle/Entity/AccessUrl.php
  3. 42
      src/CoreBundle/Entity/AccessUrlRelCourse.php
  4. 25
      src/CoreBundle/Entity/AccessUrlRelCourseCategory.php
  5. 25
      src/CoreBundle/Entity/AccessUrlRelSession.php
  6. 41
      src/CoreBundle/Entity/AccessUrlRelUser.php
  7. 25
      src/CoreBundle/Entity/AccessUrlRelUserGroup.php
  8. 19
      src/CoreBundle/Entity/Admin.php
  9. 22
      src/CoreBundle/Entity/AnnouncementRelGroup.php
  10. 89
      src/CoreBundle/Entity/Asset.php
  11. 36
      src/CoreBundle/Entity/AttemptFeedback.php
  12. 32
      src/CoreBundle/Entity/AttemptFile.php
  13. 128
      src/CoreBundle/Entity/BranchSync.php
  14. 61
      src/CoreBundle/Entity/BranchTransaction.php
  15. 17
      src/CoreBundle/Entity/BranchTransactionStatus.php
  16. 30
      src/CoreBundle/Entity/Career.php
  17. 38
      src/CoreBundle/Entity/Chat.php
  18. 42
      src/CoreBundle/Entity/ChatVideo.php
  19. 270
      src/CoreBundle/Entity/Course.php
  20. 89
      src/CoreBundle/Entity/CourseCategory.php
  21. 21
      src/CoreBundle/Entity/CourseRelClass.php
  22. 69
      src/CoreBundle/Entity/CourseRelUser.php
  23. 41
      src/CoreBundle/Entity/CourseRelUserCatalogue.php
  24. 75
      src/CoreBundle/Entity/CourseRequest.php
  25. 30
      src/CoreBundle/Entity/CourseType.php
  26. 102
      src/CoreBundle/Entity/ExtraField.php
  27. 42
      src/CoreBundle/Entity/ExtraFieldOptionRelFieldOption.php
  28. 49
      src/CoreBundle/Entity/ExtraFieldOptions.php
  29. 43
      src/CoreBundle/Entity/ExtraFieldRelTag.php
  30. 30
      src/CoreBundle/Entity/ExtraFieldSavedSearch.php
  31. 48
      src/CoreBundle/Entity/ExtraFieldValues.php
  32. 31
      src/CoreBundle/Entity/GradeComponents.php
  33. 33
      src/CoreBundle/Entity/GradeModel.php
  34. 136
      src/CoreBundle/Entity/GradebookCategory.php
  35. 50
      src/CoreBundle/Entity/GradebookCertificate.php
  36. 33
      src/CoreBundle/Entity/GradebookComment.php
  37. 86
      src/CoreBundle/Entity/GradebookEvaluation.php
  38. 79
      src/CoreBundle/Entity/GradebookLink.php
  39. 50
      src/CoreBundle/Entity/GradebookLinkevalLog.php
  40. 41
      src/CoreBundle/Entity/GradebookResult.php
  41. 28
      src/CoreBundle/Entity/GradebookResultAttempt.php
  42. 41
      src/CoreBundle/Entity/GradebookResultLog.php
  43. 34
      src/CoreBundle/Entity/GradebookScoreDisplay.php
  44. 40
      src/CoreBundle/Entity/GradebookScoreLog.php
  45. 42
      src/CoreBundle/Entity/Group.php
  46. 33
      src/CoreBundle/Entity/HookCall.php
  47. 28
      src/CoreBundle/Entity/HookEvent.php
  48. 32
      src/CoreBundle/Entity/HookObserver.php
  49. 18
      src/CoreBundle/Entity/Illustration.php
  50. 43
      src/CoreBundle/Entity/Language.php
  51. 37
      src/CoreBundle/Entity/Legal.php
  52. 39
      src/CoreBundle/Entity/Level.php
  53. 8
      src/CoreBundle/Entity/Listener/CourseListener.php
  54. 5
      src/CoreBundle/Entity/Listener/MessageListener.php
  55. 21
      src/CoreBundle/Entity/Listener/ResourceListener.php
  56. 20
      src/CoreBundle/Entity/Listener/ResourceNodeListener.php
  57. 7
      src/CoreBundle/Entity/Listener/SessionListener.php
  58. 17
      src/CoreBundle/Entity/Listener/SkillRelUserListener.php
  59. 7
      src/CoreBundle/Entity/Listener/UserListener.php
  60. 5
      src/CoreBundle/Entity/Listener/UserRelUserListener.php
  61. 42
      src/CoreBundle/Entity/MailTemplate.php
  62. 94
      src/CoreBundle/Entity/Message.php
  63. 38
      src/CoreBundle/Entity/MessageAttachment.php
  64. 50
      src/CoreBundle/Entity/MessageRelUser.php
  65. 47
      src/CoreBundle/Entity/MessageTag.php
  66. 55
      src/CoreBundle/Entity/Notification.php
  67. 42
      src/CoreBundle/Entity/NotificationEvent.php
  68. 70
      src/CoreBundle/Entity/Page.php
  69. 34
      src/CoreBundle/Entity/PageCategory.php
  70. 55
      src/CoreBundle/Entity/PersonalAgenda.php
  71. 29
      src/CoreBundle/Entity/PersonalAgendaRepeat.php
  72. 21
      src/CoreBundle/Entity/PersonalAgendaRepeatNot.php
  73. 25
      src/CoreBundle/Entity/PersonalFile.php
  74. 69
      src/CoreBundle/Entity/Portfolio.php
  75. 47
      src/CoreBundle/Entity/PortfolioCategory.php
  76. 33
      src/CoreBundle/Entity/Profile.php
  77. 44
      src/CoreBundle/Entity/Promotion.php
  78. 23
      src/CoreBundle/Entity/ResetPasswordRequest.php
  79. 24
      src/CoreBundle/Entity/Resource/ResourceTag.php
  80. 26
      src/CoreBundle/Entity/Resource/ResourceUserTag.php
  81. 80
      src/CoreBundle/Entity/ResourceComment.php
  82. 97
      src/CoreBundle/Entity/ResourceFile.php
  83. 76
      src/CoreBundle/Entity/ResourceLink.php
  84. 121
      src/CoreBundle/Entity/ResourceNode.php
  85. 30
      src/CoreBundle/Entity/ResourceRight.php
  86. 33
      src/CoreBundle/Entity/ResourceType.php
  87. 39
      src/CoreBundle/Entity/Room.php
  88. 37
      src/CoreBundle/Entity/ScheduledAnnouncement.php
  89. 35
      src/CoreBundle/Entity/SearchEngineRef.php
  90. 24
      src/CoreBundle/Entity/Sequence.php
  91. 45
      src/CoreBundle/Entity/SequenceCondition.php
  92. 25
      src/CoreBundle/Entity/SequenceFormula.php
  93. 48
      src/CoreBundle/Entity/SequenceMethod.php
  94. 29
      src/CoreBundle/Entity/SequenceResource.php
  95. 50
      src/CoreBundle/Entity/SequenceRowEntity.php
  96. 20
      src/CoreBundle/Entity/SequenceRule.php
  97. 25
      src/CoreBundle/Entity/SequenceRuleCondition.php
  98. 29
      src/CoreBundle/Entity/SequenceRuleMethod.php
  99. 34
      src/CoreBundle/Entity/SequenceTypeEntity.php
  100. 32
      src/CoreBundle/Entity/SequenceValid.php
  101. Some files were not shown because too many files have changed in this diff Show More

@ -8,6 +8,7 @@ namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiSubresource;
use Chamilo\CoreBundle\Entity\Listener\ResourceListener;
use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter;
use Chamilo\CoreBundle\Traits\UserCreatorTrait;
use Chamilo\CourseBundle\Entity\CGroup;
@ -17,40 +18,37 @@ use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\MappedSuperclass
* @ORM\HasLifecycleCallbacks
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\ResourceListener"})
*/
#[ORM\MappedSuperclass]
#[ORM\HasLifecycleCallbacks]
#[ORM\EntityListeners([ResourceListener::class])]
abstract class AbstractResource
{
use UserCreatorTrait;
/**
* @ApiProperty(iri="http://schema.org/contentUrl")
* @Groups({"resource_file:read", "resource_node:read", "document:read", "media_object_read", "message:read"})
* @ApiProperty(iri="https://schema.org/contentUrl")
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'media_object_read', 'message:read'])]
public ?string $contentUrl = null;
/**
* Download URL of the Resource File Property set by ResourceNormalizer.php.
*
* @ApiProperty(iri="http://schema.org/contentUrl")
* @Groups({"resource_file:read", "resource_node:read", "document:read", "media_object_read", "message:read"})
* @ApiProperty(iri="https://schema.org/contentUrl")
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'media_object_read', 'message:read'])]
public ?string $downloadUrl = null;
/**
* Content from ResourceFile - Property set by ResourceNormalizer.php.
*
* @Groups({"resource_file:read", "resource_node:read", "document:read", "document:write", "media_object_read"})
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'document:write', 'media_object_read'])]
public ?string $contentFile = null;
/**
* Resource illustration URL - Property set by ResourceNormalizer.php.
*
* @ApiProperty(iri="http://schema.org/contentUrl")
* @ApiProperty(iri="https://schema.org/contentUrl")
*/
#[Groups([
'resource_node:read',
@ -65,14 +63,6 @@ abstract class AbstractResource
])]
public ?string $illustrationUrl = null;
/**
* @ORM\OneToOne(
* targetEntity="Chamilo\CoreBundle\Entity\ResourceNode",
* cascade={"persist", "remove"},
* orphanRemoval=true
* )
* @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Assert\Valid]
#[ApiSubresource]
#[Groups([
@ -86,6 +76,8 @@ abstract class AbstractResource
'message:read',
'c_tool_intro:read',
])]
#[ORM\OneToOne(targetEntity: ResourceNode::class, cascade: ['persist', 'remove'], orphanRemoval: true)]
#[ORM\JoinColumn(name: 'resource_node_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
public ?ResourceNode $resourceNode = null;
/**
@ -95,14 +87,14 @@ abstract class AbstractResource
public ?int $parentResourceNode = 0;
/**
* @ApiProperty(iri="http://schema.org/image")
* @ApiProperty(iri="https://schema.org/image")
*/
public ?UploadedFile $uploadFile = null;
/**
* @var AbstractResource|ResourceInterface
*/
public $parentResource;
public AbstractResource|ResourceInterface $parentResource;
#[Groups(['resource_node:read', 'document:read'])]
public ?array $resourceLinkListFromEntity = null;
@ -115,10 +107,47 @@ abstract class AbstractResource
public array $resourceLinkList = [];
/**
* @var array<\Chamilo\CoreBundle\Entity\ResourceLink>
* @var array<ResourceLink>
*/
public array $resourceLinkEntityList = [];
/**
* This function separates the users from the groups users have a value
* USER:XXX (with XXX the groups id have a value
* GROUP:YYY (with YYY the group id).
*
* @param array $to Array of strings that define the type and id of each destination
*
* @return array Array of groups and users (each an array of IDs)
*/
public static function separateUsersGroups(array $to): array
{
$sendTo = ['groups' => [], 'users' => []];
foreach ($to as $toItem) {
if (empty($toItem)) {
continue;
}
$parts = explode(':', $toItem);
$type = $parts[0] ?? '';
$id = $parts[1] ?? '';
switch ($type) {
case 'GROUP':
$sendTo['groups'][] = (int) $id;
break;
case 'USER':
$sendTo['users'][] = (int) $id;
break;
}
}
return $sendTo;
}
abstract public function getResourceName(): string;
abstract public function setResourceName(string $name);
@ -129,17 +158,14 @@ abstract class AbstractResource
}
/**
* $this->resourceLinkEntityList will be loaded in the ResourceListener in the setLinks() function.
* @throws Exception
*/
public function addLink(ResourceLink $link): static
{
$this->resourceLinkEntityList[] = $link;
return $this;
}
public function addCourseLink(Course $course, Session $session = null, CGroup $group = null, int $visibility = ResourceLink::VISIBILITY_PUBLISHED)
{
public function addCourseLink(
Course $course,
Session $session = null,
CGroup $group = null,
int $visibility = ResourceLink::VISIBILITY_PUBLISHED
): self {
if (null === $this->getParent()) {
throw new Exception('$resource->addCourseLink requires to set the parent first.');
}
@ -148,8 +174,7 @@ abstract class AbstractResource
->setVisibility($visibility)
->setCourse($course)
->setSession($session)
->setGroup($group)
;
->setGroup($group);
$rights = [];
switch ($visibility) {
@ -158,8 +183,7 @@ abstract class AbstractResource
$editorMask = ResourceNodeVoter::getEditorMask();
$resourceRight = (new ResourceRight())
->setMask($editorMask)
->setRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER)
;
->setRole(ResourceNodeVoter::ROLE_CURRENT_COURSE_TEACHER);
$rights[] = $resourceRight;
break;
@ -174,11 +198,9 @@ abstract class AbstractResource
if ($this->hasResourceNode()) {
$resourceNode = $this->getResourceNode();
$exists = $resourceNode->getResourceLinks()->exists(
function ($key, $element) use ($course, $session, $group) {
return $course === $element->getCourse() &&
$session === $element->getSession() &&
$group === $element->getGroup();
}
fn ($key, $element) => $course === $element->getCourse() &&
$session === $element->getSession() &&
$group === $element->getGroup()
);
if ($exists) {
@ -192,45 +214,68 @@ abstract class AbstractResource
return $this;
}
public function addGroupLink(Course $course, CGroup $group, Session $session = null)
public function getParent(): ResourceInterface|AbstractResource
{
$resourceLink = (new ResourceLink())
->setCourse($course)
->setSession($session)
->setGroup($group)
->setVisibility(ResourceLink::VISIBILITY_PUBLISHED)
;
return $this->parentResource;
}
if ($this->hasResourceNode()) {
$resourceNode = $this->getResourceNode();
$exists = $resourceNode->getResourceLinks()->exists(
function ($key, $element) use ($group) {
if ($element->getGroup()) {
return $group->getIid() === $element->getGroup()->getIid();
}
}
);
public function hasResourceNode(): bool
{
return $this->resourceNode instanceof ResourceNode;
}
if ($exists) {
return $this;
public function getResourceNode(): ?ResourceNode
{
return $this->resourceNode;
}
public function setResourceNode(ResourceNode $resourceNode): self
{
$this->resourceNode = $resourceNode;
return $this;
}
/**
* $this->resourceLinkEntityList will be loaded in the ResourceListener in the setLinks() function.
*/
public function addLink(ResourceLink $link): static
{
$this->resourceLinkEntityList[] = $link;
return $this;
}
public function setParent(ResourceInterface $parent): static
{
$this->parentResource = $parent;
return $this;
}
public function addResourceToUserList(
array $userList,
Course $course = null,
Session $session = null,
CGroup $group = null
): static {
if (!empty($userList)) {
foreach ($userList as $user) {
$this->addUserLink($user, $course, $session, $group);
}
$resourceNode->addResourceLink($resourceLink);
} else {
$this->addLink($resourceLink);
}
return $this;
}
public function addUserLink(User $user, Course $course = null, Session $session = null, CGroup $group = null)
public function addUserLink(User $user, Course $course = null, Session $session = null, CGroup $group = null): static
{
$resourceLink = (new ResourceLink())
->setVisibility(ResourceLink::VISIBILITY_PUBLISHED)
->setUser($user)
->setCourse($course)
->setSession($session)
->setGroup($group)
;
->setGroup($group);
if ($this->hasResourceNode()) {
$resourceNode = $this->getResourceNode();
@ -239,6 +284,8 @@ abstract class AbstractResource
if ($element->hasUser()) {
return $user->getId() === $element->getUser()->getId();
}
return false;
}
);
@ -254,61 +301,60 @@ abstract class AbstractResource
return $this;
}
public function setParent(ResourceInterface $parent)
{
$this->parentResource = $parent;
return $this;
}
public function getParent()
{
return $this->parentResource;
}
/**
* @param array $userList User id list
*/
public function addResourceToUserList(
array $userList,
public function addResourceToGroupList(
array $groupList,
Course $course = null,
Session $session = null,
CGroup $group = null
) {
if (!empty($userList)) {
foreach ($userList as $user) {
$this->addUserLink($user, $course, $session, $group);
}
): static {
foreach ($groupList as $group) {
$this->addGroupLink($course, $group, $session);
}
return $this;
}
public function addResourceToGroupList(
array $groupList,
Course $course = null,
Session $session = null,
) {
foreach ($groupList as $group) {
$this->addGroupLink($course, $group, $session);
public function addGroupLink(Course $course, CGroup $group, Session $session = null): static
{
$resourceLink = (new ResourceLink())
->setCourse($course)
->setSession($session)
->setGroup($group)
->setVisibility(ResourceLink::VISIBILITY_PUBLISHED);
if ($this->hasResourceNode()) {
$resourceNode = $this->getResourceNode();
$exists = $resourceNode->getResourceLinks()->exists(
function ($key, $element) use ($group) {
if ($element->getGroup()) {
return $group->getIid() === $element->getGroup()->getIid();
}
}
);
if ($exists) {
return $this;
}
$resourceNode->addResourceLink($resourceLink);
} else {
$this->addLink($resourceLink);
}
return $this;
}
public function getResourceLinkArray()
public function getResourceLinkArray(): array
{
return $this->resourceLinkList;
}
public function setResourceLinkArray(array $links)
public function setResourceLinkArray(array $links): static
{
$this->resourceLinkList = $links;
return $this;
}
public function getResourceLinkListFromEntity()
public function getResourceLinkListFromEntity(): ?array
{
return $this->resourceLinkListFromEntity;
}
@ -340,6 +386,11 @@ abstract class AbstractResource
return null !== $this->parentResourceNode && 0 !== $this->parentResourceNode;
}
public function getParentResourceNode(): ?int
{
return $this->parentResourceNode;
}
public function setParentResourceNode(?int $resourceNode): self
{
$this->parentResourceNode = $resourceNode;
@ -347,11 +398,6 @@ abstract class AbstractResource
return $this;
}
public function getParentResourceNode(): ?int
{
return $this->parentResourceNode;
}
public function hasUploadFile(): bool
{
return null !== $this->uploadFile;
@ -369,23 +415,6 @@ abstract class AbstractResource
return $this;
}
public function setResourceNode(ResourceNode $resourceNode): self
{
$this->resourceNode = $resourceNode;
return $this;
}
public function hasResourceNode(): bool
{
return $this->resourceNode instanceof ResourceNode;
}
public function getResourceNode(): ?ResourceNode
{
return $this->resourceNode;
}
public function getFirstResourceLink(): ?ResourceLink
{
$resourceNode = $this->getResourceNode();
@ -481,41 +510,4 @@ abstract class AbstractResource
'groups' => $groups,
];
}
/**
* This function separates the users from the groups users have a value
* USER:XXX (with XXX the groups id have a value
* GROUP:YYY (with YYY the group id).
*
* @param array $to Array of strings that define the type and id of each destination
*
* @return array Array of groups and users (each an array of IDs)
*/
public static function separateUsersGroups(array $to): array
{
$sendTo = ['groups' => [], 'users' => []];
foreach ($to as $toItem) {
if (empty($toItem)) {
continue;
}
$parts = explode(':', $toItem);
$type = $parts[0] ?? '';
$id = $parts[1] ?? '';
switch ($type) {
case 'GROUP':
$sendTo['groups'][] = (int) $id;
break;
case 'USER':
$sendTo['users'][] = (int) $id;
break;
}
}
return $sendTo;
}
}

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
@ -22,182 +23,125 @@ use Symfony\Component\Validator\Constraints as Assert;
* normalizationContext={"groups"={"access_url:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"access_url:write", "course_category:write"}},
* )
*
* @Gedmo\Tree(type="nested")
* @ORM\Table(name="access_url")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\Node\AccessUrlRepository")
*/
class AccessUrl extends AbstractResource implements ResourceInterface
#[ORM\Table(name: 'access_url')]
#[Gedmo\Tree(type: 'nested')]
#[ORM\Entity(repositoryClass: AccessUrlRepository::class)]
class AccessUrl extends AbstractResource implements ResourceInterface, \Stringable
{
public const DEFAULT_ACCESS_URL = 'http://localhost/';
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*
* @Groups({"access_url:read", "access_url:write"})
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
#[Groups(['access_url:read', 'access_url:write'])]
protected ?int $id = null;
/**
* @var AccessUrlRelCourse[]|Collection<int, AccessUrlRelCourse>
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelCourse", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*/
#[ORM\OneToMany(targetEntity: AccessUrlRelCourse::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $courses;
/**
* @var AccessUrlRelSession[]|Collection<int, AccessUrlRelSession>
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelSession", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*/
#[ORM\OneToMany(targetEntity: AccessUrlRelSession::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $sessions;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelUser", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*
* @var AccessUrlRelUser[]|Collection<int, AccessUrlRelUser>
*/
#[ORM\OneToMany(targetEntity: AccessUrlRelUser::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $users;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SettingsCurrent", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*
* @var Collection<int, SettingsCurrent>|SettingsCurrent[]
*/
#[ORM\OneToMany(targetEntity: SettingsCurrent::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $settings;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SessionCategory", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*
* @var Collection<int, SessionCategory>|SessionCategory[]
*/
#[ORM\OneToMany(targetEntity: SessionCategory::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $sessionCategories;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelCourseCategory", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
*
* @var AccessUrlRelCourseCategory[]|Collection<int, AccessUrlRelCourseCategory>
*/
#[ORM\OneToMany(targetEntity: AccessUrlRelCourseCategory::class, mappedBy: 'url', cascade: ['persist'], orphanRemoval: true)]
protected Collection $courseCategory;
/**
* @Gedmo\TreeParent
*
* @ORM\ManyToOne(
* targetEntity="Chamilo\CoreBundle\Entity\AccessUrl",
* inversedBy="children"
* )
* @ORM\JoinColumns({
* @ORM\JoinColumn(onDelete="CASCADE")
* })
*/
#[ORM\JoinColumn(onDelete: 'CASCADE')]
#[Gedmo\TreeParent]
#[ORM\ManyToOne(targetEntity: AccessUrl::class, inversedBy: 'children')]
protected ?AccessUrl $parent = null;
/**
* @var AccessUrl[]|Collection<int, AccessUrl>
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\AccessUrl",
* mappedBy="parent"
* )
* @ORM\OrderBy({"id" = "ASC"})
*/
#[ORM\OneToMany(targetEntity: AccessUrl::class, mappedBy: 'parent')]
#[ORM\OrderBy(['id' => 'ASC'])]
protected Collection $children;
/**
* @Gedmo\TreeLeft
* @ORM\Column(name="lft", type="integer")
*/
#[Gedmo\TreeLeft]
#[ORM\Column(name: 'lft', type: 'integer')]
protected int $lft;
/**
* @Gedmo\TreeLevel
* @ORM\Column(name="lvl", type="integer")
*/
#[Gedmo\TreeLevel]
#[ORM\Column(name: 'lvl', type: 'integer')]
protected int $lvl;
/**
* @Gedmo\TreeRight
* @ORM\Column(name="rgt", type="integer")
*/
#[Gedmo\TreeRight]
#[ORM\Column(name: 'rgt', type: 'integer')]
protected int $rgt;
/**
* @Gedmo\TreeRoot
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl")
* @ORM\JoinColumn(name="tree_root", onDelete="CASCADE")
*/
#[Gedmo\TreeRoot]
#[ORM\ManyToOne(targetEntity: AccessUrl::class)]
#[ORM\JoinColumn(name: 'tree_root', onDelete: 'CASCADE')]
protected ?AccessUrl $root = null;
/**
* @Groups({"access_url:read", "access_url:write"})
*
* @ORM\Column(name="url", type="string", length=255)
*/
#[Assert\NotBlank]
#[Groups(['access_url:read', 'access_url:write'])]
#[ORM\Column(name: 'url', type: 'string', length: 255)]
protected string $url;
/**
* @ORM\Column(name="description", type="text")
*/
#[ORM\Column(name: 'description', type: 'text')]
protected ?string $description = null;
/**
* @ORM\Column(name="active", type="integer")
*/
#[ORM\Column(name: 'active', type: 'integer')]
protected int $active;
/**
* @ORM\Column(name="created_by", type="integer")
*/
#[ORM\Column(name: 'created_by', type: 'integer')]
protected int $createdBy;
/**
* @ORM\Column(name="tms", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'tms', type: 'datetime', nullable: true)]
protected ?DateTime $tms;
/**
* @ORM\Column(name="url_type", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'url_type', type: 'boolean', nullable: true)]
protected ?bool $urlType = null;
/**
* @ORM\Column(name="limit_courses", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_courses', type: 'integer', nullable: true)]
protected ?int $limitCourses = null;
/**
* @ORM\Column(name="limit_active_courses", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_active_courses', type: 'integer', nullable: true)]
protected ?int $limitActiveCourses = null;
/**
* @ORM\Column(name="limit_sessions", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_sessions', type: 'integer', nullable: true)]
protected ?int $limitSessions = null;
/**
* @ORM\Column(name="limit_users", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_users', type: 'integer', nullable: true)]
protected ?int $limitUsers = null;
/**
* @ORM\Column(name="limit_teachers", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_teachers', type: 'integer', nullable: true)]
protected ?int $limitTeachers = null;
/**
* @ORM\Column(name="limit_disk_space", type="integer", nullable=true)
*/
#[ORM\Column(name: 'limit_disk_space', type: 'integer', nullable: true)]
protected ?int $limitDiskSpace = null;
/**
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
#[Assert\Email]
#[ORM\Column(name: 'email', type: 'string', length: 255, nullable: true)]
protected ?string $email = null;
public function __construct()
@ -409,7 +353,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return Collection<int, SettingsCurrent>|SettingsCurrent[]
*/
public function getSettings()
public function getSettings(): \Doctrine\Common\Collections\Collection|array
{
return $this->settings;
}
@ -417,7 +361,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @param Collection<int, SettingsCurrent>|SettingsCurrent[] $settings
*/
public function setSettings(Collection $settings): self
public function setSettings(\Doctrine\Common\Collections\Collection|array $settings): self
{
$this->settings = $settings;
@ -442,7 +386,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return Collection<int, AccessUrlRelCourse>|AccessUrlRelCourse[]
*/
public function getCourses()
public function getCourses(): \Doctrine\Common\Collections\Collection|array
{
return $this->courses;
}
@ -450,7 +394,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @param AccessUrlRelCourse[]|Collection<int, AccessUrlRelCourse> $courses
*/
public function setCourses(Collection $courses): self
public function setCourses(array|\Doctrine\Common\Collections\Collection $courses): self
{
$this->courses = $courses;
@ -460,7 +404,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return SessionCategory[]|Collection
*/
public function getSessionCategories()
public function getSessionCategories(): array|\Doctrine\Common\Collections\Collection
{
return $this->sessionCategories;
}
@ -468,7 +412,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @param Collection<int, SessionCategory>|SessionCategory[] $sessionCategories
*/
public function setSessionCategories(Collection $sessionCategories): self
public function setSessionCategories(\Doctrine\Common\Collections\Collection|array $sessionCategories): self
{
$this->sessionCategories = $sessionCategories;
@ -478,7 +422,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return AccessUrlRelSession[]|Collection
*/
public function getSessions()
public function getSessions(): array|\Doctrine\Common\Collections\Collection
{
return $this->sessions;
}
@ -486,7 +430,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return AccessUrl[]|Collection
*/
public function getChildren()
public function getChildren(): array|\Doctrine\Common\Collections\Collection
{
return $this->children;
}
@ -494,7 +438,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return AccessUrlRelUser[]|Collection
*/
public function getUsers()
public function getUsers(): array|\Doctrine\Common\Collections\Collection
{
return $this->users;
}
@ -534,7 +478,7 @@ class AccessUrl extends AbstractResource implements ResourceInterface
/**
* @return AccessUrlRelCourseCategory[]|Collection
*/
public function getCourseCategory()
public function getCourseCategory(): array|\Doctrine\Common\Collections\Collection
{
return $this->courseCategory;
}

@ -8,34 +8,28 @@ namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Traits\CourseTrait;
use Doctrine\ORM\Mapping as ORM;
use Stringable;
/**
* AccessUrlRelCourse.
*
* @ORM\Table(name="access_url_rel_course")
* @ORM\Entity
*/
class AccessUrlRelCourse implements EntityAccessUrlInterface
#[ORM\Table(name: 'access_url_rel_course')]
#[ORM\Entity]
class AccessUrlRelCourse implements EntityAccessUrlInterface, Stringable
{
use CourseTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="urls", cascade={"persist"})
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: Course::class, cascade: ['persist'], inversedBy: 'urls')]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id')]
protected Course $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", inversedBy="courses", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class, cascade: ['persist'], inversedBy: 'courses')]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected AccessUrl $url;
public function __toString(): string
@ -45,14 +39,17 @@ class AccessUrlRelCourse implements EntityAccessUrlInterface
/**
* Get id.
*
* @return int
*/
public function getId()
public function getId(): ?int
{
return $this->id;
}
public function getUrl(): AccessUrl
{
return $this->url;
}
public function setUrl(AccessUrl $url): self
{
$this->url = $url;
@ -60,11 +57,6 @@ class AccessUrlRelCourse implements EntityAccessUrlInterface
return $this;
}
public function getUrl(): AccessUrl
{
return $this->url;
}
public function getCourse(): Course
{
return $this->course;

@ -10,29 +10,22 @@ use Doctrine\ORM\Mapping as ORM;
/**
* AccessUrlRelCourseCategory.
*
* @ORM\Table(name="access_url_rel_course_category")
* @ORM\Entity
*/
#[ORM\Table(name: 'access_url_rel_course_category')]
#[ORM\Entity]
class AccessUrlRelCourseCategory implements EntityAccessUrlInterface
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", inversedBy="courseCategory", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class, cascade: ['persist'], inversedBy: 'courseCategory')]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected AccessUrl $url;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\CourseCategory", inversedBy="urls", cascade={"persist"})
* @ORM\JoinColumn(name="course_category_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: CourseCategory::class, cascade: ['persist'], inversedBy: 'urls')]
#[ORM\JoinColumn(name: 'course_category_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected CourseCategory $courseCategory;
public function getUrl(): AccessUrl

@ -10,29 +10,22 @@ use Doctrine\ORM\Mapping as ORM;
/**
* AccessUrlRelSession.
*
* @ORM\Table(name="access_url_rel_session")
* @ORM\Entity
*/
#[ORM\Table(name: 'access_url_rel_session')]
#[ORM\Entity]
class AccessUrlRelSession implements EntityAccessUrlInterface
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session", inversedBy="urls", cascade={"persist"})
* @ORM\JoinColumn(name="session_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: Session::class, inversedBy: 'urls', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'session_id', referencedColumnName: 'id')]
protected ?Session $session = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", inversedBy="sessions", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class, inversedBy: 'sessions', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected ?AccessUrl $url = null;
/**

@ -8,39 +8,28 @@ namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Traits\UserTrait;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="access_url_rel_user",
* indexes={
* @ORM\Index(name="idx_access_url_rel_user_user", columns={"user_id"}),
* @ORM\Index(name="idx_access_url_rel_user_access_url", columns={"access_url_id"}),
* @ORM\Index(name="idx_access_url_rel_user_access_url_user", columns={"user_id", "access_url_id"})
* }
* )
* @ORM\Entity
*/
class AccessUrlRelUser implements EntityAccessUrlInterface
use Stringable;
#[ORM\Table(name: 'access_url_rel_user')]
#[ORM\Index(name: 'idx_access_url_rel_user_user', columns: ['user_id'])]
#[ORM\Index(name: 'idx_access_url_rel_user_access_url', columns: ['access_url_id'])]
#[ORM\Index(name: 'idx_access_url_rel_user_access_url_user', columns: ['user_id', 'access_url_id'])]
#[ORM\Entity]
class AccessUrlRelUser implements EntityAccessUrlInterface, Stringable
{
use UserTrait;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="id", type="integer")
*/
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(name: 'id', type: 'integer')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="portals")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'portals')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", inversedBy="users", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class, cascade: ['persist'], inversedBy: 'users')]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected AccessUrl $url;
public function __toString(): string

@ -10,29 +10,22 @@ use Doctrine\ORM\Mapping as ORM;
/**
* AccessUrlRelUser.
*
* @ORM\Table(name="access_url_rel_usergroup")
* @ORM\Entity
*/
#[ORM\Table(name: 'access_url_rel_usergroup')]
#[ORM\Entity]
class AccessUrlRelUserGroup implements EntityAccessUrlInterface
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl")
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class)]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected AccessUrl $url;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Usergroup", inversedBy="urls", cascade={"persist"})
* @ORM\JoinColumn(name="usergroup_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: Usergroup::class, inversedBy: 'urls', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'usergroup_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Usergroup $userGroup;
/**

@ -11,25 +11,20 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Admin list.
*
* @ORM\Table(name="admin")
* @ORM\Entity
*/
#[ORM\Table(name: 'admin')]
#[ORM\Entity]
class Admin
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="admin")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\OneToOne(targetEntity: User::class, inversedBy: 'admin')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**

@ -8,24 +8,18 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="announcement_rel_group")
* @ORM\Entity
*/
#[ORM\Table(name: 'announcement_rel_group')]
#[ORM\Entity]
class AnnouncementRelGroup
{
/**
* @ORM\Column(name="group_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'group_id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected int $groupId;
/**
* @ORM\Column(name="announcement_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'announcement_id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected int $announcementId;
/**

@ -20,10 +20,10 @@ use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
* @ORM\Entity
* @ORM\Table(name="asset")
*/
class Asset
#[ORM\Table(name: 'asset')]
#[ORM\Entity]
class Asset implements \Stringable
{
use TimestampableEntity;
@ -36,32 +36,17 @@ class Asset
public const EXERCISE_ATTEMPT = 'exercise_attempt';
public const EXERCISE_FEEDBACK = 'exercise_feedback';
/**
* @ORM\Id
* @ORM\Column(type="uuid")
*/
#[ORM\Id]
#[ORM\Column(type: 'uuid')]
protected Uuid $id;
/**
* @ORM\Column(type="string", length=255)
*/
#[Assert\NotBlank]
#[ORM\Column(type: 'string', length: 255)]
protected ?string $title = null;
/**
* @Assert\Choice({
* Asset::SCORM,
* Asset::WATERMARK,
* Asset::EXTRA_FIELD,
* Asset::COURSE_CATEGORY,
* Asset::SKILL,
* },
* message="Choose a valid category."
* )
*
* @ORM\Column(type="string", length=255)
*/
#[Assert\NotBlank]
#[Assert\Choice([Asset::SCORM, Asset::WATERMARK, Asset::EXTRA_FIELD, Asset::COURSE_CATEGORY, Asset::SKILL], message: 'Choose a valid category.')]
#[ORM\Column(type: 'string', length: 255)]
protected ?string $category = null;
/**
@ -74,64 +59,48 @@ class Asset
* dimensions="dimensions"
* )
*/
// #[Vich\UploadableField(
// mapping: 'assets',
// fileNameProperty: 'title',
// size: 'size',
// mimeType: 'mimeType',
// originalName: 'originalName',
// dimensions: 'dimensions'
// )]
// #[Vich\UploadableField(
// mapping: 'assets',
// fileNameProperty: 'title',
// size: 'size',
// mimeType: 'mimeType',
// originalName: 'originalName',
// dimensions: 'dimensions'
// )]
#[Assert\NotNull]
protected File $file;
/**
* @ORM\Column(type="boolean")
*/
#[ORM\Column(type: 'boolean')]
protected bool $compressed;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read"})
* @ORM\Column(type="text", nullable=true)
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read'])]
#[ORM\Column(type: 'text', nullable: true)]
protected ?string $mimeType = null;
/**
* @ORM\Column(type="text", nullable=true)
*/
#[ORM\Column(type: 'text', nullable: true)]
protected ?string $originalName = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read"})
* @ORM\Column(type="simple_array", nullable=true)
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read'])]
#[ORM\Column(type: 'simple_array', nullable: true)]
protected ?array $dimensions;
/**
* @ORM\Column(type="integer")
*/
#[ORM\Column(type: 'integer')]
protected ?int $size = null;
/**
* @ORM\Column(name="crop", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'crop', type: 'string', length: 255, nullable: true)]
protected ?string $crop = null;
/**
* @ORM\Column(type="array", nullable=true)
*/
#[ORM\Column(type: 'array', nullable: true)]
protected ?array $metadata;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @var DateTime|DateTimeImmutable
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
#[Gedmo\Timestampable(on: 'update')]
#[ORM\Column(type: 'datetime')]
protected $updatedAt;
public function __construct()
@ -295,7 +264,7 @@ class Asset
/**
* @param File|UploadedFile $file
*/
public function setFile(File $file = null): self
public function setFile(File|UploadedFile $file = null): self
{
$this->file = $file;

@ -11,45 +11,31 @@ use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="attempt_feedback",
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'attempt_feedback')]
#[ORM\Entity]
class AttemptFeedback
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="uuid")
*/
#[ORM\Id]
#[ORM\Column(type: 'uuid')]
protected Uuid $id;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\TrackEAttempt", inversedBy="attemptFeedbacks")
* @ORM\JoinColumn(name="attempt_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\TrackEAttempt::class, inversedBy: 'attemptFeedbacks')]
#[ORM\JoinColumn(name: 'attempt_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected TrackEAttempt $attempt;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Asset", cascade={"remove"} )
* @ORM\JoinColumn(name="asset_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Asset::class, cascade: ['remove'])]
#[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Asset $asset = null;
/**
* @ORM\Column(name="comment", type="text", nullable=false)
*/
#[ORM\Column(name: 'comment', type: 'text', nullable: false)]
protected string $comment;
public function __construct()

@ -11,38 +11,26 @@ use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="attempt_file",
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'attempt_file')]
#[ORM\Entity]
class AttemptFile
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="uuid")
*/
#[ORM\Id]
#[ORM\Column(type: 'uuid')]
protected Uuid $id;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\TrackEAttempt", inversedBy="attemptFiles")
* @ORM\JoinColumn(name="attempt_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: TrackEAttempt::class, inversedBy: 'attemptFiles')]
#[ORM\JoinColumn(name: 'attempt_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected TrackEAttempt $attempt;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Asset", cascade={"remove"} )
* @ORM\JoinColumn(name="asset_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected ?Asset $asset;
#[ORM\ManyToOne(targetEntity: Asset::class, cascade: ['remove'])]
#[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Asset $asset = null;
/**
* @ORM\Column(name="comment", type="text", nullable=false)
*/
#[ORM\Column(name: 'comment', type: 'text', nullable: false)]
protected string $comment;
public function __construct()

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Repository\BranchSyncRepository;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
@ -14,148 +15,99 @@ use Gedmo\Mapping\Annotation as Gedmo;
/**
* BranchSync.
*
* @ORM\Table(name="branch_sync")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\BranchSyncRepository")
* @Gedmo\Tree(type="nested")
*/
#[ORM\Table(name: 'branch_sync')]
#[ORM\Entity(repositoryClass: BranchSyncRepository::class)]
#[Gedmo\Tree(type: 'nested')]
class BranchSync
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: AccessUrl::class, cascade: ['persist'])]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id')]
protected AccessUrl $url;
/**
* @ORM\Column(name="unique_id", type="string", length=50, nullable=false, unique=true)
*/
#[ORM\Column(name: 'unique_id', type: 'string', length: 50, nullable: false, unique: true)]
protected string $uniqueId;
/**
* @ORM\Column(name="branch_name", type="string", length=250)
*/
#[ORM\Column(name: 'branch_name', type: 'string', length: 250)]
protected string $branchName;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="branch_ip", type="string", length=40, nullable=true, unique=false)
*/
#[ORM\Column(name: 'branch_ip', type: 'string', length: 40, nullable: true, unique: false)]
protected ?string $branchIp = null;
/**
* @ORM\Column(name="latitude", type="decimal", nullable=true, unique=false)
*/
#[ORM\Column(name: 'latitude', type: 'decimal', nullable: true, unique: false)]
protected ?float $latitude = null;
/**
* @ORM\Column(name="longitude", type="decimal", nullable=true, unique=false)
*/
#[ORM\Column(name: 'longitude', type: 'decimal', nullable: true, unique: false)]
protected ?float $longitude = null;
/**
* @ORM\Column(name="dwn_speed", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'dwn_speed', type: 'integer', nullable: true, unique: false)]
protected ?int $dwnSpeed = null;
/**
* @ORM\Column(name="up_speed", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'up_speed', type: 'integer', nullable: true, unique: false)]
protected ?int $upSpeed = null;
/**
* @ORM\Column(name="delay", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'delay', type: 'integer', nullable: true, unique: false)]
protected ?int $delay = null;
/**
* @ORM\Column(name="admin_mail", type="string", length=250, nullable=true, unique=false)
*/
#[ORM\Column(name: 'admin_mail', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $adminMail = null;
/**
* @ORM\Column(name="admin_name", type="string", length=250, nullable=true, unique=false)
*/
#[ORM\Column(name: 'admin_name', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $adminName = null;
/**
* @ORM\Column(name="admin_phone", type="string", length=250, nullable=true, unique=false)
*/
#[ORM\Column(name: 'admin_phone', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $adminPhone = null;
/**
* @ORM\Column(name="last_sync_trans_id", type="bigint", nullable=true, unique=false)
*/
#[ORM\Column(name: 'last_sync_trans_id', type: 'bigint', nullable: true, unique: false)]
protected ?int $lastSyncTransId = null;
/**
* @ORM\Column(name="last_sync_trans_date", type="datetime", nullable=true, unique=false)
*/
#[ORM\Column(name: 'last_sync_trans_date', type: 'datetime', nullable: true, unique: false)]
protected ?DateTime $lastSyncTransDate = null;
/**
* @ORM\Column(name="last_sync_type", type="string", length=20, nullable=true, unique=false)
*/
#[ORM\Column(name: 'last_sync_type', type: 'string', length: 20, nullable: true, unique: false)]
protected ?string $lastSyncType = null;
/**
* @ORM\Column(name="ssl_pub_key", type="string", length=250, nullable=true, unique=false)
*/
#[ORM\Column(name: 'ssl_pub_key', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $sslPubKey;
/**
* @ORM\Column(name="branch_type", type="string", length=250, nullable=true, unique=false)
*/
#[ORM\Column(name: 'branch_type', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $branchType = null;
/**
* @Gedmo\TreeLeft
* @ORM\Column(name="lft", type="integer", nullable=true, unique=false)
*/
#[Gedmo\TreeLeft]
#[ORM\Column(name: 'lft', type: 'integer', nullable: true, unique: false)]
protected ?int $lft = null;
/**
* @Gedmo\TreeRight
* @ORM\Column(name="rgt", type="integer", nullable=true, unique=false)
*/
#[Gedmo\TreeRight]
#[ORM\Column(name: 'rgt', type: 'integer', nullable: true, unique: false)]
protected ?int $rgt = null;
/**
* @Gedmo\TreeLevel
* @ORM\Column(name="lvl", type="integer", nullable=true, unique=false)
*/
#[Gedmo\TreeLevel]
#[ORM\Column(name: 'lvl', type: 'integer', nullable: true, unique: false)]
protected ?int $lvl = null;
/**
* @Gedmo\TreeRoot
* @ORM\Column(name="root", type="integer", nullable=true, unique=false)
*/
#[Gedmo\TreeRoot]
#[ORM\Column(name: 'root', type: 'integer', nullable: true, unique: false)]
protected ?int $root = null;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\BranchSync", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[Gedmo\TreeParent]
#[ORM\ManyToOne(targetEntity: BranchSync::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?BranchSync $parent = null;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\BranchSync", mappedBy="parent")
* @ORM\OrderBy({"lft"="ASC"})
*
* @var BranchSync[]|Collection
*/
#[ORM\OneToMany(targetEntity: BranchSync::class, mappedBy: 'parent')]
#[ORM\OrderBy(['lft' => 'ASC'])]
protected Collection $children;
public function __construct()
@ -626,7 +578,7 @@ class BranchSync
/**
* @return BranchSync[]|Collection
*/
public function getChildren()
public function getChildren(): array|\Doctrine\Common\Collections\Collection
{
return $this->children;
}

@ -11,74 +11,49 @@ use Doctrine\ORM\Mapping as ORM;
/**
* BranchTransaction.
*
* @ORM\Table(name="branch_transaction")
* @ORM\Entity
*/
#[ORM\Table(name: 'branch_transaction')]
#[ORM\Entity]
class BranchTransaction
{
/**
* @ORM\Column(name="id", type="bigint", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'bigint', nullable: false)]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\BranchTransactionStatus")
* @ORM\JoinColumn(name="status_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: BranchTransactionStatus::class)]
#[ORM\JoinColumn(name: 'status_id', referencedColumnName: 'id')]
protected Room $branchTransactionStatus;
/**
* @ORM\Column(name="transaction_id", type="bigint")
*/
#[ORM\Column(name: 'transaction_id', type: 'bigint')]
protected int $externalTransactionId;
/**
* @ORM\Column(name="action", type="string", length=20, nullable=true, unique=false)
*/
#[ORM\Column(name: 'action', type: 'string', length: 20, nullable: true, unique: false)]
protected ?string $action = null;
/**
* @ORM\Column(name="item_id", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'item_id', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $itemId = null;
/**
* @ORM\Column(name="origin", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'origin', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $origin = null;
/**
* @ORM\Column(name="dest_id", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'dest_id', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $destId = null;
/**
* @ORM\Column(name="external_info", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'external_info', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $externalInfo = null;
/**
* @ORM\Column(name="time_insert", type="datetime")
*/
#[ORM\Column(name: 'time_insert', type: 'datetime')]
protected DateTime $timeInsert;
/**
* @ORM\Column(name="time_update", type="datetime")
*/
#[ORM\Column(name: 'time_update', type: 'datetime')]
protected DateTime $timeUpdate;
/**
* @ORM\Column(name="failed_attempts", type="integer")
*/
#[ORM\Column(name: 'failed_attempts', type: 'integer')]
protected int $failedAttempts;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\BranchSync")
* @ORM\JoinColumn(name="branch_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: BranchSync::class)]
#[ORM\JoinColumn(name: 'branch_id', referencedColumnName: 'id')]
protected BranchSync $branch;
/**

@ -10,22 +10,17 @@ use Doctrine\ORM\Mapping as ORM;
/**
* BranchTransactionStatus.
*
* @ORM\Table(name="branch_transaction_status")
* @ORM\Entity
*/
#[ORM\Table(name: 'branch_transaction_status')]
#[ORM\Entity]
class BranchTransactionStatus
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=false, unique=false)
*/
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false, unique: false)]
protected string $title;
/**

@ -14,10 +14,9 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* Career.
*
* @ORM\Table(name="career")
* @ORM\Entity
*/
#[ORM\Table(name: 'career')]
#[ORM\Entity]
class Career
{
use TimestampableEntity;
@ -25,36 +24,25 @@ class Career
public const CAREER_STATUS_ACTIVE = 1;
public const CAREER_STATUS_INACTIVE = 0;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected ?string $description = null;
/**
* @ORM\Column(name="status", type="integer", nullable=false)
*/
#[ORM\Column(name: 'status', type: 'integer', nullable: false)]
protected int $status;
/**
* @var Collection|Promotion[]
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\Promotion", mappedBy="career", cascade={"persist"}
* )
*/
#[ORM\OneToMany(targetEntity: Promotion::class, mappedBy: 'career', cascade: ['persist'])]
protected Collection $promotions;
public function __construct()

@ -11,45 +11,31 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Chat.
*
* @ORM\Table(name="chat", indexes={
* @ORM\Index(name="idx_chat_to_user", columns={"to_user"}),
* @ORM\Index(name="idx_chat_from_user", columns={"from_user"})
* })
* @ORM\Entity
*/
#[ORM\Table(name: 'chat')]
#[ORM\Index(name: 'idx_chat_to_user', columns: ['to_user'])]
#[ORM\Index(name: 'idx_chat_from_user', columns: ['from_user'])]
#[ORM\Entity]
class Chat
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="from_user", type="integer", nullable=true)
*/
#[ORM\Column(name: 'from_user', type: 'integer', nullable: true)]
protected ?int $fromUser = null;
/**
* @ORM\Column(name="to_user", type="integer", nullable=true)
*/
#[ORM\Column(name: 'to_user', type: 'integer', nullable: true)]
protected ?int $toUser = null;
/**
* @ORM\Column(name="message", type="text", nullable=false)
*/
#[ORM\Column(name: 'message', type: 'text', nullable: false)]
protected string $message;
/**
* @ORM\Column(name="sent", type="datetime", nullable=false)
*/
#[ORM\Column(name: 'sent', type: 'datetime', nullable: false)]
protected DateTime $sent;
/**
* @ORM\Column(name="recd", type="integer", nullable=false)
*/
#[ORM\Column(name: 'recd', type: 'integer', nullable: false)]
protected int $recd;
/**

@ -11,46 +11,30 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Chat.
*
* @ORM\Table(
* name="chat_video",
* options={"row_format"="DYNAMIC"},
* indexes={
* @ORM\Index(name="idx_chat_video_to_user", columns={"to_user"}),
* @ORM\Index(name="idx_chat_video_from_user", columns={"from_user"}),
* @ORM\Index(name="idx_chat_video_users", columns={"from_user", "to_user"}),
* @ORM\Index(name="idx_chat_video_room_name", columns={"room_name"})
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'chat_video', options: ['row_format' => 'DYNAMIC'])]
#[ORM\Index(name: 'idx_chat_video_to_user', columns: ['to_user'])]
#[ORM\Index(name: 'idx_chat_video_from_user', columns: ['from_user'])]
#[ORM\Index(name: 'idx_chat_video_users', columns: ['from_user', 'to_user'])]
#[ORM\Index(name: 'idx_chat_video_room_name', columns: ['room_name'])]
#[ORM\Entity]
class ChatVideo
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="from_user", type="integer", nullable=false)
*/
#[ORM\Column(name: 'from_user', type: 'integer', nullable: false)]
protected int $fromUser;
/**
* @ORM\Column(name="to_user", type="integer", nullable=false)
*/
#[ORM\Column(name: 'to_user', type: 'integer', nullable: false)]
protected int $toUser;
/**
* @ORM\Column(name="room_name", type="string", nullable=false)
*/
#[ORM\Column(name: 'room_name', type: 'string', nullable: false)]
protected string $roomName;
/**
* @ORM\Column(name="datetime", type="datetime", nullable=false)
*/
#[ORM\Column(name: 'datetime', type: 'datetime', nullable: false)]
protected DateTime $datetime;
/**

@ -14,6 +14,9 @@ use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
use Chamilo\CoreBundle\Entity\Listener\CourseListener;
use Chamilo\CoreBundle\Entity\Listener\ResourceListener;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CourseBundle\Entity\CGroup;
use Chamilo\CourseBundle\Entity\CTool;
use DateTime;
@ -26,17 +29,6 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="course",
* indexes={
* }
* )
* @UniqueEntity("code")
* @UniqueEntity("visualCode")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\Node\CourseRepository")
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\ResourceListener", "Chamilo\CoreBundle\Entity\Listener\CourseListener"})
*/
#[ApiResource(
iri: 'https://schema.org/Course',
attributes: [
@ -67,8 +59,13 @@ use Symfony\Component\Validator\Constraints as Assert;
//#[ApiFilter(BooleanFilter::class, properties: ['isSticky'])]
#[ApiFilter(PropertyFilter::class)]
#[ApiFilter(OrderFilter::class, properties: ['id', 'title'])]
#[ORM\Table(name: 'course')]
#[UniqueEntity('code')]
#[UniqueEntity('visualCode')]
#[ORM\Entity(repositoryClass: CourseRepository::class)]
#[ORM\EntityListeners([ResourceListener::class, CourseListener::class])]
class Course extends AbstractResource implements ResourceInterface, ResourceWithAccessUrlInterface, ResourceIllustrationInterface, ExtraFieldItemInterface
class Course extends AbstractResource implements ResourceInterface, ResourceWithAccessUrlInterface, ResourceIllustrationInterface, ExtraFieldItemInterface, \Stringable
{
public const CLOSED = 0;
public const REGISTERED = 1; // Only registered users in the course.
@ -76,11 +73,6 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
public const OPEN_WORLD = 3;
public const HIDDEN = 4;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[Groups([
'course:read',
'course_rel_user:read',
@ -90,12 +82,13 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
'session_rel_course:read',
'track_e_exercise:read',
])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* The course title.
*
* @ORM\Column(name="title", type="string", length=250, nullable=true, unique=false)
*/
#[Groups([
'course:read',
@ -107,37 +100,24 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
'session_rel_course:read',
])]
#[Assert\NotBlank(message: 'A Course requires a title')]
#[ORM\Column(name: 'title', type: 'string', length: 250, nullable: true, unique: false)]
protected ?string $title = null;
/**
* The course code.
*
* @Assert\Length(
* max = 40,
* maxMessage = "Code cannot be longer than {{ limit }} characters"
* )
* @ApiProperty(iri="http://schema.org/courseCode")
*
* @Gedmo\Slug(
* fields={"title"},
* updatable=false,
* unique=true,
* separator="",
* style="upper"
* )
* @ORM\Column(name="code", type="string", length=40, nullable=false, unique=true)
*/
#[Groups(['course:read', 'user:write', 'course_rel_user:read'])]
#[Assert\NotBlank]
#[Assert\Length(max: 40, maxMessage: 'Code cannot be longer than {{ limit }} characters')]
#[Gedmo\Slug(fields: ['title'], updatable: false, unique: true, separator: '', style: 'upper')]
#[ORM\Column(name: 'code', type: 'string', length: 40, nullable: false, unique: true)]
protected string $code;
/**
* @Assert\Length(
* max = 40,
* maxMessage = "Code cannot be longer than {{ limit }} characters"
* )
* @ORM\Column(name="visual_code", type="string", length=40, nullable=true, unique=false)
*/
#[Assert\Length(max: 40, maxMessage: 'Code cannot be longer than {{ limit }} characters')]
#[ORM\Column(name: 'visual_code', type: 'string', length: 40, nullable: true, unique: false)]
protected ?string $visualCode = null;
/**
@ -146,11 +126,10 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
* "orphanRemoval" is needed to delete the CourseRelUser relation
* in the CourseAdmin class. The setUsers, getUsers, removeUsers and
* addUsers methods need to be added.
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseRelUser", mappedBy="course", cascade={"persist"}, orphanRemoval=true)
*/
#[Groups(['course:read', 'user:read'])]
#[ApiSubresource]
#[ORM\OneToMany(targetEntity: CourseRelUser::class, mappedBy: 'course', cascade: ['persist'], orphanRemoval: true)]
protected Collection $users;
/**
@ -159,57 +138,41 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
* "orphanRemoval" is needed to delete the CourseRelUser relation
* in the CourseAdmin class. The setUsers, getUsers, removeUsers and
* addUsers methods need to be added.
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseRelUser", mappedBy="course", cascade={"persist"})
*/
#[Groups(['course:read', 'user:read'])]
#[ORM\OneToMany(targetEntity: CourseRelUser::class, mappedBy: 'course', cascade: ['persist'])]
protected Collection $teachers;
/**
* @var AccessUrlRelCourse[]|Collection
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelCourse",
* mappedBy="course", cascade={"persist", "remove"}, orphanRemoval=true
* )
*/
#[ORM\OneToMany(targetEntity: AccessUrlRelCourse::class, mappedBy: 'course', cascade: ['persist', 'remove'], orphanRemoval: true)]
protected Collection $urls;
/**
* @var Collection|SessionRelCourse[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SessionRelCourse", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: SessionRelCourse::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $sessions;
/**
* @var Collection|SessionRelCourseRelUser[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SessionRelCourseRelUser", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\SessionRelCourseRelUser::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $sessionRelCourseRelUsers;
/**
* @var Collection|CTool[]
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CourseBundle\Entity\CTool",
* mappedBy="course",
* cascade={"persist", "remove"}
* )
*/
#[Groups(['course:read'])]
#[ORM\OneToMany(targetEntity: \Chamilo\CourseBundle\Entity\CTool::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $tools;
/**
* @var TrackCourseRanking
*
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\TrackCourseRanking",
* mappedBy="course",
* cascade={"persist", "remove"},
* orphanRemoval=true)
*/
#[Groups(['course:read'])]
#[ORM\OneToOne(targetEntity: TrackCourseRanking::class, mappedBy: 'course', cascade: ['persist', 'remove'], orphanRemoval: true)]
protected TrackCourseRanking|null $trackCourseRanking = null;
protected Session $currentSession;
@ -217,217 +180,158 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @var Collection|SkillRelCourse[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SkillRelCourse", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: SkillRelCourse::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $skills;
/**
* @var Collection|SkillRelUser[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SkillRelUser", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: SkillRelUser::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $issuedSkills;
/**
* @var Collection|GradebookCategory[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: GradebookCategory::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $gradebookCategories;
/**
* @var Collection|GradebookEvaluation[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookEvaluation", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: GradebookEvaluation::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $gradebookEvaluations;
/**
* @var Collection|GradebookLink[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookLink", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: GradebookLink::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $gradebookLinks;
/**
* @var Collection|TrackEHotspot[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\TrackEHotspot", mappedBy="course", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: TrackEHotspot::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $trackEHotspots;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SearchEngineRef", mappedBy="course", cascade={"persist", "remove"})
*
* @var SearchEngineRef[]|Collection
*/
#[ORM\OneToMany(targetEntity: SearchEngineRef::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $searchEngineRefs;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Templates", mappedBy="course", cascade={"persist", "remove"})
*
* @var Templates[]|Collection
*/
#[ORM\OneToMany(targetEntity: Templates::class, mappedBy: 'course', cascade: ['persist', 'remove'])]
protected Collection $templates;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SpecificFieldValues", mappedBy="course")
* ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SpecificFieldValues", mappedBy="course")
*/
//protected $specificFieldValues;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SharedSurvey", mappedBy="course")
* ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SharedSurvey", mappedBy="course")
*/
//protected $sharedSurveys;
/**
* @ORM\Column(name="directory", type="string", length=40, nullable=true, unique=false)
*/
#[ORM\Column(name: 'directory', type: 'string', length: 40, nullable: true, unique: false)]
protected ?string $directory = null;
/**
* @ORM\Column(name="course_language", type="string", length=20, nullable=false, unique=false)
*/
#[Groups(['course:read', 'session:read'])]
#[Assert\NotBlank]
#[ORM\Column(name: 'course_language', type: 'string', length: 20, nullable: false, unique: false)]
protected string $courseLanguage;
/**
* @ORM\Column(name="description", type="text", nullable=true, unique=false)
*/
#[Groups(['course:read', 'course_rel_user:read'])]
#[ORM\Column(name: 'description', type: 'text', nullable: true, unique: false)]
protected ?string $description;
/**
* @ORM\Column(name="introduction", type="text", nullable=true)
*/
#[Groups(['course:read', 'course_rel_user:read'])]
#[ORM\Column(name: 'introduction', type: 'text', nullable: true)]
protected ?string $introduction;
/**
* @var CourseCategory[]|Collection
*
* @ORM\ManyToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseCategory", inversedBy="courses")
* @ORM\JoinTable(
* name="course_rel_category",
* joinColumns={
* @ORM\JoinColumn(name="course_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="course_category_id", referencedColumnName="id")}
* )
*/
#[ApiSubresource]
#[Groups(['course:read', 'course:write', 'course_rel_user:read', 'session:read'])]
#[ORM\JoinTable(name: 'course_rel_category')]
#[ORM\JoinColumn(name: 'course_id', referencedColumnName: 'id')]
#[ORM\InverseJoinColumn(name: 'course_category_id', referencedColumnName: 'id')]
#[ORM\ManyToMany(targetEntity: CourseCategory::class, inversedBy: 'courses')]
protected Collection $categories;
/**
* @var int Course visibility
*
* @ORM\Column(name="visibility", type="integer", nullable=false, unique=false)
*/
#[Assert\NotBlank]
#[Groups(['course:read', 'course:write'])]
#[ORM\Column(name: 'visibility', type: 'integer', nullable: false, unique: false)]
protected int $visibility;
/**
* @ORM\Column(name="show_score", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'show_score', type: 'integer', nullable: true, unique: false)]
protected ?int $showScore = null;
/**
* @ORM\Column(name="tutor_name", type="string", length=200, nullable=true, unique=false)
*/
#[ORM\Column(name: 'tutor_name', type: 'string', length: 200, nullable: true, unique: false)]
protected ?string $tutorName;
/**
* @ORM\Column(name="department_name", type="string", length=30, nullable=true, unique=false)
*/
#[Groups(['course:read'])]
#[ORM\Column(name: 'department_name', type: 'string', length: 30, nullable: true, unique: false)]
protected ?string $departmentName = null;
/**
* @ORM\Column(name="department_url", type="string", length=180, nullable=true, unique=false)
*/
#[Assert\Url]
#[Groups(['course:read', 'course:write'])]
#[ORM\Column(name: 'department_url', type: 'string', length: 180, nullable: true, unique: false)]
protected ?string $departmentUrl = null;
/**
* @ORM\Column(name="video_url", type="string", length=255)
*/
#[Assert\Url]
#[Groups(['course:read', 'course:write'])]
#[ORM\Column(name: 'video_url', type: 'string', length: 255)]
protected string $videoUrl;
/**
* @ORM\Column(name="sticky", type="boolean")
*/
#[Groups(['course:read', 'course:write'])]
#[ORM\Column(name: 'sticky', type: 'boolean')]
protected bool $sticky;
/**
* @ORM\Column(name="disk_quota", type="bigint", nullable=true, unique=false)
*/
#[ORM\Column(name: 'disk_quota', type: 'bigint', nullable: true, unique: false)]
protected ?int $diskQuota = null;
/**
* @ORM\Column(name="last_visit", type="datetime", nullable=true, unique=false)
*/
#[ORM\Column(name: 'last_visit', type: 'datetime', nullable: true, unique: false)]
protected ?DateTime $lastVisit;
/**
* @ORM\Column(name="last_edit", type="datetime", nullable=true, unique=false)
*/
#[ORM\Column(name: 'last_edit', type: 'datetime', nullable: true, unique: false)]
protected ?DateTime $lastEdit;
/**
* @ORM\Column(name="creation_date", type="datetime", nullable=false, unique=false)
*/
#[ORM\Column(name: 'creation_date', type: 'datetime', nullable: false, unique: false)]
protected DateTime $creationDate;
/**
* @ORM\Column(name="expiration_date", type="datetime", nullable=true, unique=false)
*/
#[Groups(['course:read'])]
#[ORM\Column(name: 'expiration_date', type: 'datetime', nullable: true, unique: false)]
protected ?DateTime $expirationDate = null;
/**
* @ORM\Column(name="subscribe", type="boolean", nullable=false, unique=false)
*/
#[Assert\NotNull]
#[ORM\Column(name: 'subscribe', type: 'boolean', nullable: false, unique: false)]
protected bool $subscribe;
/**
* @ORM\Column(name="unsubscribe", type="boolean", nullable=false, unique=false)
*/
#[Assert\NotNull]
#[ORM\Column(name: 'unsubscribe', type: 'boolean', nullable: false, unique: false)]
protected bool $unsubscribe;
/**
* @ORM\Column(name="registration_code", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'registration_code', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $registrationCode;
/**
* @ORM\Column(name="legal", type="text", nullable=true, unique=false)
*/
#[ORM\Column(name: 'legal', type: 'text', nullable: true, unique: false)]
protected ?string $legal;
/**
* @ORM\Column(name="activate_legal", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'activate_legal', type: 'integer', nullable: true, unique: false)]
protected ?int $activateLegal;
/**
* @ORM\Column(name="add_teachers_to_sessions_courses", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'add_teachers_to_sessions_courses', type: 'boolean', nullable: true)]
protected ?bool $addTeachersToSessionsCourses;
/**
* @ORM\Column(name="course_type_id", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'course_type_id', type: 'integer', nullable: true, unique: false)]
protected ?int $courseTypeId;
/**
@ -435,10 +339,8 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
*/
//protected $curriculumCategories;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Room")
* @ORM\JoinColumn(name="room_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: Room::class)]
#[ORM\JoinColumn(name: 'room_id', referencedColumnName: 'id')]
protected ?Room $room;
public function __construct()
@ -488,7 +390,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return SessionRelCourse[]|ArrayCollection|Collection
*/
public function getSessions()
public function getSessions(): array|ArrayCollection|Collection
{
return $this->sessions;
}
@ -496,7 +398,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return CTool[]|ArrayCollection|Collection
*/
public function getTools()
public function getTools(): array|ArrayCollection|Collection
{
return $this->tools;
}
@ -531,7 +433,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return AccessUrlRelCourse[]|Collection
*/
public function getUrls()
public function getUrls(): array|Collection
{
return $this->urls;
}
@ -568,7 +470,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return Collection|CourseRelUser[]
*/
public function getUsers()
public function getUsers(): Collection|array
{
return $this->users;
}
@ -576,7 +478,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return Collection|CourseRelUser[]
*/
public function getTeachers()
public function getTeachers(): Collection|array
{
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('status', CourseRelUser::TEACHER));
@ -587,7 +489,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return Collection|CourseRelUser[]
*/
public function getStudents()
public function getStudents(): Collection|array
{
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('status', CourseRelUser::STUDENT));
@ -777,7 +679,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return CourseCategory[]|Collection
*/
public function getCategories()
public function getCategories(): array|Collection
{
return $this->categories;
}
@ -1232,7 +1134,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return SessionRelCourseRelUser[]|Collection
*/
public function getSessionRelCourseRelUsers()
public function getSessionRelCourseRelUsers(): array|Collection
{
return $this->sessionRelCourseRelUsers;
}
@ -1247,7 +1149,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return SkillRelCourse[]|Collection
*/
public function getSkills()
public function getSkills(): array|Collection
{
return $this->skills;
}
@ -1255,7 +1157,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param SkillRelCourse[]|Collection $skills
*/
public function setSkills(Collection $skills): self
public function setSkills(array|Collection $skills): self
{
$this->skills = $skills;
@ -1265,7 +1167,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return GradebookCategory[]|Collection
*/
public function getGradebookCategories()
public function getGradebookCategories(): array|Collection
{
return $this->gradebookCategories;
}
@ -1273,7 +1175,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param GradebookCategory[]|Collection $gradebookCategories
*/
public function setGradebookCategories(Collection $gradebookCategories): self
public function setGradebookCategories(array|Collection $gradebookCategories): self
{
$this->gradebookCategories = $gradebookCategories;
@ -1283,7 +1185,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return GradebookEvaluation[]|Collection
*/
public function getGradebookEvaluations()
public function getGradebookEvaluations(): array|Collection
{
return $this->gradebookEvaluations;
}
@ -1291,7 +1193,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param GradebookEvaluation[]|Collection $gradebookEvaluations
*/
public function setGradebookEvaluations(Collection $gradebookEvaluations): self
public function setGradebookEvaluations(array|Collection $gradebookEvaluations): self
{
$this->gradebookEvaluations = $gradebookEvaluations;
@ -1301,7 +1203,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return GradebookLink[]|Collection
*/
public function getGradebookLinks()
public function getGradebookLinks(): array|Collection
{
return $this->gradebookLinks;
}
@ -1309,7 +1211,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param GradebookLink[]|Collection $gradebookLinks
*/
public function setGradebookLinks(Collection $gradebookLinks): self
public function setGradebookLinks(array|Collection $gradebookLinks): self
{
$this->gradebookLinks = $gradebookLinks;
@ -1319,7 +1221,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return TrackEHotspot[]|Collection
*/
public function getTrackEHotspots()
public function getTrackEHotspots(): array|Collection
{
return $this->trackEHotspots;
}
@ -1327,7 +1229,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param TrackEHotspot[]|Collection $trackEHotspots
*/
public function setTrackEHotspots(Collection $trackEHotspots): self
public function setTrackEHotspots(array|Collection $trackEHotspots): self
{
$this->trackEHotspots = $trackEHotspots;
@ -1337,7 +1239,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return SearchEngineRef[]|Collection
*/
public function getSearchEngineRefs()
public function getSearchEngineRefs(): array|Collection
{
return $this->searchEngineRefs;
}
@ -1345,7 +1247,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param SearchEngineRef[]|Collection $searchEngineRefs
*/
public function setSearchEngineRefs(Collection $searchEngineRefs): self
public function setSearchEngineRefs(array|Collection $searchEngineRefs): self
{
$this->searchEngineRefs = $searchEngineRefs;
@ -1367,7 +1269,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @return Templates[]|Collection
*/
public function getTemplates()
public function getTemplates(): array|Collection
{
return $this->templates;
}
@ -1375,7 +1277,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
/**
* @param Templates[]|Collection $templates
*/
public function setTemplates(Collection $templates): self
public function setTemplates(array|Collection $templates): self
{
$this->templates = $templates;

@ -27,101 +27,70 @@ use Symfony\Component\Validator\Constraints as Assert;
* @ApiFilter(SearchFilter::class, properties={"name":"partial", "code":"partial"})
* @ApiFilter(PropertyFilter::class)
* @ApiFilter(OrderFilter::class, properties={"name", "code"})
* @ORM\Table(
* name="course_category",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="code", columns={"code"})
* },
* indexes={
* @ORM\Index(name="parent_id", columns={"parent_id"}),
* @ORM\Index(name="tree_pos", columns={"tree_pos"})
* }
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\CourseCategoryRepository")
*/
class CourseCategory
#[ORM\Table(name: 'course_category')]
#[ORM\Index(name: 'parent_id', columns: ['parent_id'])]
#[ORM\Index(name: 'tree_pos', columns: ['tree_pos'])]
#[ORM\UniqueConstraint(name: 'code', columns: ['code'])]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\CourseCategoryRepository::class)]
class CourseCategory implements \Stringable
{
/**
* @Groups({"course_category:read", "course:read"})
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[Groups(['course_category:read', 'course:read'])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseCategory", mappedBy="parent")
*
* @var Collection|CourseCategory[]
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\CourseCategory::class, mappedBy: 'parent')]
protected Collection $children;
/**
* @Groups({"course_category:read", "course_category:write", "course:read", "session:read"})
* @ORM\Column(name="name", type="text", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['course_category:read', 'course_category:write', 'course:read', 'session:read'])]
#[ORM\Column(name: 'name', type: 'text', nullable: false)]
protected string $name;
/**
* @Groups({"course_category:read", "course_category:write", "course:read"})
* @ORM\Column(name="code", type="string", length=40, nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['course_category:read', 'course_category:write', 'course:read'])]
#[ORM\Column(name: 'code', type: 'string', length: 40, nullable: false)]
protected string $code;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\CourseCategory", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\CourseCategory::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?CourseCategory $parent = null;
/**
* @ORM\Column(name="tree_pos", type="integer", nullable=true)
*/
#[ORM\Column(name: 'tree_pos', type: 'integer', nullable: true)]
protected ?int $treePos = null;
/**
* @ORM\Column(name="children_count", type="smallint", nullable=true)
*/
#[ORM\Column(name: 'children_count', type: 'smallint', nullable: true)]
protected ?int $childrenCount;
/**
* @ORM\Column(name="auth_course_child", type="string", length=40, nullable=true)
*/
#[ORM\Column(name: 'auth_course_child', type: 'string', length: 40, nullable: true)]
protected ?string $authCourseChild = null;
/**
* @ORM\Column(name="auth_cat_child", type="string", length=40, nullable=true)
*/
#[ORM\Column(name: 'auth_cat_child', type: 'string', length: 40, nullable: true)]
protected ?string $authCatChild = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Asset", cascade={"remove"} )
* @ORM\JoinColumn(name="asset_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Asset::class, cascade: ['remove'])]
#[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?Asset $asset = null;
/**
* @Groups({"course_category:read", "course_category:write"})
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[Groups(['course_category:read', 'course_category:write'])]
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelCourseCategory",
* mappedBy="courseCategory", cascade={"persist"}, orphanRemoval=true
* )
*
* @var AccessUrlRelCourseCategory[]|Collection
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\AccessUrlRelCourseCategory::class, mappedBy: 'courseCategory', cascade: ['persist'], orphanRemoval: true)]
protected Collection $urls;
/**
* @var Course[]|Collection
* @ORM\ManyToMany(targetEntity="Chamilo\CoreBundle\Entity\Course", mappedBy="categories")
*/
#[ORM\ManyToMany(targetEntity: \Chamilo\CoreBundle\Entity\Course::class, mappedBy: 'categories')]
protected Collection $courses;
public function __construct()
@ -315,7 +284,7 @@ class CourseCategory
/**
* @return AccessUrlRelCourseCategory[]|Collection
*/
public function getUrls()
public function getUrls(): array|\Doctrine\Common\Collections\Collection
{
return $this->urls;
}
@ -323,7 +292,7 @@ class CourseCategory
/**
* @param AccessUrlRelCourseCategory[]|Collection $urls
*/
public function setUrls($urls): self
public function setUrls(array|\Doctrine\Common\Collections\Collection $urls): self
{
$this->urls = $urls;

@ -10,24 +10,19 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Course subscriptions to a class.
*
* @ORM\Table(name="course_rel_class")
* @ORM\Entity
*/
#[ORM\Table(name: 'course_rel_class')]
#[ORM\Entity]
class CourseRelClass
{
/**
* @ORM\Column(name="course_code", type="string", length=40)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'course_code', type: 'string', length: 40)]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected string $courseCode;
/**
* @ORM\Column(name="class_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'class_id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected int $classId;
/**

@ -17,15 +17,6 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* User subscriptions to a course.
*
* @ORM\Table(
* name="course_rel_user",
* indexes={
* @ORM\Index(name="course_rel_user_user_id", columns={"id", "user_id"}),
* @ORM\Index(name="course_rel_user_c_id_user_id", columns={"id", "c_id", "user_id"})
* }
* )
* @ORM\Entity
*/
#[ApiResource(
attributes: [
@ -59,8 +50,12 @@ use Symfony\Component\Validator\Constraints as Assert;
'user' => 'exact',
'user.username' => 'partial',
])]
#[ORM\Table(name: 'course_rel_user')]
#[ORM\Index(name: 'course_rel_user_user_id', columns: ['id', 'user_id'])]
#[ORM\Index(name: 'course_rel_user_c_id_user_id', columns: ['id', 'c_id', 'user_id'])]
#[ORM\Entity]
class CourseRelUser
class CourseRelUser implements \Stringable
{
use UserTrait;
@ -69,69 +64,45 @@ class CourseRelUser
//public const DRH = 4;
public const STUDENT = 5;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="courses", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
#[MaxDepth(1)]
#[Groups(['course:read', 'user:read', 'course_rel_user:read'])]
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'courses', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="users", cascade={"persist"})
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
#[Groups(['user:read'])]
#[ORM\ManyToOne(targetEntity: Course::class, inversedBy: 'users', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id')]
protected Course $course;
/**
* @ORM\Column(name="relation_type", type="integer")
*/
#[Groups(['course:read', 'user:read'])]
#[ORM\Column(name: 'relation_type', type: 'integer')]
protected int $relationType;
/**
* @ORM\Column(name="status", type="integer")
*/
#[Groups(['user:read'])]
#[ORM\Column(name: 'status', type: 'integer')]
protected int $status;
/**
* @ORM\Column(name="is_tutor", type="boolean", nullable=true, unique=false)
*/
#[ORM\Column(name: 'is_tutor', type: 'boolean', nullable: true, unique: false)]
protected ?bool $tutor;
/**
* @ORM\Column(name="sort", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'sort', type: 'integer', nullable: true, unique: false)]
protected ?int $sort;
/**
* @ORM\Column(name="user_course_cat", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'user_course_cat', type: 'integer', nullable: true, unique: false)]
protected ?int $userCourseCat;
/**
* @ORM\Column(name="legal_agreement", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'legal_agreement', type: 'integer', nullable: true, unique: false)]
protected ?int $legalAgreement = null;
/**
* @Assert\Range(
* min = 0,
* max = 100,
* notInRangeMessage = "Progress from {{ min }} to {{ max }} only",
* )
* @ORM\Column(name="progress", type="integer")
*/
#[Groups(['course:read', 'user:read'])]
#[Assert\Range(min: 0, max: 100, notInRangeMessage: 'Progress from {{ min }} to {{ max }} only')]
#[ORM\Column(name: 'progress', type: 'integer')]
protected int $progress;
public function __construct()

@ -9,43 +9,28 @@ namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Traits\UserTrait;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="course_rel_user_catalogue",
* indexes={
* @ORM\Index(name="course_rel_user_catalogue_user_id", columns={"user_id"}),
* @ORM\Index(name="course_rel_user_catalogue_c_id", columns={"c_id"})
* }
* )
* @ORM\Entity
* @ORM\Table(name="course_rel_user_catalogue")
*/
class CourseRelUserCatalogue
#[ORM\Table(name: 'course_rel_user_catalogue')]
#[ORM\Index(name: 'course_rel_user_catalogue_user_id', columns: ['user_id'])]
#[ORM\Index(name: 'course_rel_user_catalogue_c_id', columns: ['c_id'])]
#[ORM\Entity]
class CourseRelUserCatalogue implements \Stringable
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="courses", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'courses', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
protected ?User $user = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="users", cascade={"persist"})
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: Course::class, inversedBy: 'users', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id')]
protected ?Course $course = null;
/**
* @ORM\Column(name="visible", type="integer")
*/
#[ORM\Column(name: 'visible', type: 'integer')]
protected int $visible;
public function __construct()

@ -11,93 +11,60 @@ use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="course_request", uniqueConstraints={
* @ORM\UniqueConstraint(name="code", columns={"code"})
* })
* @ORM\Entity
*/
#[ORM\Table(name: 'course_request')]
#[ORM\UniqueConstraint(name: 'code', columns: ['code'])]
#[ORM\Entity]
class CourseRequest
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: User::class, cascade: ['persist'])]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
protected User $user;
/**
* @ORM\Column(name="code", type="string", length=40, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'code', type: 'string', length: 40, nullable: false)]
protected string $code;
/**
* @ORM\Column(name="course_language", type="string", length=20, nullable=false)
*/
#[ORM\Column(name: 'course_language', type: 'string', length: 20, nullable: false)]
protected string $courseLanguage;
/**
* @ORM\Column(name="title", type="string", length=250, nullable=false)
*/
#[ORM\Column(name: 'title', type: 'string', length: 250, nullable: false)]
protected string $title;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="category_code", type="string", length=40, nullable=true)
*/
#[ORM\Column(name: 'category_code', type: 'string', length: 40, nullable: true)]
protected ?string $categoryCode = null;
/**
* @ORM\Column(name="tutor_name", type="string", length=200, nullable=true)
*/
#[ORM\Column(name: 'tutor_name', type: 'string', length: 200, nullable: true)]
protected ?string $tutorName = null;
/**
* @ORM\Column(name="visual_code", type="string", length=40, nullable=true)
*/
#[ORM\Column(name: 'visual_code', type: 'string', length: 40, nullable: true)]
protected ?string $visualCode = null;
/**
* @ORM\Column(name="request_date", type="datetime", nullable=false)
*/
#[ORM\Column(name: 'request_date', type: 'datetime', nullable: false)]
protected DateTime $requestDate;
/**
* @ORM\Column(name="objetives", type="text", nullable=true)
*/
#[ORM\Column(name: 'objetives', type: 'text', nullable: true)]
protected ?string $objetives = null;
/**
* @ORM\Column(name="target_audience", type="text", nullable=true)
*/
#[ORM\Column(name: 'target_audience', type: 'text', nullable: true)]
protected ?string $targetAudience = null;
/**
* @ORM\Column(name="status", type="integer", nullable=false)
*/
#[ORM\Column(name: 'status', type: 'integer', nullable: false)]
protected int $status;
/**
* @ORM\Column(name="info", type="integer", nullable=false)
*/
#[ORM\Column(name: 'info', type: 'integer', nullable: false)]
protected int $info;
/**
* @ORM\Column(name="exemplary_content", type="integer", nullable=false)
*/
#[ORM\Column(name: 'exemplary_content', type: 'integer', nullable: false)]
protected int $exemplaryContent;
public function __construct()

@ -8,37 +8,25 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="course_type")
* @ORM\Entity
*/
#[ORM\Table(name: 'course_type')]
#[ORM\Entity]
class CourseType
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=50, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 50, nullable: false)]
protected string $name;
/**
* @ORM\Column(name="translation_var", type="string", length=40, nullable=true)
*/
#[ORM\Column(name: 'translation_var', type: 'string', length: 40, nullable: true)]
protected ?string $translationVar = null;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="props", type="text", nullable=true)
*/
#[ORM\Column(name: 'props', type: 'text', nullable: true)]
protected ?string $props = null;
public function setName(string $name): self

@ -17,12 +17,6 @@ use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="extra_field")
*
* @ORM\MappedSuperclass
*/
#[ApiResource(
collectionOperations:[
'get' => [
@ -51,6 +45,9 @@ use Symfony\Component\Validator\Constraints as Assert;
],
)]
#[ApiFilter(SearchFilter::class, properties: ['variable'])]
#[ORM\Table(name: 'extra_field')]
#[ORM\Entity]
#[ORM\MappedSuperclass]
class ExtraField
{
public const USER_FIELD_TYPE = 1;
@ -74,106 +71,74 @@ class ExtraField
public const PORTFOLIO_TYPE = 19;
public const LP_VIEW_TYPE = 20;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[Groups(['extra_field:read'])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="item_type", type="integer")
*/
#[Groups(['extra_field:read', 'extra_field:write'])]
#[ORM\Column(name: 'item_type', type: 'integer')]
protected int $itemType;
/**
* @ORM\Column(name="value_type", type="integer")
*/
#[Groups(['extra_field:read', 'extra_field:write'])]
#[ORM\Column(name: 'value_type', type: 'integer')]
protected int $valueType;
/**
* @ORM\Column(name="variable", type="string", length=255)
*/
#[Assert\NotBlank]
#[Groups(['extra_field:read', 'extra_field:write'])]
#[ORM\Column(name: 'variable', type: 'string', length: 255)]
protected string $variable;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[Groups(['extra_field:read', 'extra_field:write'])]
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description;
/**
* @Gedmo\Translatable
* @ORM\Column(name="display_text", type="string", length=255, nullable=true, unique=false)
*/
#[Assert\NotBlank]
#[Groups(['extra_field:read', 'extra_field:write'])]
#[Gedmo\Translatable]
#[ORM\Column(name: 'display_text', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $displayText = null;
/**
* @Gedmo\Locale
*/
#[Gedmo\Locale]
protected ?string $locale = null;
/**
* @ORM\Column(name="helper_text", type="text", nullable=true, unique=false)
*/
#[ORM\Column(name: 'helper_text', type: 'text', nullable: true, unique: false)]
protected ?string $helperText = null;
/**
* @ORM\Column(name="default_value", type="text", nullable=true, unique=false)
*/
#[ORM\Column(name: 'default_value', type: 'text', nullable: true, unique: false)]
protected ?string $defaultValue = null;
/**
* @ORM\Column(name="field_order", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'field_order', type: 'integer', nullable: true, unique: false)]
protected ?int $fieldOrder = null;
/**
* @ORM\Column(name="visible_to_self", type="boolean", nullable=true, unique=false)
*/
#[ORM\Column(name: 'visible_to_self', type: 'boolean', nullable: true, unique: false)]
protected ?bool $visibleToSelf;
/**
* @ORM\Column(name="visible_to_others", type="boolean", nullable=true, unique=false)
*/
#[ORM\Column(name: 'visible_to_others', type: 'boolean', nullable: true, unique: false)]
protected ?bool $visibleToOthers;
/**
* @ORM\Column(name="changeable", type="boolean", nullable=true, unique=false)
*/
#[ORM\Column(name: 'changeable', type: 'boolean', nullable: true, unique: false)]
protected ?bool $changeable = null;
/**
* @ORM\Column(name="filter", type="boolean", nullable=true, unique=false)
*/
#[ORM\Column(name: 'filter', type: 'boolean', nullable: true, unique: false)]
protected ?bool $filter = null;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\ExtraFieldOptions", mappedBy="field")
*
* @var Collection<int, ExtraFieldOptions>
*/
#[Groups(['extra_field:read'])]
#[ORM\OneToMany(targetEntity: ExtraFieldOptions::class, mappedBy: 'field')]
protected Collection $options;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Tag", mappedBy="field")
*
* @var Tag[]|Collection
*/
#[ORM\OneToMany(targetEntity: Tag::class, mappedBy: 'field')]
protected Collection $tags;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime")
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime')]
protected DateTime $createdAt;
public function __construct()
@ -362,7 +327,7 @@ class ExtraField
/**
* @return Tag[]|Collection
*/
public function getTags()
public function getTags(): array|\Doctrine\Common\Collections\Collection
{
return $this->tags;
}
@ -380,22 +345,15 @@ class ExtraField
return false;
}
return $this->tags->exists(function ($key, Tag $tag) use ($tagName) {
return $tagName === $tag->getTag();
});
return $this->tags->exists(fn ($key, Tag $tag) => $tagName === $tag->getTag());
}
public function getTypeToString(): string
{
switch ($this->getItemType()) {
case \ExtraField::FIELD_TYPE_RADIO:
case \ExtraField::FIELD_TYPE_SELECT:
return 'choice';
case \ExtraField::FIELD_TYPE_TEXT:
case \ExtraField::FIELD_TYPE_TEXTAREA:
default:
return 'text';
}
return match ($this->getItemType()) {
\ExtraField::FIELD_TYPE_RADIO, \ExtraField::FIELD_TYPE_SELECT => 'choice',
default => 'text',
};
}
public function getHelperText(): string

@ -8,45 +8,29 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="extra_field_option_rel_field_option",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="idx", columns={"field_id", "role_id", "field_option_id", "related_field_option_id"})
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'extra_field_option_rel_field_option')]
#[ORM\UniqueConstraint(name: 'idx', columns: ['field_id', 'role_id', 'field_option_id', 'related_field_option_id'])]
#[ORM\Entity]
class ExtraFieldOptionRelFieldOption
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraFieldOptions")
* @ORM\JoinColumn(name="field_option_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ExtraFieldOptions::class)]
#[ORM\JoinColumn(name: 'field_option_id', referencedColumnName: 'id')]
protected ExtraFieldOptions $extraFieldOption;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraFieldOptions")
* @ORM\JoinColumn(name="related_field_option_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ExtraFieldOptions::class)]
#[ORM\JoinColumn(name: 'related_field_option_id', referencedColumnName: 'id')]
protected ExtraFieldOptions $relatedFieldOption;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ExtraField::class)]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id')]
protected ExtraField $field;
/**
* @ORM\Column(name="role_id", type="integer", nullable=true, unique=false)
*/
#[ORM\Column(name: 'role_id', type: 'integer', nullable: true, unique: false)]
protected ?int $roleId = null;
/**

@ -10,57 +10,38 @@ use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\ExtraFieldOptionsRepository")
* @ORM\Table(name="extra_field_options")
*
* @ORM\MappedSuperclass
*/
#[ORM\Table(name: 'extra_field_options')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\ExtraFieldOptionsRepository::class)]
#[ORM\MappedSuperclass]
class ExtraFieldOptions
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField", inversedBy="options")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ExtraField::class, inversedBy: 'options')]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id')]
protected ExtraField $field;
/**
* @ORM\Column(name="option_value", type="text", nullable=true)
*/
#[ORM\Column(name: 'option_value', type: 'text', nullable: true)]
protected ?string $value = null;
/**
* @Gedmo\Translatable
* @ORM\Column(name="display_text", type="string", length=255, nullable=true)
*/
#[Gedmo\Translatable]
#[ORM\Column(name: 'display_text', type: 'string', length: 255, nullable: true)]
protected ?string $displayText = null;
/**
* @Gedmo\Locale
*/
#[Gedmo\Locale]
protected ?string $locale = null;
/**
* @ORM\Column(name="priority", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'priority', type: 'string', length: 255, nullable: true)]
protected ?string $priority = null;
/**
* @ORM\Column(name="priority_message", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'priority_message', type: 'string', length: 255, nullable: true)]
protected ?string $priorityMessage = null;
/**
* @ORM\Column(name="option_order", type="integer", nullable=true)
*/
#[ORM\Column(name: 'option_order', type: 'integer', nullable: true)]
protected ?int $optionOrder = null;
/**

@ -6,44 +6,31 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Repository\ExtraFieldRelTagRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="extra_field_rel_tag",
* indexes={
* @ORM\Index(name="field", columns={"field_id"}),
* @ORM\Index(name="item", columns={"item_id"}),
* @ORM\Index(name="tag", columns={"tag_id"}),
* @ORM\Index(name="field_item_tag", columns={"field_id", "item_id", "tag_id"})
* }
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\ExtraFieldRelTagRepository")
*/
#[ORM\Table(name: 'extra_field_rel_tag')]
#[ORM\Index(name: 'field', columns: ['field_id'])]
#[ORM\Index(name: 'item', columns: ['item_id'])]
#[ORM\Index(name: 'tag', columns: ['tag_id'])]
#[ORM\Index(name: 'field_item_tag', columns: ['field_id', 'item_id', 'tag_id'])]
#[ORM\Entity(repositoryClass: ExtraFieldRelTagRepository::class)]
class ExtraFieldRelTag
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: ExtraField::class)]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ExtraField $field;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Tag", inversedBy="extraFieldRelTags")
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: Tag::class, inversedBy: 'extraFieldRelTags')]
#[ORM\JoinColumn(name: 'tag_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Tag $tag;
/**
* @ORM\Column(name="item_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'item_id', type: 'integer', nullable: false)]
protected int $itemId;
public function setItemId(int $itemId): self

@ -10,37 +10,27 @@ use Chamilo\CoreBundle\Traits\UserTrait;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity
* @ORM\Table(name="extra_field_saved_search")
*/
#[ORM\Table(name: 'extra_field_saved_search')]
#[ORM\Entity]
class ExtraFieldSavedSearch
{
use TimestampableEntity;
use UserTrait;
/**
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer', nullable: false)]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ExtraField::class)]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id')]
protected ExtraField $field;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
protected User $user;
/**
* @ORM\Column(name="value", type="array", nullable=true, unique=false)
*/
#[ORM\Column(name: 'value', type: 'array', nullable: true, unique: false)]
protected ?array $value;
public function __construct()

@ -9,22 +9,12 @@ namespace Chamilo\CoreBundle\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use Chamilo\CoreBundle\Repository\ExtraFieldValuesRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="extra_field_values",
* indexes={
* @ORM\Index(name="idx_efv_fiii", columns={"field_id", "item_id"}),
* @ORM\Index(name="idx_efv_item", columns={"item_id"})
* }
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\ExtraFieldValuesRepository")
* @ORM\MappedSuperclass
*/
#[ApiResource(
collectionOperations:[
'get' => [
@ -53,51 +43,45 @@ use Symfony\Component\Validator\Constraints as Assert;
],
)]
#[ApiFilter(SearchFilter::class, properties: ['field' => 'exact', 'value' => 'exact'])]
#[ORM\Table(name: 'extra_field_values')]
#[ORM\Index(name: 'idx_efv_fiii', columns: ['field_id', 'item_id'])]
#[ORM\Index(name: 'idx_efv_item', columns: ['item_id'])]
#[ORM\Entity(repositoryClass: ExtraFieldValuesRepository::class)]
#[ORM\MappedSuperclass]
class ExtraFieldValues
{
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[Groups(['extra_field_values:read'])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="field_value", type="text", nullable=true, unique=false)
*/
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'field_value', type: 'text', nullable: true, unique: false)]
protected ?string $fieldValue = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
#[Assert\NotBlank]
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\ManyToOne(targetEntity: ExtraField::class)]
#[ORM\JoinColumn(name: 'field_id', referencedColumnName: 'id')]
protected ExtraField $field;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Asset")
* @ORM\JoinColumn(name="asset_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: Asset::class)]
#[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Asset $asset = null;
/**
* Item id can be: userId, courseId, sessionId, etc.
*
* @ORM\Column(name="item_id", type="integer")
*/
#[Assert\NotBlank]
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'item_id', type: 'integer')]
protected int $itemId;
/**
* @ORM\Column(name="comment", type="text", nullable=true, unique=false)
*/
#[Groups(['extra_field_values:read', 'extra_field_values:write'])]
#[ORM\Column(name: 'comment', type: 'text', nullable: true, unique: false)]
protected ?string $comment;
public function __construct()

@ -10,38 +10,27 @@ use Doctrine\ORM\Mapping as ORM;
/**
* GradeComponents.
*
* @ORM\Table(name="grade_components")
* @ORM\Entity
*/
#[ORM\Table(name: 'grade_components')]
#[ORM\Entity]
class GradeComponents
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="percentage", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'percentage', type: 'string', length: 255, nullable: false)]
protected string $percentage;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
/**
* @ORM\Column(name="acronym", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'acronym', type: 'string', length: 255, nullable: false)]
protected string $acronym;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradeModel")
* @ORM\JoinColumn(name="grade_model_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradeModel::class)]
#[ORM\JoinColumn(name: 'grade_model_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradeModel $gradeModel;
public function setPercentage(string $percentage): self

@ -10,42 +10,29 @@ use Doctrine\ORM\Mapping as ORM;
/**
* GradeModel.
*
* @ORM\Table(name="grade_model")
* @ORM\Entity
*/
#[ORM\Table(name: 'grade_model')]
#[ORM\Entity]
class GradeModel
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="default_lowest_eval_exclude", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'default_lowest_eval_exclude', type: 'boolean', nullable: true)]
protected ?bool $defaultLowestEvalExclude = null;
/**
* @ORM\Column(name="default_external_eval", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'default_external_eval', type: 'boolean', nullable: true)]
protected ?bool $defaultExternalEval = null;
/**
* @ORM\Column(name="default_external_eval_prefix", type="string", length=140, nullable=true)
*/
#[ORM\Column(name: 'default_external_eval_prefix', type: 'string', length: 140, nullable: true)]
protected ?string $defaultExternalEvalPrefix = null;
public function setName(string $name): self

@ -13,162 +13,110 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="gradebook_category",
* indexes={
* }))
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_category')]
#[ORM\Entity]
class GradebookCategory
{
use UserTrait;
use CourseTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="text", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'text', nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookCategories")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookCategories')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookCategories")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class, inversedBy: 'gradebookCategories')]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Course $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", inversedBy="subCategories")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class, inversedBy: 'subCategories')]
#[ORM\JoinColumn(name: 'parent_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?GradebookCategory $parent = null;
/**
* @var GradebookCategory[]|Collection
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", mappedBy="parent")
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class, mappedBy: 'parent')]
protected Collection $subCategories;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session")
* @ORM\JoinColumn(name="session_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Session::class)]
#[ORM\JoinColumn(name: 'session_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Session $session = null;
/**
* @var SkillRelGradebook[]|Collection
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SkillRelGradebook", mappedBy="gradeBookCategory")
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\SkillRelGradebook::class, mappedBy: 'gradeBookCategory')]
protected Collection $skills;
/**
* @var Collection|GradebookEvaluation[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookEvaluation", mappedBy="category", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\GradebookEvaluation::class, mappedBy: 'category', cascade: ['persist', 'remove'])]
protected Collection $evaluations;
/**
* @var Collection|GradebookLink[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookLink", mappedBy="category", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\GradebookLink::class, mappedBy: 'category', cascade: ['persist', 'remove'])]
protected Collection $links;
/**
* @var Collection|GradebookComment[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookComment", mappedBy="gradeBook")
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\GradebookComment::class, mappedBy: 'gradeBook')]
protected Collection $comments;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradeModel")
* @ORM\JoinColumn(name="grade_model_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradeModel::class)]
#[ORM\JoinColumn(name: 'grade_model_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?GradeModel $gradeModel = null;
/**
* @ORM\Column(name="weight", type="float", precision=10, scale=0, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'weight', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $weight;
/**
* @ORM\Column(name="visible", type="boolean", nullable=false)
*/
#[Assert\NotNull]
#[ORM\Column(name: 'visible', type: 'boolean', nullable: false)]
protected bool $visible;
/**
* @ORM\Column(name="certif_min_score", type="integer", nullable=true)
*/
#[ORM\Column(name: 'certif_min_score', type: 'integer', nullable: true)]
protected ?int $certifMinScore = null;
/**
* @ORM\Column(name="document_id", type="integer", nullable=true)
*/
#[ORM\Column(name: 'document_id', type: 'integer', nullable: true)]
protected ?int $documentId = null;
/**
* @ORM\Column(name="locked", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'locked', type: 'integer', nullable: false)]
protected ?int $locked;
/**
* @ORM\Column(name="default_lowest_eval_exclude", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'default_lowest_eval_exclude', type: 'boolean', nullable: true)]
protected ?bool $defaultLowestEvalExclude = null;
/**
* @ORM\Column(name="generate_certificates", type="boolean", nullable=false)
*/
#[Assert\NotNull]
#[ORM\Column(name: 'generate_certificates', type: 'boolean', nullable: false)]
protected bool $generateCertificates;
/**
* @ORM\Column(
* name="is_requirement",
* type="boolean",
* nullable=false,
* options={"default":0 }
* )
*/
#[ORM\Column(name: 'is_requirement', type: 'boolean', nullable: false, options: ['default' => 0])]
protected bool $isRequirement;
/**
* @ORM\Column(name="depends", type="text", nullable=true)
*/
#[ORM\Column(name: 'depends', type: 'text', nullable: true)]
protected ?string $depends = null;
/**
* @ORM\Column(name="minimum_to_validate", type="integer", nullable=true)
*/
#[ORM\Column(name: 'minimum_to_validate', type: 'integer', nullable: true)]
protected ?int $minimumToValidate = null;
/**
* @ORM\Column(name="gradebooks_to_validate_in_dependence", type="integer", nullable=true)
*/
#[ORM\Column(name: 'gradebooks_to_validate_in_dependence', type: 'integer', nullable: true)]
protected ?int $gradeBooksToValidateInDependence = null;
public function __construct()
@ -411,7 +359,7 @@ class GradebookCategory
/**
* @return GradebookComment[]|Collection
*/
public function getComments()
public function getComments(): array|\Doctrine\Common\Collections\Collection
{
return $this->comments;
}
@ -419,7 +367,7 @@ class GradebookCategory
/**
* @param GradebookComment[]|Collection $comments
*/
public function setComments(Collection $comments): self
public function setComments(array|\Doctrine\Common\Collections\Collection $comments): self
{
$this->comments = $comments;
@ -453,7 +401,7 @@ class GradebookCategory
/**
* @return GradebookEvaluation[]|Collection
*/
public function getEvaluations()
public function getEvaluations(): array|\Doctrine\Common\Collections\Collection
{
return $this->evaluations;
}
@ -461,7 +409,7 @@ class GradebookCategory
/**
* @param GradebookEvaluation[]|Collection $evaluations
*/
public function setEvaluations(Collection $evaluations): self
public function setEvaluations(array|\Doctrine\Common\Collections\Collection $evaluations): self
{
$this->evaluations = $evaluations;
@ -471,7 +419,7 @@ class GradebookCategory
/**
* @return GradebookLink[]|Collection
*/
public function getLinks()
public function getLinks(): array|\Doctrine\Common\Collections\Collection
{
return $this->links;
}
@ -479,7 +427,7 @@ class GradebookCategory
/**
* @param GradebookLink[]|Collection $links
*/
public function setLinks(Collection $links): self
public function setLinks(array|\Doctrine\Common\Collections\Collection $links): self
{
$this->links = $links;
@ -489,7 +437,7 @@ class GradebookCategory
/**
* @return GradebookCategory[]|Collection
*/
public function getSubCategories()
public function getSubCategories(): array|\Doctrine\Common\Collections\Collection
{
return $this->subCategories;
}
@ -533,7 +481,7 @@ class GradebookCategory
/**
* @return SkillRelGradebook[]|Collection
*/
public function getSkills()
public function getSkills(): array|\Doctrine\Common\Collections\Collection
{
return $this->skills;
}
@ -541,7 +489,7 @@ class GradebookCategory
/**
* @param SkillRelGradebook[]|Collection $skills
*/
public function setSkills(Collection $skills): self
public function setSkills(array|\Doctrine\Common\Collections\Collection $skills): self
{
$this->skills = $skills;

@ -11,57 +11,37 @@ use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Table(
* name="gradebook_certificate",
* indexes={
* @ORM\Index(name="idx_gradebook_certificate_user_id", columns={"user_id"}),
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_certificate')]
#[ORM\Index(name: 'idx_gradebook_certificate_user_id', columns: ['user_id'])]
#[ORM\Entity]
class GradebookCertificate
{
use UserTrait;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory")
* @ORM\JoinColumn(name="cat_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class)]
#[ORM\JoinColumn(name: 'cat_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $category;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookCertificates")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookCertificates')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\Column(name="score_certificate", type="float", precision=10, scale=0, nullable=false)
*/
#[ORM\Column(name: 'score_certificate', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $scoreCertificate;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**
* @ORM\Column(name="path_certificate", type="text", nullable=true)
*/
#[ORM\Column(name: 'path_certificate', type: 'text', nullable: true)]
protected ?string $pathCertificate = null;
/**
* @ORM\Column(name="downloaded_at", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'downloaded_at', type: 'datetime', nullable: true)]
protected ?DateTime $downloadedAt = null;
public function setScoreCertificate(float $scoreCertificate): self

@ -10,40 +10,27 @@ use Chamilo\CoreBundle\Traits\UserTrait;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Table(
* name="gradebook_comment",
* indexes={}
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_comment')]
#[ORM\Entity]
class GradebookComment
{
use UserTrait;
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookComments")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookComments')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", inversedBy="comments")
* @ORM\JoinColumn(name="gradebook_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class, inversedBy: 'comments')]
#[ORM\JoinColumn(name: 'gradebook_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $gradeBook;
/**
* @ORM\Column(name="comment", type="text")
*/
#[ORM\Column(name: 'comment', type: 'text')]
protected ?string $comment;
public function __construct()

@ -13,108 +13,72 @@ use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="gradebook_evaluation",
* indexes={
* @ORM\Index(name="idx_ge_cat", columns={"category_id"}),
* })
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_evaluation')]
#[ORM\Index(name: 'idx_ge_cat', columns: ['category_id'])]
#[ORM\Entity]
class GradebookEvaluation
{
use CourseTrait;
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="text", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'text', nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookEvaluations")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookEvaluations')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookEvaluations")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class, inversedBy: 'gradebookEvaluations')]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Course $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", inversedBy="evaluations")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class, inversedBy: 'evaluations')]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $category;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**
* @ORM\Column(name="weight", type="float", precision=10, scale=0, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'weight', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $weight;
/**
* @ORM\Column(name="max", type="float", precision=10, scale=0, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'max', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $max;
/**
* @ORM\Column(name="visible", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'visible', type: 'integer', nullable: false)]
protected int $visible;
/**
* @ORM\Column(name="type", type="string", length=40, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'type', type: 'string', length: 40, nullable: false)]
protected string $type;
/**
* @ORM\Column(name="locked", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'locked', type: 'integer', nullable: false)]
protected int $locked;
/**
* @ORM\Column(name="best_score", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'best_score', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $bestScore = null;
/**
* @ORM\Column(name="average_score", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'average_score', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $averageScore = null;
/**
* @ORM\Column(name="score_weight", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'score_weight', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $scoreWeight = null;
/**
* @ORM\Column(name="user_score_list", type="array", nullable=true)
*/
#[ORM\Column(name: 'user_score_list', type: 'array', nullable: true)]
protected ?array $userScoreList = null;
public function __construct()

@ -13,97 +13,64 @@ use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="gradebook_link",
* indexes={
* @ORM\Index(name="idx_gl_cat", columns={"category_id"}),
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_link')]
#[ORM\Index(name: 'idx_gl_cat', columns: ['category_id'])]
#[ORM\Entity]
class GradebookLink
{
use CourseTrait;
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="type", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'type', type: 'integer', nullable: false)]
protected int $type;
/**
* @ORM\Column(name="ref_id", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'ref_id', type: 'integer', nullable: false)]
protected int $refId;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookLinks")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookLinks')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookLinks")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class, inversedBy: 'gradebookLinks')]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Course $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", inversedBy="links")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class, inversedBy: 'links')]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $category;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**
* @ORM\Column(name="weight", type="float", precision=10, scale=0, nullable=false)
*/
#[ORM\Column(name: 'weight', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $weight;
/**
* @ORM\Column(name="visible", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'visible', type: 'integer', nullable: false)]
protected int $visible;
/**
* @ORM\Column(name="locked", type="integer", nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'locked', type: 'integer', nullable: false)]
protected int $locked;
/**
* @ORM\Column(name="best_score", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'best_score', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $bestScore = null;
/**
* @ORM\Column(name="average_score", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'average_score', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $averageScore = null;
/**
* @ORM\Column(name="score_weight", type="float", precision=6, scale=2, nullable=true)
*/
#[ORM\Column(name: 'score_weight', type: 'float', precision: 6, scale: 2, nullable: true)]
protected ?float $scoreWeight = null;
/**
* @ORM\Column(name="user_score_list", type="array", nullable=true)
*/
#[ORM\Column(name: 'user_score_list', type: 'array', nullable: true)]
protected ?array $userScoreList = null;
public function __construct()

@ -11,61 +11,41 @@ use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Table(name="gradebook_linkeval_log")
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_linkeval_log')]
#[ORM\Entity]
class GradebookLinkevalLog
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="id_linkeval_log", type="integer", nullable=false)
*/
#[ORM\Column(name: 'id_linkeval_log', type: 'integer', nullable: false)]
protected int $idLinkevalLog;
/**
* @ORM\Column(name="name", type="text")
*/
#[ORM\Column(name: 'name', type: 'text')]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="weight", type="smallint", nullable=true)
*/
#[ORM\Column(name: 'weight', type: 'smallint', nullable: true)]
protected ?int $weight = null;
/**
* @ORM\Column(name="visible", type="boolean", nullable=true)
*/
#[ORM\Column(name: 'visible', type: 'boolean', nullable: true)]
protected ?bool $visible = null;
/**
* @ORM\Column(name="type", type="string", length=20, nullable=false)
*/
#[ORM\Column(name: 'type', type: 'string', length: 20, nullable: false)]
protected string $type;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookLinkEvalLogs")
* @ORM\JoinColumn(name="user_id_log", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'gradeBookLinkEvalLogs')]
#[ORM\JoinColumn(name: 'user_id_log', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**

@ -11,46 +11,31 @@ use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Table(name="gradebook_result",
* indexes={
* @ORM\Index(name="idx_gb_uid_eid", columns={"user_id", "evaluation_id"}),
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_result')]
#[ORM\Index(name: 'idx_gb_uid_eid', columns: ['user_id', 'evaluation_id'])]
#[ORM\Entity]
class GradebookResult
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookEvaluation")
* @ORM\JoinColumn(name="evaluation_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookEvaluation::class)]
#[ORM\JoinColumn(name: 'evaluation_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookEvaluation $evaluation;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookResults")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookResults')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\Column(name="score", type="float", precision=10, scale=0, nullable=true)
*/
#[ORM\Column(name: 'score', type: 'float', precision: 10, scale: 0, nullable: true)]
protected ?float $score = null;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
public function setCreatedAt(DateTime $createdAt): self

@ -9,35 +9,25 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Table(name="gradebook_result_attempt")
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_result_attempt')]
#[ORM\Entity]
class GradebookResultAttempt
{
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="comment", type="text", nullable=true)
*/
#[ORM\Column(name: 'comment', type: 'text', nullable: true)]
protected ?string $comment = null;
/**
* @ORM\Column(name="score", type="float", nullable=true)
*/
#[ORM\Column(name: 'score', type: 'float', nullable: true)]
protected ?float $score = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookResult")
* @ORM\JoinColumn(name="result_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookResult::class)]
#[ORM\JoinColumn(name: 'result_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookResult $result;
public function getId(): int

@ -13,48 +13,35 @@ use Gedmo\Mapping\Annotation as Gedmo;
/**
* GradebookResultLog.
*
* @ORM\Table(name="gradebook_result_log")
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_result_log')]
#[ORM\Entity]
class GradebookResultLog
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookResult")
* @ORM\JoinColumn(name="result_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: GradebookResult::class)]
#[ORM\JoinColumn(name: 'result_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookResult $result;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookEvaluation")
* @ORM\JoinColumn(name="evaluation_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: GradebookEvaluation::class)]
#[ORM\JoinColumn(name: 'evaluation_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookEvaluation $evaluation;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**
* @ORM\Column(name="score", type="float", precision=10, scale=0, nullable=true)
*/
#[ORM\Column(name: 'score', type: 'float', precision: 10, scale: 0, nullable: true)]
protected ?float $score = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookResultLogs")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: User::class, inversedBy: 'gradeBookResultLogs')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**

@ -10,40 +10,28 @@ use Doctrine\ORM\Mapping as ORM;
/**
* GradebookScoreDisplay.
*
* @ORM\Table(name="gradebook_score_display", indexes={
* @ORM\Index(name="category_id", columns={"category_id"})
* })
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_score_display')]
#[ORM\Index(name: 'category_id', columns: ['category_id'])]
#[ORM\Entity]
class GradebookScoreDisplay
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="score", type="float", precision=10, scale=0, nullable=false)
*/
#[ORM\Column(name: 'score', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $score;
/**
* @ORM\Column(name="display", type="string", length=40, nullable=false)
*/
#[ORM\Column(name: 'display', type: 'string', length: 40, nullable: false)]
protected ?string $display = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class)]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $category;
/**
* @ORM\Column(name="score_color_percent", type="float", precision=10, scale=0, nullable=false)
*/
#[ORM\Column(name: 'score_color_percent', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $scoreColorPercent;
public function setScore(float $score): self

@ -12,46 +12,32 @@ use Doctrine\ORM\Mapping as ORM;
/**
* GradebookScoreLog.
*
* @ORM\Table(
* name="gradebook_score_log", indexes={
* @ORM\Index(name="idx_gradebook_score_log_user", columns={"user_id"}),
* @ORM\Index(name="idx_gradebook_score_log_user_category", columns={"user_id", "category_id"})
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'gradebook_score_log')]
#[ORM\Index(name: 'idx_gradebook_score_log_user', columns: ['user_id'])]
#[ORM\Index(name: 'idx_gradebook_score_log_user_category', columns: ['user_id', 'category_id'])]
#[ORM\Entity]
class GradebookScoreLog
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\GradebookCategory::class)]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected GradebookCategory $category;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="gradeBookScoreLogs")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'gradeBookScoreLogs')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\Column(name="score", type="float", precision=10, scale=0, nullable=false)
*/
#[ORM\Column(name: 'score', type: 'float', precision: 10, scale: 0, nullable: false)]
protected float $score;
/**
* @ORM\Column(name="registered_at", type="datetime", nullable=false)
*/
#[ORM\Column(name: 'registered_at', type: 'datetime', nullable: false)]
protected DateTime $registeredAt;
/**

@ -13,47 +13,31 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* User platform roles.
*
* @ORM\Entity()
* @ORM\Table(name="fos_group")
*/
class Group
#[ORM\Table(name: 'fos_group')]
#[ORM\Entity]
class Group implements \Stringable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false, unique=true)
*/
#[Assert\NotBlank]
protected string $name;
/**
* @ORM\Column(name="code", type="string", length=40, nullable=false, unique=true)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'code', type: 'string', length: 40, nullable: false, unique: true)]
protected string $code;
/**
* @ORM\Column(name="roles", type="array")
*/
protected array $roles;
/**
* @ORM\ManyToMany(targetEntity="Chamilo\CoreBundle\Entity\User", mappedBy="groups")
*
* @var User[]|Collection
*/
#[ORM\ManyToMany(targetEntity: \Chamilo\CoreBundle\Entity\User::class, mappedBy: 'groups')]
protected Collection $users;
public function __construct(string $name, array $roles = [])
public function __construct(#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false, unique: true)]
protected string $name, #[ORM\Column(name: 'roles', type: 'array')]
protected array $roles = [])
{
$this->name = $name;
$this->roles = $roles;
$this->users = new ArrayCollection();
}
@ -123,7 +107,7 @@ class Group
/**
* @return User[]|Collection
*/
public function getUsers()
public function getUsers(): array|\Doctrine\Common\Collections\Collection
{
return $this->users;
}

@ -10,42 +10,29 @@ use Doctrine\ORM\Mapping as ORM;
/**
* HookCall.
*
* @ORM\Table(name="hook_call")
* @ORM\Entity
*/
#[ORM\Table(name: 'hook_call')]
#[ORM\Entity]
class HookCall
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="hook_event_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'hook_event_id', type: 'integer', nullable: false)]
protected int $hookEventId;
/**
* @ORM\Column(name="hook_observer_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'hook_observer_id', type: 'integer', nullable: false)]
protected int $hookObserverId;
/**
* @ORM\Column(name="type", type="boolean", nullable=false)
*/
#[ORM\Column(name: 'type', type: 'boolean', nullable: false)]
protected bool $type;
/**
* @ORM\Column(name="hook_order", type="integer", nullable=false)
*/
#[ORM\Column(name: 'hook_order', type: 'integer', nullable: false)]
protected int $hookOrder;
/**
* @ORM\Column(name="enabled", type="boolean", nullable=false)
*/
#[ORM\Column(name: 'enabled', type: 'boolean', nullable: false)]
protected bool $enabled;
/**

@ -10,33 +10,21 @@ use Doctrine\ORM\Mapping as ORM;
/**
* HookEvent.
*
* @ORM\Table(
* name="hook_event",
* options={"row_format"="DYNAMIC"},
* uniqueConstraints={
* @ORM\UniqueConstraint(name="class_name", columns={"class_name"})
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'hook_event', options: ['row_format' => 'DYNAMIC'])]
#[ORM\UniqueConstraint(name: 'class_name', columns: ['class_name'])]
#[ORM\Entity]
class HookEvent
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="class_name", type="string", length=190, nullable=true)
*/
#[ORM\Column(name: 'class_name', type: 'string', length: 190, nullable: true)]
protected ?string $className = null;
/**
* @ORM\Column(name="description", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'description', type: 'string', length: 255, nullable: true)]
protected ?string $description = null;
/**

@ -10,38 +10,24 @@ use Doctrine\ORM\Mapping as ORM;
/**
* HookObserver.
*
* @ORM\Table(
* name="hook_observer",
* options={"row_format"="DYNAMIC"},
* uniqueConstraints={
* @ORM\UniqueConstraint(name="class_name", columns={"class_name"})
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'hook_observer', options: ['row_format' => 'DYNAMIC'])]
#[ORM\UniqueConstraint(name: 'class_name', columns: ['class_name'])]
#[ORM\Entity]
class HookObserver
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="class_name", type="string", length=190, nullable=true)
*/
#[ORM\Column(name: 'class_name', type: 'string', length: 190, nullable: true)]
protected ?string $className = null;
/**
* @ORM\Column(name="path", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'path', type: 'string', length: 255, nullable: false)]
protected string $path;
/**
* @ORM\Column(name="plugin_name", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'plugin_name', type: 'string', length: 255, nullable: true)]
protected ?string $pluginName = null;
/**

@ -13,30 +13,24 @@ use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="illustration")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\Node\IllustrationRepository")
*/
#[ApiResource(
normalizationContext: [
'groups' => ['illustration:read'],
],
)]
class Illustration extends AbstractResource implements ResourceInterface
#[ORM\Table(name: 'illustration')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\Node\IllustrationRepository::class)]
class Illustration extends AbstractResource implements ResourceInterface, \Stringable
{
use PersonalResourceTrait;
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="uuid")
* @ORM\Id
*/
#[ORM\Column(name: 'id', type: 'uuid')]
#[ORM\Id]
protected Uuid $id;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
public function __construct()

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity;
use Chamilo\CoreBundle\Repository\LanguageRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
@ -13,54 +14,36 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* Platform languages.
*
* @ORM\Table(
* name="language",
* options={"row_format"="DYNAMIC"}
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\LanguageRepository")
*/
#[ORM\Table(name: 'language', options: ['row_format' => 'DYNAMIC'])]
#[ORM\Entity(repositoryClass: LanguageRepository::class)]
class Language
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="original_name", type="string", length=255, nullable=true)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'original_name', type: 'string', length: 255, nullable: true)]
protected ?string $originalName = null;
/**
* @ORM\Column(name="english_name", type="string", length=255)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'english_name', type: 'string', length: 255)]
protected string $englishName;
/**
* @ORM\Column(name="isocode", type="string", length=10)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'isocode', type: 'string', length: 10)]
protected string $isocode;
/**
* @ORM\Column(name="available", type="boolean", nullable=false)
*/
#[ORM\Column(name: 'available', type: 'boolean', nullable: false)]
protected bool $available;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Language", inversedBy="subLanguages")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", nullable=true)
*/
#[ORM\ManyToOne(targetEntity: Language::class, inversedBy: 'subLanguages')]
#[ORM\JoinColumn(name: 'parent_id', referencedColumnName: 'id', nullable: true)]
protected ?Language $parent = null;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Language", mappedBy="parent")
*/
#[ORM\OneToMany(targetEntity: Language::class, mappedBy: 'parent')]
protected Collection $subLanguages;
public function __construct()

@ -10,47 +10,32 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Legal.
*
* @ORM\Table(name="legal")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\LegalRepository")
*/
#[ORM\Table(name: 'legal')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\LegalRepository::class)]
class Legal
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="date", type="integer", nullable=false)
*/
#[ORM\Column(name: 'date', type: 'integer', nullable: false)]
protected int $date;
/**
* @ORM\Column(name="content", type="text", nullable=true)
*/
#[ORM\Column(name: 'content', type: 'text', nullable: true)]
protected ?string $content = null;
/**
* @ORM\Column(name="type", type="integer", nullable=false)
*/
#[ORM\Column(name: 'type', type: 'integer', nullable: false)]
protected int $type;
/**
* @ORM\Column(name="changes", type="text", nullable=false)
*/
#[ORM\Column(name: 'changes', type: 'text', nullable: false)]
protected string $changes;
/**
* @ORM\Column(name="version", type="integer", nullable=true)
*/
#[ORM\Column(name: 'version', type: 'integer', nullable: true)]
protected ?int $version = null;
/**
* @ORM\Column(name="language_id", type="integer")
*/
#[ORM\Column(name: 'language_id', type: 'integer')]
protected int $languageId;
/**

@ -11,42 +11,29 @@ use Gedmo\Mapping\Annotation as Gedmo;
/**
* Skill level.
*
* @ORM\Table(name="skill_level")
* @ORM\Entity
*/
class Level
#[ORM\Table(name: 'skill_level')]
#[ORM\Entity]
class Level implements \Stringable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @Gedmo\SortablePosition
*
* @ORM\Column(name="position", type="integer")
*/
#[Gedmo\SortablePosition]
#[ORM\Column(name: 'position', type: 'integer')]
protected int $position;
/**
* @ORM\Column(name="short_name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'short_name', type: 'string', length: 255, nullable: false)]
protected string $shortName;
/**
* @Gedmo\SortableGroup
*
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Profile", inversedBy="levels")
* @ORM\JoinColumn(name="profile_id", referencedColumnName="id")
*/
#[Gedmo\SortableGroup]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Profile::class, inversedBy: 'levels')]
#[ORM\JoinColumn(name: 'profile_id', referencedColumnName: 'id')]
protected ?Profile $profile = null;
public function __toString(): string

@ -22,14 +22,8 @@ use Exception;
*/
class CourseListener
{
protected ToolChain $toolChain;
protected SettingsManager $settingsManager;
public function __construct(ToolChain $toolChain, SettingsManager $settingsManager)
public function __construct(protected ToolChain $toolChain, protected SettingsManager $settingsManager)
{
$this->toolChain = $toolChain;
$this->settingsManager = $settingsManager;
}
/**

@ -12,11 +12,8 @@ use Symfony\Component\Messenger\MessageBusInterface;
class MessageListener
{
private MessageBusInterface $bus;
public function __construct(MessageBusInterface $bus)
public function __construct(private MessageBusInterface $bus)
{
$this->bus = $bus;
}
public function postPersist(Message $message, LifecycleEventArgs $args): void

@ -36,21 +36,8 @@ class ResourceListener
{
use AccessUrlListenerTrait;
protected SlugifyInterface $slugify;
protected Security $security;
protected ToolChain $toolChain;
protected RequestStack $request;
public function __construct(
SlugifyInterface $slugify,
ToolChain $toolChain,
RequestStack $request,
Security $security
) {
$this->slugify = $slugify;
$this->security = $security;
$this->toolChain = $toolChain;
$this->request = $request;
public function __construct(protected SlugifyInterface $slugify, protected ToolChain $toolChain, protected RequestStack $request, protected Security $security)
{
}
/**
@ -109,7 +96,7 @@ class ResourceListener
// 3. Set ResourceType.
// @todo use static table instead of Doctrine
$resourceTypeRepo = $em->getRepository(ResourceType::class);
$entityClass = \get_class($eventArgs->getObject());
$entityClass = $eventArgs->getObject()::class;
$name = $this->toolChain->getResourceTypeNameByEntity($entityClass);
@ -170,7 +157,7 @@ class ResourceListener
$resourceNodeIdFromRequest = $currentRequest->get('parentResourceNodeId');
if (empty($resourceNodeIdFromRequest)) {
$contentData = $request->getCurrentRequest()->getContent();
$contentData = json_decode($contentData, true);
$contentData = json_decode($contentData, true, 512, JSON_THROW_ON_ERROR);
$resourceNodeIdFromRequest = $contentData['parentResourceNodeId'] ?? '';
}

@ -17,26 +17,10 @@ use Symfony\Component\Security\Core\Security;
class ResourceNodeListener
{
protected SlugifyInterface $slugify;
protected Security $security;
protected ToolChain $toolChain;
protected RequestStack $request;
protected ResourceNodeRepository $resourceNodeRepository;
//protected $accessUrl;
public function __construct(
SlugifyInterface $slugify,
ToolChain $toolChain,
RequestStack $request,
Security $security,
ResourceNodeRepository $resourceNodeRepository
) {
$this->slugify = $slugify;
$this->security = $security;
$this->toolChain = $toolChain;
$this->request = $request;
//$this->accessUrl = null;
$this->resourceNodeRepository = $resourceNodeRepository;
public function __construct(protected SlugifyInterface $slugify, protected ToolChain $toolChain, protected RequestStack $request, protected Security $security, protected ResourceNodeRepository $resourceNodeRepository)
{
}
/*public function prePersist(ResourceNode $resourceNode, LifecycleEventArgs $event)

@ -23,13 +23,8 @@ class SessionListener
{
use AccessUrlListenerTrait;
protected RequestStack $request;
protected Security $security;
public function __construct(RequestStack $request, Security $security)
public function __construct(protected RequestStack $request, protected Security $security)
{
$this->security = $security;
$this->request = $request;
}
/**

@ -18,21 +18,8 @@ use Symfony\Contracts\Translation\TranslatorInterface;
class SkillRelUserListener
{
protected Security $security;
private SettingsManager $settingsManager;
private RouterInterface $router;
private TranslatorInterface $translator;
public function __construct(
SettingsManager $settingsManager,
RouterInterface $router,
TranslatorInterface $translator,
Security $security
) {
$this->settingsManager = $settingsManager;
$this->router = $router;
$this->translator = $translator;
$this->security = $security;
public function __construct(private SettingsManager $settingsManager, private RouterInterface $router, private TranslatorInterface $translator, protected Security $security)
{
}
public function postPersist(SkillRelUser $skillRelUser, LifecycleEventArgs $event): void

@ -15,13 +15,8 @@ use Symfony\Component\Security\Core\Security;
class UserListener
{
private UserRepository $userRepository;
private Security $security;
public function __construct(UserRepository $userRepository, Security $security)
public function __construct(private UserRepository $userRepository, private Security $security)
{
$this->userRepository = $userRepository;
$this->security = $security;
}
/**

@ -14,11 +14,8 @@ use Symfony\Component\Security\Core\Security;
class UserRelUserListener
{
private Security $security;
public function __construct(Security $security)
public function __construct(private Security $security)
{
$this->security = $security;
}
public function prePersist(UserRelUser $userRelUser, LifecycleEventArgs $args): void

@ -9,53 +9,35 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Table(name="mail_template")
* @ORM\Entity
*/
#[ORM\Table(name: 'mail_template')]
#[ORM\Entity]
class MailTemplate
{
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', nullable: false)]
protected string $name;
/**
* @ORM\Column(name="template", type="text", nullable=true)
*/
#[ORM\Column(name: 'template', type: 'text', nullable: true)]
protected ?string $template = null;
/**
* @ORM\Column(name="type", type="string", nullable=false)
*/
#[ORM\Column(name: 'type', type: 'string', nullable: false)]
protected string $type;
/**
* @ORM\Column(name="score", type="float", nullable=true)
*/
#[ORM\Column(name: 'score', type: 'float', nullable: true)]
protected float $authorId;
/**
* @ORM\Column(name="result_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'result_id', type: 'integer', nullable: false)]
protected int $urlId;
/**
* @ORM\Column(name="default_template", type="boolean", nullable=false)
*/
#[ORM\Column(name: 'default_template', type: 'boolean', nullable: false)]
protected bool $defaultTemplate;
/**
* @ORM\Column(name="`system`", type="integer", nullable=false, options={"default":0})
*/
#[ORM\Column(name: '`system`', type: 'integer', nullable: false, options: ['default' => 0])]
protected bool $system;
}

@ -21,15 +21,6 @@ use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="message", indexes={
* @ORM\Index(name="idx_message_user_sender", columns={"user_sender_id"}),
* @ORM\Index(name="idx_message_group", columns={"group_id"}),
* @ORM\Index(name="idx_message_type", columns={"msg_type"})
* })
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\MessageRepository")
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\MessageListener"})
*/
#[ApiResource(
collectionOperations: [
'get' => [
@ -94,6 +85,12 @@ use Symfony\Component\Validator\Constraints as Assert;
'receivers.tags.tag' => 'exact',
'parent' => 'exact',
])]
#[ORM\Table(name: 'message')]
#[ORM\Index(name: 'idx_message_user_sender', columns: ['user_sender_id'])]
#[ORM\Index(name: 'idx_message_group', columns: ['group_id'])]
#[ORM\Index(name: 'idx_message_type', columns: ['msg_type'])]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\MessageRepository::class)]
#[ORM\EntityListeners([\Chamilo\CoreBundle\Entity\Listener\MessageListener::class])]
class Message
{
public const MESSAGE_TYPE_INBOX = 1;
@ -108,31 +105,26 @@ class Message
public const MESSAGE_STATUS_INVITATION_ACCEPTED = 6;
public const MESSAGE_STATUS_INVITATION_DENIED = 7;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ApiProperty(identifier: true)]
#[Groups(['message:read'])]
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="sentMessages")
* @ORM\JoinColumn(name="user_sender_id", referencedColumnName="id", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message:read', 'message:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'sentMessages')]
#[ORM\JoinColumn(name: 'user_sender_id', referencedColumnName: 'id', nullable: false)]
protected User $sender;
/**
* @var Collection|MessageRelUser[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\MessageRelUser", mappedBy="message", cascade={"persist", "remove"})
*/
#[Assert\Valid]
#[Groups(['message:read', 'message:write'])]
#[ApiSubresource]
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\MessageRelUser::class, mappedBy: 'message', cascade: ['persist', 'remove'])]
protected array | null | Collection $receivers;
/**
@ -147,9 +139,6 @@ class Message
#[Groups(['message:read', 'message:write'])]
protected array | null | Collection $receiversCc;
/**
* @ORM\Column(name="msg_type", type="smallint", nullable=false)
*/
#[Assert\NotBlank]
// @todo use enums with PHP 8.1
/*#[Assert\Choice([
@ -164,74 +153,58 @@ class Message
],
])]*/
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'msg_type', type: 'smallint', nullable: false)]
protected int $msgType;
/**
* @ORM\Column(name="status", type="smallint", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'status', type: 'smallint', nullable: false)]
protected int $status;
/**
* @ORM\Column(name="send_date", type="datetime", nullable=false)
*/
#[Groups(['message:read'])]
#[ORM\Column(name: 'send_date', type: 'datetime', nullable: false)]
protected DateTime $sendDate;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
/**
* @ORM\Column(name="content", type="text", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'content', type: 'text', nullable: false)]
protected string $content;
#[Groups(['message:read', 'message:write'])]
protected ?MessageRelUser $firstReceiver;
protected ?MessageRelUser $firstReceiver = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Usergroup")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Usergroup::class)]
#[ORM\JoinColumn(name: 'group_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?Usergroup $group = null;
/**
* @var Collection|Message[]
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Message", mappedBy="parent")
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\Message::class, mappedBy: 'parent')]
protected Collection $children;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Message", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
#[Groups(['message:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Message::class, inversedBy: 'children')]
#[ORM\JoinColumn(name: 'parent_id', referencedColumnName: 'id')]
protected ?Message $parent = null;
/**
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="update_date", type="datetime", nullable=true)
*/
#[Gedmo\Timestampable(on: 'update')]
#[ORM\Column(name: 'update_date', type: 'datetime', nullable: true)]
protected ?DateTime $updateDate;
/**
* @ORM\Column(name="votes", type="integer", nullable=true)
*/
#[ORM\Column(name: 'votes', type: 'integer', nullable: true)]
protected ?int $votes;
/**
* @var Collection|MessageAttachment[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\MessageAttachment", mappedBy="message", cascade={"remove", "persist"})
*/
#[Groups(['message:read'])]
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\MessageAttachment::class, mappedBy: 'message', cascade: ['remove', 'persist'])]
protected Collection $attachments;
public function __construct()
@ -252,7 +225,7 @@ class Message
/**
* @return null|Collection|MessageRelUser[]
*/
public function getReceivers()
public function getReceivers(): null|\Doctrine\Common\Collections\Collection|array
{
return $this->receivers;
}
@ -336,10 +309,7 @@ class Message
return $this;
}
/**
* @param Collection|MessageRelUser $receivers
*/
public function setReceivers($receivers): self
public function setReceivers(\Doctrine\Common\Collections\Collection|\Chamilo\CoreBundle\Entity\MessageRelUser $receivers): self
{
/** @var MessageRelUser $receiver */
foreach ($receivers as $receiver) {
@ -459,7 +429,7 @@ class Message
*
* @return Collection|MessageAttachment[]
*/
public function getAttachments()
public function getAttachments(): \Doctrine\Common\Collections\Collection|array
{
return $this->attachments;
}
@ -480,7 +450,7 @@ class Message
/**
* @return Collection|Message[]
*/
public function getChildren()
public function getChildren(): \Doctrine\Common\Collections\Collection|array
{
return $this->children;
}
@ -507,7 +477,7 @@ class Message
public function setGroup(?Usergroup $group): self
{
// $this->msgType = self::MESSAGE_TYPE_GROUP;
// $this->msgType = self::MESSAGE_TYPE_GROUP;
$this->group = $group;
return $this;

@ -11,10 +11,6 @@ use Chamilo\CoreBundle\Controller\Api\CreateMessageAttachmentAction;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Table(name="message_attachment")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\Node\MessageAttachmentRepository")
*/
#[ApiResource(
collectionOperations: [
'get',
@ -49,40 +45,30 @@ use Symfony\Component\Serializer\Annotation\Groups;
itemOperations: ['get'],
normalizationContext: ['groups' => 'message:read'],
)]
class MessageAttachment extends AbstractResource implements ResourceInterface
#[ORM\Table(name: 'message_attachment')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\Node\MessageAttachmentRepository::class)]
class MessageAttachment extends AbstractResource implements ResourceInterface, \Stringable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="path", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'path', type: 'string', length: 255, nullable: false)]
protected string $path;
/**
* @ORM\Column(name="comment", type="text", nullable=true)
*/
#[Groups(['message:read'])]
#[ORM\Column(name: 'comment', type: 'text', nullable: true)]
protected ?string $comment = null;
/**
* @ORM\Column(name="size", type="integer", nullable=false)
*/
#[ORM\Column(name: 'size', type: 'integer', nullable: false)]
protected int $size;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Message", inversedBy="attachments", cascade={"persist"})
* @ORM\JoinColumn(name="message_id", referencedColumnName="id", nullable=false)
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Message::class, inversedBy: 'attachments', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'message_id', referencedColumnName: 'id', nullable: false)]
protected Message $message;
/**
* @ORM\Column(name="filename", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'filename', type: 'string', length: 255, nullable: false)]
protected string $filename;
public function __construct()

@ -16,14 +16,6 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="message_rel_user",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="message_receiver", columns={"message_id", "user_id"})
* },
* )
* @ORM\Entity()
*/
#[UniqueEntity(
fields: ['message', 'receiver'],
errorPath: 'message',
@ -38,59 +30,49 @@ use Symfony\Component\Validator\Constraints as Assert;
'starred' => 'exact',
'tags.tag' => 'exact',
])]
#[ORM\Table(name: 'message_rel_user')]
#[ORM\UniqueConstraint(name: 'message_receiver', columns: ['message_id', 'user_id'])]
#[ORM\Entity]
class MessageRelUser
{
public const TYPE_TO = 1;
public const TYPE_CC = 2;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Message", inversedBy="receivers", cascade={"persist"})
* @ORM\JoinColumn(name="message_id", referencedColumnName="id", nullable=false)
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Message::class, inversedBy: 'receivers', cascade: ['persist'])]
#[ORM\JoinColumn(name: 'message_id', referencedColumnName: 'id', nullable: false)]
protected Message $message;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", cascade={"persist"}, inversedBy="receivedMessages")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
#[Assert\NotNull]
#[Groups(['message:read', 'message:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, cascade: ['persist'], inversedBy: 'receivedMessages')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')]
protected User $receiver;
/**
* @ORM\Column(name="msg_read", type="boolean", nullable=false)
*/
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'msg_read', type: 'boolean', nullable: false)]
protected bool $read;
/**
* @ORM\Column(name="receiver_type", type="smallint", nullable=false)
*/
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'receiver_type', type: 'smallint', nullable: false)]
protected int $receiverType;
/**
* @ORM\Column(name="starred", type="boolean", nullable=false)
*/
#[Groups(['message:read', 'message:write'])]
#[ORM\Column(name: 'starred', type: 'boolean', nullable: false)]
protected bool $starred;
/**
* @var Collection|MessageTag[]
*
* @ORM\ManyToMany(targetEntity="Chamilo\CoreBundle\Entity\MessageTag", inversedBy="messageRelUsers", cascade={"persist", "remove"})
* @ORM\JoinTable(name="message_rel_user_rel_tags")
*/
#[Assert\Valid]
#[Groups(['message:read', 'message:write'])]
#[ORM\JoinTable(name: 'message_rel_user_rel_tags')]
#[ORM\ManyToMany(targetEntity: \Chamilo\CoreBundle\Entity\MessageTag::class, inversedBy: 'messageRelUsers', cascade: ['persist', 'remove'])]
protected Collection $tags;
public function __construct()
@ -109,7 +91,7 @@ class MessageRelUser
/**
* @return Collection|MessageTag[]
*/
public function getTags()
public function getTags(): \Doctrine\Common\Collections\Collection|array
{
return $this->tags;
}

@ -18,17 +18,6 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="message_tag",
* uniqueConstraints={
* @ORM\UniqueConstraint(
* name="user_tag",
* columns={"user_id", "tag"})
* },
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\MessageTagRepository")
*/
#[UniqueEntity(
fields: ['user', 'tag'],
errorPath: 'tag',
@ -68,52 +57,44 @@ use Symfony\Component\Validator\Constraints as Assert;
'user' => 'exact',
'tag' => 'exact',
])]
#[ORM\Table(name: 'message_tag')]
#[ORM\UniqueConstraint(name: 'user_tag', columns: ['user_id', 'tag'])]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\MessageTagRepository::class)]
class MessageTag
{
use TimestampableTypedEntity;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[Groups(['message_tag:read', 'message:read'])]
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @Gedmo\SortableGroup()
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="messageTags")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false, onDelete="cascade")
*/
#[Assert\NotBlank]
#[Groups(['message_tag:read', 'message_tag:write'])]
#[Gedmo\SortableGroup]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'messageTags')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false, onDelete: 'cascade')]
protected User $user;
/**
* @ORM\Column(name="tag", type="string", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message_tag:read', 'message_tag:write', 'message:read'])]
#[ORM\Column(name: 'tag', type: 'string', nullable: false)]
protected string $tag;
/**
* @ORM\Column(name="color", type="string", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['message_tag:read', 'message_tag:write'])]
#[ORM\Column(name: 'color', type: 'string', nullable: false)]
protected string $color;
/**
* @Gedmo\SortablePosition()
* @ORM\Column(name="position", type="integer")
*/
#[Gedmo\SortablePosition]
#[ORM\Column(name: 'position', type: 'integer')]
protected int $position;
/**
* @var Collection|MessageRelUser[]
*
* @ORM\ManyToMany(targetEntity="Chamilo\CoreBundle\Entity\MessageRelUser", mappedBy="tags", cascade={"persist"})
*/
#[ORM\ManyToMany(targetEntity: \Chamilo\CoreBundle\Entity\MessageRelUser::class, mappedBy: 'tags', cascade: ['persist'])]
protected Collection $messageRelUsers;
public function __construct()

@ -10,62 +10,37 @@ use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Table(
* name="notification",
* indexes={
* @ORM\Index(name="mail_notify_sent_index", columns={"sent_at"}),
* @ORM\Index(
* name="mail_notify_freq_index",
* columns={"sent_at", "send_freq", "created_at"}
* )
* }
* )
* @ORM\Entity
*/
#[ORM\Table(name: 'notification')]
#[ORM\Index(name: 'mail_notify_sent_index', columns: ['sent_at'])]
#[ORM\Index(name: 'mail_notify_freq_index', columns: ['sent_at', 'send_freq', 'created_at'])]
#[ORM\Entity]
class Notification
{
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**
* @ORM\Column(name="dest_user_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'dest_user_id', type: 'integer', nullable: false)]
protected int $destUserId;
/**
* @ORM\Column(name="dest_mail", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'dest_mail', type: 'string', length: 255, nullable: true)]
protected ?string $destMail = null;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: true)]
protected ?string $title = null;
/**
* @ORM\Column(name="content", type="text", nullable=true)
*/
#[ORM\Column(name: 'content', type: 'text', nullable: true)]
protected ?string $content = null;
/**
* @ORM\Column(name="send_freq", type="smallint", nullable=true)
*/
#[ORM\Column(name: 'send_freq', type: 'smallint', nullable: true)]
protected ?int $sendFreq = null;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(name: 'created_at', type: 'datetime', nullable: false)]
protected DateTime $createdAt;
/**
* @ORM\Column(name="sent_at", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'sent_at', type: 'datetime', nullable: true)]
protected ?DateTime $sentAt = null;
/**

@ -8,52 +8,34 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="notification_event")
* @ORM\Entity
*/
#[ORM\Table(name: 'notification_event')]
#[ORM\Entity]
class NotificationEvent
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected int $id;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
/**
* @ORM\Column(name="content", type="text", nullable=true)
*/
#[ORM\Column(name: 'content', type: 'text', nullable: true)]
protected string $content;
/**
* @ORM\Column(name="link", type="text", nullable=true)
*/
#[ORM\Column(name: 'link', type: 'text', nullable: true)]
protected string $link;
/**
* @ORM\Column(name="persistent", type="integer", nullable=true)
*/
#[ORM\Column(name: 'persistent', type: 'integer', nullable: true)]
protected int $persistent;
/**
* @ORM\Column(name="day_diff", type="integer", nullable=true)
*/
#[ORM\Column(name: 'day_diff', type: 'integer', nullable: true)]
protected int $dayDiff;
/**
* @ORM\Column(name="event_type", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'event_type', type: 'string', length: 255, nullable: false)]
protected string $eventType;
/**
* @ORM\Column(name="event_id", type="integer", nullable=true)
*/
#[ORM\Column(name: 'event_id', type: 'integer', nullable: true)]
protected int $eventId;
public function getId(): int

@ -16,14 +16,6 @@ use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="page",
* indexes={
* }
* )
* @ORM\Entity
*/
#[ApiResource(
collectionOperations: [
'get' => [
@ -61,82 +53,60 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ApiFilter(OrderFilter::class, properties: [
'title',
])]
#[ORM\Table(name: 'page')]
#[ORM\Entity]
class Page
{
use TimestampableTypedEntity;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="string", length=255)
*/
#[Assert\NotBlank]
#[Groups(['page:read', 'page:write'])]
#[ORM\Column(name: 'title', type: 'string', length: 255)]
protected string $title;
/**
* @ORM\Column(name="content", type="text")
*/
#[Groups(['page:read', 'page:write'])]
#[Assert\NotBlank]
#[ORM\Column(name: 'content', type: 'text')]
protected string $content;
/**
* @Gedmo\Slug(
* fields={"title"},
* updatable=true,
* unique=true,
* )
* @ORM\Column(name="slug", type="string", length=255)
*/
#[Gedmo\Slug(fields: ['title'], updatable: true, unique: true)]
#[ORM\Column(name: 'slug', type: 'string', length: 255)]
protected string $slug;
/**
* @ORM\Column(name="enabled", type="boolean", nullable=false)
*/
#[Groups(['page:read', 'page:write'])]
#[ORM\Column(name: 'enabled', type: 'boolean', nullable: false)]
protected bool $enabled;
/**
* @Gedmo\SortablePosition
* @ORM\Column(name="position", type="integer")
*/
#[Groups(['page:read', 'page:write'])]
#[Gedmo\SortablePosition]
#[ORM\Column(name: 'position', type: 'integer')]
protected int $position;
/**
* @ORM\Column(name="locale", type="string", length=10)
*/
#[Groups(['page:read', 'page:write'])]
#[ORM\Column(name: 'locale', type: 'string', length: 10)]
protected string $locale;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\AccessUrl", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Assert\NotNull]
#[Groups(['page:read', 'page:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\AccessUrl::class, cascade: ['persist'])]
#[ORM\JoinColumn(name: 'access_url_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected AccessUrl $url;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="creator_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[Assert\NotNull]
#[Groups(['page:read', 'page:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'creator_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected User $creator;
/**
* @Gedmo\SortableGroup
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\PageCategory", inversedBy="pages")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[Groups(['page:read', 'page:write'])]
#[Gedmo\SortableGroup]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\PageCategory::class, inversedBy: 'pages')]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?PageCategory $category = null;
public function __construct()

@ -14,14 +14,6 @@ use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(
* name="page_category",
* indexes={
* }
* )
* @ORM\Entity
*/
#[ApiResource(
collectionOperations: [
'get' => [
@ -49,43 +41,37 @@ use Symfony\Component\Validator\Constraints as Assert;
'groups' => ['page_category:read'],
],
)]
#[ORM\Table(name: 'page_category')]
#[ORM\Entity]
class PageCategory
{
use TimestampableTypedEntity;
/**
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[Groups(['page_category:read', 'page_category:write'])]
#[ORM\Column(name: 'id', type: 'bigint')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="string", length=255)
*/
#[Assert\NotBlank]
#[Groups(['page_category:read', 'page_category:write', 'page:read'])]
#[ORM\Column(name: 'title', type: 'string', length: 255)]
protected string $title;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="creator_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(name: 'creator_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected User $creator;
/**
* @ORM\Column(name="type", type="string")
*/
#[Groups(['page_category:read', 'page_category:write', 'page:read'])]
#[Assert\NotBlank]
#[ORM\Column(name: 'type', type: 'string')]
protected string $type;
/**
* @var Collection|Page[]
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Page", mappedBy="category", cascade={"persist"})
*/
#[ORM\OneToMany(targetEntity: Page::class, mappedBy: 'category', cascade: ['persist'])]
protected Collection $pages;
public function __construct()

@ -13,65 +13,44 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* PersonalAgenda.
*
* @ORM\Table(name="personal_agenda", indexes={
* @ORM\Index(name="idx_personal_agenda_user", columns={"user"}),
* @ORM\Index(name="idx_personal_agenda_parent", columns={"parent_event_id"})
* })
* @ORM\Entity
*/
#[ORM\Table(name: 'personal_agenda')]
#[ORM\Index(name: 'idx_personal_agenda_user', columns: ['user'])]
#[ORM\Index(name: 'idx_personal_agenda_parent', columns: ['parent_event_id'])]
#[ORM\Entity]
class PersonalAgenda
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="personalAgendas")
* @ORM\JoinColumn(name="user", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'personalAgendas')]
#[ORM\JoinColumn(name: 'user', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $user;
/**
* @Assert\NotBlank()
*
* @ORM\Column(name="title", type="text", nullable=true)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'title', type: 'text', nullable: true)]
protected ?string $title = null;
/**
* @ORM\Column(name="text", type="text", nullable=true)
*/
#[ORM\Column(name: 'text', type: 'text', nullable: true)]
protected ?string $text = null;
/**
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'date', type: 'datetime', nullable: true)]
protected ?DateTime $date = null;
/**
* @ORM\Column(name="enddate", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'enddate', type: 'datetime', nullable: true)]
protected ?DateTime $endDate = null;
/**
* @ORM\Column(name="parent_event_id", type="integer", nullable=true)
*/
#[ORM\Column(name: 'parent_event_id', type: 'integer', nullable: true)]
protected ?int $parentEventId = null;
/**
* @ORM\Column(name="all_day", type="integer", nullable=false)
*/
#[ORM\Column(name: 'all_day', type: 'integer', nullable: false)]
protected int $allDay;
/**
* @ORM\Column(name="color", type="string", length=20, nullable=true)
*/
#[ORM\Column(name: 'color', type: 'string', length: 20, nullable: true)]
protected ?string $color = null;
/**

@ -10,37 +10,26 @@ use Doctrine\ORM\Mapping as ORM;
/**
* PersonalAgendaRepeat.
*
* @ORM\Table(name="personal_agenda_repeat")
* @ORM\Entity
*/
#[ORM\Table(name: 'personal_agenda_repeat')]
#[ORM\Entity]
class PersonalAgendaRepeat
{
/**
* @ORM\Column(name="cal_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'cal_id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected int $calId;
/**
* @ORM\Column(name="cal_type", type="string", length=20, nullable=true)
*/
#[ORM\Column(name: 'cal_type', type: 'string', length: 20, nullable: true)]
protected ?string $calType = null;
/**
* @ORM\Column(name="cal_end", type="integer", nullable=true)
*/
#[ORM\Column(name: 'cal_end', type: 'integer', nullable: true)]
protected ?int $calEnd = null;
/**
* @ORM\Column(name="cal_frequency", type="integer", nullable=true)
*/
#[ORM\Column(name: 'cal_frequency', type: 'integer', nullable: true)]
protected ?int $calFrequency = null;
/**
* @ORM\Column(name="cal_days", type="string", length=7, nullable=true)
*/
#[ORM\Column(name: 'cal_days', type: 'string', length: 7, nullable: true)]
protected ?string $calDays = null;
/**

@ -10,24 +10,19 @@ use Doctrine\ORM\Mapping as ORM;
/**
* PersonalAgendaRepeatNot.
*
* @ORM\Table(name="personal_agenda_repeat_not")
* @ORM\Entity
*/
#[ORM\Table(name: 'personal_agenda_repeat_not')]
#[ORM\Entity]
class PersonalAgendaRepeatNot
{
/**
* @ORM\Column(name="cal_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'cal_id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected int $calId;
/**
* @ORM\Column(name="cal_date", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
#[ORM\Column(name: 'cal_date', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'NONE')]
protected int $calDate;
/**

@ -13,6 +13,8 @@ use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
use Chamilo\CoreBundle\Controller\Api\CreatePersonalFileAction;
use Chamilo\CoreBundle\Controller\Api\UpdatePersonalFileAction;
use Chamilo\CoreBundle\Entity\Listener\ResourceListener;
use Chamilo\CoreBundle\Repository\Node\PersonalFileRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Serializer\Annotation\Groups;
@ -93,10 +95,6 @@ use Symfony\Component\Validator\Constraints as Assert;
* },
* },
* )
*
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\ResourceListener"})
* @ORM\Table(name="personal_file")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\Node\PersonalFileRepository")
*/
#[ApiFilter(SearchFilter::class, properties: [
'title' => 'partial',
@ -113,24 +111,23 @@ use Symfony\Component\Validator\Constraints as Assert;
'resourceNode.updatedAt',
]
)]
#[ORM\Table(name: 'personal_file')]
#[ORM\EntityListeners([ResourceListener::class])]
#[ORM\Entity(repositoryClass: PersonalFileRepository::class)]
class PersonalFile extends AbstractResource implements ResourceInterface
class PersonalFile extends AbstractResource implements ResourceInterface, \Stringable
{
use TimestampableEntity;
/**
* @Groups({"personal_file:read"})
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[Groups(['personal_file:read'])]
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['personal_file:read'])]
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
public function __construct()

@ -12,76 +12,51 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class Portfolio.
*
* @ORM\Table(
* name="portfolio",
* indexes={
* @ORM\Index(name="user", columns={"user_id"}),
* @ORM\Index(name="course", columns={"c_id"}),
* @ORM\Index(name="session", columns={"session_id"}),
* @ORM\Index(name="category", columns={"category_id"})
* }
* )
* @ORM\Entity()
*/
#[ORM\Table(name: 'portfolio')]
#[ORM\Index(name: 'user', columns: ['user_id'])]
#[ORM\Index(name: 'course', columns: ['c_id'])]
#[ORM\Index(name: 'session', columns: ['session_id'])]
#[ORM\Index(name: 'category', columns: ['category_id'])]
#[ORM\Entity]
class Portfolio
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="text", nullable=false)
*/
#[ORM\Column(name: 'title', type: 'text', nullable: false)]
protected string $title;
/**
* @ORM\Column(name="content", type="text")
*/
#[ORM\Column(name: 'content', type: 'text')]
protected string $content;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false)]
protected User $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class)]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id')]
protected Course $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session")
* @ORM\JoinColumn(name="session_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Session::class)]
#[ORM\JoinColumn(name: 'session_id', referencedColumnName: 'id')]
protected Session $session;
/**
* @ORM\Column(name="creation_date", type="datetime")
*/
#[ORM\Column(name: 'creation_date', type: 'datetime')]
protected DateTime $creationDate;
/**
* @ORM\Column(name="update_date", type="datetime")
*/
#[ORM\Column(name: 'update_date', type: 'datetime')]
protected DateTime $updateDate;
/**
* @ORM\Column(name="is_visible", type="boolean", options={"default":true})
*/
#[ORM\Column(name: 'is_visible', type: 'boolean', options: ['default' => true])]
protected bool $isVisible = true;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\PortfolioCategory", inversedBy="items")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\PortfolioCategory::class, inversedBy: 'items')]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id')]
protected PortfolioCategory $category;
public function __construct()

@ -13,50 +13,33 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class PortfolioCategory.
*
* @ORM\Table(
* name="portfolio_category",
* indexes={
* @ORM\Index(name="user", columns={"user_id"})
* }
* )
* @ORM\Entity
*/
class PortfolioCategory
#[ORM\Table(name: 'portfolio_category')]
#[ORM\Index(name: 'user', columns: ['user_id'])]
#[ORM\Entity]
class PortfolioCategory implements \Stringable
{
use UserTrait;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="text", nullable=false)
*/
#[ORM\Column(name: 'title', type: 'text', nullable: false)]
protected string $title;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')]
protected User $user;
/**
* @ORM\Column(name="is_visible", type="boolean", options={"default":true})
*/
#[ORM\Column(name: 'is_visible', type: 'boolean', options: ['default' => true])]
protected bool $isVisible = true;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Portfolio", mappedBy="category")
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\Portfolio::class, mappedBy: 'category')]
protected ArrayCollection $items;
public function __construct()
@ -103,10 +86,8 @@ class PortfolioCategory
/**
* Get description.
*
* @return null|string
*/
public function getDescription()
public function getDescription(): ?string
{
return $this->description;
}

@ -10,37 +10,30 @@ use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="skill_level_profile")
* @ORM\Entity
*/
class Profile
#[ORM\Table(name: 'skill_level_profile')]
#[ORM\Entity]
class Profile implements \Stringable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Skill", mappedBy="profile", cascade={"persist"})
*
* @var Skill[]|Collection
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\Skill::class, mappedBy: 'profile', cascade: ['persist'])]
protected Collection $skills;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Level", mappedBy="profile", cascade={"persist"})
* @ORM\OrderBy({"position"="ASC"})
*
* @var Level[]|Collection
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\Level::class, mappedBy: 'profile', cascade: ['persist'])]
#[ORM\OrderBy(['position' => 'ASC'])]
protected Collection $levels;
public function __construct()
@ -77,7 +70,7 @@ class Profile
/**
* @return Skill[]|Collection
*/
public function getSkills()
public function getSkills(): array|\Doctrine\Common\Collections\Collection
{
return $this->skills;
}
@ -85,7 +78,7 @@ class Profile
/**
* @param Skill[]|Collection $skills
*/
public function setSkills($skills): self
public function setSkills(array|\Doctrine\Common\Collections\Collection $skills): self
{
$this->skills = $skills;
@ -95,7 +88,7 @@ class Profile
/**
* @return Level[]|Collection
*/
public function getLevels()
public function getLevels(): array|\Doctrine\Common\Collections\Collection
{
return $this->levels;
}

@ -12,10 +12,8 @@ use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="promotion")
* @ORM\Entity
*/
#[ORM\Table(name: 'promotion')]
#[ORM\Entity]
class Promotion
{
use TimestampableEntity;
@ -23,47 +21,35 @@ class Promotion
public const PROMOTION_STATUS_ACTIVE = 1;
public const PROMOTION_STATUS_INACTIVE = 0;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected ?string $description = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Career", inversedBy="promotions")
* @ORM\JoinColumn(name="career_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Career::class, inversedBy: 'promotions')]
#[ORM\JoinColumn(name: 'career_id', referencedColumnName: 'id')]
protected Career $career;
/**
* @var Collection|Session[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Session", mappedBy="promotion", cascade={"persist"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\Session::class, mappedBy: 'promotion', cascade: ['persist'])]
protected Collection $sessions;
/**
* @var Collection|SysAnnouncement[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SysAnnouncement", mappedBy="promotion", cascade={"persist"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\SysAnnouncement::class, mappedBy: 'promotion', cascade: ['persist'])]
protected Collection $announcements;
/**
* @ORM\Column(name="status", type="integer", nullable=false)
*/
#[ORM\Column(name: 'status', type: 'integer', nullable: false)]
protected int $status;
public function __construct()
@ -144,7 +130,7 @@ class Promotion
/**
* @return Session[]|Collection
*/
public function getSessions()
public function getSessions(): array|\Doctrine\Common\Collections\Collection
{
return $this->sessions;
}
@ -159,7 +145,7 @@ class Promotion
/**
* @return SysAnnouncement[]|Collection
*/
public function getAnnouncements()
public function getAnnouncements(): array|\Doctrine\Common\Collections\Collection
{
return $this->announcements;
}
@ -167,7 +153,7 @@ class Promotion
/**
* @param SysAnnouncement[]|Collection $announcements
*/
public function setAnnouncements($announcements): self
public function setAnnouncements(array|\Doctrine\Common\Collections\Collection $announcements): self
{
$this->announcements = $announcements;

@ -9,30 +9,19 @@ use Doctrine\ORM\Mapping as ORM;
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface;
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestTrait;
/**
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\ResetPasswordRequestRepository")
*/
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\ResetPasswordRequestRepository::class)]
class ResetPasswordRequest implements ResetPasswordRequestInterface
{
use ResetPasswordRequestTrait;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
*
* @var null|\Chamilo\CoreBundle\Entity\User|object
*/
private $user;
public function __construct(object $user, DateTimeInterface $expiresAt, string $selector, string $hashedToken)
public function __construct(#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
private ?object $user, DateTimeInterface $expiresAt, string $selector, string $hashedToken)
{
$this->user = $user;
$this->initialize($expiresAt, $selector, $hashedToken);
}

@ -10,29 +10,21 @@ use Chamilo\CoreBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity
* @ORM\Table(name="resource_tag")
*/
#[ORM\Table(name: 'resource_tag')]
#[ORM\Entity]
class ResourceTag
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', nullable: false)]
protected string $name;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'author_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?User $author = null;
}

@ -10,30 +10,22 @@ use Chamilo\CoreBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity
* @ORM\Table(name="resource_user_tag")
*/
#[ORM\Table(name: 'resource_user_tag')]
#[ORM\Entity]
class ResourceUserTag
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?User $user = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceTag")
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="SET NULL")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Resource\ResourceTag::class)]
#[ORM\JoinColumn(name: 'tag_id', referencedColumnName: 'id', onDelete: 'SET NULL')]
protected ?ResourceTag $tag = null;
}

@ -23,82 +23,56 @@ use Symfony\Component\Validator\Constraints as Assert;
* attributes={"security"="is_granted('ROLE_ADMIN')"},
* normalizationContext={"groups"={"comment:read"}}
* ).
*
* @Gedmo\Tree(type="nested")
* @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository")
* @ORM\Table(name="resource_comment")
*/
#[ORM\Table(name: 'resource_comment')]
#[Gedmo\Tree(type: 'nested')]
#[ORM\Entity(repositoryClass: \Gedmo\Tree\Entity\Repository\NestedTreeRepository::class)]
class ResourceComment
{
use TimestampableTypedEntity;
use TimestampableAgoTrait;
use NestedSetEntity;
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"comment:read"})
*/
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
#[Groups(['comment:read'])]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", inversedBy="comments")
* @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, inversedBy: 'comments')]
#[ORM\JoinColumn(name: 'resource_node_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ResourceNode $resourceNode;
/**
* @Groups({"comment:read"})
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Groups(['comment:read'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'author_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected User $author;
/**
* @Groups({"comment:read"})
*
* @ORM\Column(name="content", type="string", nullable=false)
*/
#[Assert\NotBlank]
#[Groups(['comment:read'])]
#[ORM\Column(name: 'content', type: 'string', nullable: false)]
protected string $content;
/**
* @Gedmo\TreeParent
*
* @ORM\ManyToOne(
* targetEntity="Chamilo\CoreBundle\Entity\ResourceComment",
* inversedBy="children"
* )
* @ORM\JoinColumns({
* @ORM\JoinColumn(onDelete="CASCADE")
* })
*/
#[ORM\JoinColumn(onDelete: 'CASCADE')]
#[Gedmo\TreeParent]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceComment::class, inversedBy: 'children')]
protected ?ResourceComment $parent = null;
/**
* @Groups({"comment:read"})
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
#[Groups(['comment:read'])]
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(type: 'datetime')]
protected DateTime $createdAt;
/**
* @Groups({"comment:read"})
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
#[Groups(['comment:read'])]
#[Gedmo\Timestampable(on: 'update')]
#[ORM\Column(type: 'datetime')]
protected DateTime $updatedAt;
/**
* @var Collection|ResourceComment[]
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\ResourceComment",
* mappedBy="parent"
* )
* @ORM\OrderBy({"id"="ASC"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceComment::class, mappedBy: 'parent')]
#[ORM\OrderBy(['id' => 'ASC'])]
protected Collection $children;
public function __construct()
@ -164,7 +138,7 @@ class ResourceComment
/**
* @return ResourceComment[]|Collection
*/
public function getChildren()
public function getChildren(): array|\Doctrine\Common\Collections\Collection
{
return $this->children;
}
@ -172,7 +146,7 @@ class ResourceComment
/**
* @param ResourceComment[]|Collection $children
*/
public function setChildren(Collection $children): self
public function setChildren(array|\Doctrine\Common\Collections\Collection $children): self
{
$this->children = $children;

@ -63,56 +63,42 @@ use Vich\UploaderBundle\Mapping\Annotation as Vich;
* )
* @Vich\Uploadable
* @ApiFilter(OrderFilter::class, properties={"id", "name", "size", "updatedAt"})
* @ORM\Entity
* @ORM\Table(name="resource_file")
*/
#[ApiFilter(PropertyFilter::class)]
#[ApiFilter(SearchFilter::class, properties: [
'name' => 'partial',
])]
class ResourceFile
#[ORM\Table(name: 'resource_file')]
#[ORM\Entity]
class ResourceFile implements \Stringable
{
use TimestampableEntity;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read"})
*
* @ORM\Column(type="string", length=255)
*/
#[Assert\NotBlank]
#[Groups(['resource_file:read', 'resource_node:read', 'document:read'])]
#[ORM\Column(type: 'string', length: 255)]
protected ?string $name = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
* @ORM\Column(type="text", nullable=true)
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
#[ORM\Column(type: 'text', nullable: true)]
protected ?string $mimeType = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
* @ORM\Column(type="text", nullable=true)
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
#[ORM\Column(type: 'text', nullable: true)]
protected ?string $originalName = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read"})
* @ORM\Column(type="simple_array", nullable=true)
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read'])]
#[ORM\Column(type: 'simple_array', nullable: true)]
protected ?array $dimensions;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
*
* @ORM\Column(type="integer")
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
#[ORM\Column(type: 'integer')]
protected ?int $size = 0;
/**
@ -125,61 +111,48 @@ class ResourceFile
* dimensions="dimensions"
* )
*/
// #[Vich\UploadableField(
// mapping: 'resources',
// fileNameProperty: 'name',
// size: 'size',
// mimeType: 'mimeType',
// originalName: 'originalName',
// dimensions: 'dimensions'
// )]
// #[Vich\UploadableField(
// mapping: 'resources',
// fileNameProperty: 'name',
// size: 'size',
// mimeType: 'mimeType',
// originalName: 'originalName',
// dimensions: 'dimensions'
// )]
protected ?File $file = null;
/**
* @ORM\Column(name="crop", type="string", length=255, nullable=true)
*/
#[ORM\Column(name: 'crop', type: 'string', length: 255, nullable: true)]
protected ?string $crop = null;
/**
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", mappedBy="resourceFile")
*/
#[ORM\OneToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, mappedBy: 'resourceFile')]
protected ResourceNode $resourceNode;
/**
* @var string[]
*
* @ORM\Column(type="array", nullable=true)
*/
#[ORM\Column(type: 'array', nullable: true)]
protected ?array $metadata = [];
#[Groups(['message:read'])]
protected ?bool $audio = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
protected ?bool $image = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
protected ?bool $video = null;
/**
* @Groups({"resource_file:read", "resource_node:read", "document:read", "message:read"})
*/
#[Groups(['resource_file:read', 'resource_node:read', 'document:read', 'message:read'])]
protected ?bool $text = null;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @var DateTime|DateTimeImmutable
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
#[Gedmo\Timestampable(on: 'update')]
#[ORM\Column(type: 'datetime')]
protected $updatedAt;
public function __construct()
@ -401,7 +374,7 @@ class ResourceFile
/**
* @param File|UploadedFile|null $file
*/
public function setFile(?File $file = null): self
public function setFile(\Symfony\Component\HttpFoundation\File\File|\Symfony\Component\HttpFoundation\File\UploadedFile|null $file = null): self
{
$this->file = $file;

@ -16,12 +16,10 @@ use Doctrine\ORM\Mapping as ORM;
use LogicException;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity
* @ORM\Table(name="resource_link")
*/
#[ApiResource]
class ResourceLink
#[ORM\Table(name: 'resource_link')]
#[ORM\Entity]
class ResourceLink implements \Stringable
{
use TimestampableTypedEntity;
@ -30,75 +28,51 @@ class ResourceLink
public const VISIBILITY_PUBLISHED = 2;
public const VISIBILITY_DELETED = 3;
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue
*/
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", inversedBy="resourceLinks")
* @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, inversedBy: 'resourceLinks')]
#[ORM\JoinColumn(name: 'resource_node_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ResourceNode $resourceNode;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class)]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected ?Course $course = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session", inversedBy="resourceLinks")
* @ORM\JoinColumn(name="session_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Session::class, inversedBy: 'resourceLinks')]
#[ORM\JoinColumn(name: 'session_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected ?Session $session = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CourseBundle\Entity\CGroup")
* @ORM\JoinColumn(name="group_id", referencedColumnName="iid", nullable=true, onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CourseBundle\Entity\CGroup::class)]
#[ORM\JoinColumn(name: 'group_id', referencedColumnName: 'iid', nullable: true, onDelete: 'CASCADE')]
protected ?CGroup $group = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Usergroup")
* @ORM\JoinColumn(name="usergroup_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Usergroup::class)]
#[ORM\JoinColumn(name: 'usergroup_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected ?Usergroup $userGroup = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: true, onDelete: 'SET NULL')]
protected ?User $user = null;
/**
* @var Collection|ResourceRight[]
*
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\ResourceRight",
* mappedBy="resourceLink", cascade={"persist", "remove"}, orphanRemoval=true
* )
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceRight::class, mappedBy: 'resourceLink', cascade: ['persist', 'remove'], orphanRemoval: true)]
protected Collection $resourceRights;
/**
* @ORM\Column(name="visibility", type="integer", nullable=false)
*/
#[Groups(['ctool:read', 'c_tool_intro:read'])]
#[ORM\Column(name: 'visibility', type: 'integer', nullable: false)]
protected int $visibility;
/**
* @ORM\Column(name="start_visibility_at", type="datetime", nullable=true)
*/
#[Groups(['resource_node:read', 'resource_node:write', 'document:write', 'document:read'])]
#[ORM\Column(name: 'start_visibility_at', type: 'datetime', nullable: true)]
protected ?DateTimeInterface $startVisibilityAt = null;
/**
* @ORM\Column(name="end_visibility_at", type="datetime", nullable=true)
*/
#[Groups(['resource_node:read', 'resource_node:write', 'document:write', 'document:read'])]
#[ORM\Column(name: 'end_visibility_at', type: 'datetime', nullable: true)]
protected ?DateTimeInterface $endVisibilityAt = null;
public function __construct()
@ -139,7 +113,7 @@ class ResourceLink
/**
* @param ResourceRight[]|Collection $rights
*/
public function setResourceRights($rights): self
public function setResourceRights(array|\Doctrine\Common\Collections\Collection $rights): self
{
$this->resourceRights = $rights;
@ -163,7 +137,7 @@ class ResourceLink
/**
* @return Collection|ResourceRight[]
*/
public function getResourceRights()
public function getResourceRights(): \Doctrine\Common\Collections\Collection|array
{
return $this->resourceRights;
}
@ -316,6 +290,6 @@ class ResourceLink
public function getVisibilityName(): string
{
return array_flip($this->getVisibilityList())[$this->getVisibility()];
return array_flip(static::getVisibilityList())[$this->getVisibility()];
}
}

@ -31,13 +31,8 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* Base entity for all resources.
*
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\ResourceNodeRepository")
*
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="resource_node")
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\ResourceNodeListener"})
*
* @Gedmo\Tree(type="materializedPath")
*/
#[ApiResource(
collectionOperations: [
@ -61,101 +56,82 @@ use Symfony\Component\Validator\Constraints as Assert;
#[ApiFilter(SearchFilter::class, properties: [
'title' => 'partial',
])]
class ResourceNode
#[ORM\Table(name: 'resource_node')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\ResourceNodeRepository::class)]
#[ORM\HasLifecycleCallbacks]
#[ORM\EntityListeners([\Chamilo\CoreBundle\Entity\Listener\ResourceNodeListener::class])]
#[Gedmo\Tree(type: 'materializedPath')]
class ResourceNode implements \Stringable
{
use TimestampableTypedEntity;
use TimestampableAgoTrait;
public const PATH_SEPARATOR = '/';
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[Groups(['resource_node:read', 'document:read', 'ctool:read', 'user_json:read'])]
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @Gedmo\TreePathSource
*
* @ORM\Column(name="title", type="string", length=255, nullable=false)
*/
#[Groups(['resource_node:read', 'resource_node:write', 'document:read', 'document:write'])]
#[Assert\NotBlank]
#[Gedmo\TreePathSource]
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
/**
* @Gedmo\Slug(fields={"title"})
* @ORM\Column(name="slug", type="string", length=255, nullable=false)
*/
#[Assert\NotBlank]
#[Gedmo\Slug(fields: ['title'])]
#[ORM\Column(name: 'slug', type: 'string', length: 255, nullable: false)]
protected string $slug;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceType", inversedBy="resourceNodes")
* @ORM\JoinColumn(name="resource_type_id", referencedColumnName="id", nullable=false)
*/
#[Assert\NotNull]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceType::class, inversedBy: 'resourceNodes')]
#[ORM\JoinColumn(name: 'resource_type_id', referencedColumnName: 'id', nullable: false)]
protected ResourceType $resourceType;
/**
* @var Collection<int, ResourceLink>
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\ResourceLink", mappedBy="resourceNode", cascade={"persist", "remove"})
*/
#[ApiSubresource]
#[Groups(['ctool:read', 'c_tool_intro:read'])]
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceLink::class, mappedBy: 'resourceNode', cascade: ['persist', 'remove'])]
protected Collection $resourceLinks;
/**
* ResourceFile available file for this node.
*
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceFile", inversedBy="resourceNode", orphanRemoval=true)
* @ORM\JoinColumn(name="resource_file_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[Groups(['resource_node:read', 'resource_node:write', 'document:read', 'document:write', 'message:read'])]
#[ORM\OneToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceFile::class, inversedBy: 'resourceNode', orphanRemoval: true)]
#[ORM\JoinColumn(name: 'resource_file_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?ResourceFile $resourceFile = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\User", inversedBy="resourceNodes")
* @ORM\JoinColumn(name="creator_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
*/
#[Assert\NotNull]
#[Groups(['resource_node:read', 'resource_node:write', 'document:write'])]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\User::class, inversedBy: 'resourceNodes')]
#[ORM\JoinColumn(name: 'creator_id', referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')]
protected User $creator;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", inversedBy="children")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_id", onDelete="CASCADE")
* })
*/
#[ApiSubresource]
#[ORM\JoinColumn(name: 'parent_id', onDelete: 'CASCADE')]
#[Gedmo\TreeParent]
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, inversedBy: 'children')]
protected ?ResourceNode $parent = null;
/**
* @var Collection|ResourceNode[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", mappedBy="parent")
* @ORM\OrderBy({"id"="ASC"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, mappedBy: 'parent')]
#[ORM\OrderBy(['id' => 'ASC'])]
protected Collection $children;
/**
* @Gedmo\TreeLevel
*
* @ORM\Column(name="level", type="integer", nullable=true)
*/
#[Gedmo\TreeLevel]
#[ORM\Column(name: 'level', type: 'integer', nullable: true)]
protected ?int $level = null;
/**
* @Gedmo\TreePath(appendId=true, separator="/")
*
* @ORM\Column(name="path", type="text", nullable=true)
*/
#[Groups(['resource_node:read', 'document:read'])]
#[Gedmo\TreePath(appendId: true, separator: '/')]
#[ORM\Column(name: 'path', type: 'text', nullable: true)]
protected ?string $path = null;
/**
@ -168,49 +144,34 @@ class ResourceNode
/**
* @var Collection|ResourceComment[]
*
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\ResourceComment", mappedBy="resourceNode", cascade={"persist", "remove"})
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceComment::class, mappedBy: 'resourceNode', cascade: ['persist', 'remove'])]
protected Collection $comments;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
#[Groups(['resource_node:read', 'document:read'])]
#[Gedmo\Timestampable(on: 'create')]
#[ORM\Column(type: 'datetime')]
protected DateTime $createdAt;
/**
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
#[Groups(['resource_node:read', 'document:read'])]
#[Gedmo\Timestampable(on: 'update')]
#[ORM\Column(type: 'datetime')]
protected DateTime $updatedAt;
#[Groups(['resource_node:read', 'document:read'])]
protected bool $fileEditableText;
/**
* @ORM\Column(type="boolean")
*/
#[Groups(['resource_node:read', 'document:read'])]
#[ORM\Column(type: 'boolean')]
protected bool $public;
protected ?string $content = null;
/**
* @ORM\OneToOne(
* targetEntity="Chamilo\CourseBundle\Entity\CShortcut",
* mappedBy="shortCutNode",
* cascade={"persist", "remove"}
* )
*/
#[ORM\OneToOne(targetEntity: \Chamilo\CourseBundle\Entity\CShortcut::class, mappedBy: 'shortCutNode', cascade: ['persist', 'remove'])]
protected ?CShortcut $shortCut = null;
/**
* @ORM\Column(type="uuid", unique=true)
*/
#[Groups(['resource_node:read', 'document:read'])]
#[ORM\Column(type: 'uuid', unique: true)]
protected ?UuidV4 $uuid = null;
public function __construct()
@ -266,7 +227,7 @@ class ResourceNode
*
* @return Collection|ResourceNode[]
*/
public function getChildren()
public function getChildren(): \Doctrine\Common\Collections\Collection|array
{
return $this->children;
}
@ -283,10 +244,8 @@ class ResourceNode
/**
* Returns the parent resource.
*
* @return null|ResourceNode
*/
public function getParent()
public function getParent(): ?\Chamilo\CoreBundle\Entity\ResourceNode
{
return $this->parent;
}
@ -314,7 +273,7 @@ class ResourceNode
/**
* @return Collection|ResourceComment[]
*/
public function getComments()
public function getComments(): \Doctrine\Common\Collections\Collection|array
{
return $this->comments;
}

@ -8,33 +8,23 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="resource_right")
*/
class ResourceRight
#[ORM\Table(name: 'resource_right')]
#[ORM\Entity]
class ResourceRight implements \Stringable
{
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
*/
#[ORM\Id]
#[ORM\Column(type: 'bigint')]
#[ORM\GeneratedValue(strategy: 'AUTO')]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ResourceLink", inversedBy="resourceRights")
* @ORM\JoinColumn(name="resource_link_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\ResourceLink::class, inversedBy: 'resourceRights')]
#[ORM\JoinColumn(name: 'resource_link_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected ?ResourceLink $resourceLink = null;
/**
* @ORM\Column(name="role", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'role', type: 'string', length: 255, nullable: false)]
protected string $role;
/**
* @ORM\Column(name="mask", type="integer", nullable=false)
*/
#[ORM\Column(name: 'mask', type: 'integer', nullable: false)]
protected int $mask;
public function __toString(): string

@ -12,38 +12,29 @@ use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="resource_type")
*/
class ResourceType
#[ORM\Table(name: 'resource_type')]
#[ORM\Entity]
class ResourceType implements \Stringable
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
#[ORM\Id]
#[ORM\Column(type: 'integer')]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column()
*/
#[Assert\NotBlank]
#[ORM\Column]
protected string $name;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Tool", inversedBy="resourceTypes")
* @ORM\JoinColumn(name="tool_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Tool::class, inversedBy: 'resourceTypes')]
#[ORM\JoinColumn(name: 'tool_id', referencedColumnName: 'id')]
protected Tool $tool;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\ResourceNode", mappedBy="resourceType", cascade={"persist", "remove"})
*
* @var ResourceNode[]|Collection
*/
#[ORM\OneToMany(targetEntity: \Chamilo\CoreBundle\Entity\ResourceNode::class, mappedBy: 'resourceType', cascade: ['persist', 'remove'])]
protected Collection $resourceNodes;
public function __construct()
@ -88,7 +79,7 @@ class ResourceType
/**
* @return ResourceNode[]|Collection
*/
public function getResourceNodes()
public function getResourceNodes(): array|\Doctrine\Common\Collections\Collection
{
return $this->resourceNodes;
}
@ -96,7 +87,7 @@ class ResourceType
/**
* @param ResourceNode[]|Collection $resourceNodes
*/
public function setResourceNodes($resourceNodes): self
public function setResourceNodes(array|\Doctrine\Common\Collections\Collection $resourceNodes): self
{
$this->resourceNodes = $resourceNodes;

@ -11,49 +11,34 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* Room.
*
* @ORM\Table(name="room")
* @ORM\Entity
*/
#[ORM\Table(name: 'room')]
#[ORM\Entity]
class Room
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="title", type="string", length=255)
*/
#[Assert\NotBlank]
#[ORM\Column(name: 'title', type: 'string', length: 255)]
protected string $title;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @ORM\Column(name="geolocation", type="string", length=255, nullable=true, unique=false)
*/
#[ORM\Column(name: 'geolocation', type: 'string', length: 255, nullable: true, unique: false)]
protected ?string $geolocation = null;
/**
* @ORM\Column(name="ip", type="string", length=45, nullable=true, unique=false)
*/
#[ORM\Column(name: 'ip', type: 'string', length: 45, nullable: true, unique: false)]
protected ?string $ip = null;
/**
* @ORM\Column(name="ip_mask", type="string", length=6, nullable=true, unique=false)
*/
#[ORM\Column(name: 'ip_mask', type: 'string', length: 6, nullable: true, unique: false)]
protected ?string $ipMask = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\BranchSync")
* @ORM\JoinColumn(name="branch_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\BranchSync::class)]
#[ORM\JoinColumn(name: 'branch_id', referencedColumnName: 'id')]
protected BranchSync $branch;
/**

@ -11,47 +11,32 @@ use Doctrine\ORM\Mapping as ORM;
/**
* ScheduledAnnouncement.
*
* @ORM\Table(name="scheduled_announcements")
* @ORM\Entity
*/
#[ORM\Table(name: 'scheduled_announcements')]
#[ORM\Entity]
class ScheduledAnnouncement
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="subject", type="string", length=255)
*/
#[ORM\Column(name: 'subject', type: 'string', length: 255)]
protected string $subject;
/**
* @ORM\Column(name="message", type="text", unique=false)
*/
#[ORM\Column(name: 'message', type: 'text', unique: false)]
protected string $message;
/**
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
#[ORM\Column(name: 'date', type: 'datetime', nullable: true)]
protected ?DateTime $date = null;
/**
* @ORM\Column(name="sent", type="boolean")
*/
#[ORM\Column(name: 'sent', type: 'boolean')]
protected bool $sent;
/**
* @ORM\Column(name="session_id", type="integer", nullable=false)
*/
#[ORM\Column(name: 'session_id', type: 'integer', nullable: false)]
protected int $sessionId;
/**
* @ORM\Column(name="c_id", type="integer", nullable=true)
*/
#[ORM\Column(name: 'c_id', type: 'integer', nullable: true)]
protected ?int $cId = null;
public function __construct()

@ -10,43 +10,30 @@ use Doctrine\ORM\Mapping as ORM;
/**
* SearchEngineRef.
*
* @ORM\Table(name="search_engine_ref")
* @ORM\Entity
*/
#[ORM\Table(name: 'search_engine_ref')]
#[ORM\Entity]
class SearchEngineRef
{
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="searchEngineRefs")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Course::class, inversedBy: 'searchEngineRefs')]
#[ORM\JoinColumn(name: 'c_id', referencedColumnName: 'id')]
protected ?Course $course = null;
/**
* @ORM\Column(name="tool_id", type="string", length=100, nullable=false)
*/
#[ORM\Column(name: 'tool_id', type: 'string', length: 100, nullable: false)]
protected string $toolId;
/**
* @ORM\Column(name="ref_id_high_level", type="integer", nullable=false)
*/
#[ORM\Column(name: 'ref_id_high_level', type: 'integer', nullable: false)]
protected int $refIdHighLevel;
/**
* @ORM\Column(name="ref_id_second_level", type="integer", nullable=true)
*/
#[ORM\Column(name: 'ref_id_second_level', type: 'integer', nullable: true)]
protected ?int $refIdSecondLevel = null;
/**
* @ORM\Column(name="search_did", type="integer", nullable=false)
*/
#[ORM\Column(name: 'search_did', type: 'integer', nullable: false)]
protected int $searchDid;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
protected ?int $id = null;
/**

@ -10,29 +10,21 @@ use Doctrine\ORM\Mapping as ORM;
use Fhaculty\Graph\Graph;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Table(name="sequence")
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\SequenceRepository")
*/
class Sequence
#[ORM\Table(name: 'sequence')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\SequenceRepository::class)]
class Sequence implements \Stringable
{
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string")
*/
#[ORM\Column(name: 'name', type: 'string')]
protected string $name;
/**
* @ORM\Column(name="graph", type="text", nullable=true)
*/
#[ORM\Column(name: 'graph', type: 'text', nullable: true)]
protected ?string $graph = null;
public function __toString(): string

@ -10,42 +10,29 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceCondition.
*
* @ORM\Table(name="sequence_condition")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_condition')]
#[ORM\Entity]
class SequenceCondition
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected string $description;
/**
* @ORM\Column(name="mat_op", type="string")
*/
#[ORM\Column(name: 'mat_op', type: 'string')]
protected string $mathOperation;
/**
* @ORM\Column(name="param", type="float")
*/
#[ORM\Column(name: 'param', type: 'float')]
protected string $param;
/**
* @ORM\Column(name="act_true", type="integer")
*/
#[ORM\Column(name: 'act_true', type: 'integer')]
protected string $actTrue;
/**
* @ORM\Column(name="act_false", type="string")
*/
#[ORM\Column(name: 'act_false', type: 'string')]
protected string $actFalse;
/**
@ -66,9 +53,6 @@ class SequenceCondition
return $this->description;
}
/**
* @return SequenceCondition
*/
public function setDescription(string $description): self
{
$this->description = $description;
@ -99,9 +83,6 @@ class SequenceCondition
return $this->param;
}
/**
* @return SequenceCondition
*/
public function setParam(string $param): self
{
$this->param = $param;
@ -117,9 +98,6 @@ class SequenceCondition
return $this->actTrue;
}
/**
* @return SequenceCondition
*/
public function setActTrue(string $actTrue): self
{
$this->actTrue = $actTrue;
@ -135,9 +113,6 @@ class SequenceCondition
return $this->actFalse;
}
/**
* @return SequenceCondition
*/
public function setActFalse(string $actFalse): self
{
$this->actFalse = $actFalse;

@ -10,29 +10,22 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceFormula.
*
* @ORM\Table(name="sequence_formula")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_formula')]
#[ORM\Entity]
class SequenceFormula
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceMethod")
* @ORM\JoinColumn(name="sequence_method_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceMethod::class)]
#[ORM\JoinColumn(name: 'sequence_method_id', referencedColumnName: 'id')]
protected ?SequenceMethod $method = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceVariable")
* @ORM\JoinColumn(name="sequence_variable_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceVariable::class)]
#[ORM\JoinColumn(name: 'sequence_variable_id', referencedColumnName: 'id')]
protected ?SequenceVariable $variable = null;
/**

@ -10,42 +10,29 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceMethod.
*
* @ORM\Table(name="sequence_method")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_method')]
#[ORM\Entity]
class SequenceMethod
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected string $description;
/**
* @ORM\Column(name="formula", type="text")
*/
#[ORM\Column(name: 'formula', type: 'text')]
protected string $formula;
/**
* @ORM\Column(name="assign", type="integer")
*/
#[ORM\Column(name: 'assign', type: 'integer')]
protected string $assign;
/**
* @ORM\Column(name="met_type", type="string")
*/
#[ORM\Column(name: 'met_type', type: 'string')]
protected string $metType;
/**
* @ORM\Column(name="act_false", type="string")
*/
#[ORM\Column(name: 'act_false', type: 'string')]
protected string $actFalse;
/**
@ -66,9 +53,6 @@ class SequenceMethod
return $this->description;
}
/**
* @return SequenceMethod
*/
public function setDescription(string $description): self
{
$this->description = $description;
@ -84,9 +68,6 @@ class SequenceMethod
return $this->formula;
}
/**
* @return SequenceMethod
*/
public function setFormula(string $formula): self
{
$this->formula = $formula;
@ -102,9 +83,6 @@ class SequenceMethod
return $this->assign;
}
/**
* @return SequenceMethod
*/
public function setAssign(string $assign): self
{
$this->assign = $assign;
@ -120,9 +98,6 @@ class SequenceMethod
return $this->metType;
}
/**
* @return SequenceMethod
*/
public function setMetType(string $metType): self
{
$this->metType = $metType;
@ -138,9 +113,6 @@ class SequenceMethod
return $this->actFalse;
}
/**
* @return SequenceMethod
*/
public function setActFalse(string $actFalse): self
{
$this->actFalse = $actFalse;

@ -10,36 +10,27 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceResource.
*
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Repository\SequenceResourceRepository")
* @ORM\Table(name="sequence_resource")
*/
#[ORM\Table(name: 'sequence_resource')]
#[ORM\Entity(repositoryClass: \Chamilo\CoreBundle\Repository\SequenceResourceRepository::class)]
class SequenceResource
{
public const COURSE_TYPE = 1;
public const SESSION_TYPE = 2;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Sequence")
* @ORM\JoinColumn(name="sequence_id", referencedColumnName="id", onDelete="CASCADE")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\Sequence::class)]
#[ORM\JoinColumn(name: 'sequence_id', referencedColumnName: 'id', onDelete: 'CASCADE')]
protected Sequence $sequence;
/**
* @ORM\Column(name="type", type="integer")
*/
#[ORM\Column(name: 'type', type: 'integer')]
protected int $type;
/**
* @ORM\Column(name="resource_id", type="integer")
*/
#[ORM\Column(name: 'resource_id', type: 'integer')]
protected int $resourceId;
/**
@ -62,8 +53,6 @@ class SequenceResource
/**
* Set the integer type.
*
* @return SequenceResource
*/
public function setType(int $type): self
{

@ -10,43 +10,30 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceRowEntity.
*
* @ORM\Table(name="sequence_row_entity")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_row_entity')]
#[ORM\Entity]
class SequenceRowEntity
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="c_id", type="integer")
*/
#[ORM\Column(name: 'c_id', type: 'integer')]
protected int $cId;
/**
* @ORM\Column(name="session_id", type="integer")
*/
#[ORM\Column(name: 'session_id', type: 'integer')]
protected int $sessionId;
/**
* @ORM\Column(name="row_id", type="integer")
*/
#[ORM\Column(name: 'row_id', type: 'integer')]
protected int $rowId;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceTypeEntity")
* @ORM\JoinColumn(name="sequence_type_entity_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: SequenceTypeEntity::class)]
#[ORM\JoinColumn(name: 'sequence_type_entity_id', referencedColumnName: 'id')]
protected ?SequenceTypeEntity $type = null;
/**
@ -67,9 +54,6 @@ class SequenceRowEntity
return $this->cId;
}
/**
* @return SequenceRowEntity
*/
public function setCId(int $cId): self
{
$this->cId = $cId;
@ -85,9 +69,6 @@ class SequenceRowEntity
return $this->sessionId;
}
/**
* @return SequenceRowEntity
*/
public function setSessionId(int $sessionId): self
{
$this->sessionId = $sessionId;
@ -103,9 +84,6 @@ class SequenceRowEntity
return $this->rowId;
}
/**
* @return SequenceRowEntity
*/
public function setRowId(int $rowId): self
{
$this->rowId = $rowId;
@ -121,9 +99,6 @@ class SequenceRowEntity
return $this->name;
}
/**
* @return SequenceRowEntity
*/
public function setName(string $name): self
{
$this->name = $name;
@ -136,9 +111,6 @@ class SequenceRowEntity
return $this->type;
}
/**
* @return SequenceRowEntity
*/
public function setType(?SequenceTypeEntity $type): self
{
$this->type = $type;

@ -10,22 +10,17 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceRule.
*
* @ORM\Table(name="sequence_rule")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_rule')]
#[ORM\Entity]
class SequenceRule
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected string $description;
/**
@ -46,9 +41,6 @@ class SequenceRule
return $this->description;
}
/**
* @return SequenceRule
*/
public function setDescription(string $description): self
{
$this->description = $description;

@ -10,29 +10,22 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceRuleCondition.
*
* @ORM\Table(name="sequence_rule_condition")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_rule_condition')]
#[ORM\Entity]
class SequenceRuleCondition
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceRule")
* @ORM\JoinColumn(name="sequence_rule_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceRule::class)]
#[ORM\JoinColumn(name: 'sequence_rule_id', referencedColumnName: 'id')]
protected ?SequenceRule $rule = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceCondition")
* @ORM\JoinColumn(name="sequence_condition_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceCondition::class)]
#[ORM\JoinColumn(name: 'sequence_condition_id', referencedColumnName: 'id')]
protected ?SequenceCondition $condition = null;
/**

@ -10,34 +10,25 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceRuleMethod.
*
* @ORM\Table(name="sequence_rule_method")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_rule_method')]
#[ORM\Entity]
class SequenceRuleMethod
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="method_order", type="integer")
*/
#[ORM\Column(name: 'method_order', type: 'integer')]
protected string $methodOrder;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceRule")
* @ORM\JoinColumn(name="sequence_rule_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: SequenceRule::class)]
#[ORM\JoinColumn(name: 'sequence_rule_id', referencedColumnName: 'id')]
protected ?SequenceRule $rule = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceMethod")
* @ORM\JoinColumn(name="sequence_method_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: SequenceMethod::class)]
#[ORM\JoinColumn(name: 'sequence_method_id', referencedColumnName: 'id')]
protected ?SequenceMethod $method = null;
/**

@ -10,32 +10,23 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class SequenceTypeEntity.
*
* @ORM\Table(name="sequence_type_entity")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_type_entity')]
#[ORM\Entity]
class SequenceTypeEntity
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
protected string $name;
/**
* @ORM\Column(name="description", type="text", nullable=false)
*/
#[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected string $description;
/**
* @ORM\Column(name="ent_table", type="string", length=255, nullable=false)
*/
#[ORM\Column(name: 'ent_table', type: 'string', length: 255, nullable: false)]
protected string $entityTable;
/**
@ -56,9 +47,6 @@ class SequenceTypeEntity
return $this->name;
}
/**
* @return SequenceTypeEntity
*/
public function setName(string $name): self
{
$this->name = $name;
@ -74,9 +62,6 @@ class SequenceTypeEntity
return $this->description;
}
/**
* @return SequenceTypeEntity
*/
public function setDescription(string $description): self
{
$this->description = $description;
@ -92,9 +77,6 @@ class SequenceTypeEntity
return $this->entityTable;
}
/**
* @return SequenceTypeEntity
*/
public function setEntityTable(string $entityTable): self
{
$this->entityTable = $entityTable;

@ -8,29 +8,21 @@ namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="sequence_valid")
* @ORM\Entity
*/
#[ORM\Table(name: 'sequence_valid')]
#[ORM\Entity]
class SequenceValid
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $id = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceVariable")
* @ORM\JoinColumn(name="sequence_variable_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceVariable::class)]
#[ORM\JoinColumn(name: 'sequence_variable_id', referencedColumnName: 'id')]
protected ?SequenceVariable $variable = null;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\SequenceCondition")
* @ORM\JoinColumn(name="sequence_condition_id", referencedColumnName="id")
*/
#[ORM\ManyToOne(targetEntity: \Chamilo\CoreBundle\Entity\SequenceCondition::class)]
#[ORM\JoinColumn(name: 'sequence_condition_id', referencedColumnName: 'id')]
protected ?SequenceCondition $condition = null;
/**
@ -48,9 +40,6 @@ class SequenceValid
return $this->variable;
}
/**
* @return SequenceValid
*/
public function setVariable(?SequenceVariable $variable): self
{
$this->variable = $variable;
@ -63,9 +52,6 @@ class SequenceValid
return $this->condition;
}
/**
* @return SequenceValid
*/
public function setCondition(?SequenceCondition $condition): self
{
$this->condition = $condition;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save