function referentiel_association_user_task($ref_user, $ref_task, $referent_id = 0, $mailnow = 0, $force = false) { // associe une tache à un utilisateur // cree l'activite a partir de l'association global $DB; global $CFG; global $USER; $activite_id = 0; if ($ref_task && $ref_user) { // verifier si association existe $params1 = array("ref_task" => "{$ref_task}", "ref_user" => "{$ref_user}"); $sql1 = "SELECT * FROM {referentiel_a_user_task} WHERE ref_user=:ref_user AND ref_task=:ref_task "; $record_association = $DB->get_record_sql($sql1, $params1); if (!$record_association) { // Recuperer les info de la tache $t_record = $DB->get_record("referentiel_task", array("id" => "{$ref_task}")); if ($t_record) { // Creer l'activite $activite = new stdClass(); $activite->type_activite = '[' . get_string('task', 'referentiel') . ' ' . $ref_task . '] ' . $t_record->type_task; $activite->competences_activite = $t_record->competences_task; $activite->description_activite = '[' . get_string('consigne_task', 'referentiel') . ' (<i>' . referentiel_get_user_info($t_record->auteurid) . '</i>) : ' . $t_record->description_task . ']'; $activite->commentaire_activite = $t_record->criteres_evaluation; $activite->ref_instance = $t_record->ref_instance; $activite->ref_referentiel = $t_record->ref_referentiel; $activite->ref_course = $t_record->ref_course; $ladate = time(); $activite->date_creation = $ladate; if ($force) { // souscription realisee par le referent $activite->date_creation = $ladate; $activite->date_modif_student = 0; // notification envoyee à l'etudiant $activite->date_modif = $ladate; // prioritaire pour l'etudiant } else { $activite->date_creation = $ladate; $activite->date_modif_student = $ladate; $activite->date_modif = $ladate + 100; // notification envoyee à l'enseignant mais pas d'affichage prioritaire } $activite->approved = 0; $activite->userid = $ref_user; if (empty($referent_id)) { $activite->teacherid = $t_record->auteurid; } else { $activite->teacherid = $referent_id; } $activite->ref_task = $ref_task; $activite->mailed = 1; //pour empêcher une notification intempestive if (isset($mailnow)) { $activite->mailnow = $mailnow; if ($mailnow == 1) { $activite->mailed = 0; // forcer l'envoi } } else { $activite->mailnow = 0; } $activite_id = $DB->insert_record("referentiel_activite", $activite); //echo "<br />DEBUG :: lib_atsk.php :: 769 :: ACTIVITE $activite_id\n"; if ($activite_id) { referentiel_regenere_certificat_user($activite->userid, $activite->ref_referentiel); $record_association = new stdClass(); $record_association->ref_user = $ref_user; $record_association->ref_task = $ref_task; $record_association->ref_activite = $activite_id; $record_association->date_selection = time(); $id_a = $DB->insert_record("referentiel_a_user_task", $record_association); //echo "<br />DEBUG :: lib_task.php :: 777 :: AVANT de BAREME\n"; // Traiter le bareme if ($CFG->referentiel_use_scale) { require_once 'lib_bareme.php'; if ($rec_assoc = referentiel_get_assoc_bareme_occurrence($activite->ref_referentiel)) { // DEBUG //echo "<br />ASSOC BAREME<br />\n"; //print_object($rec_assoc); //echo "<br />\n"; // DEBUG if ($bareme = referentiel_get_bareme($rec_assoc->refscaleid)) { $liste_evaluations = ''; //echo "<br />BAREME<br />\n"; //print_object($bareme); //echo "<br />\n"; $tcompetences = explode("/", $activite->competences_activite); if ($bareme->threshold > 0) { $value = $bareme->threshold - 1; } else { $value = 0; } foreach ($tcompetences as $comp) { if ($comp) { $liste_evaluations .= $comp . ':' . $value . '/'; } } //echo "<br />DEBUG :: lib_task.php :: 804 :: LISTE $liste_evaluations<br />\n"; $id_eval = referentiel_enregistrer_evaluation_activite($liste_evaluations, $activite_id, $bareme->id); //echo "<br />INSERTION $id_eval<br />\n"; } } } } } } } return $activite_id; }
function referentiel_enregistrer_ce_bareme_activite($liste_bareme_evaluations, $liste_codes_competences, $activite_id, $bareme_id) { $liste_evaluations = ''; if (OUTCOMES_SUPER_DEBUG) { // DEBUG mtrace("\nLigne 1055 Bareme '" . $liste_bareme_evaluations . "'"); mtrace("\n Codes '" . $liste_codes_competences . "'"); } if ($liste_bareme_evaluations) { $liste_a_comparer = trim(strtr($liste_bareme_evaluations, '.', '_')); $titem = explode('/', $liste_codes_competences); if ($titem) { foreach ($titem as $item) { if (!empty($item)) { if (OUTCOMES_SUPER_DEBUG) { // DEBUG mtrace("\n ITEM '" . $item . "'"); } $code_search = strtr($item, '.', '_'); if ($sub = mb_stristr($liste_a_comparer, $code_search)) { // mtrace("\n SUB '".$sub."'"); $deb = mb_strpos($sub, ':'); $fin = mb_strpos($sub, '/'); $len = $fin - $deb - 1; //mtrace("\n DEB '".$deb."' FIN '".$fin."' LEN '".$len."'"); $val = mb_substr($sub, $deb + 1, $len); $val--; if (OUTCOMES_SUPER_DEBUG) { // DEBUG mtrace("\n VAL '" . $val . "'"); } $liste_evaluations .= $item . ":" . $val . "/"; } else { $liste_evaluations .= $item . ":-1/"; } } } } if (OUTCOMES_SUPER_DEBUG) { // DEBUG mtrace("\n Liste Items '" . $liste_codes_competences . "' "); mtrace("\n Liste bareme '" . $liste_evaluations . "' "); } referentiel_enregistrer_evaluation_activite($liste_evaluations, $activite_id, $bareme_id); } }
} } } } } //if (!empty($liste_evaluations)) { // DEBUG // echo "<br />DEBUG : activite.php :: 525 <br />LISTE_BAREME $liste_evaluations<br />\n"; // exit; // enregistrer les evaluations require_once 'lib_bareme.php'; //if (!empty($form3['competencesbareme'])) { // echo "<br />DEBUG : activite.php :: 530 <br />COMPETENCES_BAREME ".$form3['competencesbareme']."<br />\n"; //} //exit; referentiel_enregistrer_evaluation_activite($liste_evaluations, $activite_id, $form3['baremeid']); //} } $return = $updatefunction($form); if (!$return) { print_error("Could not update activity {$form->id} of the referentiel", 'error', "activite.php?d={$referentiel->id}"); } if (is_string($return)) { print_error($return, "activite.php?d={$referentiel->id}"); } if ($CFG->version > 2014051200) { // Moodle 2.7+ $params = array('contextid' => $context->id, 'objectid' => $form->activite_id); $event = \mod_referentiel\event\activite_updated::create($params); $event->trigger(); } else {