| Server IP : 165.22.154.248 / Your IP : 216.73.217.167 [ 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 : /proc/9427/cwd/avanza-lms.old.bak9874115/api/ |
Upload File : |
<?php
//@sucerman 31 de marzo de 2018
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo dirname(__FILE__);
require_once(dirname(__FILE__) . '/../config.php');
session_start();
//Variables globales
global $CFG, $USER, $DB;
//Constante del nombre del ITEM
$nombre_item="Inducci";
//Respuesta del servicio API
//Codigos de respuesta
// -1 => usuario no autenticado
// -2 => Parametros incompletos
// -3 => Item de calificación no configurado
// -4 => Error Interno
// -5 => Metodo HTTP incorrecto
// 0 => Transaccion exitosa
//Objeto de respuesta del API
$arrayRespuesta=array(
'estado'=>'-1',
'mensaje'=>'Usuario no autenticado',
'data'=>$_REQUEST
);
//Lógica de Negocio
if(isloggedin()){//si esta logeado
try{
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if(isset($_REQUEST['id_usuario'],$_REQUEST['id_curso'],$_REQUEST['calificacion'])){
// Se asignan las variables de la solicitud
$userid= $_REQUEST['id_usuario'];
$courseid = $_REQUEST['id_curso'];
$finalgrade = $_REQUEST['calificacion'];
//se consulta el id del item de calificacion del curso
$sql="
SELECT i.id as itemid
FROM mdl_grade_items i
JOIN mdl_course c ON(i.courseid = c.id)
WHERE c.id=".$courseid."
AND i.itemtype in ('manual')
AND i.itemname like '".$nombre_item."%'
ORDER BY i.sortorder
LIMIT 1 ";
$result= $DB->get_records_sql($sql);
$itemid=-1;//significa que no se ha creado el el item de calificacion en el curso
if(!empty($result)){
foreach($result as $res){
$itemid=$res->itemid;
}
//se consulta el id del item de calificacion del curso
$sql="
SELECT i.id as itemcourseid, grademax
FROM mdl_grade_items i
JOIN mdl_course c ON(i.courseid = c.id)
WHERE c.id=".$courseid."
AND i.itemtype in ('course')
ORDER BY i.sortorder
LIMIT 1 ";
$result= $DB->get_records_sql($sql);
$itemcourseid=-1;//significa que no se ha configurado el el libro de calificaciones del curso
$grademax=0;
if(!empty($result)){
foreach($result as $res){
$itemcourseid=$res->itemcourseid;
$grademax=$res->grademax;
}
}
//pregunto si el usuario ya tiene calificación
$sql="
SELECT id
FROM mdl_grade_grades
where userid=".$userid."
and itemid=".$itemid;
$result= $DB->get_records_sql($sql);
$gradesid=-1;//significa que no se ha creado el registro
if(!empty($result)){
foreach($result as $res){
$gradesid=$res->id;
}
}
// Si no tiene calificación la crea y sino la actualiza
if($gradesid==-1){
$calificacion_curso = new stdClass();
$calificacion_curso->itemid=$itemcourseid;
$calificacion_curso->userid=$userid;
$calificacion_curso->rawgrademax=$grademax;
$calificacion_curso->rawgrademin=0;
$calificacion_curso->finalgrade=$grademax;
$calificacion_curso->hidden=0;
$calificacion_curso->locked==0;
$calificacion_curso->locktime=0;
$calificacion_curso->exported=0;
$calificacion_curso->overridden=0;
$calificacion_curso->excluded=0;
$calificacion_curso->feedbackformat=0;
$calificacion_curso->informationformat=0;
$calificacion_curso->timecreated==time();
$calificacion_curso->timemodified==time();
$calificacion_curso->aggregationstatus="unknown";
$recordid = $DB->insert_record('grade_grades', $calificacion_curso, true);
//nueva calificacion
$calificacion = new stdClass();
$calificacion->itemid=$itemid;
$calificacion->userid=$userid;
$calificacion->rawgrademax=$grademax;
$calificacion->rawgrademin=0;
$calificacion->usermodified=$userid;
$calificacion->finalgrade=$finalgrade;
$calificacion->hidden=0;
$calificacion->locked==0;
$calificacion->locktime=0;
$calificacion->exported=0;
$calificacion->overridden=0;
$calificacion->excluded=0;
$calificacion->feedbackformat=0;
$calificacion->informationformat=0;
$calificacion->timecreated==time();
$calificacion->timemodified==time();
$calificacion->aggregationstatus="used";
$calificacion->aggregationweight=1;
$recordid = $DB->insert_record('grade_grades', $calificacion, true);
}else{
$sql="
UPDATE mdl_grade_grades
SET finalgrade=?
WHERE userid=?
AND itemid=?";
$DB->execute($sql,array($finalgrade,$userid,$itemid));
}
$arrayRespuesta=array(
'estado'=>'0',
'mensaje'=>'se registro la calificación',
'data'=>$_REQUEST
);
}else{
$arrayRespuesta=array(
'estado'=>'-3',
'mensaje'=>'Debe configurar el item de calificacion del curso',
'data'=>$_REQUEST
);
}
}else{
$arrayRespuesta=array(
'estado'=>'-2',
'mensaje'=>'Parametros incompletos',
'data'=>$_REQUEST
);
}
}else{
$arrayRespuesta=array(
'estado'=>'-5',
'mensaje'=>'Verbo HTTP incorrecto',
'data'=>$_REQUEST
);
}
}catch(Exception $e){
$arrayRespuesta=array(
'estado'=>'-4',
'mensaje'=>$e->getMessage(),
'data'=>$_REQUEST
);
}
}
//imprime el resultado
header('Content-Type: application/json');
echo json_encode($arrayRespuesta);