Add entity changes from chamilo experimental

pull/2487/head
jmontoyaa 8 years ago
parent 9e876293a0
commit 32a9d730d0
  1. 16
      src/Chamilo/ContactBundle/Admin/CategoryAdmin.php
  2. 3
      src/Chamilo/ContactBundle/ChamiloContactBundle.php
  3. 10
      src/Chamilo/ContactBundle/Controller/ContactController.php
  4. 46
      src/Chamilo/ContactBundle/Entity/Category.php
  5. 2
      src/Chamilo/ContactBundle/Entity/Contact.php
  6. 4
      src/Chamilo/ContactBundle/Form/Type/ContactType.php
  7. 6
      src/Chamilo/ContactBundle/Resources/views/contact.html.twig
  8. 7
      src/Chamilo/ContactBundle/Resources/views/index.html.twig
  9. 242
      src/Chamilo/CoreBundle/Entity/AccessUrl.php
  10. 11
      src/Chamilo/CoreBundle/Entity/AccessUrlRelCourse.php
  11. 2
      src/Chamilo/CoreBundle/Entity/AccessUrlRelCourseCategory.php
  12. 63
      src/Chamilo/CoreBundle/Entity/AccessUrlRelSession.php
  13. 67
      src/Chamilo/CoreBundle/Entity/AccessUrlRelUser.php
  14. 142
      src/Chamilo/CoreBundle/Entity/Course.php
  15. 77
      src/Chamilo/CoreBundle/Entity/CourseCategory.php
  16. 41
      src/Chamilo/CoreBundle/Entity/CourseRequest.php
  17. 4
      src/Chamilo/CoreBundle/Entity/ExtraField.php
  18. 8
      src/Chamilo/CoreBundle/Entity/ExtraFieldOptions.php
  19. 2
      src/Chamilo/CoreBundle/Entity/ExtraFieldValues.php
  20. 72
      src/Chamilo/CoreBundle/Entity/GradebookCategory.php
  21. 34
      src/Chamilo/CoreBundle/Entity/GradebookCertificate.php
  22. 27
      src/Chamilo/CoreBundle/Entity/GradebookEvaluation.php
  23. 29
      src/Chamilo/CoreBundle/Entity/GradebookLink.php
  24. 78
      src/Chamilo/CoreBundle/Entity/Listener/CourseListener.php
  25. 34
      src/Chamilo/CoreBundle/Entity/Manager/CourseManager.php
  26. 1
      src/Chamilo/CoreBundle/Entity/Message.php
  27. 1
      src/Chamilo/CoreBundle/Entity/Repository/CourseRepository.php
  28. 109
      src/Chamilo/CoreBundle/Entity/Resource/AbstractResource.php
  29. 363
      src/Chamilo/CoreBundle/Entity/Resource/ResourceLink.php
  30. 388
      src/Chamilo/CoreBundle/Entity/Resource/ResourceNode.php
  31. 118
      src/Chamilo/CoreBundle/Entity/Resource/ResourceRights.php
  32. 27
      src/Chamilo/CoreBundle/Entity/SearchEngineRef.php
  33. 167
      src/Chamilo/CoreBundle/Entity/Session.php
  34. 52
      src/Chamilo/CoreBundle/Entity/SettingsCurrent.php
  35. 11
      src/Chamilo/CoreBundle/Entity/Skill.php
  36. 10
      src/Chamilo/CoreBundle/Entity/SkillRelSkill.php
  37. 106
      src/Chamilo/CoreBundle/Entity/SysAnnouncement.php
  38. 3
      src/Chamilo/CoreBundle/Entity/TrackEAccess.php
  39. 3
      src/Chamilo/CoreBundle/Entity/TrackECourseAccess.php
  40. 26
      src/Chamilo/CoreBundle/Entity/UserFriendRelationType.php
  41. 3
      src/Chamilo/CourseBundle/Entity/CForumPost.php
  42. 2
      src/Chamilo/CourseBundle/Entity/CItemProperty.php
  43. 54
      src/Chamilo/CourseBundle/Entity/CQuiz.php
  44. 3
      src/Chamilo/CourseBundle/Entity/CQuizAnswer.php
  45. 2
      src/Chamilo/CourseBundle/Entity/CQuizQuestionCategory.php
  46. 25
      src/Chamilo/CourseBundle/Entity/CSurvey.php
  47. 27
      src/Chamilo/CourseBundle/Entity/CSurveyInvitation.php
  48. 27
      src/Chamilo/CourseBundle/Entity/CSurveyQuestion.php
  49. 52
      src/Chamilo/CourseBundle/Entity/CTool.php
  50. 1
      src/Chamilo/CourseBundle/Entity/Repository/CNotebookRepository.php
  51. 4
      src/Chamilo/FaqBundle/Admin/CategoryAdmin.php
  52. 4
      src/Chamilo/FaqBundle/Admin/QuestionAdmin.php
  53. 3
      src/Chamilo/FaqBundle/Entity/QuestionTranslation.php
  54. 13
      src/Chamilo/UserBundle/Entity/Manager/UserManager.php
  55. 5
      src/Chamilo/UserBundle/Entity/User.php

