|
|
|
|
@ -48,6 +48,7 @@ if (api_get_setting('search_enabled') === 'true') { |
|
|
|
|
require api_get_path(LIBRARY_PATH).'search/search_widget.php'; |
|
|
|
|
search_widget_prepare($htmlHeadXtra); |
|
|
|
|
} |
|
|
|
|
$courseId = api_get_course_int_id(); |
|
|
|
|
$sessionId = api_get_session_id(); |
|
|
|
|
$is_allowed_to_edit = api_is_allowed_to_edit(null, true); |
|
|
|
|
$courseInfo = api_get_course_info(); |
|
|
|
|
@ -118,7 +119,7 @@ if ($is_allowed_to_edit) { |
|
|
|
|
|
|
|
|
|
$token = Security::get_token(); |
|
|
|
|
|
|
|
|
|
$categoriesTempList = learnpath::getCategories(api_get_course_int_id()); |
|
|
|
|
$categoriesTempList = learnpath::getCategories($courseId); |
|
|
|
|
$categoryTest = new CLpCategory(); |
|
|
|
|
$categoryTest->setId(0); |
|
|
|
|
$categoryTest->setName(get_lang('WithOutCategory')); |
|
|
|
|
@ -150,10 +151,10 @@ if ($filteredCategoryId) { |
|
|
|
|
$test_mode = api_get_setting('server_type'); |
|
|
|
|
$showBlockedPrerequisite = api_get_configuration_value('show_prerequisite_as_blocked'); |
|
|
|
|
$allowLpChamiloExport = api_get_configuration_value('allow_lp_chamilo_export'); |
|
|
|
|
$allowMinTime = Tracking::minimunTimeAvailable(api_get_session_id(), api_get_course_int_id()); |
|
|
|
|
$allowMinTime = Tracking::minimunTimeAvailable($sessionId, $courseId); |
|
|
|
|
$accumulateWorkTimeTotal = 0; |
|
|
|
|
if ($allowMinTime) { |
|
|
|
|
$accumulateWorkTimeTotal = learnpath::getAccumulateWorkTimeTotal(api_get_course_int_id()); |
|
|
|
|
$accumulateWorkTimeTotal = learnpath::getAccumulateWorkTimeTotal($courseId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$user = api_get_user_entity($userId); |
|
|
|
|
@ -186,6 +187,7 @@ $courseSettingsDisableIcon = Display::return_icon( |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$enableAutoLaunch = api_get_course_setting('enable_lp_auto_launch'); |
|
|
|
|
$gameMode = api_get_setting('gamification_mode'); |
|
|
|
|
|
|
|
|
|
$data = []; |
|
|
|
|
/** @var CLpCategory $item */ |
|
|
|
|
@ -201,7 +203,7 @@ foreach ($categories as $item) { |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!$is_allowed_to_edit) { |
|
|
|
|
if ((int) $categoryVisibility !== 1 && $categoryVisibility != -1) { |
|
|
|
|
if ($categoryVisibility !== 1 && $categoryVisibility != -1) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -212,9 +214,9 @@ foreach ($categories as $item) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$list = new LearnpathList( |
|
|
|
|
api_get_user_id(), |
|
|
|
|
$userId, |
|
|
|
|
api_get_course_id(), |
|
|
|
|
api_get_session_id(), |
|
|
|
|
$sessionId, |
|
|
|
|
null, |
|
|
|
|
false, |
|
|
|
|
$categoryId |
|
|
|
|
@ -223,14 +225,14 @@ foreach ($categories as $item) { |
|
|
|
|
$flat_list = $list->get_flat_list(); |
|
|
|
|
|
|
|
|
|
// Hiding categories with out LPs (only for student) |
|
|
|
|
if (empty($flat_list) && !api_is_allowed_to_edit()) { |
|
|
|
|
if (empty($flat_list) && !$is_allowed_to_edit) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$listData = []; |
|
|
|
|
$lpTimeList = []; |
|
|
|
|
if ($allowMinTime) { |
|
|
|
|
$lpTimeList = Tracking::getCalculateTime($userId, api_get_course_int_id(), api_get_session_id()); |
|
|
|
|
$lpTimeList = Tracking::getCalculateTime($userId, $courseId, $sessionId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($flat_list)) { |
|
|
|
|
@ -242,17 +244,13 @@ foreach ($categories as $item) { |
|
|
|
|
$progressList = learnpath::getProgressFromLpList( |
|
|
|
|
array_column($flat_list, 'lp_old_id'), |
|
|
|
|
$userId, |
|
|
|
|
api_get_course_int_id(), |
|
|
|
|
api_get_session_id() |
|
|
|
|
$courseId, |
|
|
|
|
$sessionId |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$now = time(); |
|
|
|
|
foreach ($flat_list as $id => $details) { |
|
|
|
|
$id = $details['lp_old_id']; |
|
|
|
|
// Validation when belongs to a session. |
|
|
|
|
$session_img = api_get_session_image( |
|
|
|
|
$details['lp_session'], |
|
|
|
|
$userInfo['status'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!$is_allowed_to_edit && $details['lp_visibility'] == 0) { |
|
|
|
|
// This is a student and this path is invisible, skip. |
|
|
|
|
@ -267,7 +265,7 @@ foreach ($categories as $item) { |
|
|
|
|
$userId, |
|
|
|
|
$details['prerequisite'], |
|
|
|
|
$courseInfo, |
|
|
|
|
api_get_session_id() |
|
|
|
|
$sessionId |
|
|
|
|
); |
|
|
|
|
if ($lpVisibility === false && $isBlocked && $showBlockedPrerequisite === false) { |
|
|
|
|
continue; |
|
|
|
|
@ -275,12 +273,17 @@ foreach ($categories as $item) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$start_time = $end_time = ''; |
|
|
|
|
if (!$is_allowed_to_edit) { |
|
|
|
|
if ($is_allowed_to_edit) { |
|
|
|
|
if (!empty($details['publicated_on'])) { |
|
|
|
|
$start_time = api_convert_and_format_date($details['publicated_on'], DATE_TIME_FORMAT_LONG_24H); |
|
|
|
|
} |
|
|
|
|
if (!empty($details['expired_on'])) { |
|
|
|
|
$end_time = api_convert_and_format_date($details['expired_on'], DATE_TIME_FORMAT_LONG_24H); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$time_limits = false; |
|
|
|
|
// This is an old LP (from a migration 1.8.7) so we do nothing |
|
|
|
|
if (empty($details['created_on']) && |
|
|
|
|
empty($details['modified_on']) |
|
|
|
|
) { |
|
|
|
|
if (empty($details['created_on']) && empty($details['modified_on'])) { |
|
|
|
|
$time_limits = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -291,18 +294,9 @@ foreach ($categories as $item) { |
|
|
|
|
|
|
|
|
|
if ($time_limits) { |
|
|
|
|
// Check if start time |
|
|
|
|
if (!empty($details['publicated_on']) && |
|
|
|
|
!empty($details['expired_on']) |
|
|
|
|
) { |
|
|
|
|
$start_time = api_strtotime( |
|
|
|
|
$details['publicated_on'], |
|
|
|
|
'UTC' |
|
|
|
|
); |
|
|
|
|
$end_time = api_strtotime( |
|
|
|
|
$details['expired_on'], |
|
|
|
|
'UTC' |
|
|
|
|
); |
|
|
|
|
$now = time(); |
|
|
|
|
if (!empty($details['publicated_on']) && !empty($details['expired_on'])) { |
|
|
|
|
$start_time = api_strtotime($details['publicated_on'], 'UTC'); |
|
|
|
|
$end_time = api_strtotime($details['expired_on'], 'UTC'); |
|
|
|
|
$is_actived_time = false; |
|
|
|
|
if ($now > $start_time && $end_time > $now) { |
|
|
|
|
$is_actived_time = true; |
|
|
|
|
@ -313,20 +307,6 @@ foreach ($categories as $item) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$start_time = $end_time = ''; |
|
|
|
|
} else { |
|
|
|
|
if (!empty($details['publicated_on'])) { |
|
|
|
|
$start_time = api_convert_and_format_date( |
|
|
|
|
$details['publicated_on'], |
|
|
|
|
DATE_TIME_FORMAT_LONG_24H |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
if (!empty($details['expired_on'])) { |
|
|
|
|
$end_time = api_convert_and_format_date( |
|
|
|
|
$details['expired_on'], |
|
|
|
|
DATE_TIME_FORMAT_LONG_24H |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$counter++; |
|
|
|
|
@ -348,8 +328,7 @@ foreach ($categories as $item) { |
|
|
|
|
.($lpVisibility |
|
|
|
|
? '' |
|
|
|
|
: ' - ('.get_lang('LPNotVisibleToStudent').')'); |
|
|
|
|
$extra = '<div class ="lp_content_type_label">'.$dsp_desc |
|
|
|
|
.'</div>'; |
|
|
|
|
$extra = '<div class ="lp_content_type_label">'.$dsp_desc.'</div>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$my_title = $name; |
|
|
|
|
@ -415,7 +394,7 @@ foreach ($categories as $item) { |
|
|
|
|
$linkMinTime = ''; |
|
|
|
|
if ($allowMinTime) { |
|
|
|
|
// Minimum time (in minutes) to pass the learning path |
|
|
|
|
$accumulateWorkTime = learnpath::getAccumulateWorkTimePrerequisite($id, api_get_course_int_id()); |
|
|
|
|
$accumulateWorkTime = learnpath::getAccumulateWorkTimePrerequisite($id, $courseId); |
|
|
|
|
if ($accumulateWorkTime > 0) { |
|
|
|
|
$lpTime = isset($lpTimeList[TOOL_LEARNPATH][$id]) ? $lpTimeList[TOOL_LEARNPATH][$id] : 0; |
|
|
|
|
|
|
|
|
|
@ -566,8 +545,7 @@ foreach ($categories as $item) { |
|
|
|
|
'lp_publish_na.png', |
|
|
|
|
get_lang('LearnpathPublish') |
|
|
|
|
), |
|
|
|
|
api_get_self().'?'.$cidReq |
|
|
|
|
."&lp_id=$id&action=toggle_publish&new_status=v" |
|
|
|
|
api_get_self().'?'.$cidReq."&lp_id=$id&action=toggle_publish&new_status=v" |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
$dsp_publish = Display::url( |
|
|
|
|
@ -575,8 +553,7 @@ foreach ($categories as $item) { |
|
|
|
|
'lp_publish.png', |
|
|
|
|
get_lang('LearnpathDoNotPublish') |
|
|
|
|
), |
|
|
|
|
api_get_self().'?'.$cidReq |
|
|
|
|
."&lp_id=$id&action=toggle_publish&new_status=i" |
|
|
|
|
api_get_self().'?'.$cidReq."&lp_id=$id&action=toggle_publish&new_status=i" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
@ -845,14 +822,7 @@ foreach ($categories as $item) { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($is_allowed_to_edit) { |
|
|
|
|
$start_time = $start_time; |
|
|
|
|
$end_time = $end_time; |
|
|
|
|
} else { |
|
|
|
|
$start_time = $end_time = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (api_get_setting('gamification_mode') == 1) { |
|
|
|
|
if ($gameMode == 1) { |
|
|
|
|
if ($details['seriousgame_mode'] == 0) { |
|
|
|
|
$actionSeriousGame = Display::toolbarButton( |
|
|
|
|
null, |
|
|
|
|
@ -899,11 +869,16 @@ foreach ($categories as $item) { |
|
|
|
|
$export_icon = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sessionImage = api_get_session_image( |
|
|
|
|
$details['lp_session'], |
|
|
|
|
$userInfo['status'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$listData[] = [ |
|
|
|
|
'learnpath_icon' => $icon_learnpath, |
|
|
|
|
'url_start' => $url_start_lp, |
|
|
|
|
'title' => $my_title, |
|
|
|
|
'session_image' => $session_img, |
|
|
|
|
'session_image' => $sessionImage, |
|
|
|
|
'extra' => $extra, |
|
|
|
|
'start_time' => $start_time, |
|
|
|
|
'end_time' => $end_time, |
|
|
|
|
|