예제 #1
0
/**
 * Given an object containing all the necessary data,
 * this function will create a new activity and return the id number
 *
 * @param object $activite: a special referentiel_activite object
 * @param object $m a secial module object
 * @return int The id of the newly inserted record
 **/
function referentiel_activite_outcomes($activite, $m, $liste_bareme_evaluations = '', $mdata = NULL)
{
    // creation / mise a jour activite par objectif
    global $CFG;
    global $DB;
    $activite_id = 0;
    if (OUTCOMES_SUPER_DEBUG) {
        // DEBUG
        mtrace("\nDEBUG :: referentiel_activite_outcomes :: 715\nDEMANDE MISE A JOUR\n");
        print_r($activite);
        mtrace("\n");
        print_r($m);
        mtrace("\n " . $liste_bareme_evaluations);
        mtrace("\n");
    }
    $activite->type_activite = addslashes($activite->type_activite);
    $activite->mailnow = 0;
    $activite->mailed = 1;
    // ne pas notifier.
    /*
      $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;
    */
    // cette activite est-elle enregistree ?
    $params = array("ref_instance" => "{$activite->ref_instance}", "ref_referentiel" => "{$activite->ref_referentiel}", "ref_course" => "{$activite->ref_course}", "userid" => "{$activite->userid}", "type" => "{$m->type}", "moduleid" => "{$m->id}", "ref_activite" => "{$m->ref_activite}");
    $sql = "SELECT * FROM {referentiel_activite_modules}\n  WHERE ref_instance=:ref_instance\n  AND ref_referentiel=:ref_referentiel AND ref_course=:ref_course\n  AND userid=:userid\n  AND type=:type\n  AND moduleid=:moduleid\n  AND ref_activite=:ref_activite ";
    if (OUTCOMES_SUPER_DEBUG) {
        mtrace("\nVERIF table referentiel_activite_modules\n");
        print_r($params);
        mtrace("\nSQL:\n{$sql}\n");
    }
    $r_activite_outcomes = $DB->get_record_sql($sql, $params);
    if ($r_activite_outcomes) {
        if (OUTCOMES_SUPER_DEBUG) {
            // DEBUG
            mtrace("\nDEBUG :: referentiel_activite_outcomes :: 761\n**** Activité déjà enregistrée *** \n");
            print_r($r_activite_outcomes);
            mtrace("\n");
        }
        // cet utilisateur est deja reference pour cette activite
        $activite_old = $DB->get_record("referentiel_activite", array("id" => "{$r_activite_outcomes->activiteid}"));
        if ($activite_old) {
            if (OUTCOMES_SUPER_DEBUG) {
                // DEBUG
                mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 772\nOLD\n");
                print_r($activite_old);
                mtrace("\n");
            }
            // Verifier
            /*
            	$mdata->submission='';
            		    	$mdata->comment=array();
                			$mdata->feedback='';
            		    	$mdata->file=array();
                            $mdata->link=array();
            */
            if (!empty($mdata)) {
                if (!empty($mdata->submission)) {
                    if (!strpos($mdata->submission, $activite_old->description_activite)) {
                        $activite->description_activite .= "\n" . get_string('submission', 'referentiel') . ' ' . $mdata->submission;
                    }
                }
                if (!empty($mdata->comment)) {
                    foreach ($mdata->comment as $acomment) {
                        if (!strpos($acomment, $activite_old->description_activite)) {
                            $activite->description_activite .= "\n" . $acomment;
                        }
                    }
                }
                if (!empty($mdata->feedback)) {
                    if (!empty($activite_old->commentaire_activite)) {
                        if (!strpos($mdata->feedback, $activite_old->commentaire_activite)) {
                            $activite->commentaire_activite .= "\n" . $mdata->feedback;
                        }
                    } else {
                        $activite->commentaire_activite .= $mdata->feedback;
                    }
                }
            }
            $activite->description_activite = addslashes($activite->description_activite);
            $activite->commentaire_activite = addslashes($activite->commentaire_activite);
            // fusionner l'activite
            $activite->id = $activite_old->id;
            $activite->date_modif_student = $activite_old->date_modif_student;
            if (!$activite->date_modif) {
                $activite->date_modif = time();
            }
            // $activite->approved=$activite_old->approved;
            $activite->approved = 1;
            if (empty($activite_old->date_modif) || $activite_old->date_modif < $activite->date_modif) {
                // DEBUG
                // print_object($activite);
                // echo "<br />";
                if ($DB->update_record("referentiel_activite", $activite)) {
                    referentiel_mise_a_jour_competences_certificat_user($activite_old->competences_activite, $activite->competences_activite, $activite->userid, $activite->ref_referentiel, $activite->approved, true, $activite->approved);
                    $activite_id = $activite->id;
                    // Bareme
                    if ($CFG->referentiel_use_scale && !empty($liste_bareme_evaluations)) {
                        if (OUTCOMES_SUPER_DEBUG) {
                            // DEBUG
                            mtrace("\nLINE 802 :: BAREME :: {$liste_bareme_evaluations}");
                        }
                        referentiel_enregistrer_ce_bareme_activite($liste_bareme_evaluations, referentiel_get_liste_codes_competence($activite->ref_referentiel), $activite_id, referentiel_get_bareme_id_occurrence($activite->ref_referentiel));
                    }
                    if (!empty($mdata)) {
                        if (!empty($mdata->link)) {
                            // Portland version of assign mahara plugin
                            foreach ($mdata->link as $alink) {
                                if (!empty($alink)) {
                                    if (OUTCOMES_SUPER_DEBUG) {
                                        // DEBUG
                                        mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 1129 :: link DOCUMENT \n");
                                        print_r($alink);
                                    }
                                    $url = addslashes(referentiel_get_mahara_link($alink));
                                    if (!($document_old = $DB->get_record("referentiel_document", array("url_document" => $url, "ref_activite" => $activite_id)))) {
                                        $document = new object();
                                        $document->url_document = $url;
                                        $document->type_document = addslashes(substr(get_string('mahara', 'referentiel'), 0, 20));
                                        $document->description_document = get_string('mahara', 'referentiel');
                                        $document->ref_activite = $activite_id;
                                        $document->cible_document = 1;
                                        $document->etiquette_document = addslashes($alink->title);
                                        // DEBUG
                                        // print_r($document);
                                        // echo "<br />";
                                        $document_id = $DB->insert_record("referentiel_document", $document);
                                        // echo "DOCUMENT ID / $document_id<br />";
                                    }
                                }
                            }
                        }
                        if (!empty($mdata->file)) {
                            foreach ($mdata->file as $afile) {
                                if (!empty($afile) && $afile->filename != '.' && $afile->filesize > 0) {
                                    if (OUTCOMES_SUPER_DEBUG) {
                                        // DEBUG
                                        mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 1104 :: FILE DOCUMENT \n");
                                        print_r($afile);
                                    }
                                    $url = addslashes(referentiel_url_file($afile));
                                    if (!($document_old = $DB->get_record("referentiel_document", array("url_document" => $url, "ref_activite" => $activite_id)))) {
                                        $document = new object();
                                        $document->url_document = $url;
                                        $document->type_document = addslashes(substr(get_string('document', 'referentiel'), 0, 20));
                                        $document->description_document = get_string('assignementdoc', 'referentiel');
                                        $document->ref_activite = $activite_id;
                                        $document->cible_document = 1;
                                        $document->etiquette_document = addslashes($afile->filename);
                                        // DEBUG
                                        // print_r($document);
                                        // echo "<br />";
                                        $document_id = $DB->insert_record("referentiel_document", $document);
                                        // echo "DOCUMENT ID / $document_id<br />";
                                    }
                                }
                            }
                        }
                    }
                    return true;
                }
            }
        } else {
            // Cette activite a ete supprimee
            // Supprimer la ligne qui n'a plus de correspondance dans les activites
            $DB->delete_records("referentiel_activite_modules", array("id" => "{$r_activite_outcomes->id}"));
        }
    } else {
        if (OUTCOMES_SUPER_DEBUG) {
            // DEBUG
            mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 786 :: NEW ACTIVITY\n");
            print_r($activite);
            mtrace("\n");
        }
        /*
        $mdata->submission='';
            	$mdata->comment=array();
            	$mdata->feedback='';
            	$mdata->file=array();
        */
        if (!empty($mdata)) {
            if (!empty($mdata->submission)) {
                $activite->description_activite .= "\n" . get_string('submission', 'referentiel') . ' ' . $mdata->submission;
            }
            if (!empty($mdata->comment)) {
                foreach ($mdata->comment as $acomment) {
                    $activite->description_activite .= "\n" . $acomment;
                }
            }
            if (!empty($mdata->feedback)) {
                $activite->commentaire_activite .= $mdata->feedback;
            }
        }
        $activite->description_activite = addslashes($activite->description_activite);
        $activite->commentaire_activite = addslashes($activite->commentaire_activite);
        // inserer l'activité
        $activite_id = referentiel_insert_activite_controlee($activite);
        //if 	(($activite_id>0) && ($activite->competences_activite!='')){
        if ($activite_id > 0) {
            // mise a jour du certificat
            referentiel_mise_a_jour_competences_certificat_user('', $activite->competences_activite, $activite->userid, $activite->ref_referentiel, $activite->approved, true, false);
            // Bareme
            if ($CFG->referentiel_use_scale && !empty($liste_bareme_evaluations)) {
                if (OUTCOMES_SUPER_DEBUG) {
                    // DEBUG
                    mtrace("\nLINE 838 :: BAREME :: {$liste_bareme_evaluations}");
                }
                referentiel_enregistrer_ce_bareme_activite($liste_bareme_evaluations, referentiel_get_liste_codes_competence($activite->ref_referentiel), $activite_id, referentiel_get_bareme_id_occurrence($activite->ref_referentiel));
            }
        } else {
            // inutile de créer cette activité car aucune compétence n'est validée
            if (OUTCOMES_SUPER_DEBUG) {
                // DEBUG
                mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 848 :: \nINSERTION INUTILE CETTE ACTIVITE \n");
                print_r($activite);
                mtrace("\n");
            }
        }
        // Rajouter le lien
        if (isset($activite_id) && $activite_id > 0 && (isset($m->link) && !empty($m->link) || isset($m->name) && !empty($m->description))) {
            $document = new object();
            $document->url_document = $m->link;
            $document->type_document = addslashes(substr(get_string('modulename', $m->type), 0, 20));
            $document->description_document = get_string('assignementdoc', 'referentiel');
            // addslashes($m->description);
            $document->ref_activite = $activite_id;
            $document->cible_document = 1;
            $document->etiquette_document = addslashes($m->name);
            $document_id = $DB->insert_record("referentiel_document", $document);
        }
        if (!empty($mdata)) {
            if (!empty($mdata->link)) {
                // portland version of assign mahara plugin
                foreach ($mdata->link as $alink) {
                    if (!empty($alink)) {
                        if (OUTCOMES_SUPER_DEBUG) {
                            // DEBUG
                            mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 1263 :: link DOCUMENT \n");
                            print_r($alink);
                        }
                        $document = new object();
                        $document->url_document = addslashes(referentiel_get_mahara_link($alink));
                        $document->type_document = addslashes(substr(get_string('mahara', 'referentiel'), 0, 20));
                        $document->description_document = get_string('mahara', 'referentiel');
                        // addslashes($m->description);
                        $document->ref_activite = $activite_id;
                        $document->cible_document = 1;
                        $document->etiquette_document = addslashes($alink->title);
                        $document_id = $DB->insert_record("referentiel_document", $document);
                    }
                }
            }
            if (!empty($mdata->file)) {
                foreach ($mdata->file as $afile) {
                    if (!empty($afile) && $afile->filename != '.' && $afile->filesize > 0) {
                        if (OUTCOMES_SUPER_DEBUG) {
                            // DEBUG
                            mtrace("\nDEBUG :: grade/cron_outcomes/referentiel_activite_outcomes :: 1216 :: FILE DOCUMENT \n");
                            print_r($afile);
                        }
                        $document = new object();
                        $document->url_document = addslashes(referentiel_url_file($afile));
                        $document->type_document = addslashes(substr(get_string('document', 'referentiel'), 0, 20));
                        $document->description_document = get_string('assignementdoc', 'referentiel');
                        // addslashes($m->description);
                        $document->ref_activite = $activite_id;
                        $document->cible_document = 1;
                        $document->etiquette_document = addslashes($afile->filename);
                        $document_id = $DB->insert_record("referentiel_document", $document);
                    }
                }
            }
        }
        //
        if (isset($activite_id) && $activite_id > 0) {
            //
            $r_a_outcomes = new object();
            $r_a_outcomes->activiteid = $activite_id;
            $r_a_outcomes->ref_course = $activite->ref_course;
            $r_a_outcomes->ref_instance = $activite->ref_instance;
            $r_a_outcomes->ref_referentiel = $activite->ref_referentiel;
            $r_a_outcomes->userid = $activite->userid;
            $r_a_outcomes->type = $m->type;
            $r_a_outcomes->moduleid = $m->id;
            $r_a_outcomes->ref_activite = $m->ref_activite;
            $DB->insert_record("referentiel_activite_modules", $r_a_outcomes);
            return true;
        }
    }
    return false;
}
예제 #2
0
                $approvedrecord->mailnow = $mailnow;
                if ($mailnow == '1') {
                    // renvoyer
                    $approvedrecord->mailed = 0;
                    // annuler envoi precedent
                }
            } else {
                $approvedrecord->mailnow = 0;
            }
            if ($DB->update_record('referentiel_activite', $approvedrecord)) {
                if ($approvedrecord->userid > 0 && $approvedrecord->competences_activite != '') {
                    // mise a jour du certificat
                    if ($approvedrecord->approved) {
                        referentiel_mise_a_jour_competences_certificat_user('', $approvedrecord->competences_activite, $approvedrecord->userid, $approvedrecord->ref_referentiel, $approvedrecord->approved, false, true);
                    } else {
                        referentiel_mise_a_jour_competences_certificat_user($approvedrecord->competences_activite, '', $approvedrecord->userid, $approvedrecord->ref_referentiel, $approvedrecord->approved, false, true);
                    }
                }
            }
        }
        unset($form);
        // Relancer l'affichage de toutes les activites de l'utilisateur
        // en supprimant id de l'activite commentee
        $activite_id = 0;
        if (isset($old_mode) && $old_mode != '') {
            $mode = $old_mode;
        }
    }
}
if (!empty($referentiel) && !empty($course) && isset($form)) {
    /// modification globale
예제 #3
0
function referentiel_update_activity($form)
{
    // MAJ activite + document;
    global $USER;
    global $DB;
    $ok = true;
    // DEBUG
    //echo "<br />locallib 492 :: UPDATE ACTIVITY<br />\n";
    //print_object($form);
    //echo "<br />";
    if (isset($form->action) && $form->action == "modifier_activite") {
        //echo "<br />OK1";
        // recuperer l'ancien enregistrement pour les mises à jour du certificat
        $old_liste_competences = '';
        if ($form->activite_id) {
            $record_activite = referentiel_get_activite($form->activite_id);
            if ($record_activite) {
                $old_liste_competences = $record_activite->competences_activite;
            }
        }
        if ($old_liste_competences == '' && isset($form->old_liste_competences)) {
            $old_liste_competences = $form->old_liste_competences;
        }
        // activite
        $activite = new stdClass();
        $activite->id = $form->activite_id;
        $activite->type_activite = $form->type_activite;
        // Modif jf 2013/12/11
        $cf = 'code_item_' . $form->activite_id;
        //echo '<br/>'.$cf;
        if (isset($form->{$cf}) && is_array($form->{$cf})) {
            //print_r ($form->$cf);
            //exit;
            $activite->competences_activite = reference_conversion_code_2_liste_competence('/', $form->{$cf});
        } else {
            if (isset($form->code_item) && is_array($form->code_item)) {
                $activite->competences_activite = reference_conversion_code_2_liste_competence('/', $form->code_item);
            } else {
                if (isset($form->competences_activite)) {
                    $activite->competences_activite = $form->competences_activite;
                } else {
                    $activite->competences_activite = '';
                }
            }
        }
        $activite->description_activite = $form->description_activite;
        $activite->commentaire_activite = $form->commentaire_activite;
        $activite->ref_instance = $form->instance;
        $activite->ref_referentiel = $form->ref_referentiel;
        $activite->ref_course = $form->courseid;
        $activite->date_creation = $form->date_creation;
        $activite->approved = $form->approved;
        $activite->userid = $form->userid;
        $activite->teacherid = $form->teacherid;
        $ladate = time();
        // MODIF JF 2009/10/27
        if ($USER->id == $activite->userid) {
            $activite->date_modif_student = $ladate;
            $activite->date_modif = $form->date_modif;
            $activite->teacherid = $form->teacherid;
        } else {
            $activite->date_modif = $ladate;
            $activite->date_modif_student = $form->date_modif_student;
            $activite->teacherid = $USER->id;
        }
        // MODIF JF 2010/02/11
        if (isset($form->mailnow)) {
            $activite->mailnow = $form->mailnow;
            if ($form->mailnow == '1') {
                // renvoyer
                $activite->mailed = 0;
                // annuler envoi precedent
            }
        } else {
            $activite->mailnow = 0;
        }
        // DEBUG
        //print_object($activite);
        //echo "<br />";
        //exit;
        $ok = $ok && $DB->update_record("referentiel_activite", $activite);
        //echo "DEBUG :: locallib.php :: 572 :: ACTIVITE ID / $activite->id<br />";
        // MODIF JF 2009/09/21
        // mise a zero du certificat associe a cette personne pour ce referentiel
        // referentiel_certificat_user_invalider($activite->userid, $activite->ref_referentiel);
        // referentiel_regenere_certificat_user($activite->userid, $activite->ref_referentiel);
        if ($ok && $activite->userid > 0) {
            // mise a jour du certificat
            referentiel_mise_a_jour_competences_certificat_user($old_liste_competences, $activite->competences_activite, $activite->userid, $activite->ref_referentiel, $activite->approved, true, $activite->approved);
        }
    } else {
        if (isset($form->action) && $form->action == "modifier_document") {
            $document = new stdClass();
            $document->id = $form->document_id;
            $document->url_document = $form->url_document;
            $document->type_document = substr($form->type_document, 0, 20);
            $document->description_document = $form->description_document;
            $document->ref_activite = $form->ref_activite;
            if (isset($form->cible_document)) {
                $document->cible_document = $form->cible_document;
            } else {
                $document->cible_document = 1;
            }
            if (isset($form->etiquette_document)) {
                $document->etiquette_document = $form->etiquette_document;
            } else {
                $document->etiquette_document = '';
            }
            // Modif JF 2013/02/02
            $document->timestamp = time();
            // DEBUG
            // print_object($document);
            // echo "<br />";
            $ok = $ok && $DB->update_record("referentiel_document", $document);
            if ($ok) {
                $activite = $DB->get_record('referentiel_activite', array('id' => $document->ref_activite));
                if ($activite) {
                    if ($USER->id == $activite->userid) {
                        $ok = $DB->set_field('referentiel_activite', 'date_modif_student', time(), array('id' => $activite->id));
                    } else {
                        $ok = $DB->set_field('referentiel_activite', 'date_modif', time(), array('id' => $activite->id));
                    }
                }
            }
            // exit;
        } else {
            if (isset($form->action) && $form->action == "creer_document") {
                $document = new stdClass();
                $document->url_document = $form->url_document;
                $document->type_document = substr($form->type_document, 0, 20);
                $document->description_document = $form->description_document;
                $document->ref_activite = $form->ref_activite;
                if (isset($form->cible_document)) {
                    $document->cible_document = $form->cible_document;
                } else {
                    $document->cible_document = 1;
                }
                if (isset($form->etiquette_document)) {
                    $document->etiquette_document = $form->etiquette_document;
                } else {
                    $document->etiquette_document = '';
                }
                // Modif JF 2013/02/02
                $document->timestamp = time();
                // DEBUG
                // print_object($document);
                // echo "<br />";
                $ok = $DB->insert_record("referentiel_document", $document);
                // echo "DOCUMENT ID / $ok<br />";
                if ($ok) {
                    $activite = $DB->get_record('referentiel_activite', array('id' => $document->ref_activite));
                    if ($activite) {
                        if ($USER->id == $activite->userid) {
                            $ok = $DB->set_field('referentiel_activite', 'date_modif_student', time(), array('id' => $activite->id));
                        } else {
                            $ok = $DB->set_field('referentiel_activite', 'date_modif', time(), array('id' => $activite->id));
                        }
                    }
                }
            }
        }
    }
    return $ok;
}
예제 #4
0
/**
 * Given an activity id,
 * this function will permanently delete the activite instance
 * and any document that depends on it.
 *
 * @param object $id
 * @return boolean Success/Failure
 **/
function referentiel_delete_activity_record($id)
{
    // suppression activite + documents associes
    global $DB;
    $ok_activite = false;
    if (isset($id) && $id > 0) {
        if ($activite = $DB->get_record("referentiel_activite", array("id" => "{$id}"))) {
            // Delete any dependent records here
            // Si c'est une activite - tache il faut aussi supprimer les liens vers cette tache
            if (isset($activite->ref_task) && $activite->ref_task > 0 && isset($activite->userid) && $activite->userid > 0) {
                $params = array("taskid" => "{$activite->ref_task}", "userid" => "{$activite->userid}");
                $sql = "SELECT * FROM {referentiel_a_user_task} WHERE ref_task=:taskid AND ref_user=:userid";
                $a_t_records = $DB->get_records_sql($sql, $params);
                if ($a_t_records) {
                    foreach ($a_t_records as $a_t_record) {
                        // suppression
                        referentiel_delete_a_user_task_record($a_t_record->id);
                    }
                }
            }
            // Si c'est une activite de type devoir il faut aussi supprimer les liens vers cette activite
            if (!empty($activite->id)) {
                $params = array("activiteid" => $activite->id);
                $sql = "SELECT * FROM {referentiel_activite_modules} WHERE activiteid=:activiteid";
                $a_m_records = $DB->get_records_sql($sql, $params);
                if ($a_m_records) {
                    foreach ($a_m_records as $a_m_record) {
                        // suppression
                        $DB->delete_records("referentiel_activite_modules", array("id" => $a_m_record->id));
                    }
                }
            }
            // Si il ya un bareme il faut aussi supprimer les liens vers bareme
            if (!empty($activite->id)) {
                $params = array("activiteid" => $activite->id);
                $sql = "SELECT * FROM {referentiel_activite_scale} WHERE activiteid=:activiteid";
                $a_b_records = $DB->get_records_sql($sql, $params);
                if ($a_b_records) {
                    foreach ($a_b_records as $a_b_record) {
                        // suppression
                        $DB->delete_records("referentiel_activite_scale", array("id" => $a_b_record->id));
                    }
                }
            }
            $ok_document = true;
            if ($documents = $DB->get_records("referentiel_document", array("ref_activite" => "{$id}"))) {
                // DEBUG
                // print_object($documents);
                // echo "<br />";
                // suppression des documents associes dans la table referentiel_document
                foreach ($documents as $document) {
                    // suppression
                    $ok_document = $ok_document && referentiel_delete_document_record($document->id);
                }
            }
            // suppression activite
            if ($ok_document) {
                $ok_activite = $DB->delete_records("referentiel_activite", array("id" => "{$id}"));
                if ($ok_activite && isset($activite->userid) && $activite->userid > 0 && isset($activite->competences_activite) && $activite->competences_activite != '') {
                    // mise a jour du certificat
                    referentiel_mise_a_jour_competences_certificat_user($activite->competences_activite, '', $activite->userid, $activite->ref_referentiel, $activite->approved, true, true);
                }
            }
        }
    }
    return $ok_activite;
}