@ -3,7 +3,7 @@
namespace Chamilo\ContactBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
@ -12,7 +12,7 @@ use Sonata\AdminBundle\Datagrid\DatagridMapper;
* Class UserAdmin
* @package Chamilo\ContactBundle\Admin
*/
class CategoryAdmin extends Admin
class CategoryAdmin extends AbstractAdmin
{
/**
* @param ListMapper $listMapper
@ -21,8 +21,9 @@ class CategoryAdmin extends Admin
{
$listMapper
//->add('headline', null, array('identifier' => true))
->add('name', null, array('identifier' => true))
->add('email')
//->add('name', null, array('identifier' => true))
->add('translations', null, array('identifier' => true))
->add('email', null, array('identifier' => true))
;
}
@ -32,7 +33,8 @@ class CategoryAdmin extends Admin
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name')
//->add('name')
->add('translations', 'a2lix_translations', array())
->add('email')
;
}
@ -43,8 +45,8 @@ class CategoryAdmin extends Admin
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
->add('email')
->add('translations', null, array('identifier' => true))
->add('email', null, array('identifier' => true))
;
}
}

@ -4,6 +4,7 @@
namespace Chamilo\ContactBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
/**
* Class ChamiloContactBundle
@ -12,4 +13,4 @@ use Symfony\Component\HttpKernel\Bundle\Bundle;
class ChamiloContactBundle extends Bundle
{
}
}

@ -5,7 +5,8 @@ namespace Chamilo\ContactBundle\Controller;
use Chamilo\ContactBundle\Entity\Category;
use Chamilo\ContactBundle\Form\Type\ContactType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
//use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@ -38,8 +39,7 @@ class ContactController extends Controller
$data = [
'firstname' => $user->getFirstname(),
'lastname' => $user->getFirstname(),
'email' => $user->getEmail(),
'email' => $user->getEmail()
];
}
@ -75,8 +75,8 @@ class ContactController extends Controller
$this->get('mailer')->send($message);
$this->addFlash(
'success',
'Your email has been sent! Thanks!'
'success',
$this->get('translator')->trans('Your email has been sent! Thanks!')
);
return $this->redirect($this->generateUrl('contact'));

@ -4,19 +4,20 @@
namespace Chamilo\ContactBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;
/**
* Class Category
*
* @ORM\Entity
* @ORM\Table(
* name="contact_category"
* )
* @ORM\Table(name="contact_category")
*
* @package Chamilo\FaqBundle\Entity
*/
class Category
{
use ORMBehaviors\Translatable\Translatable;
/**
* @var integer
*
@ -26,12 +27,6 @@ class Category
*/
protected $id;
/**
* @var string
* @ORM\Column(name="name", type="string", nullable=false)
*/
protected $name;
/**
* @var string
* @ORM\Column(name="email", type="string")
@ -39,6 +34,16 @@ class Category
protected $email;
/**
* @param $method
* @param $arguments
* @return mixed
*/
public function __call($method, $arguments)
{
return $this->proxyCurrentLocaleTranslation($method, $arguments);
}
/**
* @return string
*/
public function __toString()
@ -49,36 +54,37 @@ class Category
/**
* @return string
*/
public function getName()
public function getEmail()
{
return $this->name;
return $this->email;
}
/**
* @param string $name
* @param string $email
* @return Category
*/
public function setName($name)
public function setEmail($email)
{
$this->name = $name;
$this->email = $email;
return $this;
}
/**
* @return string
* @return int
*/
public function getEmail()
public function getId()
{
return $this->email;
return $this->id;
}
/**
* @param string $email
* @param int $id
* @return Category
*/
public function setEmail($email)
public function setId($id)
{
$this->email = $email;
$this->id = $id;
return $this;
}
}

@ -8,6 +8,4 @@ use Doctrine\ORM\Mapping as ORM;
class Contact
{
}

@ -50,11 +50,11 @@ class ContactType extends AbstractType
new NotBlank(array('message' => 'Category should not be blank.'))
),
'firstname' => array(
new NotBlank(array('message' => 'firstname should not be blank.')),
new NotBlank(array('message' => 'Firstname should not be blank.')),
new Length(array('min' => 2))
),
'lastname' => array(
new NotBlank(array('message' => 'lastname should not be blank.')),
new NotBlank(array('message' => 'Lastname should not be blank.')),
new Length(array('min' => 2))
),
'email' => array(

@ -1,11 +1,11 @@
{{ 'You had a new message from %url%' | trans({'%url%': url(app.request.attributes.get('_route'))} ) }}
{{ 'You had a new message from %url%' | trans({'%url%': url(app.request.attributes.get('_route'))} ) }}
{{ 'Firstname' | trans }} : {{ firstname }}
{{ 'Lirstname' | trans }} : {{ lastname }}
{{ 'Lastname' | trans }} : {{ lastname }}
Email: {{ email }}
IP: {{ ip }}
{{ 'Subject' | trans }} : {{ subject }}
{{ 'Message' | trans }} :
{{ message|raw }}
{{ message|raw }}

@ -1,9 +1,10 @@
{% extends '@ChamiloCore/layout_one_col.html.twig' %}
{% extends "@ChamiloTheme/Layout/base-layout.html.twig" %}
{% block content %}
{% block chamilo_content %}
<section id="main_content">
<div class="page-header"><h2>{{ 'Contact' | trans }}</h2>
<div class="page-header">
<h2>{{ 'Contact' | trans }}</h2>
</div>
{{ form_start(form) }}
{{ form_widget(form, {'attr': {'class': ''}}) }}

@ -64,11 +64,65 @@ class AccessUrl
*/
private $urlType;
/**
* @var integer
*
* @ORM\Column(name="limit_courses", type="integer", nullable=true, unique=false)
*/
private $limitCourses;
/**
* @var integer
*
* @ORM\Column(name="limit_active_courses", type="integer", nullable=true, unique=false)
*/
private $limitActiveCourses;
/**
* @var integer
*
* @ORM\Column(name="limit_sessions", type="integer", nullable=true, unique=false)
*/
private $limitSessions;
/**
* @var integer
*
* @ORM\Column(name="limit_users", type="integer", nullable=true, unique=false)
*/
private $limitUsers;
/**
* @var integer
*
* @ORM\Column(name="limit_teachers", type="integer", nullable=true, unique=false)
*/
private $limitTeachers;
/**
* @var integer
*
* @ORM\Column(name="limit_disk_space", type="integer", nullable=true, unique=false)
*/
private $limitDiskSpace;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, nullable=true, unique=false)
*/
private $email;
/**
* @ORM\OneToMany(targetEntity="AccessUrlRelCourse", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
**/
protected $course;
/**
* @ORM\OneToMany(targetEntity="AccessUrlRelSession", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
**/
protected $session;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SettingsCurrent", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
**/
@ -77,10 +131,10 @@ class AccessUrl
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SessionCategory", mappedBy="url", cascade={"persist"}, orphanRemoval=true)
**/
private $sessionCategory;
protected $sessionCategory;
/**
*
* Constructor
*/
public function __construct()
{
@ -243,4 +297,188 @@ class AccessUrl
{
return $this->urlType;
}
/**
* @return int
*/
public function getLimitActiveCourses()
{
return $this->limitActiveCourses;
}
/**
* @param int $limitActiveCourses
* @return AccessUrl
*/
public function setLimitActiveCourses($limitActiveCourses)
{
$this->limitActiveCourses = $limitActiveCourses;
return $this;
}
/**
* @return int
*/
public function getLimitSessions()
{
return $this->limitSessions;
}
/**
* @param int $limitSessions
* @return AccessUrl
*/
public function setLimitSessions($limitSessions)
{
$this->limitSessions = $limitSessions;
return $this;
}
/**
* @return int
*/
public function getLimitUsers()
{
return $this->limitUsers;
}
/**
* @param int $limitUsers
* @return AccessUrl
*/
public function setLimitUsers($limitUsers)
{
$this->limitUsers = $limitUsers;
return $this;
}
/**
* @return int
*/
public function getLimitTeachers()
{
return $this->limitTeachers;
}
/**
* @param int $limitTeachers
* @return AccessUrl
*/
public function setLimitTeachers($limitTeachers)
{
$this->limitTeachers = $limitTeachers;
return $this;
}
/**
* @return int
*/
public function getLimitDiskSpace()
{
return $this->limitDiskSpace;
}
/**
* @param int $limitDiskSpace
* @return AccessUrl
*/
public function setLimitDiskSpace($limitDiskSpace)
{
$this->limitDiskSpace = $limitDiskSpace;
return $this;
}
/**
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string $email
* @return AccessUrl
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* @return mixed
*/
public function getCourse()
{
return $this->course;
}
/**
* @param mixed $course
* @return AccessUrl
*/
public function setCourse($course)
{
$this->course = $course;
return $this;
}
/**
* @return mixed
*/
public function getSettings()
{
return $this->settings;
}
/**
* @param mixed $settings
* @return AccessUrl
*/
public function setSettings($settings)
{
$this->settings = $settings;
return $this;
}
/**
* @return mixed
*/
public function getSessionCategory()
{
return $this->sessionCategory;
}
/**
* @param mixed $sessionCategory
* @return AccessUrl
*/
public function setSessionCategory($sessionCategory)
{
$this->sessionCategory = $sessionCategory;
return $this;
}
/**
* @return int
*/
public function getLimitCourses()
{
return $this->limitCourses;
}
/**
* @param int $limitCourses
* @return AccessUrl
*/
public function setLimitCourses($limitCourses)
{
$this->limitCourses = $limitCourses;
return $this;
}
}

@ -18,7 +18,7 @@ class AccessUrlRelCourse
*
* @ORM\Column(name="id", type="integer", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\GeneratedValue()
*/
private $id;
@ -66,24 +66,23 @@ class AccessUrlRelCourse
}
/**
* @return mixed
* @return AccessUrl
*/
public function getUrl()
{
return $this->url;
}
/**
* @param $course
* @param Course $course
*/
public function setCourse($course)
public function setCourse(Course $course)
{
$this->course = $course;
}
/**
* @return mixed
* @return Course
*/
public function getCourse()
{

@ -16,7 +16,7 @@ class AccessUrlRelCourseCategory
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", precision=0, scale=0, nullable=false, unique=false)
* @ORM\Column(name="id", type="integer", nullable=false, unique=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/

@ -16,64 +16,71 @@ class AccessUrlRelSession
/**
* @var integer
*
* @ORM\Column(name="access_url_id", type="integer")
* @ORM\Column(name="id", type="integer", nullable=false, unique=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\GeneratedValue()
*/
private $accessUrlId;
private $id;
/**
* @var integer
* @ORM\ManyToOne(targetEntity="Session", inversedBy="urls", cascade={"persist"})
* @ORM\JoinColumn(name="session_id", referencedColumnName="id")
*/
protected $session;
/**
* @ORM\ManyToOne(targetEntity="AccessUrl", inversedBy="session", cascade={"persist"})
* @ORM\JoinColumn(name="access_url_id", referencedColumnName="id")
*/
protected $url;
/**
* Get id
*
* @ORM\Column(name="session_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @return integer
*/
private $sessionId;
public function getId()
{
return $this->id;
}
/**
* Set accessUrlId
* Set url
*
* @param integer $accessUrlId
* @param $url
* @return AccessUrlRelSession
*/
public function setAccessUrlId($accessUrlId)
public function setUrl($url)
{
$this->accessUrlId = $accessUrlId;
$this->url = $url;
return $this;
}
/**
* Get accessUrlId
*
* @return integer
* @return AccessUrl
*/
public function getAccessUrlId()
public function getUrl()
{
return $this->accessUrlId;
return $this->url;
}
/**
* Set sessionId
*
* @param integer $sessionId
* @return AccessUrlRelSession
* @param Session $session
* @return $this
*/
public function setSessionId($sessionId)
public function setSession(Session $session)
{
$this->sessionId = $sessionId;
$this->session = $session;
return $this;
}
/**
* Get sessionId
*
* @return integer
* @return Session
*/
public function getSessionId()
public function getSession()
{
return $this->sessionId;
return $this->session;
}
}

@ -8,14 +8,7 @@ use Doctrine\ORM\Mapping as ORM;
/**
* AccessUrlRelUser
*
* @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\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
@ -23,18 +16,10 @@ class AccessUrlRelUser
/**
* @var integer
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\Column(name="access_url_id", type="integer")
* @ORM\GeneratedValue
* @ORM\Column(name="id", type="integer")
*/
private $accessUrlId;
/**
* @var integer
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\Column(name="user_id", type="integer")
*/
private $userId;
private $id;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User")
@ -49,48 +34,42 @@ class AccessUrlRelUser
protected $portal;
/**
* Set accessUrlId
*
* @param integer $accessUrlId
* @return AccessUrlRelUser
* @return string
*/
public function setAccessUrlId($accessUrlId)
public function __toString()
{
$this->accessUrlId = $accessUrlId;
return $this;
return (string) $this->id;
}
/**
* Get accessUrlId
*
* @return integer
* @return mixed
*/
public function getAccessUrlId()
public function getUser()
{
return $this->accessUrlId;
return $this->user;
}
/**
* Set userId
*
* @param integer $userId
* @return AccessUrlRelUser
* @param mixed $user
*/
public function setUserId($userId)
public function setUser($user)
{
$this->userId = $userId;
$this->user = $user;
}
return $this;
/**
* @return mixed
*/
public function getPortal()
{
return $this->portal;
}
/**
* Get userId
*
* @return integer
* @param mixed $portal
*/
public function getUserId()
public function setPortal($portal)
{
return $this->userId;
$this->portal = $portal;
}
}

