From 075ee40cdae33f3e1b6a76b1a06adfd20f06176a Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 5 Dec 2022 16:36:16 -0500 Subject: [PATCH] Course - Add dependence button in catalogue course searching - refs BT#20314 --- .../lib/CoursesAndSessionsCatalog.class.php | 62 +++++++++++++++++-- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/main/inc/lib/CoursesAndSessionsCatalog.class.php b/main/inc/lib/CoursesAndSessionsCatalog.class.php index a2364772a0..401c654582 100644 --- a/main/inc/lib/CoursesAndSessionsCatalog.class.php +++ b/main/inc/lib/CoursesAndSessionsCatalog.class.php @@ -1154,13 +1154,65 @@ class CoursesAndSessionsCatalog $action = 'subscribe_course_validation'; } - return Display::url( - Display::returnFontAwesomeIcon('check').PHP_EOL.$title, - api_get_path(WEB_CODE_PATH).'auth/courses.php' + $em = Database::getManager(); + /** @var SequenceResourceRepository $sequenceResourceRepo */ + $sequenceResourceRepo = $em->getRepository('ChamiloCoreBundle:SequenceResource'); + $requirements = $sequenceResourceRepo->getRequirements( + $course['real_id'], + SequenceResource::COURSE_TYPE + ); + $hasRequirements = false; + foreach ($requirements as $sequence) { + if (!empty($sequence['requirements'])) { + $hasRequirements = true; + break; + } + } + $allowSubscribe = true; + $reqSubscribeBlock = ''; + $btnSubscribe = ''; + if ($hasRequirements) { + $sequenceList = $sequenceResourceRepo->checkRequirementsForUser($requirements, SequenceResource::COURSE_TYPE, api_get_user_id()); + $allowSubscribe = $sequenceResourceRepo->checkSequenceAreCompleted($sequenceList); + $btnReqSubscribe = CoursesAndSessionsCatalog::getRequirements( + $course['real_id'], + SequenceResource::COURSE_TYPE, + true, + true + ); + $reqSubscribeBlock = '
+
'.get_lang('RequiredCourses').'
+

'.$btnReqSubscribe.'

'; + $seq = ''; + foreach ($requirements as $sequence) { + if (!empty($sequence['requirements'])) { + $seq .= $sequence['name'].':'; + foreach ($sequence['requirements'] as $req) { + $seq .= ''.$req->getTitle().''; + } + } + } + $reqSubscribeBlock .= '

'.$seq.'

'; + $reqSubscribeBlock .= '
'; + } + + if ($allowSubscribe) { + $btnSubscribe = Display::url( + Display::returnFontAwesomeIcon('check').PHP_EOL.$title, + api_get_path(WEB_CODE_PATH).'auth/courses.php' .'?action='.$action.'&sec_token='.$stok .'&course_code='.$course['code'].'&search_term='.$search_term.'&category_code='.$categoryCode, - ['class' => 'btn btn-success btn-sm', 'title' => $title, 'aria-label' => $title] - ); + ['class' => 'btn btn-success btn-sm', 'title' => $title, 'aria-label' => $title] + ); + } else { + $btnSubscribe = Display::url( + Display::returnFontAwesomeIcon('check').PHP_EOL.$title, + '#', + ['class' => 'btn btn-default btn-sm', 'title' => $title, 'aria-label' => $title, 'disabled' => true] + ); + } + + return $reqSubscribeBlock.$btnSubscribe; } /**