/** * @param array referentiel array from xml tree * @return object import_referentiel object * modifie la base de donnees */ function import_pedagogies($xmlpedagos) { global $DB; // recupere le tableau de lignes // selon les parametres soit cree une nouvelle instance // soit modifie une instance courante de la table referentiel_a_user_scol // get some error strings $error_message = ''; // importer les pedagos $index = 0; $nbpedagos = 0; // compteur foreach ($xmlpedagos as $pedago) { // PEDAGOS // echo "<br />\n"; // print_r($pedago); $index++; // $id=$this->getpath( $pedago, array('#','id',0,'#'), '', false, ''); $login = $this->getpath($pedago, array('#', 'username', 0, '#'), '', false, ''); $firstname = $this->getpath($pedago, array('#', 'firstname', 0, '#', 'text', 0, '#'), '', true, ''); $lastname = $this->getpath($pedago, array('#', 'lastname', 0, '#', 'text', 0, '#'), '', true, ''); $date_cloture = $this->getpath($pedago, array('#', 'date_cloture', 0, '#', 'text', 0, '#'), '', false, ''); $promotion = $this->getpath($pedago, array('#', 'promotion', 0, '#', 'text', 0, '#'), '', false, ''); $formation = $this->getpath($pedago, array('#', 'formation', 0, '#', 'text', 0, '#'), '', true, ''); $pedagogie = $this->getpath($pedago, array('#', 'pedagogie', 0, '#', 'text', 0, '#'), '', true, ''); $composante = $this->getpath($pedago, array('#', 'composante', 0, '#', 'text', 0, '#'), '', true, ''); $num_groupe = $this->getpath($pedago, array('#', 'num_groupe', 0, '#', 'text', 0, '#'), '', true, ''); $commentaire = $this->getpath($pedago, array('#', 'commentaire', 0, '#', 'text', 0, '#'), '', true, ''); $code_referentiel = $this->getpath($pedago, array('#', 'code_referentiel', 0, '#', 'text', 0, '#'), '', true, ''); // rechercher la formation if (!empty($formation) && !empty($pedagogie) && !empty($composante)) { $import_pedago = new stdClass(); $import_pedago->date_cloture = $date_cloture; $import_pedago->promotion = addslashes($promotion); $import_pedago->formation = addslashes($formation); $import_pedago->pedagogie = addslashes($pedagogie); $import_pedago->composante = addslashes($composante); $import_pedago->num_groupe = addslashes($num_groupe); $import_pedago->commentaire = addslashes($commentaire); $userid = 0; if ($login != '') { $userid = referentiel_get_userid_by_login($login); } if ($userid) { // this routine initialises the import object $import_association = new stdClass(); $import_association->userid = $userid; // $tref=referentiel_get_infos_from_code_ref($code_referentiel); // probablement vide $import_association->refrefid = $this->ref_referentiel; } // verification dans la base $trouve_pedago = 0; $creerasso = 0; // insertion association necessaire if ($userid) { $rec_assos = referentiel_get_a_user_pedago($userid, $this->ref_referentiel); if ($rec_assos) { // un enregistrement existe $creerasso = 1; // un enregistrement existe : update necessaire foreach ($rec_assos as $rec_asso) { if ($rec_asso) { $import_association->id = $rec_asso->id; $rec_pedago = referentiel_get_pedagogie($rec_asso->refpedago); if ($rec_pedago && !$trouve_pedago) { // sinon pas utile de chercher plus loin if ($rec_pedago->num_groupe == $num_groupe && $rec_pedago->promotion == $promotion && $rec_pedago->formation == $formation && $rec_pedago->pedagogie == $pedagogie && $rec_pedago->composante == $composante) { // deja connu $trouve_pedago = $rec_pedago->id; $creerasso = 2; // rien a faire pour l'association } } } } } } else { // MODIF JF 2013/05/23 // il faut probablement ajouter cet utilisateur à Moodle, mais comment faire ? // A tout le moins signaler la difficulté $error_message .= '<br/>' . get_string('user_unknown', 'referentiel', $login . ' ' . $firstname . ' ' . $lastname); } if (!$trouve_pedago) { // verifier si une pedagogie identique existe $rec_pedago = referentiel_get_id_pedago_from_data($num_groupe, $date_cloture, $promotion, $formation, $pedagogie, $composante); if ($rec_pedago) { $trouve_pedago = $rec_pedago->id; } } if (!$trouve_pedago) { // enregistrer pedagogie $trouve_pedago = $DB->insert_record("referentiel_pedagogie", $import_pedago); } if ($trouve_pedago) { // mettre a jour association si necessaire // faut-il mettre quelque chose à jour ? $rec_pedago = referentiel_get_pedagogie($trouve_pedago); if (!empty($commentaire) && $commentaire != $rec_pedago->commentaire) { $rec_pedago->commentaire = $commentaire; referentiel_update_pedagogie_record($rec_pedago); } if (!empty($date_cloture) && $date_cloture != $rec_pedago->date_cloture) { $rec_pedago->date_cloture = $date_cloture; referentiel_update_pedagogie_record($rec_pedago); } if ($userid) { $import_association->refpedago = $trouve_pedago; if ($creerasso == 1) { // update $DB->update_record("referentiel_a_user_pedagogie", $import_association); } elseif ($creerasso == 0) { // insertion $id_asso = $DB->insert_record("referentiel_a_user_pedagogie", $import_association); } } } } } if (!empty($error_message)) { echo '<div class="error">'; echo get_string('import_pedagogie_error', 'referentiel') . "\n"; echo $error_message . "\n"; echo '</div>' . "\n"; } return true; }
function referentiel_pedagogie_selection($course_id, $referentiel_instance_id, $referentiel_referentiel_id, $records, $context, $appli, $mode, $list_pedagoids, $select_acc, $select_all, $sql_filtre_where = '', $data = NULL) { // $s = ""; $pedagos_list = ''; $l_pedagos = array(); $s_pedagos = array(); $t_pedagos = array(); $r_howmany = array(); $r_pedagos = array(); $nb_pedagos = 0; $nb_certificats = 0; if (!empty($list_pedagoids)) { $l_pedagos = explode(',', $list_pedagoids); } if ($records) { foreach ($records as $record) { // liste d'id users // DEBUG //echo "<br />Debug :: lib_pedagogie.php :: 1015 ::<br />\n"; //print_object($record); $r_howmany[] = $record->howmany; $nb_certificats += $record->howmany; $arec = referentiel_get_pedagogie($record->refpedago, $sql_filtre_where); if ($arec) { $r_pedagos[] = $arec; // marquer if ($l_pedagos && referentiel_trouve_dans_tableau($record->refpedago, $l_pedagos)) { $s_pedagos[] = 1; } else { $s_pedagos[] = 0; } } } } $s .= '<div align="center">' . "\n"; $s .= '<h4>' . get_string('aide_selection_pedago', 'referentiel') . '</h4>' . "\n"; if ($r_pedagos) { for ($i = 0; $i < count($r_pedagos); $i++) { // liste d'id pedagos if ($r_pedagos[$i]->id) { $t_pedagos[] = $r_pedagos[$i]->id; } } $pedagos_list = implode(',', $t_pedagos); $nb_pedagos = count($t_pedagos); } // entete avec filtrage des criteres de selection $s .= referentiel_entete_pedagogie_filtre($referentiel_referentiel_id, $appli, $data, $mode); // formulaire de selection des pedagogies $s .= '<form name="form" method="post" action="' . $appli . '?d=' . $referentiel_instance_id . '&action=selectpedagogie&mode=' . $mode . '">' . "\n"; $s .= '<div align="center">' . "\n"; $s .= '<input type="button" name="select_tous_pedagogies" id="select_tous_pedagogies" value="' . get_string('select_all', 'referentiel') . '" onClick="return checkall()" />' . "\n"; $s .= '<input type="button" name="select_aucun_pedagogie" id="select_aucun_pedagogie" value="' . get_string('select_not_any', 'referentiel') . '" onClick="return uncheckall()" />' . "\n"; $s .= '</div>' . "\n"; if ($r_pedagos) { for ($i = 0; $i < count($r_pedagos); $i++) { $s .= '<tr valign="top">'; if ($s_pedagos[$i] == true) { $s .= '<th with="5%"><input type="checkbox" name="t_pedago[]" id="t_pedago[]" value="' . $r_pedagos[$i]->id . '" checked="checked" /></th>' . "\n"; } else { $s .= '<th with="5%"><input type="checkbox" name="t_pedago[]" id="t_pedago[]" value="' . $r_pedagos[$i]->id . '" /></th>' . "\n"; } $s .= '<td with="10%">' . $r_pedagos[$i]->promotion . '</td>'; $s .= '<td with="10%">' . $r_pedagos[$i]->formation . '</td>'; $s .= '<td with="10%">' . $r_pedagos[$i]->pedagogie . '</td>'; $s .= '<td with="10%">' . $r_pedagos[$i]->composante . '</td>'; $s .= '<td with="10%">' . $r_pedagos[$i]->num_groupe . '</td>'; $s .= '<td with="10%">' . $r_pedagos[$i]->date_cloture . '</td>'; $s .= '<td with="30%">' . $r_pedagos[$i]->commentaire . '</td>'; $s .= '<td with="5%">' . $r_howmany[$i] . '</td>'; $s .= "</tr>\n"; } } $s .= "<tr valign='top'><th colspan='10'>\n"; $s .= '<input type="submit" value="' . get_string('savechanges') . '" />' . "\n"; $s .= '<input type="reset" value="' . get_string('corriger', 'referentiel') . '" />' . "\n"; $s .= '<input type="submit" name="cancel" value="' . get_string('quit', 'referentiel') . '" />' . "\n"; $s .= ' <input type="hidden" name="pedagos_list" value="' . $pedagos_list . '" /> <!-- These hidden variables are always the same --> <input type="hidden" name="course" value="' . $course_id . '" /> <input type="hidden" name="sesskey" value="' . sesskey() . '" /> <input type="hidden" name="mode" value="' . $mode . '" /> <input type="hidden" name="select_acc" value="' . $select_acc . '" /> <input type="hidden" name="select_all" value="2" />' . "\n"; if ($data) { $s .= '<input type="hidden" name="f_promotion" value="' . $data->f_promotion . '" /> <input type="hidden" name="f_formation" value="' . $data->f_formation . '" /> <input type="hidden" name="f_pedagogie" value="' . $data->f_pedagogie . '" /> <input type="hidden" name="f_composante" value="' . $data->f_composante . '" /> <input type="hidden" name="f_num_groupe" value="' . $data->f_num_groupe . '" /> ' . "\n"; } $s .= '</th></tr>'; $s .= '</table>' . "\n"; $s .= '</form>' . "\n"; $s .= '</div>' . "\n"; return $s; }
} // Moodle 2 $url->param('mode', $mode); // Valable pour Moodle 2.1 et Moodle 2.2 //if ($CFG->version < 2011120100) { $context = context_module::instance($cm->id); //} else { // $context = context_module::instance($cm); //} if (!empty($userid)) { // id pedago $record = referentiel_get_pedagogie_user($userid, $referentiel->id); } if (!empty($pedago_id)) { // id pedago if (!($record = referentiel_get_pedagogie($pedago_id))) { print_error('pedago id is incorrect'); } } require_login($course->id, false, $cm); // pas d'autologin guest if (!isloggedin() or isguestuser()) { redirect($CFG->wwwroot . '/mod/referentiel/view.php?id=' . $cm->id . '&non_redirection=1'); } /// If it's hidden then it's don't show anything. :) /// Some capability checks. if (empty($cm->visible) && (!has_capability('moodle/course:viewhiddenactivities', $context) && !has_capability('mod/referentiel:managecomments', $context))) { print_error(get_string("activityiscurrentlyhidden"), 'error', "{$CFG->wwwroot}/course/view.php?id={$course->id}"); } if ($userid) { // So do you have access?
/** * @param array referentiel array from xml tree * @return object import_referentiel object * modifie la base de donnees */ function import_pedagogies($lines) { // recupere le tableau de lignes // selon les parametres soit cree une nouvelle instance // soit modifie une instance courante de la table referentiel_a_user_scol global $SESSION; global $USER; global $CFG; global $DB; // initialiser les variables $date_creation = ""; $in_pedago = false; // drapeau // get some error strings $error_noname = get_string('xmlimportnoname', 'referentiel'); $error_nocode = get_string('xmlimportnocode', 'referentiel'); $error_override = get_string('overriderisk', 'referentiel'); $error_message = ''; // DEBUT // Decodage $line = 0; // TRAITER LA LIGNE D'ENTETE $nbl = count($lines); if ($nbl > 0) { // premiere ligne entete fichier csv // echo "<br />$line : ".$lines[$line]."\n"; //"#Moodle Referentiel pedagos CSV Export;latin1;Y:2009m:06d:11\n" $fields = explode($this->sep, str_replace("\r", "", $lines[$line])); $line++; if (substr($lines[$line], 0, 1) == '#') { // labels /// If a line is incorrectly formatted if (count($fields) < 3) { if (count($fields) > 1 or strlen($fields[0]) > 1) { // no error for blank lines $this->error("ERROR " . $lines[$line] . ": Line " . $line . "incorrectly formatted - ignoring\n"); } } if (isset($fields[1]) && $fields[1] != "") { $this->table_caractere_input = trim($fields[1]); } $date_creation = trim($fields[2]); } } else { $this->error("ERROR : CSV File incorrect\n"); } if ($nbl > 1) { // deuxieme ligne // echo "<br />$line : ".$lines[$line]."\n"; while ($line < $nbl) { // data : referentiel $fields = explode($this->sep, str_replace("\r", "", $lines[$line])); /// If a line is incorrectly formatted if (count($fields) < 3) { if (count($fields) > 1 or strlen($fields[0]) > 1) { // no error for blank lines $this->error("ERROR " . $lines[$line] . ": Line " . $line . "incorrectly formatted"); } } else { if (substr($lines[$line], 0, 1) == '#') { // labels // $id;$username;".$this->output_codage_caractere(referentiel_get_user_prenom($record->userid)).";".$this->output_codage_caractere(referentiel_get_user_nom($record->userid)).";$num_groupe;$date_cloture;$promotion;$formation;$pedagogie;$composante;$refrefid\n"; // #username;firstname;lastname;num_groupe;date_cloture;promotion;formation;pedagogie;composante;referentiel; $l_username = trim($fields[0]); $l_firstname = trim($fields[1]); $l_lastname = trim($fields[2]); $l_date_cloture = trim($fields[3]); $l_promotion = trim($fields[4]); $l_formation = trim($fields[5]); $l_pedagogie = trim($fields[6]); $l_composante = trim($fields[7]); if (!empty($fields[8])) { $l_num_groupe = trim($fields[8]); } else { $l_num_groupe = ''; } if (!empty($fields[9])) { $l_commentaire = trim($fields[9]); } else { $l_commentaire = ''; } if (!empty($fields[10])) { $l_referentiel = trim($fields[10]); } else { $l_referentiel = ''; } } else { $login = $this->input_codage_caractere(trim($fields[0])); // username $firstname = $this->input_codage_caractere(trim($fields[1])); $lastname = $this->input_codage_caractere(trim($fields[2])); if (!empty($fields[3])) { $date_cloture = $this->input_codage_caractere(trim($fields[3])); } else { $date_cloture = ''; } if (!empty($fields[4])) { $promotion = $this->input_codage_caractere(trim($fields[4])); } else { $promotion = ''; } if (!empty($fields[5])) { $formation = $this->input_codage_caractere(trim($fields[5])); } else { $formation = ''; } if (!empty($fields[6])) { $pedagogie = $this->input_codage_caractere(trim($fields[6])); } else { $pedagogie = ''; } if (!empty($fields[7])) { $composante = $this->input_codage_caractere(trim($fields[7])); } else { $composante = ''; } if (!empty($fields[8])) { $num_groupe = $this->input_codage_caractere(trim($fields[8])); } else { $num_groupe = ''; } if (!empty($fields[9])) { $commentaire = $this->input_codage_caractere(trim($fields[9])); } else { $commentaire = ''; } if (!empty($fields[10])) { $code_referentiel = $this->input_codage_caractere(trim($fields[10])); } else { $code_referentiel = ''; } // rechercher la formation if (!empty($formation) && !empty($pedagogie) && !empty($composante)) { $import_pedago = new stdClass(); $import_pedago->promotion = addslashes($promotion); $import_pedago->num_groupe = addslashes($num_groupe); $import_pedago->date_cloture = $date_cloture; $import_pedago->formation = addslashes($formation); $import_pedago->pedagogie = addslashes($pedagogie); $import_pedago->composante = addslashes($composante); $import_pedago->commentaire = addslashes($commentaire); $userid = 0; if ($login != '') { $userid = referentiel_get_userid_by_login($login); } if ($userid) { // this routine initialises the import object $import_association = new stdClass(); $import_association->userid = $userid; // $tref=referentiel_get_infos_from_code_ref($code_referentiel); // probablement vide $import_association->refrefid = $this->ref_referentiel; } // verification dans la base $trouve_pedago = 0; $creerasso = 0; // insertion association necessaire if ($userid) { $rec_assos = referentiel_get_a_user_pedago($userid, $this->ref_referentiel); if ($rec_assos) { // un enregistrement existe $creerasso = 1; // un enregistrement existe : update necessaire foreach ($rec_assos as $rec_asso) { if ($rec_asso) { $import_association->id = $rec_asso->id; $rec_pedago = referentiel_get_pedagogie($rec_asso->refpedago); if ($rec_pedago && !$trouve_pedago) { // sinon pas utile de chercher plus loin if ($rec_pedago->num_groupe == $num_groupe && $rec_pedago->promotion == $promotion && $rec_pedago->formation == $formation && $rec_pedago->pedagogie == $pedagogie && $rec_pedago->composante == $composante) { // deja connu $trouve_pedago = $rec_pedago->id; $creerasso = 2; // rien a faire pour l'association } } } } } } else { // MODIF JF 2013/05/23 // il faut probablement ajouter cet utilisateur à Moodle, mais comment faire ? // A tout le moins signaler la difficulté $error_message .= '<br/>' . get_string('user_unknown', 'referentiel', $login . ' ' . $firstname . ' ' . $lastname); } if (!$trouve_pedago) { // verifier si une pedagogie identique existe $rec_pedago = referentiel_get_id_pedago_from_data($num_groupe, $date_cloture, $promotion, $formation, $pedagogie, $composante); if ($rec_pedago) { $trouve_pedago = $rec_pedago->id; } } if (!$trouve_pedago) { // enregistrer pedagogie $trouve_pedago = $DB->insert_record("referentiel_pedagogie", $import_pedago); } if ($trouve_pedago) { // mettre a jour association si necessaire // faut-il mettre quelque chose à jour ? $rec_pedago = referentiel_get_pedagogie($trouve_pedago); if (!empty($commentaire) && $commentaire != $rec_pedago->commentaire) { $rec_pedago->commentaire = $commentaire; referentiel_update_pedagogie_record($rec_pedago); } if (!empty($date_cloture) && $date_cloture != $rec_pedago->date_cloture) { $rec_pedago->date_cloture = $date_cloture; referentiel_update_pedagogie_record($rec_pedago); } if ($userid) { $import_association->refpedago = $trouve_pedago; if ($creerasso == 1) { // update $DB->update_record("referentiel_a_user_pedagogie", $import_association); } elseif ($creerasso == 0) { // insertion $id_asso = $DB->insert_record("referentiel_a_user_pedagogie", $import_association); } } } } } } $line++; } } if (!empty($error_message)) { echo '<div class="error">'; echo get_string('import_pedagogie_error', 'referentiel') . "\n"; echo $error_message . "\n"; echo '</div>' . "\n"; } return true; }