diff --git a/public/main/inc/lib/usermanager.lib.php b/public/main/inc/lib/usermanager.lib.php index b3ca7542be..3d37d8db72 100644 --- a/public/main/inc/lib/usermanager.lib.php +++ b/public/main/inc/lib/usermanager.lib.php @@ -348,7 +348,7 @@ class UserManager if ($addUserToNode) { $resourceNode = new ResourceNode(); $resourceNode - ->setSlug($loginName) + ->setTitle($loginName) ->setCreator(api_get_user_entity($creatorId)) ->setResourceType($repo->getResourceType()) // ->setParent($url->getResourceNode()) diff --git a/public/main/install/install.lib.php b/public/main/install/install.lib.php index f8983cc94e..205f8aa7e4 100644 --- a/public/main/install/install.lib.php +++ b/public/main/install/install.lib.php @@ -3321,7 +3321,6 @@ function finishInstallationWithContainer( $branch = new BranchSync(); $branch->setBranchName('localhost'); $branch->setUrl($accessUrl); - $manager->persist($branch); $admin = $userManager->find($adminId); diff --git a/src/CoreBundle/Controller/ResourceController.php b/src/CoreBundle/Controller/ResourceController.php index 42ea6a64b8..e6aa72cefe 100644 --- a/src/CoreBundle/Controller/ResourceController.php +++ b/src/CoreBundle/Controller/ResourceController.php @@ -75,15 +75,21 @@ class ResourceController extends AbstractResourceController implements CourseCon $repository = $this->getRepositoryFromRequest($request); $settings = $repository->getResourceSettings(); - $grid = $this->getGrid($request, $repository, $grid, $parentResourceNode->getId(), 'chamilo_core_resource_index'); + $grid = $this->getGrid( + $request, + $repository, + $grid, + $parentResourceNode->getId(), + 'chamilo_core_resource_index' + ); - $breadcrumb = $this->getBreadCrumb(); + /*$breadcrumb = $this->getBreadCrumb(); $breadcrumb->addChild( $this->trans($tool), [ 'uri' => '#', ] - ); + );*/ // The base resource node is the course. $id = $parentResourceNode->getId(); @@ -116,12 +122,13 @@ class ResourceController extends AbstractResourceController implements CourseCon ); $settings = $repository->getResourceSettings(); - $course = $this->getCourse(); $session = $this->getSession(); /** @var QueryBuilder $qb */ $qb = $repository->getResources($this->getUser(), $parentNode, $course, $session, null); + //$qb->getQuery()->setFetchMode(\Doctrine\ORM\Mapping\ClassMetadata::FETCH_EAGER); + // 3. Set QueryBuilder to the source. $source->initQueryBuilder($qb); $grid->setSource($source); @@ -338,7 +345,6 @@ class ResourceController extends AbstractResourceController implements CourseCon } else { $link = $resource->getFirstResourceLink(); } - if (null === $link) { return null; } @@ -429,6 +435,7 @@ class ResourceController extends AbstractResourceController implements CourseCon $grid = $this->getGrid($request, $repository, $grid, $resourceNodeId, 'chamilo_core_resource_list'); $this->setBreadCrumb($request); + $parentResourceNode = $this->getParentResourceNode($request); return $grid->getGridResponse( @@ -626,18 +633,20 @@ class ResourceController extends AbstractResourceController implements CourseCon * * @Route("/{tool}/{type}/{id}/info", methods={"GET", "POST"}, name="chamilo_core_resource_info") */ - public function infoAction(Request $request, IllustrationRepository $illustrationRepository): Response + public function infoAction(Request $request): Response { $this->setBreadCrumb($request); - $nodeId = $request->get('id'); + $nodeId = $request->get('id'); $repository = $this->getRepositoryFromRequest($request); /** @var AbstractResource $resource */ $resource = $repository->getResourceFromResourceNode($nodeId); + $this->denyAccessUnlessValidResource($resource); $resourceNode = $resource->getResourceNode(); + //throw new \Exception('as'); $this->denyAccessUnlessGranted( ResourceNodeVoter::VIEW, $resourceNode, @@ -647,13 +656,12 @@ class ResourceController extends AbstractResourceController implements CourseCon $tool = $request->get('tool'); $type = $request->get('type'); - $illustration = $illustrationRepository->getIllustrationUrlFromNode($resourceNode); - + //$illustration = $illustrationRepository->getIllustrationUrlFromNode($resourceNode); $form = $this->createForm(ResourceCommentType::class, null); $params = [ 'resource' => $resource, - 'illustration' => $illustration, + // 'illustration' => $illustration, 'tool' => $tool, 'type' => $type, 'comment_form' => $form->createView(), @@ -1015,7 +1023,6 @@ class ResourceController extends AbstractResourceController implements CourseCon ); $form = $repository->getForm($this->container->get('form.factory'), null); - $settings = $repository->getResourceSettings(); if ('file' === $fileType && $settings->isAllowToSaveEditorToResourceFile()) { @@ -1037,12 +1044,12 @@ class ResourceController extends AbstractResourceController implements CourseCon $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); - - $course = $this->getCourse(); + $course = $this->getCourse()->getId(); + $course = $this->getDoctrine()->getRepository('ChamiloCoreBundle:Course')->find($course); $session = $this->getSession(); /** @var ResourceInterface $newResource */ - $newResource = $repository->saveResource($form, $course, $session, $fileType); + $newResource = $repository->setResourceProperties($form, $course, $session, $fileType); $file = null; if ('file' === $fileType && $settings->isAllowToSaveEditorToResourceFile()) { @@ -1054,7 +1061,6 @@ class ResourceController extends AbstractResourceController implements CourseCon fwrite($handle, $content); $meta = stream_get_meta_data($handle); $file = new UploadedFile($meta['uri'], $fileName, 'text/html', null, true); - $em->persist($newResource); } $repository->addResourceToCourseWithParent( diff --git a/src/CoreBundle/Entity/Resource/AbstractResource.php b/src/CoreBundle/Entity/Resource/AbstractResource.php index 7d7691b25e..ef0a4f0fe7 100644 --- a/src/CoreBundle/Entity/Resource/AbstractResource.php +++ b/src/CoreBundle/Entity/Resource/AbstractResource.php @@ -22,7 +22,7 @@ abstract class AbstractResource * @GRID\Column(field="resourceNode.createdAt", title="Date added", type="datetime") * @Groups({"list"}) * @ORM\OneToOne( - * targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", mappedBy="resource", cascade={"remove"}, orphanRemoval=true, fetch="EAGER" + * targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", mappedBy="resource", cascade={"remove"}, orphanRemoval=true * ) * @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="CASCADE") */ @@ -96,8 +96,12 @@ abstract class AbstractResource $result = null; if ($resourceNode && $resourceNode->getResourceLinks()->count() > 0) { + //var_dump($resourceNode->getResourceLinks()->count()); + foreach ($resourceNode->getResourceLinks() as $link) { + //var_dump(get_class($link)); + } $result = $resourceNode->getResourceLinks()->matching($criteria)->first(); - + //var_dump($result); if ($result) { return $result; } diff --git a/src/CoreBundle/Entity/Resource/ResourceLink.php b/src/CoreBundle/Entity/Resource/ResourceLink.php index 22b38b1a84..a07089b8a3 100644 --- a/src/CoreBundle/Entity/Resource/ResourceLink.php +++ b/src/CoreBundle/Entity/Resource/ResourceLink.php @@ -31,11 +31,17 @@ class ResourceLink protected $id; /** - * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", inversedBy="resourceLinks", fetch="EAGER") + * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", inversedBy="resourceLinks") * @ORM\JoinColumn(name="resource_node_id", referencedColumnName="id", onDelete="SET NULL") */ protected $resourceNode; + /** + * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="resourceLinks") + * @ORM\JoinColumn(name="c_id", referencedColumnName="id", nullable=true) + */ + protected $course; + /** * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session", inversedBy="resourceLinks") * @ORM\JoinColumn(name="session_id", referencedColumnName="id", nullable=true) @@ -48,12 +54,6 @@ class ResourceLink */ protected $user; - /** - * @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", inversedBy="resourceLinks") - * @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, onDelete="CASCADE") diff --git a/src/CoreBundle/Entity/Resource/ResourceNode.php b/src/CoreBundle/Entity/Resource/ResourceNode.php index cacf4342cd..f0f5c2399d 100644 --- a/src/CoreBundle/Entity/Resource/ResourceNode.php +++ b/src/CoreBundle/Entity/Resource/ResourceNode.php @@ -31,25 +31,6 @@ class ResourceNode public const PATH_SEPARATOR = '`'; use TimestampableEntity; - /** - * @var \DateTime - * @Groups({"list"}) - * @Gedmo\Timestampable(on="create") - * @ORM\Column(type="datetime") - * @JMS\Type("DateTime") - */ - protected $createdAt; - - /** - * @var \DateTime - * - * @Groups({"list"}) - * @Gedmo\Timestampable(on="update") - * @ORM\Column(type="datetime") - * @JMS\Type("DateTime") - */ - protected $updatedAt; - /** * @ORM\Id * @ORM\Column(type="integer") @@ -61,7 +42,16 @@ class ResourceNode * @Assert\NotBlank() * * @Gedmo\TreePathSource - * @ORM\Column(name="slug", type="string", length=255, nullable=true) + * + * @ORM\Column(name="title", type="string", length=255, nullable=false) + */ + protected $title; + + /** + * @Assert\NotBlank() + * + * @Gedmo\Slug(fields={"title"}) + * @ORM\Column(name="slug", type="string", length=255, nullable=false) */ protected $slug; @@ -82,7 +72,7 @@ class ResourceNode * @var ResourceFile * @Groups({"list"}) * - * @ORM\OneToOne(targetEntity="ResourceFile", inversedBy="resourceNode", orphanRemoval=true) + * @ORM\OneToOne(targetEntity="ResourceFile", inversedBy="resourceNode", orphanRemoval=true, fetch="EAGER") * @ORM\JoinColumn(name="resource_file_id", referencedColumnName="id", onDelete="CASCADE") */ protected $resourceFile; @@ -125,9 +115,9 @@ class ResourceNode protected $children; /** - * @Gedmo\TreePath(separator="`") + * @Gedmo\TreePath(appendId=true,separator="`") * - * @ORM\Column(name="path", type="string", length=3000, nullable=true) + * @ORM\Column(name="path", type="text", nullable=true) */ protected $path; @@ -152,7 +142,25 @@ class ResourceNode */ protected $comments; - //protected $pathForCreationLog = ''; + /** + * @var \DateTime + * + * @Groups({"list"}) + * @Gedmo\Timestampable(on="create") + * @ORM\Column(type="datetime") + * @JMS\Type("DateTime") + */ + protected $createdAt; + + /** + * @var \DateTime + * + * @Groups({"list"}) + * @Gedmo\Timestampable(on="update") + * @ORM\Column(type="datetime") + * @JMS\Type("DateTime") + */ + protected $updatedAt; /** * Constructor. @@ -312,6 +320,30 @@ class ResourceNode return self::convertPathForDisplay($this->path); } + public function getPathForDisplayToArray($baseRoot = null) + { + $parts = explode(self::PATH_SEPARATOR, $this->path); + $list = []; + foreach ($parts as $part) { + $parts = explode('-', $part); + if (empty($parts[1])) { + continue; + } + + $value = $parts[0]; + $id = $parts[1]; + + if (!empty($baseRoot)) { + if ($id < $baseRoot) { + continue; + } + } + $list[$id] = $value; + } + + return $list; + } + /** * @return string */ @@ -327,6 +359,13 @@ class ResourceNode return $this->slug; } + public function setTitle(string $title) + { + $this->title = $title; + + return $this; + } + /** * @return ResourceNode */ @@ -372,26 +411,6 @@ class ResourceNode return $pathForDisplay; } - /** - * This is required for logging the resource path at the creation. - * Do not use this function otherwise. - */ - 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 string - */ - public function getPathForCreationLog() - { - return $this->pathForCreationLog; - } - /** * @return ResourceType */ diff --git a/src/CoreBundle/EventListener/LegacyListener.php b/src/CoreBundle/EventListener/LegacyListener.php index cec2c4d08c..b6215691a8 100644 --- a/src/CoreBundle/EventListener/LegacyListener.php +++ b/src/CoreBundle/EventListener/LegacyListener.php @@ -27,6 +27,7 @@ class LegacyListener if (!$event->isMasterRequest()) { return; } + $request = $event->getRequest(); $session = $request->getSession(); @@ -60,7 +61,6 @@ class LegacyListener $userStatus = null; if ($userObject instanceof UserInterface) { $userInfo = api_get_user_info($userObject->getId()); - if ($userInfo) { $userStatus = $userObject->getStatus(); $isAdmin = $userObject->hasRole('ROLE_ADMIN'); @@ -73,7 +73,7 @@ class LegacyListener // Theme icon is loaded in the TwigListener src/ThemeBundle/EventListener/TwigListener.php //$theme = api_get_visual_theme(); - $languages = api_get_languages(); + /*$languages = api_get_languages(); $languageList = []; foreach ($languages as $isoCode => $language) { $languageList[languageToCountryIsoCode($isoCode)] = $language; @@ -91,9 +91,9 @@ class LegacyListener 'flag' => $isoFixed, 'text' => $languageList[$isoFixed] ?? 'English', ] - ); - $twig->addGlobal('current_locale', $request->getLocale()); - $twig->addGlobal('available_locales', $languages); + );*/ + //$twig->addGlobal('current_locale', $request->getLocale()); + //$twig->addGlobal('available_locales', $languages); $twig->addGlobal('show_toolbar', \Template::isToolBarDisplayedForUser() ? 1 : 0); // Extra content diff --git a/src/CoreBundle/EventListener/LocaleListener.php b/src/CoreBundle/EventListener/LocaleListener.php index fa2437c18d..45a2c1135a 100644 --- a/src/CoreBundle/EventListener/LocaleListener.php +++ b/src/CoreBundle/EventListener/LocaleListener.php @@ -47,12 +47,21 @@ class LocaleListener implements EventSubscriberInterface return; } + $loadFromDb = $request->getSession()->get('check_locale_from_db', true); + + if (false === $loadFromDb && + $request->getSession()->has('_locale') && + !empty($request->getSession()->get('_locale')) + ) { + $locale = $request->getSession()->get('_locale'); + $request->setLocale($locale); + + return true; + } + // Try to see if the locale has been set as a _locale routing parameter (from lang switcher) //if ($locale = $request->getSession('_locale')) { - if (false) { - //if ($locale = $request->attributes->get('_locale')) { - //$request->getSession()->set('_locale', $locale); - } else { + if ($loadFromDb) { $localeList = []; // 1. Check platform locale @@ -133,6 +142,7 @@ class LocaleListener implements EventSubscriberInterface // if no explicit locale has been set on this request, use one from the session $request->setLocale($locale); $request->getSession()->set('_locale', $locale); + $request->getSession()->set('check_locale_from_db', false); } } diff --git a/src/CoreBundle/Framework/Container.php b/src/CoreBundle/Framework/Container.php index 90733512fd..470a727b83 100644 --- a/src/CoreBundle/Framework/Container.php +++ b/src/CoreBundle/Framework/Container.php @@ -80,7 +80,7 @@ class Container public static $roles; /** @var string */ public static $legacyTemplate = '@ChamiloTheme/Layout/layout_one_col.html.twig'; - private static $settingsManager; + //private static $settingsManager; private static $userManager; private static $siteManager; @@ -261,13 +261,10 @@ class Container return self::$container->get('chamilo.settings.manager'); } - /** - * @param SettingsManager $manager - */ - public static function setSettingsManager($manager) + /*public static function setSettingsManager($manager) { self::$settingsManager = $manager; - } + }*/ /** * @return \Chamilo\CourseBundle\Manager\SettingsManager @@ -624,7 +621,7 @@ class Container $em = $container->get('doctrine.orm.entity_manager'); \Database::setManager($em); \CourseManager::setEntityManager($em); - self::setSettingsManager($container->get('chamilo.settings.manager')); + //self::setSettingsManager($container->get('chamilo.settings.manager')); self::setUserManager($container->get('fos_user.user_manager')); self::setSiteManager($container->get('sonata.page.manager.site')); \CourseManager::setCourseSettingsManager($container->get('Chamilo\CourseBundle\Manager\SettingsManager')); diff --git a/src/CoreBundle/Repository/GridInterface.php b/src/CoreBundle/Repository/GridInterface.php index b23e18cb6f..946c5eff94 100644 --- a/src/CoreBundle/Repository/GridInterface.php +++ b/src/CoreBundle/Repository/GridInterface.php @@ -18,7 +18,7 @@ interface GridInterface { public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroupInfo $group = null); - public function saveResource(FormInterface $form, Course $course, Session $session, $fileType); + public function setResourceProperties(FormInterface $form, Course $course, Session $session, $fileType); public function getTitleColumn(Grid $grid): Column; diff --git a/src/CoreBundle/Repository/IllustrationRepository.php b/src/CoreBundle/Repository/IllustrationRepository.php index 844edd2230..d946516204 100644 --- a/src/CoreBundle/Repository/IllustrationRepository.php +++ b/src/CoreBundle/Repository/IllustrationRepository.php @@ -53,7 +53,7 @@ final class IllustrationRepository extends ResourceRepository implements GridInt return $resource; } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { $newResource = $form->getData(); $newResource diff --git a/src/CoreBundle/Repository/PersonalFileRepository.php b/src/CoreBundle/Repository/PersonalFileRepository.php index 41abc4f5eb..825a47c41e 100644 --- a/src/CoreBundle/Repository/PersonalFileRepository.php +++ b/src/CoreBundle/Repository/PersonalFileRepository.php @@ -37,7 +37,7 @@ final class PersonalFileRepository extends ResourceRepository implements GridInt return $settings; } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { $newResource = $form->getData(); $newResource diff --git a/src/CoreBundle/Repository/ResourceRepository.php b/src/CoreBundle/Repository/ResourceRepository.php index c98694955b..62146f1689 100644 --- a/src/CoreBundle/Repository/ResourceRepository.php +++ b/src/CoreBundle/Repository/ResourceRepository.php @@ -208,7 +208,8 @@ class ResourceRepository extends BaseEntityRepository $slug = $this->slugify->slugify($resourceName); } - $resourceNode->setSlug($slug); + $resourceNode->setTitle($resourceName); + //$resourceNode->setSlug($slug); $em->persist($resourceNode); $em->persist($resource); @@ -457,17 +458,21 @@ class ResourceRepository extends BaseEntityRepository $qb = $repo->getEntityManager()->createQueryBuilder() ->select('resource') ->from($className, 'resource') - ->innerJoin( - 'resource.resourceNode', - 'node' - ) + ->innerJoin('resource.resourceNode', 'node') ->innerJoin('node.resourceLinks', 'links') ->innerJoin('node.resourceType', 'type') + //->innerJoin('links.course', 'course') ->leftJoin('node.resourceFile', 'file') + ->where('type.name = :type') ->setParameter('type', $resourceTypeName) ->andWhere('links.course = :course') ->setParameter('course', $course) + ->addSelect('node') + ->addSelect('links') + //->addSelect('course') + ->addSelect('type') + ->addSelect('file') ; $isAdmin = $checker->isGranted('ROLE_ADMIN') || @@ -484,7 +489,7 @@ class ResourceRepository extends BaseEntityRepository ->andWhere('links.visibility = :visibility') ->setParameter('visibility', ResourceLink::VISIBILITY_PUBLISHED) ; - // @todo Add start/end visibility restrictrions + // @todo Add start/end visibility restrictions. } if (null === $session) { @@ -673,17 +678,17 @@ class ResourceRepository extends BaseEntityRepository $qb = $repo->getEntityManager()->createQueryBuilder() ->select('resource') ->from($className, 'resource') - ->innerJoin( - 'resource.resourceNode', - 'node' - ) - ->innerJoin('node.resourceLinks', 'links') - ->leftJoin('node.resourceFile', 'file') - ->where('node = :id') + ->innerJoin('resource.resourceNode', 'node') + ->innerJoin('node.creator', 'userCreator') + //->innerJoin('node.resourceLinks', 'links') + //->leftJoin('node.resourceFile', 'file') + + ->where('node.id = :id') ->setParameters(['id' => $resourceNodeId]) + //->addSelect('userCreator') ; - return $qb->getQuery()->getFirstResult();*/ + return $qb->getQuery()->getSingleResult();*/ return $this->getRepository()->findOneBy(['resourceNode' => $resourceNodeId]); } @@ -866,6 +871,7 @@ class ResourceRepository extends BaseEntityRepository } $resourceNode + ->setTitle($resourceName) ->setSlug($slug) ->setCreator($creator) ->setResourceType($resourceType) diff --git a/src/CoreBundle/Traits/ResourceControllerTrait.php b/src/CoreBundle/Traits/ResourceControllerTrait.php index 243a8b0153..6b0e4b6d88 100644 --- a/src/CoreBundle/Traits/ResourceControllerTrait.php +++ b/src/CoreBundle/Traits/ResourceControllerTrait.php @@ -113,6 +113,8 @@ trait ResourceControllerTrait $resourceNodeId = $request->get('id'); $routeParams = $this->getResourceParams($request); + $baseNodeId = $this->getCourse()->getResourceNode()->getId(); + if (!empty($resourceNodeId)) { $breadcrumb = $this->getBreadCrumb(); $toolParams = $routeParams; @@ -134,10 +136,13 @@ trait ResourceControllerTrait if (null === $originalResource) { return; } - $parent = $originalParent = $originalResource->getResourceNode(); - $parentList = []; - while (null !== $parent) { + $originalParent = $originalResource->getResourceNode(); + $parentList = $originalParent->getPathForDisplayToArray($baseNodeId); +// var_dump($originalParent->getPath(), $originalParent->getPathForDisplay()); + +// $parentList = []; + /* while (null !== $parent) { if ($type !== $parent->getResourceType()->getName()) { break; } @@ -149,9 +154,7 @@ trait ResourceControllerTrait } } } - $parentList = array_reverse($parentList); - /** @var ResourceInterface $item */ foreach ($parentList as $item) { $params = $routeParams; $params['id'] = $item->getResourceNode()->getId(); @@ -161,6 +164,17 @@ trait ResourceControllerTrait 'uri' => $this->generateUrl('chamilo_core_resource_list', $params), ] ); + }*/ + + foreach ($parentList as $id => $title) { + $params = $routeParams; + $params['id'] = $id; + $breadcrumb->addChild( + $title, + [ + 'uri' => $this->generateUrl('chamilo_core_resource_list', $params), + ] + ); } $params = $routeParams; diff --git a/src/CourseBundle/EventListener/CourseListener.php b/src/CourseBundle/EventListener/CourseListener.php index 7f6c0e294c..0efd5b4d65 100644 --- a/src/CourseBundle/EventListener/CourseListener.php +++ b/src/CourseBundle/EventListener/CourseListener.php @@ -61,6 +61,8 @@ class CourseListener $translator = $container->get('translator'); $course = null; + $courseInfo = []; + // Check if URL has cid value. Using Symfony request. $courseId = (int) $request->get('cid'); $checker = $container->get('security.authorization_checker'); @@ -78,6 +80,8 @@ class CourseListener /** @var EntityManager $em */ $em = $container->get('doctrine')->getManager(); $course = $em->getRepository('ChamiloCoreBundle:Course')->find($courseId); + dump("get course from DB $courseId"); + $courseInfo = api_get_course_info($course->getCode()); } if (null === $course) { @@ -98,8 +102,6 @@ class CourseListener $sessionHandler->set('_real_cid', $course->getId()); $sessionHandler->set('cid', $course->getId()); $sessionHandler->set('_cid', $course->getCode()); - - $courseInfo = api_get_course_info($course->getCode()); $sessionHandler->set('_course', $courseInfo); // Setting variables for the twig templates. @@ -114,10 +116,12 @@ class CourseListener $sessionHandler->remove('session'); // Check if user is allowed to this course // See CourseVoter.php + dump("Checkisgranted"); if (false === $checker->isGranted(CourseVoter::VIEW, $course)) { throw new AccessDeniedException($translator->trans('Unauthorised access to course!')); } } else { + dump("Load chamilo session from DB"); $session = $em->getRepository('ChamiloCoreBundle:Session')->find($sessionId); if ($session) { if (false === $session->hasCourse($course)) { @@ -148,6 +152,7 @@ class CourseListener if (empty($groupId)) { $sessionHandler->remove('gid'); } else { + dump("Load chamilo group from DB"); $group = $em->getRepository('ChamiloCourseBundle:CGroupInfo')->find($groupId); if (!$group) { diff --git a/src/CourseBundle/Repository/CCourseDescriptionRepository.php b/src/CourseBundle/Repository/CCourseDescriptionRepository.php index 5249519019..54722db508 100644 --- a/src/CourseBundle/Repository/CCourseDescriptionRepository.php +++ b/src/CourseBundle/Repository/CCourseDescriptionRepository.php @@ -52,7 +52,7 @@ final class CCourseDescriptionRepository extends ResourceRepository implements G return $grid->getColumn('title'); } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { /** @var CCourseDescription $newResource */ $newResource = $form->getData(); diff --git a/src/CourseBundle/Repository/CDocumentRepository.php b/src/CourseBundle/Repository/CDocumentRepository.php index 0c6775b457..203c430e4c 100644 --- a/src/CourseBundle/Repository/CDocumentRepository.php +++ b/src/CourseBundle/Repository/CDocumentRepository.php @@ -60,7 +60,7 @@ final class CDocumentRepository extends ResourceRepository implements GridInterf return $resource; } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { $newResource = $form->getData(); $newResource diff --git a/src/CourseBundle/Repository/CGlossaryRepository.php b/src/CourseBundle/Repository/CGlossaryRepository.php index f35b3c806a..f91e63971f 100644 --- a/src/CourseBundle/Repository/CGlossaryRepository.php +++ b/src/CourseBundle/Repository/CGlossaryRepository.php @@ -52,7 +52,7 @@ final class CGlossaryRepository extends ResourceRepository implements GridInterf return $grid->getColumn('name'); } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { /** @var CGlossary $newResource */ $newResource = $form->getData(); diff --git a/src/CourseBundle/Repository/CLinkCategoryRepository.php b/src/CourseBundle/Repository/CLinkCategoryRepository.php index d054082a8b..d7846a8179 100644 --- a/src/CourseBundle/Repository/CLinkCategoryRepository.php +++ b/src/CourseBundle/Repository/CLinkCategoryRepository.php @@ -38,7 +38,7 @@ final class CLinkCategoryRepository extends ResourceRepository implements GridIn return $settings; } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { /** @var CLink $newResource */ $newResource = $form->getData(); diff --git a/src/CourseBundle/Repository/CLinkRepository.php b/src/CourseBundle/Repository/CLinkRepository.php index f30c66f002..2d0171e4bf 100644 --- a/src/CourseBundle/Repository/CLinkRepository.php +++ b/src/CourseBundle/Repository/CLinkRepository.php @@ -28,7 +28,7 @@ final class CLinkRepository extends ResourceRepository implements GridInterface return $this->getResourcesByCourse($course, $session, $group, $parentNode); } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { /** @var CLink $newResource */ $newResource = $form->getData(); diff --git a/src/CourseBundle/Repository/CShortcutRepository.php b/src/CourseBundle/Repository/CShortcutRepository.php index 8cac21ee46..8bc0ac9673 100644 --- a/src/CourseBundle/Repository/CShortcutRepository.php +++ b/src/CourseBundle/Repository/CShortcutRepository.php @@ -58,7 +58,7 @@ final class CShortcutRepository extends ResourceRepository return $qb; } - public function saveResource(FormInterface $form, $course, $session, $fileType) + public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { $newResource = $form->getData(); $newResource diff --git a/src/SettingsBundle/Manager/SettingsManager.php b/src/SettingsBundle/Manager/SettingsManager.php index 0d5b112c3e..3374f40c9c 100644 --- a/src/SettingsBundle/Manager/SettingsManager.php +++ b/src/SettingsBundle/Manager/SettingsManager.php @@ -201,9 +201,14 @@ class SettingsManager implements SettingsManagerInterface public function loadAll() { - /*$session = $this->request->getCurrentRequest()->getSession(); - $schemaList = $session->get('schemas'); - */ + $loadFromSession = true; + + if ($loadFromSession && $this->request->getCurrentRequest()) { + $session = $this->request->getCurrentRequest()->getSession(); + $schemaList = $session->get('schemas'); + $this->schemaList = $schemaList; + } + if (empty($this->schemaList)) { $schemas = array_keys($this->getSchemas()); $schemaList = []; @@ -232,7 +237,9 @@ class SettingsManager implements SettingsManagerInterface $schemaList[$name] = $settings; } $this->schemaList = $schemaList; - //$session->set('schemas', $schemaList); + if ($loadFromSession && $this->request->getCurrentRequest()) { + $session->set('schemas', $schemaList); + } } } diff --git a/src/UserBundle/Repository/UserRepository.php b/src/UserBundle/Repository/UserRepository.php index e4bc8c49b5..c8a9969682 100644 --- a/src/UserBundle/Repository/UserRepository.php +++ b/src/UserBundle/Repository/UserRepository.php @@ -116,7 +116,7 @@ class UserRepository extends ResourceRepository $resourceNode = new ResourceNode(); $resourceNode - ->setSlug($user->getUsername()) + ->setTitle($user->getUsername()) ->setCreator($creator) ->setResourceType($this->getResourceType()) // ->setParent($url->getResourceNode())