@ -3,6 +3,7 @@
namespace Chamilo\CoreBundle\Entity;
use Chamilo\CourseBundle\Entity\CGroupInfo;
use Chamilo\CourseBundle\Entity\CTool;
use Chamilo\UserBundle\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
@ -243,6 +244,11 @@ class Course
**/
protected $sessionUserSubscriptions;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CGroupInfo", mappedBy="course", cascade={"persist"}, orphanRemoval=true)
**/
protected $groups;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CItemProperty", mappedBy="course")
**/
@ -276,18 +282,81 @@ class Course
**/
protected $currentSession;
/**
* @var AccessUrl
**/
protected $currentUrl;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SkillRelUser", mappedBy="course", cascade={"persist"})
*/
protected $issuedSkills;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookCategory", mappedBy="course")
*/
protected $gradebookCategories;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookEvaluation", mappedBy="course")
*/
protected $gradebookEvaluations;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\GradebookLink", mappedBy="course")
*/
protected $gradebookLinks;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\TrackEHotspot", mappedBy="course")
*/
protected $trackEHotspots;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\TrackEAttempt", mappedBy="course")
*/
protected $trackEAttempts;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SearchEngineRef", mappedBy="course")
*/
protected $searchEngineRefs;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Templates", mappedBy="course")
*/
protected $templates;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SpecificFieldValues", mappedBy="course")
*/
protected $specificFieldValues;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SharedSurvey", mappedBy="course")
*/
protected $sharedSurveys;
/**
* Constructor
*/
public function __construct()
{
$this->creationDate = new \DateTime();
$this->lastVisit = new \DateTime();
$this->lastEdit = new \DateTime();
$this->users = new ArrayCollection();
$this->urls = new ArrayCollection();
$this->gradebookCategories = new ArrayCollection();
$this->gradebookEvaluations = new ArrayCollection();
$this->gradebookLinks = new ArrayCollection();
$this->trackEHotspots = new ArrayCollection();
$this->trackEAttempts = new ArrayCollection();
$this->searchEngineRefs = new ArrayCollection();
$this->templates = new ArrayCollection();
$this->specificFieldValues = new ArrayCollection();
$this->sharedSurveys = new ArrayCollection();
}
/**
@ -386,6 +455,14 @@ class Course
return $this->users;
}
/**
* @return ArrayCollection
*/
public function getGroups()
{
return $this->groups;
}
/**
* @return ArrayCollection
*/
@ -483,6 +560,7 @@ class Course
/**
* @param User $user
*
* @return bool
*/
public function hasTeacher(User $user)
@ -494,6 +572,21 @@ class Course
return $this->getTeachers()->matching($criteria)->count() > 0;
}
/**
* @param CGroupInfo $group
*
* @return bool
*/
public function hasGroup(CGroupInfo $group)
{
$criteria = Criteria::create()->where(
Criteria::expr()->eq("groups", $group)
);
return $this->getGroups()->contains($group);
}
/**
* Remove $user
*
@ -1179,12 +1272,59 @@ class Course
public function setCurrentSession(Session $session)
{
// If the session is registered in the course session list.
if ($this->getSessions()->contains($session->getId())) {
/*if ($this->getSessions()->contains($session->getId())) {
$this->currentSession = $session;
}*/
$list = $this->getSessions();
/** @var SessionRelCourse $item */
foreach ($list as $item) {
if ($item->getSession()->getId() == $session->getId()) {
$this->currentSession = $session;
break;
}
}
return $this;
}
/**
* @param AccessUrl $url
*
* @return $this
*/
public function setCurrentUrl(AccessUrl $url)
{
$urlList = $this->getUrls();
/** @var AccessUrlRelCourse $item */
foreach ($urlList as $item) {
if ($item->getUrl()->getId() == $url->getId()) {
$this->currentUrl = $url;
break;
}
}
return $this;
}
/**
* @return AccessUrl
*/
public function getCurrentUrl()
{
return $this->currentUrl;
}
/**
* Get issuedSkills
* @return ArrayCollection
*/
public function getIssuedSkills()
{
return $this->issuedSkills;
}
/**
* Check if the course has a picture
* @return bool

@ -3,6 +3,7 @@
namespace Chamilo\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
@ -27,7 +28,7 @@ class CourseCategory
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\GeneratedValue()
*/
private $id;
@ -46,11 +47,15 @@ class CourseCategory
private $code;
/**
* @var string
*
* @ORM\Column(name="parent_id", type="string", length=40, nullable=true)
* @ORM\OneToMany(targetEntity="CourseCategory", mappedBy="parent")
*/
private $parentId;
protected $children;
/**
* @ORM\ManyToOne(targetEntity="CourseCategory", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
/**
* @var integer
@ -80,6 +85,58 @@ class CourseCategory
*/
private $authCatChild;
/**
* Constructor
*/
public function __construct()
{
$this->childrenCount = 0;
$this->children = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @return CourseCategory
*/
public function getParent()
{
return $this->parent;
}
/**
* @return ArrayCollection
*/
public function getChildren()
{
return $this->children;
}
/**
* @param CourseCategory $child
*/
public function addChild(CourseCategory $child)
{
$this->children[] = $child;
$child->setParent($this);
}
/**
* @param CourseCategory $parent
*/
public function setParent(CourseCategory $parent)
{
$this->parent = $parent;
}
/**
* Set name
*
@ -241,16 +298,6 @@ class CourseCategory
return $this->authCatChild;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/

@ -4,6 +4,7 @@
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\UserBundle\Entity\User;
/**
* CourseRequest
@ -32,11 +33,12 @@ class CourseRequest
private $code;
/**
* @var integer
* @var User
*
* @ORM\Column(name="user_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $userId;
protected $user;
/**
* @var string
@ -134,7 +136,38 @@ class CourseRequest
*
* @ORM\Column(name="exemplary_content", type="integer", nullable=false)
*/
private $exemplaryContent;
private $exemplaryContent;
/**
* Constructor
*/
public function __construct()
{
$this->requestDate = new \DateTime();
}
/**
* Set user
*
* @param User $user
* @return UsergroupRelUser
*/
public function setUser(User $user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return User
*/
public function getUser()
{
return $this->user;
}
/**
* Set code

@ -15,7 +15,7 @@ use Sylius\Component\Attribute\Model\Attribute as BaseAttribute;
*
* @ORM\MappedSuperclass
*/
class ExtraField extends BaseAttribute
class ExtraField// extends BaseAttribute
{
const USER_FIELD_TYPE = 1;
const COURSE_FIELD_TYPE = 2;
@ -127,7 +127,7 @@ class ExtraField extends BaseAttribute
*/
public function __construct()
{
parent::__construct();
//parent::__construct();
$this->visibleToOthers = false;
$this->visibleToSelf = false;
}

@ -95,7 +95,7 @@ class ExtraFieldOptions
}
/**
* @return mixed
* @return ExtraField
*/
public function getField()
{
@ -103,7 +103,7 @@ class ExtraFieldOptions
}
/**
* @param mixed $field
* @param ExtraField $field
*
* @return $this
*/
@ -170,7 +170,7 @@ class ExtraFieldOptions
/**
* @param string $priority
*
* @return $this
* @return ExtraFieldOptions
*/
public function setPriority($priority)
{
@ -190,7 +190,7 @@ class ExtraFieldOptions
/**
* @param string $priorityMessage
*
* @return $this
* @return ExtraFieldOptions
*/
public function setPriorityMessage($priorityMessage)
{

@ -19,7 +19,7 @@ use Sylius\Component\Attribute\Model\AttributeValue as BaseAttributeValue;
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\ExtraFieldValuesRepository")
* @ORM\MappedSuperclass
*/
class ExtraFieldValues extends BaseAttributeValue
class ExtraFieldValues// extends BaseAttributeValue
{
/**
* @var integer

@ -44,11 +44,10 @@ class GradebookCategory
private $userId;
/**
* @var string
*
* @ORM\Column(name="course_code", type="string", length=40, nullable=true)
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookCategories")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
private $courseCode;
private $course;
/**
* @var integer
@ -132,6 +131,33 @@ class GradebookCategory
*/
private $isRequirement;
/**
* @var integer
*
* @ORM\Column(name="gradebooks_to_validate_in_dependence", type="integer", nullable=true)
*/
private $gradeBooksToValidateInDependence;
/**
* GradebookCategory constructor.
*/
public function __construct()
{
$this->locked = 0;
$this->generateCertificates = false;
$this->isRequirement = false;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
@ -202,26 +228,24 @@ class GradebookCategory
}
/**
* Set courseCode
*
* @param string $courseCode
* @return GradebookCategory
* Set course
* @param \Chamilo\CoreBundle\Entity\Course $course
* @return \Chamilo\CoreBundle\Entity\GradebookCategory
*/
public function setCourseCode($courseCode)
public function setCourse(Course $course)
{
$this->courseCode = $courseCode;
$this->course = $course;
return $this;
}
/**
* Get courseCode
*
* @return string
* Get course
* @return \Chamilo\CoreBundle\Entity\Course
*/
public function getCourseCode()
public function getCourse()
{
return $this->courseCode;
return $this->course;
}
/**
@ -476,12 +500,20 @@ class GradebookCategory
}
/**
* Get id
*
* @return integer
* @return int
*/
public function getId()
public function getGradeBooksToValidateInDependence(): int
{
return $this->id;
return $this->gradeBooksToValidateInDependence;
}
/**
* @param int $value
* @return GradebookCategory
*/
public function setGradeBooksToValidateInDependence(int $value): GradebookCategory {
$this->gradeBooksToValidateInDependence = $value;
return $this;
}
}

@ -8,7 +8,13 @@ use Doctrine\ORM\Mapping as ORM;
/**
* GradebookCertificate
*
* @ORM\Table(name="gradebook_certificate", indexes={@ORM\Index(name="idx_gradebook_certificate_category_id", columns={"cat_id"}), @ORM\Index(name="idx_gradebook_certificate_user_id", columns={"user_id"}), @ORM\Index(name="idx_gradebook_certificate_category_id_user_id", columns={"cat_id", "user_id"})})
* @ORM\Table(
* name="gradebook_certificate",
* indexes={
* @ORM\Index(name="idx_gradebook_certificate_category_id", columns={"cat_id"}),
* @ORM\Index(name="idx_gradebook_certificate_user_id", columns={"user_id"}),
* @ORM\Index(name="idx_gradebook_certificate_category_id_user_id", columns={"cat_id", "user_id"})}
* )
* @ORM\Entity
*/
class GradebookCertificate
@ -57,6 +63,13 @@ class GradebookCertificate
*/
private $pathCertificate;
/**
* @var \DateTime
*
* @ORM\Column(name="downloaded_at", type="datetime", nullable=true)
*/
private $downloadedAt;
/**
* Set catId
*
@ -181,4 +194,23 @@ class GradebookCertificate
{
return $this->id;
}
/**
* @return \DateTime
*/
public function getDownloadedAt(): \DateTime
{
return $this->downloadedAt;
}
/**
* @param \DateTime $downloadedAt
* @return GradebookCertificate
*/
public function setDownloadedAt(\DateTime $downloadedAt): GradebookCertificate
{
$this->downloadedAt = $downloadedAt;
return $this;
}
}

@ -44,11 +44,10 @@ class GradebookEvaluation
private $userId;
/**
* @var string
*
* @ORM\Column(name="course_code", type="string", length=40, nullable=true)
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookEvaluations")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
private $courseCode;
private $course;
/**
* @var integer
@ -169,26 +168,24 @@ class GradebookEvaluation
}
/**
* Set courseCode
*
* @param string $courseCode
* @return GradebookEvaluation
* Set course
* @param \Chamilo\CoreBundle\Entity\Course|null $course
* @return \Chamilo\CoreBundle\Entity\GradebookEvaluation
*/
public function setCourseCode($courseCode)
public function setCourse($course)
{
$this->courseCode = $courseCode;
$this->course = $course;
return $this;
}
/**
* Get courseCode
*
* @return string
* Get course
* @return \Chamilo\CoreBundle\Entity\Course
*/
public function getCourseCode()
public function getCourse()
{
return $this->courseCode;
return $this->course;
}
/**

@ -9,7 +9,7 @@ use Doctrine\ORM\Mapping as ORM;
* GradebookLink
*
* @ORM\Table(name="gradebook_link")
* @ORM\Entity
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\GradebookLinkRepository")
*/
class GradebookLink
{
@ -44,11 +44,10 @@ class GradebookLink
private $userId;
/**
* @var string
*
* @ORM\Column(name="course_code", type="string", length=40, nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="gradebookLinks")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
private $courseCode;
private $course;
/**
* @var integer
@ -156,26 +155,24 @@ class GradebookLink
}
/**
* Set courseCode
*
* @param string $courseCode
* @return GradebookLink
* Set course
* @param \Chamilo\CoreBundle\Entity\Course $course
* @return \Chamilo\CoreBundle\Entity\GradebookLink
*/
public function setCourseCode($courseCode)
public function setCourse(Course $course)
{
$this->courseCode = $courseCode;
$this->course = $course;
return $this;
}
/**
* Get courseCode
*
* @return string
* Get course
* @return \Chamilo\CoreBundle\Entity\Course
*/
public function getCourseCode()
public function getCourse()
{
return $this->courseCode;
return $this->course;
}
/**

@ -3,6 +3,9 @@
namespace Chamilo\CoreBundle\Entity\Listener;
use Chamilo\CoreBundle\Entity\AccessUrl;
use Chamilo\CoreBundle\Entity\AccessUrlRelCourse;
use Chamilo\CoreBundle\Entity\Repository\CourseRepository;
use Chamilo\CoreBundle\Entity\Tool;
use Chamilo\CourseBundle\ToolChain;
use Doctrine\ORM\Event\LifecycleEventArgs;
@ -11,7 +14,7 @@ use Doctrine\ORM\Mapping as ORM;
/**
* Class CourseListener
* Course entity listener, when a course is created the tool chain is loaded.
* Course entity listener, when a course is created/edited and when the tool chain is loaded.
* @package Chamilo\CoreBundle\EventListener
*/
class CourseListener
@ -27,14 +30,30 @@ class CourseListener
}
/**
* This code is executed when a new course is created.
*
* new object : prePersist
* edited object: preUpdate
*
* This function add the course tools to the current course entity
* thanks to the tool chain see src/Chamilo/CourseBundle/ToolChain.php
*
* @param Course $course
* @param LifecycleEventArgs $args
*
* @throws \Exception
*/
public function prePersist(Course $course, LifecycleEventArgs $args)
{
//$this->toolChain->addToolsInCourse($course);
/** @var AccessUrlRelCourse $urlRelCourse */
$urlRelCourse = $course->getUrls()->first();
$url = $urlRelCourse->getUrl();
$repo = $args->getEntityManager()->getRepository('ChamiloCoreBundle:Course');
$this->checkLimit($repo, $course, $url);
$this->toolChain->addToolsInCourse($course);
/*
error_log('ddd');
$course->setDescription( ' dq sdqs dqs dqs ');
@ -42,4 +61,59 @@ class CourseListener
$args->getEntityManager()->persist($course);
$args->getEntityManager()->flush();*/
}
/**
* This code is executed when a course is updated
*
* @param Course $course
* @param LifecycleEventArgs $args
* @throws \Exception
*/
public function preUpdate(Course $course, LifecycleEventArgs $args)
{
$url = $course->getCurrentUrl();
$repo = $args->getEntityManager()->getRepository('ChamiloCoreBundle:Course');
$this->checkLimit($repo, $course, $url);
/*if ($eventArgs->getEntity() instanceof User) {
if ($eventArgs->hasChangedField('name') && $eventArgs->getNewValue('name') == 'Alice') {
$eventArgs->setNewValue('name', 'Bob');
}
}*/
}
/**
* @param CourseRepository $repo
* @param Course $course
* @param AccessUrl $url
* @throws \Exception
*/
private function checkLimit($repo, Course $course, AccessUrl $url)
{
$limit = $url->getLimitCourses();
if (!empty($limit)) {
$count = $repo->getCountCoursesByUrl($url);
if ($count >= $limit) {
api_warn_hosting_contact('hosting_limit_courses', $limit);
throw new \Exception('PortalCoursesLimitReached');
}
}
if ($course->getVisibility() != COURSE_VISIBILITY_HIDDEN) {
$limit = $url->getLimitActiveCourses();
if (!empty($limit)) {
$count = $repo->getCountActiveCoursesByUrl($url);
if ($count >= $limit) {
api_warn_hosting_contact('hosting_limit_active_courses', $limit);
throw new \Exception('PortalActiveCoursesLimitReached');
}
}
}
}
}

@ -3,15 +3,43 @@
namespace Chamilo\CoreBundle\Entity\Manager;
use Chamilo\CoreBundle\Entity\Repository\CourseRepository;
use Sonata\CoreBundle\Model\BaseEntityManager;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\UserBundle\Entity\User;
use Sonata\DatagridBundle\Pager\Doctrine\pager;
use Sonata\DatagridBundle\ProxyQuery\Doctrine\ProxyQuery;
use Doctrine\Common\Collections\Criteria;
/**
* Class CourseManager
* CRUD for the course
*
* @package Chamilo\CoreBundle\Entity\Repository
* @package Chamilo\CoreBundle\Entity\Manager
*/
class CourseManager extends BaseEntityManager
{
/**
* @return Course
*/
public function createCourse()
{
return $this->create();
}
/**
* @param string $code
* @return mixed
*/
public function findOneByCode($code)
{
return $this->getRepository()->findOneByCode($code);
}
/**
* @param string $name
* @return mixed
*/
public function findOneByTitle($name)
{
return $this->getRepository()->findOneByTitle($name);
}
}

@ -13,6 +13,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Index(name="idx_message_user_receiver", columns={"user_receiver_id"}),
* @ORM\Index(name="idx_message_user_sender_user_receiver", columns={"user_sender_id", "user_receiver_id"}),
* @ORM\Index(name="idx_message_user_receiver_status", columns={"user_receiver_id", "msg_status"}),
* @ORM\Index(name="idx_message_receiver_status_send_date", columns={"user_receiver_id", "msg_status", "send_date"}),
* @ORM\Index(name="idx_message_group", columns={"group_id"}),
* @ORM\Index(name="idx_message_parent", columns={"parent_id"})
* })

