. /** * Library of functions and constants for the assignment_files report * * @package report * @subpackage assignment_files * @author Russell England * @copyright Russell England * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die; // Required for definitions. require_once($CFG->dirroot . '/mod/assign/submissionplugin.php'); require_once($CFG->dirroot . '/mod/assign/submission/file/locallib.php'); // Flexible table. require_once($CFG->libdir . '/tablelib.php'); // require_once($CFG->dirroot .'/auth/db_inacap/auth.php'); /** * Returns a list of coursefiles for a user * * @global object $DB * @param array $filters * @param int $totalcount * @return array $assignments - list of assignments and filenames */ function x_traspasonotasexam_get_list($filters) { global $DB; $params = array(); $sqlcourse=''; if (isset($filters['cursos']) && $filters['cursos']) { $params['cursos'] = $filters['cursos']; } $sqlcourses= 'SELECT distinct mgi.id item, mgi.itemname, mgi.itemtype, mgi.grademin, mgi.grademax, nvl(mtn.id,0) trapaso FROM m_grade_items mgi, m_TRASPASONOTASEXAM mtn WHERE itemtype <> \'course\' and MGI.ID = mtn.itemMODULE(+) and mgi.courseid =:cursos and trim(lower(mgi.itemname)) like lower(\'%Examen%\') and not regexp_like (trim(lower(mgi.itemname)), lower(\'Formativ(a|o)\')) and mgi.itemtype =\'mod\' order by 1 asc'; $submissions = $DB->get_records_sql($sqlcourses, $params); // var_dump($submissions); return $submissions; } //GET Registros Resumen Histórico P_TraspasoNotasExa function x_traspasonotasexam_get_resumen($filters) { global $DB; $params = array(); $sqlcourse=''; //echo '


cursos'.$filters['cursos'];exit; if (isset($filters['cursos']) && $filters['cursos']) { $params['cursos'] = $filters['cursos']; }else{$params['cursos'] =0;} $course = $DB->get_record('course', array('id' => $filters['cursos']), '*', MUST_EXIST); $sqlc="SELECT mt.id idtraspaso,TO_CHAR (to_moodfecha (MT.AUDI_FMODIFICACION), 'dd-mm-yyyy') fcreacionaai, MT.AUDI_FMODIFICACION_SIGA ftraspaso, gi.ITEMNAME, -- (SYSDATE - s.SECC_FTERMINO_SEC) fdia, 'Examen' || '-' || TO_CHAR (s.SECC_FTERMINO_SEC, 'dd-mm-yyyy') caliSiga FROM -- secciones s, {TRASPASONOTASEXAM} mt, {course} mc, {grade_items} gi WHERE TO_CHAR (s.secc_ccod) = mc.idnumber AND s.secc_ccod = mt.secc_ccod AND mc.id = gi.courseid AND mt.ITEMMODULE = gi.id AND mc.idnumber = ".$course->idnumber; /* $dbe = new auth_plugin_db_inacap; $authdb = $dbe->db_init(); */ $enrol = enrol_get_plugin('dbinacap311'); $authdb = $enrol->db_init_inacap311(); $sql_auth = "SELECT mt.id idtraspaso, 'Examen' || '-' || TO_CHAR (s.SECC_FTERMINO_SEC, 'dd-mm-yyyy') caliSiga, TO_CHAR (to_moodfecha (MT.AUDI_FMODIFICACION), 'dd-mm-yyyy') fcreacionaai, MT.AUDI_FMODIFICACION_SIGA ftraspaso, gi.ITEMNAME, (SYSDATE - s.SECC_FTERMINO_SEC) fdia FROM secciones s, m_TRASPASONOTASEXAM mt, m_course mc, m_grade_items gi WHERE TO_CHAR (s.secc_ccod) = mc.idnumber AND s.secc_ccod = mt.secc_ccod AND mc.id = gi.courseid AND mt.ITEMMODULE = gi.id AND mc.idnumber = ".$course->idnumber; /* SELECT mt.id idtraspaso,CS.CALI_NCORR,TP.TEVA_TDESC|| ' - '|| to_char(CS.CALI_FEVALUACION, 'dd-mm-yyyy') || ' - '|| CS.CALI_NPONDERACION|| '%' caliSiga, to_char(to_moodfecha(MT.AUDI_FMODIFICACION),'dd-mm-yyyy') fcreacionaai, MT.AUDI_FMODIFICACION_SIGA ftraspaso, gi.ITEMNAME, (sysdate - cs.CALI_FEVALUACION) fdia FROM CALIFICACIONES_SECCION cs,TIPOS_EVALUACION tp,P_TRASPASO_NOTAS mt,p_course mc,p_grade_items gi WHERE TP.TEVA_CCOD = CS.TEVA_CCOD AND cs.secc_ccod = mt.secc_ccod AND cs.cali_ncorr = mt.cali_ncorr AND mc.idnumber = TO_CHAR (cs.secc_ccod) and mc.id=gi.courseid and mt.ITEMMODULE = gi.id AND mc.id = ".$filters['cursos']; */ $rs = $authdb->Execute( $sql_auth ); $objects = array(); if (is_array($rs) || is_object($rs)) { foreach($rs as $vrs){ $key = reset($vrs); $data_cal = $vrs["CALISIGA"]; $fcreaAAI = $vrs['FCREACIONAAI']; $ftraspaso = $vrs['FTRASPASO']; $idtraspaso = $vrs['IDTRASPASO']; $itemname = $vrs['ITEMNAME']; $fdia = $vrs['FDIA']; $submissions = array('itemname' => $itemname, 'calisiga' => $data_cal, 'fcreacion' => $fcreaAAI, 'ftraspaso' => $ftraspaso,'idtraspaso'=>$idtraspaso, 'fdia' => $fdia); if (array_key_exists($key, $objects)) { debugging("Error..."); } $objects[$key] = (object)$submissions; } } // } return $objects; } /** * Displays a table of curriculum_files * * @param array $submissions array of record objects * @param array $params - contains paging parameters mu.firstname, mu.lastname,uc.profesion_generic, uc.profesion_amplio */ function x_traspasonotasexam_display_list($submissions, $params) { global $DB; // var_dump($submissions); if ($submissions) { //Cabecera de la tabla echo html_writer::start_tag('table', array('id'=>'view-tabla','style'=>'margin: 0 auto;')); echo html_writer::start_tag('tr'); echo html_writer::start_tag('td'); echo '

Actividades LMS-Online

'."\n"; echo html_writer::end_tag('td'); echo html_writer::start_tag('td'); echo html_writer::end_tag('td'); echo html_writer::start_tag('td'); echo '

Examen en SIGA

'."\n"; echo html_writer::end_tag('td'); echo html_writer::end_tag('tr'); echo html_writer::start_tag('tr'); $table = new flexible_table('view-activities'); $table->define_columns(array('id','actividad','migrar')); $table->define_headers(array('Item', 'Actividad','Seleccionar')); $table->define_baseurl(new moodle_url('/report/traspasonotasexam/index.php', $params)); $table->collapsible(false); $table->set_attribute('cellspacing', '1'); $table->set_attribute('id', 'view-activities'); $table->set_attribute('cellpadding','5'); $table->set_attribute('class', 'table table-bordered generaltable generalbox reporttable'); $table->sortable(false,'actividad','ASC'); $table->set_control_variables(array( TABLE_VAR_SORT => 'ssort', TABLE_VAR_HIDE => 'shide', TABLE_VAR_SHOW => 'sshow', TABLE_VAR_IFIRST => 'sifirst', TABLE_VAR_ILAST => 'silast', TABLE_VAR_PAGE => 'spage' )); echo html_writer::start_tag('td', array('valign'=>'top')); $table->setup(); // print_r($submissions); if ($submissions) { foreach ($submissions as $submission) { $row = array(); $row[] = format_string($submission->item); $row[] = format_string($submission->itemname); if($submission->trapaso <> '0'){ $row[] =' '; }else { // AQUI if() // if($submission->fdia > 15){ // $row[] = '*'; // }else{ $row[] =' '; //} } $table->add_data($row); } // $row = array(); // // $row[] ='Seleccione la actividad que desea traspasar.'; // $row[] ='Seleccione la actividad que desea traspasar.'; // $table->add_data($row); } $table->print_html(); echo html_writer::end_tag('td'); echo html_writer::start_tag('td'); echo 'calificaciones'."\n"; echo html_writer::end_tag('td'); } else { return '
Nada que mostrar '; } $course = $DB->get_record('course', array('id' => $params['cursos']), 'idnumber', MUST_EXIST); $enrol = enrol_get_plugin('dbinacap311'); $authdb = $enrol->db_init_inacap311(); /* $dbe = new auth_plugin_db_inacap; $authdb = $dbe->db_init(); */ $table_cal = new flexible_table('view-grades-siga'); $table_cal->define_columns(array('nro','calificacion','fecha','ponderacion','seleccione')); $table_cal->define_headers(array('Nro.','Calificaciones','F. Termino Sección',format_string('Ponderación'),'Seleccione')); $table_cal->define_baseurl(new moodle_url('/report/traspasonotasexam/index.php', $params)); $table_cal->collapsible(false); $table_cal->set_attribute('cellspacing', '1'); $table_cal->set_attribute('id', 'view-grades-siga'); $table_cal->set_attribute('cellpadding','5'); $table_cal->set_attribute('class', 'table table-bordered generaltable generalbox reporttable'); echo html_writer::start_tag('td', array('valign'=>'top')); $table_cal->setup(); $row_cal = array(); $sqlDif = "select asi.tasg_ccod,(select ponf_jnota_examen *100 from ponderaciones_nota_final where talu_ccod = nvl (1, 1) and peri_ccod_inicio <= sc.peri_ccod and sc.peri_ccod <= decode (peri_ccod_termino,0, sc.peri_ccod,peri_ccod_termino)) pond_examen from secciones sc, asignaturas asi Where sc.asig_ccod = asi.asig_ccod and sc.secc_ccod=".$course->idnumber; $result = $authdb->Execute( $sqlDif ); foreach($result as $Ndif){ $dific = isset($Ndif['POND_EXAMEN']) ? $Ndif['POND_EXAMEN'] : 0; } $sql_auth = " Select nvl(b.suma,0) suma, a.* from ( Select 0 cali_nevaluacion, s.SECC_FTERMINO_SEC feval, to_char(S.SECC_FTERMINO_SEC, 'dd-mm-yyyy') CALI_FEVALUACION, $dific CALI_NPONDERACION, 'Examen' TEVA_TDESC, s.secc_ccod, case nvl(mt.secc_ccod,0) when 0 then ' ' else ' ' end case, trunc((sysdate - S.SECC_FTERMINO_SEC ),0) fdia from secciones s, m_TRASPASONOTASEXAM mt Where s.secc_ccod = mt.secc_ccod(+) and s.secc_ccod=$course->idnumber ) a left join (select secc_ccod, count(CARG_NNOTA_FINAL) suma from cargas_academicas where secc_ccod = $course->idnumber group by secc_ccod) b on b.secc_ccod = a.secc_ccod order by feval "; $rs = $authdb->Execute( $sql_auth ); // var_dump($rs); if ($rs){ foreach ($rs as $r) { $option_b =$r["CASE"]; if($r["SUMA"] != '0') {$option_b .= ' (**)';} $data_cal = array($r["CALI_NEVALUACION"],$r["TEVA_TDESC"],$r["CALI_FEVALUACION"],$r["CALI_NPONDERACION"].' %',$option_b); $table_cal->add_data($data_cal); } } else { $row_cal[] = ''; $row_cal[] = ''; $row_cal[] = ''; $row_cal[] = ''; $row_cal[] =''; $table_cal->add_data($row_cal); } //$rs->Close(); $table_cal->print_html(); echo html_writer::end_tag('td'); echo html_writer::end_tag('tr'); echo html_writer::start_tag('tr'); echo ''.format_string('El traspaso de notas Examen a SIGA se realiza por actividad.').''; echo html_writer::end_tag('tr'); echo html_writer::start_tag('tr'); echo ''.format_string('Seleccione una actividad del LMS Online y una calificación Examen planificada en SIGA para establecer su traspaso.').''; echo html_writer::end_tag('tr'); /* echo html_writer::start_tag('tr'); echo ''.format_string('(*) “Sólo se listarán y podrán ser traspasadas las calificaciones dentro de los 15 días siguientes a la fecha de evaluación”').''; echo html_writer::end_tag('tr'); */ echo html_writer::start_tag('tr'); echo ''.format_string('(**) “Indica existencia de Calificación Examen en SIGA”').''; echo html_writer::end_tag('tr'); echo html_writer::end_tag('table'); } function x_get_user_coursesexa($userid, $onlyactive = false, $fields = NULL, $sort = 'visible DESC,sortorder ASC') { global $DB; // Guest account does not have any courses if (isguestuser($userid) or empty($userid)) { return(array()); } $basefields = array('id', 'shortname', 'fullname', 'idnumber'); if (empty($fields)) { $fields = $basefields; } else if (is_string($fields)) { // turn the fields from a string to an array $fields = explode(',', $fields); $fields = array_map('trim', $fields); $fields = array_unique(array_merge($basefields, $fields)); } else if (is_array($fields)) { $fields = array_unique(array_merge($basefields, $fields)); } else { throw new coding_exception('Invalid $fileds parameter in enrol_get_my_courses()'); } if (in_array('*', $fields)) { $fields = array('*'); } $orderby = ""; $sort = trim($sort); if (!empty($sort)) { $rawsorts = explode(',', $sort); $sorts = array(); foreach ($rawsorts as $rawsort) { $rawsort = trim($rawsort); if (strpos($rawsort, 'c.') === 0) { $rawsort = substr($rawsort, 2); } $sorts[] = trim($rawsort); } $sort = 'c.'.implode(',c.', $sorts); $orderby = "ORDER BY $sort"; } $params = array('siteid'=>SITEID); if ($onlyactive) { $subwhere = "WHERE ue.status = :active AND e.status = :enabled AND ue.timestart < :now1 AND (ue.timeend = 0 OR ue.timeend > :now2)"; $params['now1'] = round(time(), -2); // improves db caching $params['now2'] = $params['now1']; $params['active'] = ENROL_USER_ACTIVE; $params['enabled'] = ENROL_INSTANCE_ENABLED; } else { $subwhere = ""; } $coursefields = 'c.' .join(',c.', $fields); $ccselect = ', ' . context_helper::get_preload_record_columns_sql('ctx'); $ccjoin = "LEFT JOIN {context} ctx ON (ctx.instanceid = c.id AND ctx.contextlevel = :contextlevel) LEFT JOIN {role_assignments} ra ON (ra.contextid = ctx.id and ra.roleid in (1,3,4,9))"; $params['contextlevel'] = CONTEXT_COURSE; //note: we can not use DISTINCT + text fields due to Oracle and MS limitations, that is why we have the subselect there $sql = "SELECT distinct $coursefields $ccselect FROM {course} c JOIN (SELECT DISTINCT e.courseid FROM {enrol} e JOIN {user_enrolments} ue ON (ue.enrolid = e.id AND ue.userid = :userid) $subwhere ) en ON (en.courseid = c.id) $ccjoin WHERE c.id <> :siteid and userid= :iduser $orderby"; $params['userid'] = $userid; $params['iduser']= $userid;; //$params['category'] = '2'; // echo '
'.$sql.'
'; //print_r($params); //echo '
'; $courses = $DB->get_records_sql($sql, $params); return $courses; } function x_traspasonotasexam_Display_Detalles($submissions, $params){ global $DB; if ($submissions) { $table = new flexible_table('view-resumen'); $table->define_columns(array('cali_ncorr','calisiga','fcreacion', 'ftraspaso','','idtrapaso')); $table->define_headers(array('Actividad Online', 'Examen SIGA','Fecha Creación Online', 'Fecha Traspaso a SIGA','Detalle','Acción')); $table->define_baseurl(new moodle_url('/report/traspasonotasexam/index.php', $params)); $table->collapsible(false); $table->set_attribute('cellspacing', '1'); $table->set_attribute('id', 'view-resumen'); $table->set_attribute('cellpadding','5'); $table->set_attribute('class', 'generaltable generalbox reporttable'); $table->set_attribute('style','margin: 0 auto;'); $table->setup(); // echo '
';var_dump($submissions);echo '
'; foreach($submissions as $submission) { $row = array(); $row[] = $submission->itemname; $row[] = $submission->calisiga; $row[] = $submission->fcreacion; if($submission->ftraspaso == 0 ){ $row[] = ''; }else{ $row[] = date('d-m-Y', $submission->ftraspaso); } $row[] ='Detalle '; if($submission->ftraspaso == 0){ $row[] = '   '; }else{ $row[] = 'Ejecutado (Ver Detalles)'; } $table->add_data($row); } $table->print_html(); } else { return '
Nada que mostrar '; } } function x_traspasonotasexam_get_list_detalle($id_traspaso) { global $DB; //$sqlcourses='SELECT id item, itemname, itemtype, grademin, grademax FROM {grade_items} WHERE itemtype <> \'course\' and courseid = :cursos'; $sqlusers= "select MU.FIRSTNAME ||', '||MU.lastNAME usuario, tnd.grade puntaje, tnd.nota nota, tnd.OBSERVACION from m_TRASPASONOTASEXAM_DET tnd, m_user mu where TND.USERID=MU.ID and TND.TRASPASOIDEXE = $id_traspaso order by FIRSTNAME, lastNAME "; $submissions = $DB->get_records_sql($sqlusers); // var_dump($submissions); return $submissions; } function x_traspasonotasexam_Display_Detalles_lista($id_traspaso){ global $DB; $submissions=traspasonotasexam_get_list_detalle($id_traspaso); if ($submissions) { $table = new flexible_table('view-detalles'); $table->define_columns(array('usuario','puntaje','nota', 'observacion')); $table->define_headers(array('Usuario', 'Puntaje','Nota SIGA', 'Observación')); $table->define_baseurl(new moodle_url('/report/traspasonotasexam/index.php')); $table->collapsible(false); $table->set_attribute('cellspacing', '1'); $table->set_attribute('id', 'view-detalles'); $table->set_attribute('cellpadding','5'); $table->set_attribute('class', 'generaltable generalbox reporttable'); $table->set_attribute('style','margin: 0 auto;'); $table->setup(); // echo '
';var_dump($submissions);echo '
'; foreach($submissions as $submission) { $row = array(); $row[] = $submission->usuario; $row[] = $submission->puntaje; $row[] = $submission->nota; $row[] = $submission->observacion; $table->add_data($row); } echo ' '; } else { return '
Nada que mostrar '; } } function x_miCursoexa($id){ global $DB; $sqlcurso= "Select fullname from m_course Where id=".$id; $submissions = $DB->get_records_sql($sqlcurso); foreach ($submissions as $submission) { return 'Mi Curso: '. $submission->fullname; } }