/** * 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; }
$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
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; }
/** * 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; }