@ -8,6 +8,7 @@ use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\QueryBuilder;
//use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
/**
* Class CourseRepository

@ -0,0 +1,109 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity\Resource;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\MappedSuperclass
* @ORM\HasLifecycleCallbacks
*/
abstract class AbstractResource
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, precision=0, scale=0, nullable=false, unique=false)
*/
protected $name;
/**
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", cascade={"remove"})
* @ORM\JoinColumn(name="resource_node_id")
*/
protected $resourceNode;
/**
* Returns the resource id.
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Sets the resource id.
*
* @param integer $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* Returns the resource name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Returns the resource name.
*
* @return string
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpdate()
{
}
/**
* @ORM\PostRemove()
*/
public function postRemove()
{
}
/**
* @param ResourceNode $resourceNode
*/
public function setResourceNode(ResourceNode $resourceNode)
{
$this->resourceNode = $resourceNode;
}
/**
* @return ResourceNode
*/
public function getResourceNode()
{
return $this->resourceNode;
}
}

@ -0,0 +1,363 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity\Resource;
use Alchemy\Zippy\Adapter\Resource\ResourceInterface;
use Chamilo\CourseBundle\Entity\CGroupInfo;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\CoreBundle\Entity\Usergroup;
use Gedmo\Mapping\Annotation as Gedmo;
use Chamilo\UserBundle\Entity\User;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
/**
* @ORM\Entity
* @ORM\Table(name="resource_link")
*/
class ResourceLink implements ResourceInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode")
* @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id")
*/
protected $resourceNode;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session")
* @ORM\JoinColumn(name="session_id", referencedColumnName="id", nullable=true)
**/
protected $session;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
**/
protected $user;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id", nullable=true)
*/
protected $course;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CourseBundle\Entity\CGroupInfo")
* @ORM\JoinColumn(name="group_id", referencedColumnName="iid", nullable=true)
*/
protected $group;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Usergroup")
* @ORM\JoinColumn(name="usergroup_id", referencedColumnName="id", nullable=true)
*/
protected $userGroup;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceRights", mappedBy="resourceLink", cascade={"persist", "remove"})
**/
protected $rights;
/**
* @var boolean
*
* @ORM\Column(name="private", type="boolean", nullable=true, unique=false)
*/
protected $private;
/**
* @var boolean
*
* @ORM\Column(name="public", type="boolean", nullable=true, unique=false)
*/
protected $public;
/**
* @ORM\Column(name="start_visibility_at", type="datetime", nullable=true)
*/
protected $startVisibilityAt;
/**
* @ORM\Column(name="end_visibility_at", type="datetime", nullable=true)
*/
protected $endVisibilityAt;
/**
* Constructor
*/
public function __construct()
{
$this->rights = new ArrayCollection();
}
/**
* @return mixed
*/
public function getStartVisibilityAt()
{
return $this->startVisibilityAt;
}
/**
* @param mixed $startVisibilityAt
* @return ResourceLink
*/
public function setStartVisibilityAt($startVisibilityAt)
{
$this->startVisibilityAt = $startVisibilityAt;
return $this;
}
/**
* @return mixed
*/
public function getEndVisibilityAt()
{
return $this->endVisibilityAt;
}
/**
* @param mixed $endVisibilityAt
* @return ResourceLink
*/
public function setEndVisibilityAt($endVisibilityAt)
{
$this->endVisibilityAt = $endVisibilityAt;
return $this;
}
/**
* @return string
*/
public function __toString()
{
return (string)$this->getId();
}
/**
* @return boolean
*/
public function isPrivate()
{
return $this->private;
}
/**
* @param boolean $private
*/
public function setPrivate($private)
{
$this->private = $private;
}
/**
* @return boolean
*/
public function isPublic()
{
return $this->public;
}
/**
* @param boolean $public
*/
public function setPublic($public)
{
$this->public = $public;
}
/**
* @return ArrayCollection
*/
public function getRights()
{
return $this->rights;
}
/**
* @param ArrayCollection $rights
* @return $this
*/
public function setRights(ArrayCollection $rights)
{
$this->rights = new ArrayCollection();
foreach ($rights as $right) {
$this->addRight($right);
}
return $this;
}
/**
* @param ResourceRights $right
* @return $this
*/
public function addRight(ResourceRights $right)
{
$right->setResourceLink($this);
$this->rights[] = $right;
return $this;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
* @return $this
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* @param User $user
* @return $this
*/
public function setUser(User $user)
{
$this->user = $user;
return $this;
}
/**
* @param Course $course
* @return $this
*/
public function setCourse(Course $course)
{
$this->course = $course;
return $this;
}
/**
* @param Session $session
* @return $this
*/
public function setSession(Session $session)
{
$this->session = $session;
return $this;
}
/**
* @return CGroupInfo
*/
public function getGroup()
{
return $this->group;
}
/**
* @param CGroupInfo $group
* @return $this
*/
public function setGroup(CGroupInfo $group)
{
$this->group = $group;
return $this;
}
/**
* @return Usergroup
*/
public function getUserGroup()
{
return $this->userGroup;
}
/**
* @param Usergroup $group
* @return $this
*/
public function setUserGroup(Usergroup $group)
{
$this->userGroup = $group;
return $this;
}
/**
* Get user
*
* @return User
*/
public function getUser()
{
return $this->user;
}
/**
* Get course
*
* @return Course
*/
public function getCourse()
{
return $this->course;
}
/**
* Get session
*
* @return Session
*/
public function getSession()
{
return $this->session;
}
/**
* @param ResourceNode $resourceNode
* @return $this
*/
public function setResourceNode(ResourceNode $resourceNode)
{
$this->resourceNode = $resourceNode;
return $this;
}
/**
* @return ResourceNode
*/
public function getResourceNode()
{
return $this->resourceNode;
}
/**
* @return $this
*/
public function getResource()
{
return $this;
}
}

