api_get_course_url($courseInfo['real_id']),
        'name' => $courseInfo['name'],
    ];
    $interbreadcrumb[] = [
        'url' => "../user/user.php?cid=$courseId",
        'name' => get_lang('Users'),
    ];
} elseif ('tracking_course' === $origin) {
    $interbreadcrumb[] = [
        'url' => "../tracking/courseLog.php?cid=$courseId&sid=$session_id",
        'name' => get_lang('Reporting'),
    ];
} else {
    $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('Reporting')];
    $interbreadcrumb[] = ['url' => 'student.php', 'name' => get_lang('My learners')];
    $interbreadcrumb[] = ['url' => "myStudents.php?student=$user_id", 'name' => get_lang('Learner details')];
    $nameTools = get_lang('Learner details in course');
}
$interbreadcrumb[] = [
    'url' => "myStudents.php?student=$user_id&course=$courseCode&details=true&origin=$origin",
    'name' => get_lang('Learner details in course'),
];
$nameTools = get_lang('Learnpath details');
$lpRepo = \Chamilo\CoreBundle\Framework\Container::getLpRepository();
/** @var \Chamilo\CourseBundle\Entity\CLp $lp */
$lp = $lpRepo->find($lp_id);
$lp_title = $lp->getTitle();
$origin = 'tracking';
$action = $_REQUEST['action'] ?? '';
switch ($action) {
    case 'export_stats':
        if (!api_is_allowed_to_edit(false, false, true)) {
            api_not_allowed();
        }
        $tpl = new Template(null, false, false);
        $itemId = isset($_REQUEST['extend_id']) ? $_REQUEST['extend_id'] : 0;
        $itemViewId = isset($_REQUEST['extend_attempt_id']) ? $_REQUEST['extend_attempt_id'] : 0;
        $em = Database::getManager();
        $repo = $em->getRepository(CLpItemView::class);
        /** @var CLpItemView $itemView */
        $itemView = $repo->find($itemViewId);
        if (!$itemView) {
            api_not_allowed();
        }
        $view = $itemView->getView();
        $lp = $view->getLp();
        $duration = learnpathItem::getScormTimeFromParameter('js', $itemView->getTotalTime());
        $endTime = $itemView->getStartTime() + $itemView->getTotalTime();
        $list1 = learnpath::get_iv_interactions_array($itemViewId, $courseInfo['real_id']);
        $counter = 0;
        $table = new HTML_Table();
        $total = 0;
        $numberChoices = 0;
        $questionCounter = 0;
        $studentName = '';
        $questions = [];
        $categories = [];
        foreach ($list1 as $id => $interaction) {
            $counter++;
            if (1 === $counter) {
                continue;
            } elseif (2 === $counter) {
                $studentName = $interaction['student_response_formatted'];
            } else {
                $data = $interaction['student_response_formatted'];
                switch ($interaction['type']) {
                    case 'fill-in':
                        $questionCounter++;
                        $questions[$questionCounter]['question'] = $data;
                        break;
                    case 'choice':
                        $questions[$questionCounter]['options'][] = $interaction;
                        $numberChoices++;
                        break;
                    case 'matching':
                        $list = explode(',', $data);
                        if (!empty($list)) {
                            foreach ($list as &$item) {
                                $item = cut($item, 30);
                            }
                            $interaction['student_response_formatted'] = implode('
', $list);
                        }
                        $questions[$questionCounter]['options'][] = $interaction;
                        $numberChoices++;
                        break;
                }
            }
        }
        $counter = 1;
        $table = new HTML_Table(['class' => 'table table-hover table-striped  data_table']);
        $row = 0;
        $scoreDisplay = new ScoreDisplay();
        $globalTotal = 0;
        $globalTotalCount = 0;
        foreach ($questions as $data) {
            // Question title
            $table->setCellContents($row, 0, $data['question']);
            $table->setCellAttributes($row, 0, ['colspan' => '3', 'style' => 'text-align:center; font-weight:bold']);
            $choiceCounter = 1;
            $row++;
            $total = 0;
            // Question options
            foreach ($data['options'] as $option) {
                if ('correct' === $option['result']) {
                    $total++;
                    $globalTotal++;
                }
                $table->setCellContents($row, 0, 'Q'.$choiceCounter);
                $table->setCellContents($row, 1, $option['student_response_formatted']);
                $result = Display::getMdiIcon(StateIcon::COMPLETE, 'ch-tool-icon', null, ICON_SIZE_SMALL);
                if ('wrong' === $option['result']) {
                    $result = Display::getMdiIcon(StateIcon::INCOMPLETE, 'ch-tool-icon', null, ICON_SIZE_SMALL);
                }
                $table->setCellContents($row, 2, $result);
                $choiceCounter++;
                $row++;
            }
            // Question total
            $table->setCellContents($row, 0, get_lang('Total'));
            $table->setCellContents($row, 1, $data['question']);
            $totalOptions = count($data['options']);
            $arrayScore = [0 => $total, 1 => $totalOptions];
            $scoreToString = $scoreDisplay->display_score($arrayScore);
            $table->setCellContents($row, 2, $scoreToString);
            $table->setCellAttributes($row, 0, ['style' => 'font-weight:bold']);
            $table->setCellAttributes($row, 1, ['style' => 'font-weight:bold']);
            $table->setCellAttributes($row, 2, ['style' => 'font-weight:bold']);
            $categories[] = [
                'name' => $data['question'],
                'score' => $scoreDisplay->display_score($arrayScore, SCORE_DIV),
                'score_numeric' => $scoreDisplay->display_score($arrayScore, SCORE_NUMERIC),
                'score_percentage' => $scoreDisplay->display_score($arrayScore, SCORE_PERCENT),
            ];
            $tpl->assign('categories', $categories);
            $globalTotalCount += $totalOptions;
            $row++;
        }
        $globalScoreTotal = [0 => $globalTotal, 1 => $globalTotalCount];
        $score = $scoreDisplay->display_score($globalScoreTotal);
        $generalScore[] = [
            'score' => $scoreDisplay->display_score($globalScoreTotal, SCORE_DIV),
            'score_numeric' => $scoreDisplay->display_score($globalScoreTotal, SCORE_NUMERIC),
            'score_percentage' => $scoreDisplay->display_score($globalScoreTotal, SCORE_PERCENT),
        ];
        $tpl->assign('general_score', $generalScore);
        $tpl->assign('global_total', $score);
        $tableToString = $table->toHtml();
        $duration = learnpathItem::getScormTimeFromParameter('js', $itemView->getTotalTime());
        $dataLpInfo = [
            'name' => $lp->getTitle(),
            'attempt' => $itemView->getViewCount(),
            'score' => $score,
            'duration' => $duration,
            'start_time' => api_get_local_time($itemView->getStartTime()),
            'start_date' => api_get_local_time($itemView->getStartTime(), null, null, null, false),
            'end_time' => api_get_local_time($endTime),
            'candidate' => $studentName,
        ];
        $tpl->assign('data', $dataLpInfo);
        $contentText = $tpl->fetch($tpl->get_template('my_space/pdf_tracking_lp.tpl'));
        $content = $contentText.''.$tableToString;
        $pdf = new PDF('A4', 'P', ['margin_footer' => 4, 'top' => 40, 'bottom' => 25]);
        $table = new HTML_Table(['class' => 'table', 'style' => 'display: block; margin-bottom: 50px;']);
        $logo = ChamiloApi::getPlatformLogo(
            api_get_visual_theme(),
            [
                'title' => '',
                'style' => 'max-width:180px, margin-bottom: 100px;',
                'id' => 'header-logo',
            ]
        );
        $table->setCellContents(0, 0, $logo);
        $addLogo = (isset($_GET['add_logo']) && 1 === (int) $_GET['add_logo']);
        if ($addLogo) {
            $secondLogo = api_get_path(SYS_PATH).'custompages/url-images/'.api_get_current_access_url_id().'_url_image_2.png';
            $logo2 = Display::img($secondLogo, null, ['style' => 'height:70px;']);
            $table->setCellContents(0, 1, $logo2);
        }
        $table->setCellAttributes(0, 1, ['style' => 'display:block;float:right;text-align:right']);
        $pdf->set_custom_header($table->toHtml());
        $background = api_get_path(SYS_PATH).'custompages/url-images/'.api_get_current_access_url_id().'_pdf_background.png';
        $content = ''.$content.'';
        $pdf->content_to_pdf(
            $content,
            null,
            $courseInfo['code'].'_'.$lp->getTitle().'_'.api_get_local_time(),
            $courseInfo['code'],
            'D',
            false,
            null,
            false,
            true
        );
        break;
}
$output = require_once api_get_path(SYS_CODE_PATH).'lp/lp_stats.php';
$actions = [];
$actions[] = Display::url(
    Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Back')),
    'javascript:history.back();'
);
$actions[] = Display::url(
    Display::getMdiIcon(ActionIcon::PRINT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Print')),
    'javascript:window.print();'
);
$actions[] = Display::url(
    Display::getMdiIcon(ActionIcon::EXPORT_CSV, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('CSV export')),
    api_get_self().'?export=csv&'.Security::remove_XSS($_SERVER['QUERY_STRING'])
);
Display::display_header($nameTools);
echo Display::toolbarAction('actions', [implode(PHP_EOL, $actions)]);
$table_title = $session_id
    ? Display::getMdiIcon(ObjectIcon::SESSION, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Session')).PHP_EOL.api_get_session_name($session_id).PHP_EOL
    : PHP_EOL;
$table_title .= Display::getMdiIcon(ObjectIcon::COURSE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Course')).PHP_EOL.$courseInfo['name'].PHP_EOL
    .Display::getMdiIcon(ObjectIcon::USER, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('User')).' '.$name;
echo Display::page_header($table_title);
echo Display::page_subheader(
    Display::getMdiIcon(ObjectIcon::LP, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Learning path')).PHP_EOL.$lp_title
);
echo $output;
Display::display_footer();