$id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0; $id_ent = isset($_POST['f_id_ent']) ? Clean::texte($_POST['f_id_ent']) : ''; $id_gepi = isset($_POST['f_id_gepi']) ? Clean::texte($_POST['f_id_gepi']) : ''; $sconet_id = isset($_POST['f_sconet_id']) ? Clean::entier($_POST['f_sconet_id']) : 0; $reference = isset($_POST['f_reference']) ? Clean::ref($_POST['f_reference']) : ''; $profil = isset($_POST['f_profil']) ? Clean::texte($_POST['f_profil']) : ''; $genre = isset($_POST['f_genre']) ? Clean::texte($_POST['f_genre']) : ''; $nom = isset($_POST['f_nom']) ? Clean::nom($_POST['f_nom']) : ''; $prenom = isset($_POST['f_prenom']) ? Clean::prenom($_POST['f_prenom']) : ''; $login = isset($_POST['f_login']) ? Clean::login($_POST['f_login']) : ''; $password = isset($_POST['f_password']) ? Clean::password($_POST['f_password']) : ''; $sortie_date = isset($_POST['f_sortie_date']) ? Clean::date_fr($_POST['f_sortie_date']) : ''; $box_login = isset($_POST['box_login']) ? Clean::entier($_POST['box_login']) : 0; $box_password = isset($_POST['box_password']) ? Clean::entier($_POST['box_password']) : 0; $box_date = isset($_POST['box_date']) ? Clean::entier($_POST['box_date']) : 0; $courriel = isset($_POST['f_courriel']) ? Clean::courriel($_POST['f_courriel']) : ''; // //////////////////////////////////////////////////////////////////////////////////////////////////// // Ajouter un nouveau personnel // //////////////////////////////////////////////////////////////////////////////////////////////////// if ($action == 'ajouter' && $profil && isset(Html::$tab_genre['adulte'][$genre]) && $nom && $prenom && ($box_login || $login) && ($box_password || $password) && ($box_date || $sortie_date)) { // Vérifier le profil if (!isset($_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil]) || !in_array($_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil], array('professeur', 'directeur'))) { exit('Erreur : profil incorrect !'); } // Vérifier que l'identifiant ENT est disponible (parmi tous les utilisateurs de l'établissement) if ($id_ent) { if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('id_ent', $id_ent)) { exit('Erreur : identifiant ENT déjà utilisé !'); } } // Vérifier que l'identifiant GEPI est disponible (parmi tous les utilisateurs de l'établissement)
/**************************************************************************************************** * Récupérer les adresses mails des personnels et les affectations aux classes / groupes. ****************************************************************************************************/ $tab_annuaire = Laclasse::get_info_from_annuaire( $WS_uai , 'users' , TRUE /*exit_if_error*/ , TRUE /*with_details*/ ); if(!empty($tab_annuaire['data'])) { foreach($tab_annuaire['data'] as $tab_infos) { $user_id = Clean::entier($tab_infos['id']); // Cas d'un personnel : on ajoute login et email if(isset($tab_personnels[$user_id])) { $tab_personnels[$user_id]['login'] = Clean::lower($tab_infos['login']); $tab_personnels[$user_id]['email'] = Clean::courriel($tab_infos['emails'][0]['adresse']); // Cas d'un prof : on ajoute classes et groupes if( ($tab_personnels[$user_id]['profil']=='ENS') && (!empty($tab_infos['enseigne_regroupements'])) ) { foreach($tab_infos['enseigne_regroupements'] as $tab_infos_groupe) { // Il y a des profs sur plusieurs établissements... if($tab_infos_groupe['etablissement_code_uai']==$WS_uai) { $groupe_id = Clean::entier($tab_infos_groupe['id']); if( ($tab_infos_groupe['type']=='CLS') && (isset($tab_classes[$groupe_id])) ) { $tab_personnels[$user_id]['classes'][] = $groupe_id; } else if( ($tab_infos_groupe['type']=='GRP') && (isset($tab_groupes[$groupe_id])) ) {
$nb_lignes_trouvees = 0; $tab_erreur = array('info' => array('nb' => 0, 'txt' => ' manquant d\'informations !'), 'geo' => array('nb' => 0, 'txt' => ' avec identifiant géographique incorrect !'), 'uai' => array('nb' => 0, 'txt' => ' avec UAI déjà présent ou en double ou incorrect !'), 'mail' => array('nb' => 0, 'txt' => ' avec adresse de courriel incorrecte !'), 'date' => array('nb' => 0, 'txt' => ' avec date d\'inscription incorrecte !'), 'fichier' => array('nb' => 0, 'txt' => ' avec nom de fichier de sauvegarde incorrect !'), 'id' => array('nb' => 0, 'txt' => ' avec identifiant de base déjà utilisé ou en double !')); foreach ($tab_lignes as $ligne_contenu) { $tab_elements = str_getcsv($ligne_contenu, $separateur); $tab_elements = array_slice($tab_elements, 0, 11); if (count($tab_elements) == 11) { $nb_lignes_trouvees++; list($export_id, $import_id, $geo_id, $localisation, $denomination, $uai, $contact_nom, $contact_prenom, $contact_courriel, $date, $fichier_nom) = $tab_elements; $import_id = Clean::entier($import_id); $geo_id = Clean::entier($geo_id); $localisation = Clean::texte($localisation); $denomination = Clean::texte($denomination); $uai = Clean::uai($uai); $contact_nom = Clean::nom($contact_nom); $contact_prenom = Clean::prenom($contact_prenom); $contact_courriel = Clean::courriel($contact_courriel); $_SESSION['tab_info'][$nb_lignes_trouvees] = array('import_id' => $import_id, 'geo_id' => $geo_id, 'localisation' => $localisation, 'denomination' => $denomination, 'uai' => $uai, 'contact_nom' => $contact_nom, 'contact_prenom' => $contact_prenom, 'contact_courriel' => $contact_courriel, 'date' => $date, 'fichier_nom' => $fichier_nom); // Vérifier la présence des informations if (!$geo_id || !$localisation || !$denomination || !$contact_nom || !$contact_prenom || !$contact_courriel || !$date || !$fichier_nom) { $tab_erreur['info']['nb']++; } // Vérifier que l'id géographique est correct if (!isset($tab_geo[$geo_id])) { $tab_erreur['geo']['nb']++; } // Vérifier que le n°UAI est disponible if ($uai) { if (!tester_UAI($uai) || isset($tab_nouvel_uai[$uai]) || DB_WEBMESTRE_WEBMESTRE::DB_tester_structure_UAI($uai)) { $tab_erreur['uai']['nb']++; } $tab_nouvel_uai[$uai] = TRUE;
*/ if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} $action = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : ''; $acces = (isset($_POST['f_acces'])) ? Clean::texte($_POST['f_acces']) : ''; $check = (isset($_POST['f_check'])) ? Clean::entier($_POST['f_check']) : 0; $base_id = (isset($_POST['f_base_id'])) ? Clean::entier($_POST['f_base_id']) : 0; $listing_base_id = (isset($_POST['f_listing_id'])) ? $_POST['f_listing_id'] : ''; $geo_id = (isset($_POST['f_geo'])) ? Clean::entier($_POST['f_geo']) : 0; $localisation = (isset($_POST['f_localisation'])) ? Clean::texte($_POST['f_localisation']) : ''; $denomination = (isset($_POST['f_denomination'])) ? Clean::texte($_POST['f_denomination']) : ''; $uai = (isset($_POST['f_uai'])) ? Clean::uai($_POST['f_uai']) : ''; $contact_nom = (isset($_POST['f_contact_nom'])) ? Clean::nom($_POST['f_contact_nom']) : ''; $contact_prenom = (isset($_POST['f_contact_prenom'])) ? Clean::prenom($_POST['f_contact_prenom']) : ''; $contact_courriel = (isset($_POST['f_contact_courriel'])) ? Clean::courriel($_POST['f_contact_courriel']) : ''; $courriel_envoi = (isset($_POST['f_courriel_envoi'])) ? Clean::entier($_POST['f_courriel_envoi']) : 0; $courriel_copie = (isset($_POST['f_courriel_copie'])) ? Clean::entier($_POST['f_courriel_copie']) : 0; $date_fr = (isset($_POST['f_date_fr'])) ? Clean::date_fr($_POST['f_date_fr']) : '' ; $admin_id = (isset($_POST['f_admin_id'])) ? Clean::entier($_POST['f_admin_id']) : 0; // On récupère les zones géographiques pour 2 raisons : // => vérifier que l'identifiant transmis est cohérent // => pouvoir retourner la cellule correspondante du tableau if( ($action!='supprimer') && ($action!='lister_admin') && ($action!='initialiser_mdp') ) { $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_zones(); foreach($DB_TAB as $DB_ROW) { $tab_geo[$DB_ROW['geo_id']] = array( 'ordre'=>$DB_ROW['geo_ordre'] , 'nom'=>$DB_ROW['geo_nom'] ); }
foreach ($DB_TAB as $DB_ROW) { $tab_eleves_actuels[$DB_ROW['user_id']] = $DB_ROW['user_nom'] . ' ' . $DB_ROW['user_prenom']; $tab_responsabilites[$DB_ROW['user_id']] = 0; } // // On passe les utilisateurs en revue : on mémorise leurs infos, les adresses trouvées, les enfants trouvés // $tab_genre = array('' => 'I', 'M.' => 'M', 'MME' => 'F', 'Mlle' => 'F'); $tab_adresses_uniques = array(); foreach ($tab_lignes as $ligne_contenu) { $tab_elements = str_getcsv($ligne_contenu, $separateur); if (count($tab_elements) > $numero_max) { $genre = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I'; $nom = Clean::nom($tab_elements[$tab_numero_colonne['nom']]); $prenom = Clean::prenom($tab_elements[$tab_numero_colonne['prenom']]); $courriel = Clean::courriel($tab_elements[$tab_numero_colonne['courriel']]); $adresse = Clean::adresse($tab_elements[$tab_numero_colonne['adresse']]); $codepostal = Clean::codepostal($tab_elements[$tab_numero_colonne['codepostal']]); $commune = Clean::commune($tab_elements[$tab_numero_colonne['commune']]); $pays = Clean::pays($tab_elements[$tab_numero_colonne['pays']]); if ($nom != '' && $prenom != '') { $tab_enfants = array(); for ($num_enfant = 0; $num_enfant < $nb_enfants_maxi; $num_enfant++) { if (!isset($tab_elements[$tab_numero_colonne['enfant_nom'][$num_enfant]]) || !isset($tab_elements[$tab_numero_colonne['enfant_prenom'][$num_enfant]])) { break; } $enfant_nom = Clean::nom($tab_elements[$tab_numero_colonne['enfant_nom'][$num_enfant]]); $enfant_prenom = Clean::prenom($tab_elements[$tab_numero_colonne['enfant_prenom'][$num_enfant]]); $enfant_id = array_search($enfant_nom . ' ' . $enfant_prenom, $tab_eleves_actuels); if ($enfant_id) { $tab_responsabilites[$enfant_id]++;
} else { $DB_TAB = DB_STRUCTURE_PUBLIC::DB_lister_parametres('"webmestre_denomination"'); if(!empty($DB_TAB)) { $structure_denomination = $DB_TAB[0]['parametre_valeur']; } else { exit_error( 'Base incomplète' /*titre*/ , 'Base de l\'établissement incomplète ou non encore installée !' /*contenu*/ ); } } // Récupération d'une éventuelle adresse mail de qqun qui signalerait un envoi anormal $courriel = (isset($_GET['courriel'])) ? Clean::courriel($_GET['courriel']) : '' ; $message = ''; if($courriel) { $message .= 'Bonjour,'."\r\n"; $message .= 'J\'ai reçu à mon adresse '.$courriel.' un courriel en provenance de votre instance SACoche alors que je ne n\'ai pas de compte sur ce logiciel.'."\r\n"; $message .= 'Sans doute la conséquence une adresse erronée dans votre base d\'utilisateurs ?'."\r\n"; $message .= 'Merci d\'y regarder et me tenir au courant.'."\r\n"; $message .= 'Cordialement.'."\r\n"; } // Protection contre les robots (pour éviter des envois intempestifs de courriels) list($html_imgs,$captcha_soluce) = captcha(); $_SESSION['TMP']['CAPTCHA'] = array( 'TIME' => $_SERVER['REQUEST_TIME'] ,
* soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure. * * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. * Consultez la Licence Publique Générale GNU Affero pour plus de détails. * * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');} if($_SESSION['SESAMATH_ID']==ID_DEMO) {exit('Action désactivée pour la démo...');} $action = (isset($_POST['f_action'])) ? Clean::texte($_POST['f_action']) : ''; $courriel = (isset($_POST['f_courriel'])) ? Clean::courriel($_POST['f_courriel']) : NULL; // //////////////////////////////////////////////////////////////////////////////////////////////////// // Mettre à jour son adresse e-mail (éventuellement vide pour la retirer) // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='courriel') && ($courriel!==NULL) ) { // Vérifier que l'utilisateur a les droits de la modifier / retirer if( ($_SESSION['USER_EMAIL_ORIGINE']=='admin') && ($_SESSION['USER_PROFIL_TYPE']!=='administrateur') && !test_user_droit_specifique($_SESSION['DROIT_MODIFIER_EMAIL']) ) { exit_json( FALSE , 'Erreur : droit insuffisant, contactez un administrateur !' ); } // Vérifier le domaine du serveur mail seulement en mode multi-structures car ce peut être sinon une installation sur un serveur local non ouvert sur l'extérieur. if($courriel) {
Clean::pays($tab_elements[$tab_numero_colonne['pays_1']]) , ); $nb_lien_responsabilite++; $tab_adresses_uniques[ implode('#',$tab_users_fichier['adresse'][$sconet_num_resp1]) ] = TRUE; } $sconet_num_resp2 = ( $tab_elements[$tab_numero_colonne['sconet_num_2']] && ($tab_elements[$tab_numero_colonne['sconet_num_2']]!='Non saisi') ) ? Clean::entier($tab_elements[$tab_numero_colonne['sconet_num_2']]) : NULL ; if($sconet_num_resp2) { $tab_users_fichier['sconet_id' ][$sconet_num_resp2] = 0; $tab_users_fichier['sconet_num' ][$sconet_num_resp2] = $sconet_num_resp2; $tab_users_fichier['reference' ][$sconet_num_resp2] = ''; $tab_users_fichier['profil_sigle'][$sconet_num_resp2] = 'TUT' ; $tab_users_fichier['genre' ][$sconet_num_resp2] = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre_2']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre_2']]] : 'I' ; $tab_users_fichier['nom' ][$sconet_num_resp2] = Clean::nom($tab_elements[$tab_numero_colonne['nom_2']]); $tab_users_fichier['prenom' ][$sconet_num_resp2] = Clean::prenom($tab_elements[$tab_numero_colonne['prenom_2']]); $tab_users_fichier['courriel' ][$sconet_num_resp2] = Clean::courriel($tab_elements[$tab_numero_colonne['courriel_2']]); $tab_users_fichier['enfant' ][$sconet_num_resp2][$tab_eleves_actuels[$sconet_num_eleve]] = 2; $tab_users_fichier['adresse' ][$sconet_num_resp2] = array( Clean::adresse($tab_elements[$tab_numero_colonne['adresse_ligne1_2']]) , Clean::adresse($tab_elements[$tab_numero_colonne['adresse_ligne2_2']]) , Clean::adresse($tab_elements[$tab_numero_colonne['adresse_ligne3_2']]) , '' , Clean::commune($tab_elements[$tab_numero_colonne['code_postal_2']]) , // pas un nombre entier à l'étranger Clean::commune($tab_elements[$tab_numero_colonne['commune_2']]) , Clean::pays($tab_elements[$tab_numero_colonne['pays_2']]) , ); $nb_lien_responsabilite++; $tab_adresses_uniques[ implode('#',$tab_users_fichier['adresse'][$sconet_num_resp2]) ] = TRUE; // Correctif pour obtenir la vraie valeur de "commune_2" $tab_users_fichier['adresse'][$sconet_num_resp2][5] = mb_substr( $tab_users_fichier['adresse'][$sconet_num_resp2][5] , mb_strlen($tab_users_fichier['adresse'][$sconet_num_resp2][4])+1 ); }