@ -0,0 +1,388 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity\Resource;
use Chamilo\CoreBundle\Entity\Tool;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\UserBundle\Entity\User;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Base entity for all resources.
* @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\MaterializedPathRepository")
* @ORM\Table(name="resource_node")
* @Gedmo\Tree(type="materializedPath")
*
*/
class ResourceNode
{
const PATH_SEPARATOR = '`';
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Tool")
* @ORM\JoinColumn(name="tool_id", referencedColumnName="id")
**/
protected $tool;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceLink", mappedBy="resourceNode", cascade={"remove"})
**/
protected $links;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\AbstractResource", inversedBy="resourceNodes", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="resource_id", referencedColumnName="id")
**/
//protected $resource;
/**
* @ORM\ManyToOne(
* targetEntity="Chamilo\UserBundle\Entity\User",
* inversedBy="resourceNodes",
* cascade={"persist"}
* )
* @ORM\JoinColumn(onDelete="CASCADE", nullable=false)
*/
protected $creator;
/**
* @Gedmo\TreePathSource
* @ORM\Column()
* @Assert\NotBlank()
*/
protected $name;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(
* targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode",
* inversedBy="children"
* )
* @ORM\JoinColumns({@ORM\JoinColumn(onDelete="CASCADE")})
*/
protected $parent;
/**
* @Gedmo\TreeLevel
* @ORM\Column(name="level", type="integer", nullable=true)
*
*/
protected $level;
/**
* @ORM\OneToMany(
* targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode",
* mappedBy="parent"
* )
* @ORM\OrderBy({"id" = "ASC"})
*/
protected $children;
/**
* @Gedmo\TreePath(separator="`")
* @ORM\Column(name="path", type="string", length=3000, nullable=true)
*
*/
protected $path;
/**
* @ORM\Column(name="created_at", type="datetime")
* @Gedmo\Timestampable(on="create")
*/
protected $createdAt;
/**
* @ORM\Column(name="updated_at", type="datetime")
* @Gedmo\Timestampable(on="update")
*/
protected $updatedAt;
//private $pathForCreationLog = '';
/**
* Constructor
*/
public function __construct()
{
$this->rights = new ArrayCollection();
$this->children = new ArrayCollection();
}
/**
* @return string
*/
public function __toString()
{
return (string)$this->getPath();
}
/**
* Returns the resource id.
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
* @return $this
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* {@inheritdoc}
*/
public function setUpdatedAt(\DateTime $updatedAt = null)
{
$this->updatedAt = $updatedAt;
}
/**
* {@inheritdoc}
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* {@inheritdoc}
*/
public function setCreatedAt(\DateTime $createdAt = null)
{
$this->createdAt = $createdAt;
}
/**
* {@inheritdoc}
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Returns the tool.
*
* @return Tool
*/
public function getTool()
{
return $this->tool;
}
/**
* Returns the resource type.
* @param Tool $tool
*
* @return $this
*/
public function setTool(Tool $tool)
{
$this->tool = $tool;
return $this;
}
/**
* Returns the resource creator.
*
* @return User
*/
public function getCreator()
{
return $this->creator;
}
/**
* Sets the resource creator.
*
* @param User $creator
*
* @return $this
*/
public function setCreator(User $creator)
{
$this->creator = $creator;
return $this;
}
/**
* Returns the children resource instances.
*
* @return ArrayCollection
*/
public function getChildren()
{
return $this->children;
}
/**
* Sets the parent resource.
*
* @param ResourceNode $parent
*
* @return $this
*/
public function setParent(ResourceNode $parent = null)
{
$this->parent = $parent;
return $this;
}
/**
* Returns the parent resource.
*
* @return AbstractResource
*/
public function getParent()
{
return $this->parent;
}
/**
* Return the lvl value of the resource in the tree.
*
* @return integer
*/
public function getLevel()
{
return $this->level;
}
/**
* Returns the "raw" path of the resource
* (the path merge names and ids of all items).
* Eg.: "Root-1/subdir-2/file.txt-3/"
* @return string
*/
public function getPath()
{
return $this->path;
}
/**
* Returns the path cleaned from its ids.
* Eg.: "Root/subdir/file.txt"
* @return
*/
public function getPathForDisplay()
{
return self::convertPathForDisplay($this->path);
}
/**
* Sets the resource name.
*
* @param string $name
* @throws an exception if the name contains the path separator ('/').
*
* @return $this
*/
public function setName($name)
{
if (strpos(self::PATH_SEPARATOR, $name) !== false) {
throw new \InvalidArgumentException(
'Invalid character "'.self::PATH_SEPARATOR.'" in resource name.'
);
}
$this->name = $name;
return $this;
}
/**
* Returns the resource name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Convert a path for display: remove ids.
*
* @param string $path
*
* @return string
*/
public static function convertPathForDisplay($path)
{
$pathForDisplay = preg_replace(
'/-\d+'.self::PATH_SEPARATOR.'/',
' / ',
$path
);
if ($pathForDisplay !== null && strlen($pathForDisplay) > 0) {
$pathForDisplay = substr_replace($pathForDisplay, "", -3);
}
return $pathForDisplay;
}
/**
* This is required for logging the resource path at the creation.
* Do not use this function otherwise.
*
* @return type
*/
public function setPathForCreationLog($path)
{
$this->pathForCreationLog = $path;
}
/**
* This is required for logging the resource path at the creation.
* Do not use this function otherwise.
*
* @return type
*/
public function getPathForCreationLog()
{
return $this->pathForCreationLog;
}
/**
* @param $resource
* @return $this
*/
public function setResource($resource)
{
$this->resource = $resource;
return $this;
}
/**
* @return ArrayCollection
*/
public function getLinks()
{
return $this->links;
}
}

