chamilo/chamilo-lms

View on GitHub
public/main/lp/my_list.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

/* For licensing terms, see /license.txt */

use Chamilo\CourseBundle\Entity\CLp;

$cidReset = true;

require_once __DIR__.'/../inc/global.inc.php';

if ('true' === api_get_setting('lp.disable_my_lps_page')) {
    api_not_allowed(true);
}

api_block_anonymous_users();

$userId = api_get_user_id();
$courseId = api_get_course_int_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.title ASC';
    $now = api_get_utc_datetime();
    $conditions = " (
                (lp.publishedOn IS NOT NULL AND lp.publishedOn < '$now' AND lp.expiredOn IS NOT NULL AND lp.expiredOn > '$now') OR
                (lp.publishedOn IS NOT NULL AND lp.publishedOn < '$now' AND lp.expiredOn IS NULL) OR
                (lp.publishedOn IS NULL AND lp.expiredOn IS NOT NULL AND lp.expiredOn > '$now') OR
                (lp.publishedOn IS NULL AND lp.expiredOn IS NULL )
                )
            ";

    $dql = "SELECT lp FROM ChamiloCourseBundle:CLp as lp
            WHERE
                $conditions
                $courseCondition
            ORDER BY lp.createdOn ASC, lp.title ASC
            ";

    $learningPaths = Database::getManager()->createQuery($dql)->getResult();
    $course = api_get_course_entity($courseId);

    /** @var CLp $lp */
    foreach ($learningPaths as $lp) {
        $id = $lp->getIid();
        $lpVisibility = learnpath::is_lp_visible_for_student($id, $userId, $course);
        if (false === $lpVisibility) {
            continue;
        }
        $sessionId = 0;
        if (isset($courseWithSession[$courseId])) {
            $sessionId = $courseWithSession[$courseId];
        }
        //$lpSessionId = $lp->getSessionId();
        if (!empty($lpSessionId)) {
            $sessionId = $lpSessionId;
        }

        $params = '&cid='.$course->getId().'&sid='.$sessionId;
        $link = api_get_path(WEB_CODE_PATH).'lp/lp_controller.php?action=view'.$params.'&lp_id='.$id;
        $icon = Display::url(
            Display::getMdiIcon('map-marker-path', 'ch-tool-icon', null, 22, get_lang('Lp')),
            $link
        );

        $name = trim(strip_tags(Security::remove_XSS($lp->getTitle())));
        $lps[] = [
            'name' => $name,
            '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();