about.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. use Chamilo\CoreBundle\Entity\ExtraField;
  4. use Chamilo\CourseBundle\Entity\CCourseDescription;
  5. use \Chamilo\CoreBundle\Entity\SequenceResource;
  6. /**
  7. * Session about page
  8. * Show information about a session and its courses
  9. * @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
  10. * @package chamilo.session
  11. */
  12. $cidReset = true;
  13. require_once '../inc/global.inc.php';
  14. $sessionId = isset($_GET['session_id']) ? intval($_GET['session_id']) : 0;
  15. $entityManager = Database::getManager();
  16. $session = $entityManager->find('ChamiloCoreBundle:Session', $sessionId);
  17. if (!$session) {
  18. api_not_allowed(true);
  19. }
  20. $courses = [];
  21. $sessionCourses = $entityManager->getRepository('ChamiloCoreBundle:Session')->getCoursesOrderedByPosition($session);
  22. $fieldsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraField');
  23. $fieldTagsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
  24. $userRepo = $entityManager->getRepository('ChamiloUserBundle:User');
  25. $sequenceResourceRepo = $entityManager->getRepository('ChamiloCoreBundle:SequenceResource');
  26. $tagField = $fieldsRepo->findOneBy([
  27. 'extraFieldType' => ExtraField::COURSE_FIELD_TYPE,
  28. 'variable' => 'tags'
  29. ]);
  30. $courseValues = new ExtraFieldValue('course');
  31. $userValues = new ExtraFieldValue('user');
  32. $sessionValues = new ExtraFieldValue('session');
  33. foreach ($sessionCourses as $sessionCourse) {
  34. $courseTags = [];
  35. if (!is_null($tagField)) {
  36. $courseTags = $fieldTagsRepo->getTags($tagField, $sessionCourse->getId());
  37. }
  38. $courseCoaches = $userRepo->getCoachesForSessionCourse($session, $sessionCourse);
  39. $coachesData = [];
  40. foreach ($courseCoaches as $courseCoach) {
  41. $coachData = [
  42. 'complete_name' => $courseCoach->getCompleteName(),
  43. 'image' => UserManager::getUserPicture($courseCoach->getId(), USER_IMAGE_SIZE_ORIGINAL),
  44. 'extra_fields' => $userValues->getAllValuesForAnItem($courseCoach->getId(), true)
  45. ];
  46. $coachesData[] = $coachData;
  47. }
  48. $courseDescriptionTools = $entityManager->getRepository('ChamiloCourseBundle:CCourseDescription')
  49. ->findBy(
  50. [
  51. 'cId' => $sessionCourse->getId(),
  52. 'sessionId' => 0
  53. ],
  54. [
  55. 'id' => 'DESC',
  56. 'descriptionType' => 'ASC'
  57. ]
  58. );
  59. $courseDescription = $courseObjectives = $courseTopics = null;
  60. foreach ($courseDescriptionTools as $descriptionTool) {
  61. switch ($descriptionTool->getDescriptionType()) {
  62. case CCourseDescription::TYPE_DESCRIPTION:
  63. $courseDescription = $descriptionTool;
  64. break;
  65. case CCourseDescription::TYPE_OBJECTIVES:
  66. $courseObjectives = $descriptionTool;
  67. break;
  68. case CCourseDescription::TYPE_TOPICS:
  69. $courseTopics = $descriptionTool;
  70. break;
  71. }
  72. }
  73. $courses[] = [
  74. 'course' => $sessionCourse,
  75. 'description' => $courseDescription,
  76. 'tags' => $courseTags,
  77. 'objectives' => $courseObjectives,
  78. 'topics' => $courseTopics,
  79. 'coaches' => $coachesData,
  80. 'extra_fields' => $courseValues->getAllValuesForAnItem($sessionCourse->getId())
  81. ];
  82. }
  83. $sessionDates = SessionManager::parseSessionDates([
  84. 'display_start_date' => $session->getDisplayStartDate(),
  85. 'display_end_date' => $session->getDisplayEndDate(),
  86. 'access_start_date' => $session->getAccessStartDate(),
  87. 'access_end_date' => $session->getAccessEndDate(),
  88. 'coach_access_start_date' => $session->getCoachAccessStartDate(),
  89. 'coach_access_end_date' => $session->getCoachAccessEndDate()
  90. ]);
  91. $sessionRequirements = $sequenceResourceRepo->getRequirements(
  92. $session->getId(),
  93. SequenceResource::SESSION_TYPE
  94. );
  95. $hasRequirements = false;
  96. foreach ($sessionRequirements as $sequence) {
  97. if (!empty($sequence['requirements'])) {
  98. $hasRequirements = true;
  99. break;
  100. }
  101. }
  102. $courseController = new CoursesController();
  103. /* View */
  104. $template = new Template($session->getName(), true, true, false, true, false);
  105. $template->assign('show_tutor', (api_get_setting('show_session_coach')==='true' ? true : false));
  106. $template->assign('pageUrl', api_get_path(WEB_PATH) . "session/{$session->getId()}/about/");
  107. $template->assign('session', $session);
  108. $template->assign('session_date', $sessionDates);
  109. $template->assign(
  110. 'is_subscribed',
  111. SessionManager::isUserSubscribedAsStudent(
  112. $session->getId(),
  113. api_get_user_id()
  114. )
  115. );
  116. $template->assign(
  117. 'subscribe_button',
  118. $courseController->getRegisteredInSessionButton(
  119. $session->getId(),
  120. $session->getName(),
  121. $hasRequirements
  122. )
  123. );
  124. $template->assign('courses', $courses);
  125. //$essence = new Essence\Essence();
  126. $essence = Essence\Essence::instance( );
  127. $template->assign('essence', $essence);
  128. $template->assign(
  129. 'session_extra_fields',
  130. $sessionValues->getAllValuesForAnItem($session->getId(), true)
  131. );
  132. $template->assign('has_requirements', $hasRequirements);
  133. $template->assign('sequences', $sessionRequirements);
  134. $templateFolder = api_get_configuration_value('default_template');
  135. $layout = $template->get_template('session/about.tpl');
  136. $content = $template->fetch($layout);
  137. $template->assign('header', $session->getName());
  138. $template->assign('content', $content);
  139. $template->display_one_col_template();