@ -0,0 +1,118 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Entity\Resource;
use Chamilo\CourseBundle\Entity\CGroupInfo;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Chamilo\UserBundle\Entity\User;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
/**
* @ORM\Entity
* @ORM\Table(name="resource_rights")
*/
class ResourceRights
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceLink")
* @ORM\JoinColumn(name="resource_link_id", referencedColumnName="id")
*/
protected $resourceLink;
/**
* @var string
*
* @ORM\Column(name="role", type="string", length=255, nullable=false)
*/
protected $role;
/**
* @var string
*
* @ORM\Column(name="mask", type="integer", nullable=false)
*/
protected $mask;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getMask()
{
return $this->mask;
}
/**
* @param string $mask
* @return $this
*/
public function setMask($mask)
{
$this->mask = $mask;
return $this;
}
/**
* @return mixed
*/
public function getResourceLink()
{
return $this->resourceLink;
}
/**
* @param mixed $resourceLink
* @return $this
*/
public function setResourceLink($resourceLink)
{
$this->resourceLink = $resourceLink;
return $this;
}
/**
* @return string
*/
public function getRole()
{
return $this->role;
}
/**
* @param string $role
* @return $this
*/
public function setRole($role)
{
$this->role = $role;
return $this;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
}

@ -14,11 +14,10 @@ use Doctrine\ORM\Mapping as ORM;
class SearchEngineRef
{
/**
* @var string
*
* @ORM\Column(name="course_code", type="string", length=40, nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="searchEngineRefs")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
private $courseCode;
private $course;
/**
* @var string
@ -60,26 +59,24 @@ class SearchEngineRef
/**
* Set courseCode
*
* @param string $courseCode
* @return SearchEngineRef
* Set course
* @param \Chamilo\CoreBundle\Entity\Course $course
* @return \Chamilo\CoreBundle\Entity\SearchEngineRef
*/
public function setCourseCode($courseCode)
public function setCourse(Course $course)
{
$this->courseCode = $courseCode;
$this->course = $course;
return $this;
}
/**
* Get courseCode
*
* @return string
* Get course
* @return \Chamilo\CoreBundle\Entity\Course
*/
public function getCourseCode()
public function getCourse()
{
return $this->courseCode;
return $this->course;
}
/**

@ -24,6 +24,7 @@ use Chamilo\CoreBundle\Entity\SessionCategory;
* @ORM\Index(name="idx_id_session_admin_id", columns={"session_admin_id"})
* }
* )
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\SessionListener"})
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\SessionRepository")
*/
class Session
@ -159,12 +160,11 @@ class Session
private $coachAccessEndDate;
/**
* Only available when "session_list_order" setting is on
* @var integer
*
* @ORM\Column(name="position", type="integer", nullable=false)
*/
//private $position;
private $position;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CItemProperty", mappedBy="session")
@ -218,12 +218,28 @@ class Session
*/
private $studentPublications;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SkillRelUser", mappedBy="session", cascade={"persist"})
*/
protected $issuedSkills;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelSession", mappedBy="session", cascade={"persist"}, orphanRemoval=true)
**/
protected $urls;
/**
* @var AccessUrl
**/
protected $currentUrl;
/**
* Constructor
*/
public function __construct()
{
$this->items = new ArrayCollection();
$this->urls = new ArrayCollection();
$this->nbrClasses = 0;
$this->nbrUsers = 0;
@ -271,10 +287,13 @@ class Session
/**
* @param string $showDescription
* @return $this
*/
public function setShowDescription($showDescription)
{
$this->showDescription = $showDescription;
return $this;
}
/**
@ -313,6 +332,7 @@ class Session
/**
* @param $users
* @return $this
*/
public function setUsers($users)
{
@ -321,6 +341,8 @@ class Session
foreach ($users as $user) {
$this->addUser($user);
}
return $this;
}
/**
@ -508,14 +530,14 @@ class Session
public function getUserInCourse(User $user, Course $course, $status = null)
{
$criteria = Criteria::create()->where(
Criteria::expr()->eq("course", $course)
Criteria::expr()->eq('course', $course)
)->andWhere(
Criteria::expr()->eq("user", $user)
Criteria::expr()->eq('user', $user)
);
if (!is_null($status)) {
$criteria->andWhere(
Criteria::expr()->eq("status", $status)
Criteria::expr()->eq('status', $status)
);
}
@ -549,7 +571,7 @@ class Session
* Set description
*
* @param string $description
* @return Groups
* @return Session
*/
public function setDescription($description)
{
@ -846,6 +868,7 @@ class Session
/**
* Get id
*
* @return User
*/
public function getGeneralCoach()
@ -855,10 +878,13 @@ class Session
/**
* @param $coach
* @return $this
*/
public function setGeneralCoach($coach)
{
$this->generalCoach = $coach;
return $this;
}
/**
@ -909,6 +935,58 @@ class Session
return false;
}
/**
* @return bool
*/
public function isActiveForStudent()
{
$start = $this->getAccessStartDate();
$end = $this->getAccessEndDate();
return $this->compareDates($start, $end);
}
/**
* @return bool
*/
public function isActiveForCoach()
{
$start = $this->getCoachAccessStartDate();
$end = $this->getCoachAccessEndDate();
return $this->compareDates($start, $end);
}
/**
* @param $start
* @param $end
* @return bool
*/
private function compareDates($start, $end)
{
$now = new \Datetime('now');
if (!empty($start) && !empty($end)) {
if ($now >= $start && $now <= $end) {
return true;
}
}
if (!empty($start)) {
if ($now >= $start) {
return true;
}
}
if (!empty($end)) {
if ($now <= $end) {
return true;
}
}
return false;
}
/**
* @param Course $course
*/
@ -1016,6 +1094,7 @@ class Session
}
/**
* currentCourse is set in CourseListener
* @return Course
*/
public function getCurrentCourse()
@ -1024,15 +1103,24 @@ class Session
}
/**
* currentCourse is set in CourseListener
* @param Course $course
* @return $this
*/
public function setCurrentCourse(Course $course)
{
// If the session is registered in the course session list.
if ($this->getCourses()->contains($course->getId())) {
$exists = $this->getCourses()->exists(
function ($key, $element) use ($course) {
/** @var SessionRelCourse $element */
return $course->getId() == $element->getCourse()->getId();
}
);
if ($exists) {
$this->currentCourse = $course;
}
return $this;
}
@ -1131,6 +1219,71 @@ class Session
return $this->studentPublications;
}
/**
* Get issuedSkills
* @return ArrayCollection
*/
public function getIssuedSkills()
{
return $this->issuedSkills;
}
/**
* @param AccessUrl $url
*
* @return $this
*/
public function setCurrentUrl(AccessUrl $url)
{
$urlList = $this->getUrls();
/** @var AccessUrlRelCourse $item */
foreach ($urlList as $item) {
if ($item->getUrl()->getId() == $url->getId()) {
$this->currentUrl = $url;
break;
}
}
return $this;
}
/**
* @return AccessUrl
*/
public function getCurrentUrl()
{
return $this->currentUrl;
}
/**
* @return ArrayCollection
*/
public function getUrls()
{
return $this->urls;
}
/**
* @param $urls
*/
public function setUrls($urls)
{
$this->urls = new ArrayCollection();
foreach ($urls as $url) {
$this->addUrls($url);
}
}
/**
* @param AccessUrlRelSession $url
*/
public function addUrls(AccessUrlRelSession $url)
{
$url->setSession($this);
$this->urls[] = $url;
}
/**
* @return int
*/

@ -9,9 +9,14 @@ use Doctrine\ORM\Mapping as ORM;
* SettingsCurrent
*
* @ORM\Table(
* name="settings_current",
* uniqueConstraints={@ORM\UniqueConstraint(name="unique_setting", columns={"variable", "subkey", "access_url"})},
* indexes={@ORM\Index(name="access_url", columns={"access_url"})})
* name="settings_current",
* uniqueConstraints={
* @ORM\UniqueConstraint(
* name="unique_setting",
* columns={"variable", "subkey", "access_url"})
* },
* indexes={@ORM\Index(name="access_url", columns={"access_url"})}
* )
* @ORM\Entity
*/
class SettingsCurrent
@ -109,6 +114,26 @@ class SettingsCurrent
*/
private $accessUrlLocked = 0;
/**
* @ORM\ManyToOne(targetEntity="AccessUrl", inversedBy="settings", cascade={"persist"})
* @ORM\JoinColumn(name="access_url", referencedColumnName="id")
*/
protected $url;
private $parameters;
/**
* @var string
**/
private $schemaAlias;
/**
* Constructor
*/
public function __constructor()
{
$this->accessUrlLocked = 0;
}
/**
* Set variable
*
@ -406,4 +431,25 @@ class SettingsCurrent
{
return $this->id;
}
/**
* @return AccessUrl
*/
public function getUrl()
{
return $this->url;
}
/**
* @param AccessUrl $url
* @return SettingsCurrent
*/
public function setUrl($url)
{
$this->url = $url;
return $this;
}
}

