Admin: Add configuration setting "show_my_lps_page" BT#17714

Shows a link to the "my learning paths" page in the /index.php and
/user_portal.php
It also enables the main/lp/my_list.php page.
pull/3547/head
Julio Montoya 5 years ago
parent 3dc2aeac8b
commit 512e1f6346
  1. 3
      main/inc/lib/course.lib.php
  2. 10
      main/inc/lib/userportal.lib.php
  3. 4
      main/install/configuration.dist.php
  4. 1
      main/lang/english/trad4all.inc.php
  5. 1
      main/lang/french/trad4all.inc.php
  6. 1
      main/lang/spanish/trad4all.inc.php
  7. 92
      main/lp/my_list.php
  8. 26
      main/template/default/learnpath/my_list.tpl

@ -3064,11 +3064,10 @@ class CourseManager
$useUserLanguageFilterIfAvailable = true,
$showCoursesSessionWithDifferentKey = false
) {
$user_id = intval($user_id);
$user_id = (int) $user_id;
$urlId = api_get_current_access_url_id();
$course_list = [];
$codes = [];
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_user_course_category = Database::get_main_table(TABLE_USER_COURSE_CATEGORY);

@ -895,7 +895,7 @@ class IndexManager
'title' => get_lang('Compose'),
];
if (api_get_setting('allow_social_tool') == 'true') {
if (api_get_setting('allow_social_tool') === 'true') {
$total_invitations = Display::badge($total_invitations);
$items[] = [
'class' => 'invitations-social',
@ -942,6 +942,14 @@ class IndexManager
];
}
if (api_get_configuration_value('show_my_lps_page')) {
$items[] = [
'icon' => Display::return_icon('learnpath.png', get_lang('MyLps')),
'link' => api_get_path(WEB_CODE_PATH).'lp/my_list.php',
'title' => get_lang('MyLps'),
];
}
if (bbb::showGlobalConferenceLink($userInfo)) {
$bbb = new bbb('', '', true, api_get_user_id());
$url = $bbb->getListingUrl();

@ -1611,6 +1611,10 @@ $_configuration['auth_password_links'] = [
// filling the database with images
//$_configuration['ck_editor_block_image_copy_paste'] = false;
// Shows a link to the "my lps" page in the /index.php and /user_portal.php page.
// It also enables the main/lp/my_list.php page.
//$_configuration['show_my_lps_page'] = false;
// KEEP THIS AT THE END
// -------- Custom DB changes
// Add user activation by confirmation email

@ -8669,4 +8669,5 @@ $UserByEntityReport = "User by organization";
$LpByAuthor = "Learning path by author";
$SessionImportAssignments = "Import assignments from base course";
$RedirectToPortalHome = "Redirect to the platform home page";
$MyLps = "My learning paths";
?>

@ -8601,4 +8601,5 @@ $UserByEntityReport = "Utilisateur par organisation";
$LpByAuthor = "Parcours par auteur";
$SessionImportAssignments = "Importer les travaux du cours de base";
$RedirectToPortalHome = "Rediriger vers la page d'accueil de la plateforme";
$MyLps = "Mes parcours";
?>

@ -8697,4 +8697,5 @@ $UserByEntityReport = "Usuario por entidad";
$LpByAuthor = "Lección por autor";
$SessionImportAssignments = "Importar los tareas del curso base";
$RedirectToPortalHome = "Redirigir a la página de inicio de la plataforma";
$MyLps = "Mis lecciones";
?>

@ -0,0 +1,92 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CourseBundle\Entity\CLp;
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
if (false === api_get_configuration_value('show_my_lps_page')) {
api_not_allowed(true);
}
api_block_anonymous_users();
$userId = api_get_user_id();
$courses = CourseManager::get_courses_list_by_user_id($userId, true);
$lps = [];
if (!empty($courses)) {
$courseIdList = array_column($courses, 'real_id');
$courseWithSession = [];
foreach ($courses as $course) {
if (isset($course['session_id'])) {
if (SESSION_VISIBLE === api_get_session_visibility($course['session_id'])) {
$courseWithSession[$course['real_id']] = $course['session_id'];
}
}
}
$courseCondition = " AND lp.cId IN ('".implode("', '", $courseIdList)."') ";
$order = ' ORDER BY lp.createdOn ASC, lp.name ASC';
$now = api_get_utc_datetime();
$conditions = " (
(lp.publicatedOn IS NOT NULL AND lp.publicatedOn < '$now' AND lp.expiredOn IS NOT NULL AND lp.expiredOn > '$now') OR
(lp.publicatedOn IS NOT NULL AND lp.publicatedOn < '$now' AND lp.expiredOn IS NULL) OR
(lp.publicatedOn IS NULL AND lp.expiredOn IS NOT NULL AND lp.expiredOn > '$now') OR
(lp.publicatedOn IS NULL AND lp.expiredOn IS NULL )
)
";
$dql = "SELECT lp FROM ChamiloCourseBundle:CLp as lp
WHERE
$conditions
$courseCondition
ORDER BY lp.createdOn ASC, lp.name ASC
";
$learningPaths = Database::getManager()->createQuery($dql)->getResult();
/** @var CLp $lp */
foreach ($learningPaths as $lp) {
$id = $lp->getIid();
$courseId = $lp->getCId();
$courseInfo = api_get_course_info_by_id($courseId);
$lpVisibility = learnpath::is_lp_visible_for_student($id, $userId, $courseInfo);
if (false === $lpVisibility) {
continue;
}
$sessionId = 0;
if (isset($courseWithSession[$courseId])) {
$sessionId = $courseWithSession[$courseId];
}
$lpSessionId = $lp->getSessionId();
if (!empty($lpSessionId)) {
$sessionId = $lpSessionId;
}
$params = '&cidReq='.$courseInfo['code'].'&id_session='.$sessionId;
$link = api_get_path(WEB_CODE_PATH).'lp/lp_controller.php?action=view'.$params.'&lp_id='.$id;
$icon = Display::url(
Display::return_icon(
'learnpath.png',
get_lang('Lp')
),
$link
);
$lps[] = [
'name' => $lp->getName(),
'link' => $link,
'icon' => $icon,
'creation_date' => api_get_local_time($lp->getCreatedOn()),
];
}
}
$template = new Template(get_lang('MyLps'));
$template->assign('lps', $lps);
$content = $template->fetch($template->get_template('learnpath/my_list.tpl'));
$template->assign('content', $content);
$template->display_one_col_template();

@ -0,0 +1,26 @@
<h3>
{{ 'MyLps' | get_lang }}
</h3>
<table class="table">
<tr>
<th>
{{ 'Title' | get_lang }}
</th>
<th>
{{ 'CreationDate' | get_lang }}
</th>
</tr>
{% for lp in lps %}
<tr>
<td>
{{ lp.icon }}
<a href="{{ lp.link }}" target="_blank">
{{ lp.name }}
</a>
</td>
<td>
{{ lp.creation_date }}
</td>
</tr>
{% endfor %}
</table>
Loading…
Cancel
Save