Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/social/my_skills_report.php

198 lines
7.0 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* Show the skills report
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
* @package chamilo.social.skill
*/
require_once __DIR__.'/../inc/global.inc.php';
$userId = api_get_user_id();
Skill::isAllowed($userId);
$isStudent = api_is_student();
$isStudentBoss = api_is_student_boss();
$isDRH = api_is_drh();
if (!$isStudent && !$isStudentBoss && !$isDRH) {
header('Location: '.api_get_path(WEB_CODE_PATH).'social/skills_wheel.php');
exit;
}
$action = isset($_GET['a']) ? $_GET['a'] : '';
switch ($action) {
case 'generate_custom_skill':
$certificate = new Certificate(0, api_get_user_id());
$certificate->generatePdfFromCustomCertificate();
break;
}
$skillTable = Database::get_main_table(TABLE_MAIN_SKILL);
$skillRelUserTable = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER);
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$tableRows = array();
$objSkill = new Skill();
$tpl = new Template(get_lang('Skills'));
$tplPath = null;
$tpl->assign('allow_skill_tool', api_get_setting('allow_skills_tool') === 'true');
$tpl->assign('allow_drh_skills_management', api_get_setting('allow_hr_skills_management') === 'true');
if ($isStudent) {
$result = $objSkill->getUserSkillsTable($userId);
$tableRows = $result['skills'];
$tpl->assign('skill_table', $result['table']);
$tplPath = 'skill/student_report.tpl';
} elseif ($isStudentBoss) {
$selectedStudent = isset($_REQUEST['student']) ? (int) $_REQUEST['student'] : 0;
$tableRows = array();
$followedStudents = UserManager::getUsersFollowedByStudentBoss($userId);
foreach ($followedStudents as &$student) {
$student['completeName'] = api_get_person_name($student['firstname'], $student['lastname']);
}
if ($selectedStudent > 0) {
$sql = "SELECT s.name, sru.acquired_skill_at, c.title, c.directory
FROM $skillTable s
INNER JOIN $skillRelUserTable sru
ON s.id = sru.skill_id
LEFT JOIN $courseTable c
ON sru.course_id = c.id
WHERE sru.user_id = $selectedStudent
";
$result = Database::query($sql);
while ($resultData = Database::fetch_assoc($result)) {
$tableRow = array(
'complete_name' => $followedStudents[$selectedStudent]['completeName'],
'skill_name' => Skill::translateName($resultData['name']),
'achieved_at' => api_format_date($resultData['acquired_skill_at'], DATE_FORMAT_NUMBER),
'course_image' => Display::return_icon(
'course.png',
null,
null,
ICON_SIZE_MEDIUM,
null,
true
),
'course_name' => $resultData['title']
);
$imageSysPath = sprintf("%s%s/course-pic.png", api_get_path(SYS_COURSE_PATH), $resultData['directory']);
if (file_exists($imageSysPath)) {
$thumbSysPath = sprintf("%s%s/course-pic32.png", api_get_path(SYS_COURSE_PATH), $resultData['directory']);
$thumbWebPath = sprintf("%s%s/course-pic32.png", api_get_path(WEB_COURSE_PATH), $resultData['directory']);
if (!file_exists($thumbSysPath)) {
$courseImageThumb = new Image($imageSysPath);
$courseImageThumb->resize(32);
$courseImageThumb->send_image($thumbSysPath);
}
$tableRow['courseImage'] = $thumbWebPath;
}
$tableRows[] = $tableRow;
}
}
$tplPath = 'skill/student_boss_report.tpl';
$tpl->assign('followed_students', $followedStudents);
$tpl->assign('selected_student', $selectedStudent);
} elseif ($isDRH) {
$selectedCourse = isset($_REQUEST['course']) ? intval($_REQUEST['course']) : null;
$selectedSkill = isset($_REQUEST['skill']) ? intval($_REQUEST['skill']) : 0;
$action = null;
if (!empty($selectedCourse)) {
$action = 'filterByCourse';
} elseif (!empty($selectedSkill)) {
$action = 'filterBySkill';
}
$courses = CourseManager::get_courses_list();
$tableRows = array();
$reportTitle = null;
$skills = $objSkill->get_all();
switch ($action) {
case 'filterByCourse':
$course = api_get_course_info_by_id($selectedCourse);
$reportTitle = sprintf(get_lang('AchievedSkillInCourseX'), $course['name']);
$tableRows = $objSkill->listAchievedByCourse($selectedCourse);
break;
case 'filterBySkill':
$skill = $objSkill->get($selectedSkill);
$reportTitle = sprintf(get_lang('StudentsWhoAchievedTheSkillX'), $skill['name']);
$students = UserManager::getUsersFollowedByUser(
$userId,
STUDENT,
false,
false,
false,
null,
null,
null,
null,
null,
null,
DRH
);
$coursesFilter = array();
foreach ($courses as $course) {
$coursesFilter[] = $course['id'];
}
$tableRows = $objSkill->listUsersWhoAchieved($selectedSkill, $coursesFilter);
break;
}
foreach ($tableRows as &$row) {
$row['complete_name'] = api_get_person_name($row['firstname'], $row['lastname']);
$row['achieved_at'] = api_format_date($row['acquired_skill_at'], DATE_FORMAT_NUMBER);
$row['course_image'] = Display::return_icon(
'course.png',
null,
null,
ICON_SIZE_MEDIUM,
null,
true
);
$imageSysPath = sprintf("%s%s/course-pic.png", api_get_path(SYS_COURSE_PATH), $row['c_directory']);
if (file_exists($imageSysPath)) {
$thumbSysPath = sprintf("%s%s/course-pic32.png", api_get_path(SYS_COURSE_PATH), $row['c_directory']);
$thumbWebPath = sprintf("%s%s/course-pic32.png", api_get_path(WEB_COURSE_PATH), $row['c_directory']);
if (!file_exists($thumbSysPath)) {
$courseImageThumb = new Image($imageSysPath);
$courseImageThumb->resize(32);
$courseImageThumb->send_image($thumbSysPath);
}
$row['course_image'] = $thumbWebPath;
}
}
$tplPath = 'skill/drh_report.tpl';
$tpl->assign('action', $action);
$tpl->assign('courses', $courses);
$tpl->assign('skills', $skills);
$tpl->assign('selected_course', $selectedCourse);
$tpl->assign('selected_skill', $selectedSkill);
$tpl->assign('report_title', $reportTitle);
}
if (empty($tableRows)) {
Display::addFlash(Display::return_message(get_lang('NoResults')));
}
$tpl->assign('rows', $tableRows);
$templateName = $tpl->get_template($tplPath);
$contentTemplate = $tpl->fetch($templateName);
$tpl->assign('content', $contentTemplate);
$tpl->display_one_col_template();