@ -7,6 +7,7 @@ use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
use Chamilo\SkillBundle\Entity\Profile;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Skill
@ -79,7 +80,7 @@ class Skill
/**
* @var \DateTime
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
private $updatedAt;
@ -95,6 +96,14 @@ class Skill
*/
protected $issuedSkills;
/**
* Constructor
*/
public function __constructor()
{
$this->status = self::STATUS_ENABLED;
}
/**
* @return string
*/

@ -50,6 +50,16 @@ class SkillRelSkill
*/
private $level;
/**
* Set id
*
* @return integer
*/
public function setId($id)
{
$this->id = $id;
}
/**
* Set skillId
*

@ -13,6 +13,15 @@ use Doctrine\ORM\Mapping as ORM;
*/
class SysAnnouncement
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
private $id;
/**
* @var \DateTime
*
@ -48,6 +57,27 @@ class SysAnnouncement
*/
private $visibleGuest;
/**
* @var boolean
*
* @ORM\Column(name="visible_drh", type="boolean", nullable=false)
*/
private $visibleDrh;
/**
* @var boolean
*
* @ORM\Column(name="visible_session_admin", type="boolean", nullable=false)
*/
private $visibleSessionAdmin;
/**
* @var boolean
*
* @ORM\Column(name="visible_boss", type="boolean", nullable=false)
*/
private $visibleBoss;
/**
* @var string
*
@ -77,15 +107,17 @@ class SysAnnouncement
private $accessUrlId;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* SysAnnouncement constructor.
*/
private $id;
public function __construct()
{
$this->visibleBoss = 0;
$this->visibleDrh = 0;
$this->visibleGuest= 0;
$this->visibleSessionAdmin = 0;
$this->visibleStudent = 0;
$this->visibleTeacher = 0;
}
/**
* Set dateStart
@ -303,4 +335,62 @@ class SysAnnouncement
{
return $this->id;
}
/**
* @return bool
*/
public function isVisibleDrh(): bool
{
return $this->visibleDrh;
}
/**
* @param bool $visibleDrh
* @return SysAnnouncement
*/
public function setVisibleDrh(bool $visibleDrh): SysAnnouncement
{
$this->visibleDrh = $visibleDrh;
return $this;
}
/**
* @return bool
*/
public function isVisibleSessionAdmin(): bool
{
return $this->visibleSessionAdmin;
}
/**
* @param bool $visibleSessionAdmin
* @return SysAnnouncement
*/
public function setVisibleSessionAdmin(bool $visibleSessionAdmin
): SysAnnouncement {
$this->visibleSessionAdmin = $visibleSessionAdmin;
return $this;
}
/**
* @return bool
*/
public function isVisibleBoss(): bool
{
return $this->visibleBoss;
}
/**
* @param bool $visibleBoss
* @return SysAnnouncement
*/
public function setVisibleBoss(bool $visibleBoss): SysAnnouncement
{
$this->visibleBoss = $visibleBoss;
return $this;
}
}

@ -11,7 +11,8 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="track_e_access", indexes={
* @ORM\Index(name="access_user_id", columns={"access_user_id"}),
* @ORM\Index(name="access_c_id", columns={"c_id"}),
* @ORM\Index(name="access_session_id", columns={"access_session_id"})
* @ORM\Index(name="access_session_id", columns={"access_session_id"}),
* @ORM\Index(name="user_course_session_date", columns={"access_user_id", "c_id", "access_session_id", "access_date"})
* })
* @ORM\Entity
*/

@ -14,7 +14,8 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Index(name="course", columns={"c_id"}),
* @ORM\Index(name="user_id", columns={"user_id"}),
* @ORM\Index(name="login_course_date", columns={"login_course_date"}),
* @ORM\Index(name="session_id", columns={"session_id"})
* @ORM\Index(name="session_id", columns={"session_id"}),
* @ORM\Index(name="user_course_session_date", columns={"user_id", "c_id", "session_id", "login_course_date"})
* }
* )
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\TrackECourseAccessRepository")

@ -13,22 +13,22 @@ use Doctrine\ORM\Mapping as ORM;
*/
class UserFriendRelationType
{
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=20, nullable=true)
*/
private $title;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\GeneratedValue
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=20, nullable=true)
*/
private $title;
/**
* Set title
*
@ -61,4 +61,14 @@ class UserFriendRelationType
{
return $this->id;
}
/**
* Set id
*
* @return integer
*/
public function setId($id)
{
$this->id = $id;
}
}

