Пример #1
0
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;
}
Пример #2
0
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);
    }
}
Пример #3
0
                     }
                 }
             }
         }
     }
     //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 {