Proyectos de Subversion Moodle

Rev

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();