@ -15,7 +15,8 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Index(name="poster_id", columns={"poster_id"}),
* @ORM\Index(name="forum_id", columns={"forum_id"}),
* @ORM\Index(name="idx_forum_post_thread_id", columns={"thread_id"}),
* @ORM\Index(name="idx_forum_post_visible", columns={"visible"})
* @ORM\Index(name="idx_forum_post_visible", columns={"visible"}),
* @ORM\Index(name="c_id_visible_post_date", columns={"c_id", "visible", "post_date"})
* }
* )
* @ORM\Entity

@ -75,7 +75,7 @@ class CItemProperty
/**
* @var integer
*
* @ORM\Column(name="lastedit_user_id", type="integer", nullable=false)
* @ORM\Column(name="lastedit_user_id", type="integer", nullable=true)
*/
private $lasteditUserId;

@ -209,12 +209,28 @@ class CQuiz
*/
private $hideQuestionTitle;
/**
* @var boolean
*
* @ORM\Column(name="show_previous_button", type="boolean", nullable=true, options={"default":1})
*/
private $showPreviousButton;
/**
* @var string
*
* @ORM\Column(name="notifications", type="string", length=255, nullable=true)
*/
private $notifications;
/**
* CQuiz constructor.
*/
public function __construct()
{
$this->hideQuestionTitle = false;
$this->showPreviousButton = true;
$this->notifications = '';
}
/**
@ -803,6 +819,44 @@ class CQuiz
return $this;
}
/**
* @return bool
*/
public function isShowPreviousButton(): bool
{
return $this->showPreviousButton;
}
/**
* @param bool $showPreviousButton
* @return CQuiz
*/
public function setShowPreviousButton(bool $showPreviousButton): CQuiz
{
$this->showPreviousButton = $showPreviousButton;
return $this;
}
/**
* @return string
*/
public function getNotifications(): string
{
return $this->notifications;
}
/**
* @param string $notifications
* @return CQuiz
*/
public function setNotifications(string $notifications): CQuiz
{
$this->notifications = $notifications;
return $this;
}
/**
* @return int
*/

@ -12,7 +12,8 @@ use Doctrine\ORM\Mapping as ORM;
* name="c_quiz_answer",
* indexes={
* @ORM\Index(name="c_id", columns={"c_id"}),
* @ORM\Index(name="idx_cqa_q", columns={"question_id"})
* @ORM\Index(name="idx_cqa_q", columns={"question_id"}),
* @ORM\Index(name="c_id_auto", columns={"c_id", "id_auto"})
* }
* )
* @ORM\Entity

@ -51,7 +51,7 @@ class CQuizQuestionCategory
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=false)
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;

@ -238,6 +238,12 @@ class CSurvey
*/
private $visibleResults;
/**
* @var bool
* @ORM\Column(name="is_mandatory", type="boolean", options={"default":false})
*/
private $isMandatory = false;
/**
* Set code
*
@ -927,4 +933,23 @@ class CSurvey
{
return $this->cId;
}
/**
* @param bool $isMandatory
* @return CSurvey
*/
public function setIsMandatory($isMandatory)
{
$this->isMandatory = $isMandatory;
return $this;
}
/**
* @return bool
*/
public function isMandatory()
{
return $this->isMandatory;
}
}

@ -34,7 +34,6 @@ class CSurveyInvitation
*/
private $cId;
/**
* @var integer
*
@ -98,6 +97,13 @@ class CSurveyInvitation
*/
private $groupId;
/**
* @var \DateTime
*
* @ORM\Column(name="answered_at", type="datetime", nullable=true)
*/
private $answeredAt;
/**
* Set surveyCode
*
@ -327,4 +333,23 @@ class CSurveyInvitation
{
return $this->cId;
}
/**
* @return \DateTime
*/
public function getAnsweredAt(): \DateTime
{
return $this->answeredAt;
}
/**
* @param \DateTime $answeredAt
* @return CSurveyInvitation
*/
public function setAnsweredAt(\DateTime $answeredAt): CSurveyInvitation
{
$this->answeredAt = $answeredAt;
return $this;
}
}

@ -118,6 +118,12 @@ class CSurveyQuestion
*/
private $surveyGroupSec2;
/**
* @var bool
* @ORM\Column(name="is_required", type="boolean", options={"default": false})
*/
private $isMandatory = false;
/**
* Set surveyId
*
@ -416,4 +422,25 @@ class CSurveyQuestion
{
return $this->cId;
}
/**
* Set isMandatory
* @return bool
*/
public function isMandatory(): bool
{
return $this->isMandatory;
}
/**
* Get isMandatory
* @param bool $isMandatory
* @return CSurveyQuestion
*/
public function setIsMandatory(bool $isMandatory): CSurveyQuestion
{
$this->isMandatory = $isMandatory;
return $this;
}
}

@ -127,6 +127,14 @@ class CTool
private $customIcon;
/**
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="tools")
* @ORM\JoinColumn(name="c_id", referencedColumnName="id")
*/
private $course;
protected $originalImage;
/**
* @return int
*/
public function getIid()
@ -145,6 +153,50 @@ class CTool
return $this;
}
/**
* Constructor
*/
public function __construct()
{
// Default values
$this->id = 0;
$this->sessionId = 0;
$this->address = 'squaregrey.gif';
}
/**
* @param Course $course
*/
public function setCourse($course)
{
$this->course = $course;
}
/**
* @param ClassMetadata $metadata
*/
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint(
'customIcon',
new Assert\File(array('mimeTypes' => array("image/png")))
);
$metadata->addPropertyConstraint(
'customIcon',
new Assert\Image(array('maxWidth' => 64, 'minHeight' => 64))
);
$metadata->addPropertyConstraint('cId', new Assert\NotBlank());
}
/**
* @return Course
*/
public function getCourse()
{
return $this->course;
}
/**
* Set name
*

@ -14,7 +14,6 @@ use Doctrine\ORM\EntityRepository;
*/
class CNotebookRepository extends EntityRepository
{
/**
* Get the user notebooks in a course
* @param User $user

@ -3,7 +3,7 @@
namespace Chamilo\FaqBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
@ -13,7 +13,7 @@ use Sonata\AdminBundle\Form\FormMapper;
*
* @package Chamilo\FaqBundle\Admin
*/
class CategoryAdmin extends Admin
class CategoryAdmin extends AbstractAdmin
{
protected $datagridValues = array(
'_page' => 1,

@ -3,7 +3,7 @@
namespace Chamilo\FaqBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
@ -13,7 +13,7 @@ use Sonata\AdminBundle\Form\FormMapper;
*
* @package Chamilo\FaqBundle\Admin
*/
class QuestionAdmin extends Admin
class QuestionAdmin extends AbstractAdmin
{
protected $datagridValues = array(
'_page' => 1,

@ -13,7 +13,7 @@ use Knp\DoctrineBehaviors\Model as ORMBehaviors;
*
* @ORM\Entity
* @ORM\Table(name="faq_question_translation")
* )
*
*
* @package Chamilo\FaqBundle\Entity
*/
@ -47,7 +47,6 @@ class QuestionTranslation
return (string) $this->headline;
}
/**
* @return string
*/

@ -3,6 +3,7 @@
namespace Chamilo\UserBundle\Entity\Manager;
use Chamilo\UserBundle\Entity\User;
use Sonata\UserBundle\Entity\UserManager as BaseUserManager;
/**
@ -17,10 +18,20 @@ class UserManager extends BaseUserManager
*
* @param string $token
*
* @return UserInterface
* @return User
*/
public function findUserByConfirmationToken($token)
{
return $this->findUserBy(array('confirmationToken' => $token));
}
/**
* @param string $code
* @return User
*/
public function findUserByOfficialCode($code)
{
$criteria = ['officialCode' => $code ];
return $this->findUserBy($criteria);
}
}

@ -19,6 +19,7 @@ use Symfony\Component\Validator\Mapping\ClassMetadata;
use FOS\UserBundle\Model\UserInterface;
use FOS\UserBundle\Model\GroupInterface;
use Chamilo\CoreBundle\Entity\Skill;
use Chamilo\ThemeBundle\Model\UserInterface as ThemeUser;
//use Chamilo\CoreBundle\Component\Auth;
//use FOS\MessageBundle\Model\ParticipantInterface;
@ -45,7 +46,7 @@ use Chamilo\CoreBundle\Entity\Skill;
* @ORM\Entity(repositoryClass="Chamilo\UserBundle\Entity\Repository\UserRepository")
*
*/
class User implements UserInterface //implements ParticipantInterface, ThemeUser
class User extends BaseUser implements ThemeUser //implements ParticipantInterface, ThemeUser
{
const COURSE_MANAGER = 1;
const TEACHER = 1;
@ -1402,7 +1403,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
*
* @return User
*/
public function setLastLogin(\DateTime $lastLogin)
public function setLastLogin(\DateTime $lastLogin = null)
{
$this->lastLogin = $lastLogin;

Loading…
Cancel
Save