function referentiel_traitement_notations() { // genere des declarations d'activites "fictives" a partir des notation par objectif // sur les activites du cours global $CFG; global $DB; global $scales; // all users that are subscribed to any post that needs sending $notations = array(); $scales = array(); $n_activites = 0; // Enregistrements anterieurs � 2 jours non traites. This is to avoid the problem where // cron has not been running for a long time $timenow = time(); if (NOTIFICATION_DELAI) { $endtime = $timenow - $CFG->maxeditingtime; } else { $endtime = $timenow; } // Enregistrements anterieurs a NOTIFICATION_INTERVALLE_JOUR jours non traites. // This is to avoid the problem where cron has not been running for a long time if (REFERENTIEL_DEBUG) { $starttime = $endtime - NOTIFICATION_INTERVALLE_JOUR * 7 * 24 * 3600; // Two weeks earlier } else { $starttime = $endtime - NOTIFICATION_INTERVALLE_JOUR * 24 * 3600; // n days earlier } $cron_timestamp = referentiel_get_cron_timestamp(); if (!empty($cron_timestamp)) { if (REFERENTIEL_DEBUG) { $starttime = min($starttime, $cron_timestamp - 60); } else { $starttime = max($starttime, $cron_timestamp - 60); } } $scales_list = ''; // for items with a scaleid // users $users = array(); $users_list = ''; // JF // DEBUG mtrace("\nDEBUT CRON OBJECTIFS."); mtrace("\nSTART TIME : " . date("Y/m/d H:i:s", $starttime) . " END TIME : " . date("Y/m/d H:i:s", $endtime)); $notations = referentiel_get_outcomes($starttime, $endtime); //$notations=referentiel_get_outcomes_old($endtime); if ($notations) { foreach ($notations as $notation) { if ($notation) { if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 102 :: USERID " . $notation->userid . " ; COURSEID " . $notation->courseid . "\nNOTATION :\n"); print_r($notation); } if (!empty($notation->scaleid) && !preg_match("/ " . $notation->scaleid . "\\,/", $scales_list)) { $scales_list .= " {$notation->scaleid},"; } if (!empty($notation->userid) && !empty($notation->courseid)) { if (!preg_match("/ " . $notation->userid . "\\,/", $users_list)) { $users_list .= " {$notation->userid},"; $user = new Object(); $user->userid = $notation->userid; $user->courses = array(); $user->course_list = ''; $users[$notation->userid] = $user; } if (!preg_match("/ " . $notation->courseid . "\\,/", $users[$notation->userid]->course_list)) { $users[$notation->userid]->course_list .= " {$notation->courseid},"; $course = new Object(); $course->courseid = $notation->courseid; $course->referentiel_list = ''; $course->referentiels = array(); $users[$notation->userid]->courses[$notation->courseid] = $course; } if (!preg_match("/ " . $notation->referentiel_instanceid . "\\,/", $users[$notation->userid]->courses[$notation->courseid]->referentiel_list)) { $users[$notation->userid]->courses[$notation->courseid]->referentiel_list = " {$notation->referentiel_instanceid},"; $referentiel = new object(); $referentiel->referentiel_instanceid = $notation->referentiel_instanceid; $referentiel->ref_referentiel = $notation->ref_referentiel; $referentiel->module_list = ''; $referentiel->modules = array(); // $referentiel->referentiels[$notation->referentiel_instanceid]->outcome_list = ''; $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid] = $referentiel; } if (empty($users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->module_list) || !preg_match("/ " . $notation->module . ":" . $notation->moduleinstance . "\\,/", $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->module_list)) { $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->module_list .= " {$notation->module}:{$notation->moduleinstance},"; $module = new object(); $module->modulename = $notation->module; $module->moduleinstance = $notation->moduleinstance; $module->teacherid = $notation->teacherid; // MODIF JF 2012/01/31 $module->outcome_list = ''; $module->scaleid_list = ''; $module->timemodified_list = ''; $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->modules[$notation->moduleinstance] = $module; } if (!empty($users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->modules[$notation->moduleinstance])) { // les notes if ($notation->outcomeshortname != '') { $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->modules[$notation->moduleinstance]->outcome_list .= " {$notation->outcomeshortname}:{$notation->finalgrade},"; $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->modules[$notation->moduleinstance]->scaleid_list .= " {$notation->scaleid},"; $users[$notation->userid]->courses[$notation->courseid]->referentiels[$notation->referentiel_instanceid]->modules[$notation->moduleinstance]->timemodified_list .= " {$notation->timemodified},"; } } } } } } if (!empty($users)) { // DEBUG if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 171 :: USERS \n"); print_r($users); } foreach ($users as $user) { if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 178 :: USER \n"); print_r($user); } foreach ($user->courses as $course) { // echo "<br />COURSE_ID $course->courseid; \n"; foreach ($course->referentiels as $referentiel) { // echo "<br />REFERENTIEL_INSTANCE $referentiel->referentiel_instanceid; REFERENTIEL_ID $referentiel->ref_referentiel\n"; // MODIF JF 2013/08/05 // bareme $threshold = -1; if ($CFG->referentiel_use_scale) { if ($bareme = referentiel_get_bareme_occurrence($referentiel->ref_referentiel)) { $threshold = $bareme->threshold; } } foreach ($referentiel->modules as $module) { // echo "<br />MODULE $module->modulename ; Instance $module->moduleinstance ; \n"; // preparer l'enregistrement // DEBUG // echo "<br />DEBUG :: 180 ; MODULE : $module->modulename, INSTANCE : $module->moduleinstance, COURS : $course->courseid\n"; if ($module && !empty($module->modulename) && !empty($module->moduleinstance) && !empty($course->courseid)) { $m = referentiel_get_module_info($module->modulename, $module->moduleinstance, $course->courseid); /* // module $m->id; $m->type=$modulename; $m->instance=$moduleinstance; $m->course=$courseid; $m->date=$cm->added; $m->userdate=userdate($cm->added); $m->ref_activite=$mid; $m->name=$mname; $m->description=$mdescription; $m->link=$mlink; */ // DEBUG if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 184 :: MODULE \n"); print_r($m); } $activite = new Object(); $activite->type_activite = '[' . get_string('outcome_type', 'referentiel') . ' ' . get_string('modulename', $m->type) . ' ' . $m->ref_activite . '] ' . get_string('outcome_date', 'referentiel') . ' ' . $m->userdate; $activite->description_activite = get_string('outcome_description', 'referentiel', $m); $activite->competences_activite = ''; $activite->commentaire_activite = ''; $activite->bareme_activite = ''; $activite->ref_instance = $referentiel->referentiel_instanceid; $activite->ref_referentiel = $referentiel->ref_referentiel; $activite->ref_course = $course->courseid; $activite->userid = $user->userid; $activite->teacherid = $module->teacherid; // MODIF JF 2013/02/04 $activite->date_creation = $m->date; $activite->date_modif_student = 0; $activite->date_modif = $m->date; $activite->approved = 1; // approuve par defaut $activite->ref_task = 0; // DEBUG /* if (OUTCOMES_SUPER_DEBUG){ mtrace("DEBUG :: grade/cron_outcomes.php Line 181 :: TIMEMODIFIED_LIST $module->timemodified_list\n"); } */ $t_datemodif = explode(',', $module->timemodified_list); sort($t_datemodif); $imax = count($t_datemodif) - 1; $timemodified = $t_datemodif[$imax]; if ($timemodified > $activite->date_creation) { //$activite->date_modif_student=$timemodified; $activite->date_modif = $timemodified; } // echo "<br />SCALE_LIST $module->scaleid_list\n"; $t_scales = explode(',', $module->scaleid_list); // echo "<br />OUTCOME_LIST $module->outcome_list\n"; $t_outcomes = explode(',', $module->outcome_list); $n = count($t_outcomes); if ($n > 0) { $i = 0; if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 264"); } $liste_bareme_activite = ''; while ($i < $n) { if ($t_outcomes[$i] != '') { list($cle, $val) = explode(':', $t_outcomes[$i]); $cle = trim($cle); $val = trim($val); $scaleid = $t_scales[$i]; if (OUTCOMES_SUPER_DEBUG) { mtrace("\nCODE : {$cle} ; VALEUR : {$val} ;"); } if ($threshold == -1) { $scale = referentiel_get_scale($scaleid); if ($val >= $scale->grademax) { // pas de bareme $activite->competences_activite .= $cle . '/'; if (OUTCOMES_SUPER_DEBUG) { mtrace(" ---> VALIDE \n"); } } } else { if ($val > $threshold) { // baremes $activite->competences_activite .= $cle . '/'; if (OUTCOMES_SUPER_DEBUG) { mtrace(" ---> VALIDE \n"); } } } $liste_bareme_activite .= $cle . ':' . (int) $val . '/'; } $i++; } } } // MODIF JF 2014/02/05 // completer avec des informations obtenues dans l'activite $mdata = NULL; if ($m && $m->type == 'assign') { $mdata = referentiel_get_assign($m, $user->userid); if (!empty($mdata)) { // DEBUG if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 226 :: MODULE \n"); print_r($mdata); } } } // enregistrer l'activite // DEBUG if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 313 ; ACTIVITE\n"); print_r($activite); } if (referentiel_activite_outcomes($activite, $m, $liste_bareme_activite, $mdata)) { if (OUTCOMES_SUPER_DEBUG) { mtrace("\nDEBUG :: grade/cron_outcomes.php Line 265\n-----------------\nACTIVITE ENREGISTREE\n"); } $n_activites++; } } } } } } // echo "<br />\n"; mtrace($n_activites . ' ACTIVITES CREES OU MODIFIEES.'); mtrace('FIN CRON REFERENTIEL OBJECTIFS.'); }
/** * Given an object containing all the necessary data, * this function will display these data * * @param object $notation * @return null **/ function referentiel_affiche_module_activite($notation) { global $DB; global $CFG; //print_r($notation); //echo "<br />\n"; if (!empty($notation) && !empty($notation->module) && !empty($notation->moduleinstance) && !empty($notation->courseid)) { $course_instance = $DB->get_record('course', array('id' => $notation->courseid)); if ($course_instance) { if (!$course_instance->visible) { $link_course = "<a class=\"dimmed\" href=\"{$CFG->wwwroot}/course/view.php?id={$course_instance->id}\">{$course_instance->shortname}</a>"; } else { $link_course = "<a href=\"{$CFG->wwwroot}/course/view.php?id={$course_instance->id}\">{$course_instance->shortname}</a>"; } } else { $link_course = get_string('nondefini', 'referentiel'); } $module = referentiel_get_module_info($notation->module, $notation->moduleinstance, $notation->courseid); echo '<li><b>' . get_string('occurrence', 'referentiel') . '</b> : #' . $notation->ref_referentiel . ' ' . $notation->code_referentiel . ' <b>' . get_string('course') . '</b> : ' . $link_course . ' <b>' . get_string('module', 'referentiel') . ' ' . get_string('modulename', $notation->module); echo ' #' . $notation->moduleinstance; echo '</b> <b>' . get_string('date_creation', 'referentiel') . '</b> ' . $module->userdate; echo ' <br /> <b>' . get_string('titre', 'referentiel') . '</b> : <a href="' . $module->link . '">' . $module->name . '</a>' . ' <b>' . get_string('description', 'referentiel') . '</b> :<i>' . $module->description . '</i></li> ' . "\n"; } }