Autoría | Ultima modificación | Ver Log |
<?php
ob_start();
require('../../config.php');
//require('autoload.php');
global $DB, $PAGE, $CFG, $OUTPUT;
require_once($CFG->libdir . '/adminlib.php');
require_once $CFG->libdir . '/completionlib.php';
require_once $CFG->dirroot. '/completion/classes/progress.php';
//require_once $CFG->libdir . '/badgeslib.php';
//require_once $CFG->libdir . '/gradelib.php';
//require_once $CFG->dirroot . '/grade/querylib.php';
require_once(__DIR__ . '/locallib.php');
require_login();
require_capability('local/cesa_reportes:view', context_system::instance());
$classname = optional_param('classname', 'dashboard', PARAM_TEXT);
$page = optional_param('page', 0, PARAM_INT);
$PAGE->set_url(new moodle_url('/local/cesa_reportes'));
$PAGE->set_context(context_system::instance());
//$PAGE->set_pagetype('admin-setting');
$PAGE->set_pagelayout('plain');
$PAGE->set_title('Cesa Reportes');
$PAGE->set_heading('Cesa Reportes');
$filter_userids = [];
$filter_courseids = [];
$filter_by_company_active = false;
$PAGE->requires->jquery();
$PAGE->requires->css(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/pnotify.css'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/pnotify.js'));
$PAGE->requires->css(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/css/local_cesa_reportes.css'));
$PAGE->navbar->add(get_string('modulename', 'local_cesa_reportes'), new moodle_url('/local/cesa_reportes'));
$context = [
'classname_dashboard' => $classname == 'dashboard' ? 1 : 0,
'classname_one_course' => $classname == 'one_course' ? 1 : 0,
'classname_one_user' => $classname == 'one_user' ? 1 : 0,
'classname_all_course' => $classname == 'all_courses' ? 1 : 0,
'classname_all_course_with_activities' => $classname == 'all_courses_with_activities' ? 1 : 0,
'classname_custom' => $classname == 'custom' ? 1 : 0,
'classname_all_files' => $classname == 'all_files' ? 1 : 0,
];
if($classname == 'dashboard')
{
$context['graph_serie1_color'] = get_config('local_cesa_reportes', 'graph_serie1_color');
$context['graph_serie2_color'] = get_config('local_cesa_reportes', 'graph_serie2_color');
// $PAGE->requires->js('/local/cesa_reportes/assets/jquery-1.12.2.min.js');
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/Chart.min.js'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_charts.js'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_dashboard.js'));
$data = local_cesa_reportes_get_week_days();
$context['last_ten_user_activities'] = (array) local_cesa_reportes_get_last_ten_user_activities($filter_by_company_active, $filter_userids, $data->min, $data->max);
$context['top_ten_user_activities'] = (array) local_cesa_reportes_get_top_ten_user_activities($filter_by_company_active, $filter_userids, $data->min, $data->max);
$context['last_ten_user_modules_completion'] = (array) local_cesa_reportes_get_last_ten_user_modules_completion($filter_by_company_active, $filter_userids, $data->min, $data->max);
$context['top_ten_user_modules_completion'] = (array) local_cesa_reportes_get_top_ten_user_modules_completion($filter_by_company_active, $filter_userids, $data->min, $data->max);
$context['chart'] = [];
foreach($data->days as $day)
{
$data1 = local_cesa_reportes_get_count_activities($filter_by_company_active, $filter_userids, $day->min, $day->max);
$data2 = local_cesa_reportes_get_count_modules_completion($filter_by_company_active, $filter_userids, $day->min, $day->max);
array_push($context['chart'], [
'label' => $day->day,
'data1' => $data1,
'data2' => $data2,
]);
}
} else if($classname == 'one_course') {
$PAGE->requires->css(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/select2.css'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_report_for_one_course.js'));
$context['courses'] = [];
$sql = 'SELECT id, fullname FROM {course} ';
if($filter_by_company_active) {
$filter_courseids = empty($filter_courseids) ? [-1] : $filter_courseids;
$sql .= ' WHERE id IN (' . implode(',', $filter_courseids) . ')';
}
$sql .= ' ORDER BY fullname ';
$records = $DB->get_records_sql($sql);
foreach($records as $record)
{
array_push($context['courses'], [
'id' => $record->id,
'name' => $record->fullname
]) ;
}
} else if($classname == 'one_user') {
$context['users'] = [];
$PAGE->requires->css(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/select2.css'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_report_for_one_user.js'));
$sql = 'SELECT id, firstname, lastname, email FROM {user} WHERE id > 1 AND deleted = 0 ' .
' AND suspended = 0 ';
if($filter_by_company_active) {
$filter_userids = empty($filter_userids) ? [-1] : $filter_userids;
$sql .= ' AND id IN (' . implode(',', $filter_userids) . ')';
}
$sql .= ' ORDER BY lastname, firstname, email ';
$records = $DB->get_records_sql($sql);
foreach($records as $record)
{
array_push($context['users'], [
'id' => $record->id,
'name' => $record->lastname . ' ' . $record->firstname . ' (' . $record->email . ')'
]) ;
}
} else if($classname == 'all_courses') {
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_all_courses.js'));
$extra_fields = local_cesa_reportes_get_user_extra_field_names();
$context['fields'] = [];
array_push($context['fields'], ['field' => 'Apellido']);
array_push($context['fields'], ['field' => 'Nombre']);
array_push($context['fields'], ['field' => 'Email']);
array_push($context['fields'], ['field' => 'Curso']);
array_push($context['fields'], ['field' => 'Categoria']);
array_push($context['fields'], ['field' => 'Matriculación']);
array_push($context['fields'], ['field' => 'Fecha finalización']);
array_push($context['fields'], ['field' => 'Actividades asignadas']);
array_push($context['fields'], ['field' => 'Actividades completadas']);
array_push($context['fields'], ['field' => 'Progreso %']);
array_push($context['fields'], ['field' => 'Primera actividad']);
array_push($context['fields'], ['field' => 'Ultima actividad']);
foreach($extra_fields as $extra_field)
{
array_push($context['fields'], ['field' => $extra_field->name]);
}
$context['items'] = [];
$page = $page ? $page : 1;
$include_modules = true;
$data = local_cesa_reportes_get_data_for_report_or_excel($filter_by_company_active, $filter_userids, $filter_courseids, $include_modules, $page);
$records = $data['items'];
$context['pagination'] = $data['pagination'];
if($context['pagination']['page'] > 1) {
$context['pagination']['previous_page'] = $context['pagination']['page'] - 1;
}
if($context['pagination']['page'] < $context['pagination']['max_pages']) {
$context['pagination']['next_page'] = $context['pagination']['page'] + 1;
}
foreach($records as $record)
{
if(!$record->courses) {
continue;
}
foreach($record->courses as $course)
{
$item = [];
array_push($item, ['value' => $record->lastname ]);
array_push($item, ['value' => $record->firstname ]);
array_push($item, ['value' => $record->email ]);
array_push($item, ['value' => $course->name ]);
array_push($item, ['value' => $course->category ]);
array_push($item, ['value' => empty($course->timeenrolled) ? '' : date('d/m/Y h:i a', $course->timeenrolled)]);
array_push($item, ['value' => empty($course->timecompleted) ? '' : date('d/m/Y h:i a', $course->timecompleted)]);
array_push($item, ['value' => $course->activities_assigned, 'align-right' => true ]);
array_push($item, ['value' => $course->activities_completed, 'align-right' => true ]);
array_push($item, ['value' => number_format($course->percentage, 2), 'align-right' => true ]);
array_push($item, ['value' => empty($course->time_activities_first) ? '' : date('d/m/Y h:i a', $course->time_activities_first) ]);
array_push($item, ['value' => empty($course->time_activities_last) ? '' : date('d/m/Y h:i a', $course->time_activities_last) ]);
foreach($extra_fields as $extra_field)
{
$value = '';
foreach($record->extras as $extra)
{
if($extra->id == $extra_field->id) {
$value = $extra->value;
}
}
array_push($item, ['value' => $value ]);
}
array_push($context['items'], ['item' => $item]);
}
}
} else if($classname == 'all_courses_with_activities') {
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_all_courses_with_activites.js'));
$extra_fields = local_cesa_reportes_get_user_extra_field_names();
$context['fields'] = [];
array_push($context['fields'], ['field' => 'Apellido']);
array_push($context['fields'], ['field' => 'Nombre']);
array_push($context['fields'], ['field' => 'Email']);
array_push($context['fields'], ['field' => 'Curso']);
array_push($context['fields'], ['field' => 'Categoria']);
array_push($context['fields'], ['field' => 'Matriculación']);
array_push($context['fields'], ['field' => 'Fecha finalización']);
array_push($context['fields'], ['field' => 'Actividades asignadas']);
array_push($context['fields'], ['field' => 'Actividades completadas']);
array_push($context['fields'], ['field' => 'Progreso %']);
array_push($context['fields'], ['field' => 'Primera actividad']);
array_push($context['fields'], ['field' => 'Ultima actividad']);
array_push($context['fields'], ['field' => 'Actividad']);
array_push($context['fields'], ['field' => 'Completado']);
foreach($extra_fields as $extra_field)
{
array_push($context['fields'], ['field' => $extra_field->name]);
}
$context['items'] = [];
$page = $page ? $page : 1;
$include_modules = true;
$data = local_cesa_reportes_get_data_for_report_or_excel($filter_by_company_active, $filter_userids, $filter_courseids, $include_modules, $page);
$records = $data['items'];
$context['pagination'] = $data['pagination'];
if($context['pagination']['page'] > 1) {
$context['pagination']['previous_page'] = $context['pagination']['page'] - 1;
}
if($context['pagination']['page'] < $context['pagination']['max_pages']) {
$context['pagination']['next_page'] = $context['pagination']['page'] + 1;
}
foreach($records as $record)
{
if(!$record->courses) {
continue;
}
foreach($record->courses as $course)
{
foreach($course->activities as $activity)
{
$item = [];
array_push($item, ['value' => $record->lastname ]);
array_push($item, ['value' => $record->firstname ]);
array_push($item, ['value' => $record->email ]);
array_push($item, ['value' => $course->name ]);
array_push($item, ['value' => $course->category ]);
array_push($item, ['value' => empty($course->timeenrolled) ? '' : date('d/m/Y h:i a', $course->timeenrolled)]);
array_push($item, ['value' => empty($course->timecompleted) ? '' : date('d/m/Y h:i a', $course->timecompleted)]);
array_push($item, ['value' => $course->activities_assigned, 'align-right' => true ]);
array_push($item, ['value' => $course->activities_completed, 'align-right' => true ]);
array_push($item, ['value' => number_format($course->percentage, 2), 'align-right' => true ]);
array_push($item, ['value' => empty($course->time_activities_first) ? '' : date('d/m/Y h:i a', $course->time_activities_first) ]);
array_push($item, ['value' => empty($course->time_activities_last) ? '' : date('d/m/Y h:i a', $course->time_activities_last) ]);
array_push($item, ['value' => $activity->module ]);
array_push($item, ['value' => empty($activity->timecompleted) ? '' : date('d/m/Y h:i a', $activity->timecompleted) ]);
foreach($extra_fields as $extra_field)
{
$value = '';
foreach($record->extras as $extra)
{
if($extra->id == $extra_field->id) {
$value = $extra->value;
}
}
array_push($item, ['value' => $value ]);
}
array_push($context['items'], ['item' => $item]);
}
}
}
} else if($classname == 'all_files') {
global $DB;
//$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/moment.min.js'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_all_files.js'));
$context['items'] = [];
$context['fields'] = [];
array_push($context['fields'], ['field' => 'Solicitado el']);
array_push($context['fields'], ['field' => 'Solictado por']);
array_push($context['fields'], ['field' => 'Estado']);
array_push($context['fields'], ['field' => 'Archivo']);
array_push($context['fields'], ['field' => 'Generado el']);
} else if($classname == 'custom') {
global $DB;
$PAGE->requires->css(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/assets/select2.css'));
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/cesa_reportes/js/local_cesa_reportes_report_custom.js'));
$context['courses'] = [];
$sql = 'SELECT id, fullname FROM {course} ';
if($filter_by_company_active) {
$filter_courseids = empty($filter_courseids) ? [-1] : $filter_courseids;
$sql .= ' WHERE id IN (' . implode(',', $filter_courseids) . ')';
}
$sql .= ' ORDER BY fullname ';
$records = $DB->get_records_sql($sql);
foreach($records as $record)
{
array_push($context['courses'], [
'id' => $record->id,
'name' => $record->fullname
]) ;
}
$context['filter_from'] = date('Y-m-d', strtotime('-1 Month'));
$context['filter_to'] = date('Y-m-d', time());
}
echo $OUTPUT->header();
echo $OUTPUT->render_from_template('local_cesa_reportes/form', $context);
echo $OUTPUT->footer();