/** * ajouter_comptes_associes * * @param string $user_liste (sans les ',' aux extrémités) * @return int */ public static function DB_ajouter_comptes_associes($user_liste) { $DB_SQL = 'INSERT INTO sacoche_user_switch( user_switch_liste) '; $DB_SQL .= 'VALUES (:user_switch_liste)'; $DB_VAR = array(':user_switch_liste' => ',' . $user_liste . ','); DB::query(SACOCHE_STRUCTURE_BD_NAME, $DB_SQL, $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * DB_STRUCTURE_importer_arborescence_from_XML * Importer dans la base l'arborescence d'un référentiel à partir d'un XML récupéré sur le serveur communautaire. * Remarque : les ordres des domaines / thèmes / items ne sont pas dans le XML car il sont générés par leur position dans l'arborescence * * @param string $arbreXML * @param int $matiere_id * @param int $niveau_id * @return void */ function DB_STRUCTURE_importer_arborescence_from_XML($arbreXML,$matiere_id,$niveau_id) { // décortiquer l'arbre XML $xml = new DOMDocument; $xml -> loadXML($arbreXML); // On passe en revue les domaines... $domaine_liste = $xml -> getElementsByTagName('domaine'); $domaine_nb = $domaine_liste -> length; for($domaine_ordre=0; $domaine_ordre<$domaine_nb; $domaine_ordre++) { $domaine_xml = $domaine_liste -> item($domaine_ordre); $domaine_ref = $domaine_xml -> getAttribute('ref'); $domaine_nom = $domaine_xml -> getAttribute('nom'); $DB_SQL = 'INSERT INTO sacoche_referentiel_domaine(matiere_id,niveau_id,domaine_ordre,domaine_ref,domaine_nom) '; $DB_SQL.= 'VALUES(:matiere_id,:niveau_id,:ordre,:ref,:nom)'; $DB_VAR = array(':matiere_id'=>$matiere_id,':niveau_id'=>$niveau_id,':ordre'=>$domaine_ordre+1,':ref'=>$domaine_ref,':nom'=>$domaine_nom); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); $domaine_id = DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); // On passe en revue les thèmes du domaine... $theme_liste = $domaine_xml -> getElementsByTagName('theme'); $theme_nb = $theme_liste -> length; for($theme_ordre=0; $theme_ordre<$theme_nb; $theme_ordre++) { $theme_xml = $theme_liste -> item($theme_ordre); $theme_nom = $theme_xml -> getAttribute('nom'); $DB_SQL = 'INSERT INTO sacoche_referentiel_theme(domaine_id,theme_ordre,theme_nom) '; $DB_SQL.= 'VALUES(:domaine_id,:ordre,:nom)'; $DB_VAR = array(':domaine_id'=>$domaine_id,':ordre'=>$theme_ordre+1,':nom'=>$theme_nom); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); $theme_id = DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); // On passe en revue les items du thème... $item_liste = $theme_xml -> getElementsByTagName('item'); $item_nb = $item_liste -> length; for($item_ordre=0; $item_ordre<$item_nb; $item_ordre++) { $item_xml = $item_liste -> item($item_ordre); $item_socle = $item_xml -> getAttribute('socle'); $item_nom = $item_xml -> getAttribute('nom'); $item_coef = $item_xml -> getAttribute('coef'); $item_cart = $item_xml -> getAttribute('cart'); $item_lien = $item_xml -> getAttribute('lien'); $DB_SQL = 'INSERT INTO sacoche_referentiel_item(theme_id,entree_id,item_ordre,item_nom,item_coef,item_cart,item_lien) '; $DB_SQL.= 'VALUES(:theme,:socle,:ordre,:nom,:coef,:cart,:lien)'; $DB_VAR = array(':theme'=>$theme_id,':socle'=>$item_socle,':ordre'=>$item_ordre,':nom'=>$item_nom,':coef'=>$item_coef,':cart'=>$item_cart,':lien'=>$item_lien); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); // $item_id = DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); // inutile } } } }
/** * ajouter_utilisateur * * @param int $user_sconet_id * @param int $user_sconet_elenoet * @param string $user_reference * @param string $user_profil_sigle * @param string $user_genre * @param string $user_nom * @param string $user_prenom * @param string|NULL $user_naissance_date * @param string $user_email * @param string $user_email_origine * @param string $user_login * @param string $password_crypte * @param int $eleve_classe_id facultatif, 0 si pas de classe ou profil non élève * @param string $user_id_ent facultatif * @param string $user_id_gepi facultatif * @return int */ public static function DB_ajouter_utilisateur($user_sconet_id,$user_sconet_elenoet,$user_reference,$user_profil_sigle,$user_genre,$user_nom,$user_prenom,$user_naissance_date,$user_email,$user_email_origine,$user_login,$password_crypte,$eleve_classe_id=0,$user_id_ent='',$user_id_gepi='') { $DB_SQL = 'INSERT INTO sacoche_user(user_sconet_id, user_sconet_elenoet, user_reference, user_profil_sigle, user_genre, user_nom, user_prenom, user_naissance_date, user_email, user_email_origine, user_login, user_password, eleve_classe_id, user_id_ent, user_id_gepi) '; $DB_SQL.= 'VALUES( :user_sconet_id,:user_sconet_elenoet,:user_reference,:user_profil_sigle,:user_genre,:user_nom,:user_prenom,:user_naissance_date,:user_email,:user_email_origine,:user_login,:password_crypte,:eleve_classe_id,:user_id_ent,:user_id_gepi)'; $DB_VAR = array( ':user_sconet_id' => $user_sconet_id, ':user_sconet_elenoet' => $user_sconet_elenoet, ':user_reference' => $user_reference, ':user_profil_sigle' => $user_profil_sigle, ':user_genre' => $user_genre, ':user_nom' => $user_nom, ':user_prenom' => $user_prenom, ':user_naissance_date' => $user_naissance_date, ':user_email' => $user_email, ':user_email_origine' => $user_email_origine, ':user_login' => $user_login, ':password_crypte' => $password_crypte, ':eleve_classe_id' => $eleve_classe_id, ':user_id_ent' => $user_id_ent, ':user_id_gepi' => $user_id_gepi, ); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * ajouter * * @param int $proprio_id * @param string $selection_item_nom * @param string $tab_id_items tableau des id des items * @return int */ public static function DB_ajouter($proprio_id, $selection_item_nom) { $DB_SQL = 'INSERT INTO sacoche_selection_item( proprio_id, selection_item_nom) '; $DB_SQL .= 'VALUES (:proprio_id,:selection_item_nom) '; $DB_VAR = array(':proprio_id' => $proprio_id, ':selection_item_nom' => $selection_item_nom); DB::query(SACOCHE_STRUCTURE_BD_NAME, $DB_SQL, $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * ajouter_periode * * @param int $periode_ordre * @param string $periode_nom * @return int */ public static function DB_ajouter_periode($periode_ordre,$periode_nom) { $DB_SQL = 'INSERT INTO sacoche_periode(periode_ordre,periode_nom) '; $DB_SQL.= 'VALUES(:periode_ordre,:periode_nom)'; $DB_VAR = array( ':periode_ordre' => $periode_ordre, ':periode_nom' => $periode_nom, ); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * Insérer l'enregistrement d'un partenaires ENT conventionné * * @param string $denomination * @param string $nom * @param string $prenom * @param string $courriel * @param string $password_crypte * @param string $connecteurs * @return int */ public static function DB_ajouter_partenaire_conventionne($denomination, $nom, $prenom, $courriel, $password_crypte, $connecteurs) { $DB_SQL = 'INSERT INTO sacoche_partenaire(partenaire_denomination,partenaire_nom,partenaire_prenom,partenaire_courriel,partenaire_password,partenaire_connecteurs) '; $DB_SQL .= 'VALUES( :denomination, :nom, :prenom, :courriel, :password_crypte, :connecteurs)'; $DB_VAR = array(':denomination' => $denomination, ':nom' => $nom, ':prenom' => $prenom, ':courriel' => $courriel, ':password_crypte' => $password_crypte, ':connecteurs' => $connecteurs); DB::query(SACOCHE_WEBMESTRE_BD_NAME, $DB_SQL, $DB_VAR); return DB::getLastOid(SACOCHE_WEBMESTRE_BD_NAME); }
/** * Ajouter une demande d'évaluation * * @param int $eleve_id * @param int $matiere_id * @param int $item_id * @param int $prof_id * @param int|null $demande_score * @param string $demande_statut * @param string $message * @param string $demande_doc * @return int */ public static function DB_ajouter_demande($eleve_id, $matiere_id, $item_id, $prof_id, $demande_score, $demande_statut, $message, $demande_doc) { $demande_messages = $message ? afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE) . "\r\n" . $message : ''; $DB_SQL = 'INSERT INTO sacoche_demande( eleve_id, matiere_id, item_id, prof_id,demande_date, demande_score, demande_statut, demande_messages, demande_doc) '; $DB_SQL .= 'VALUES (:eleve_id,:matiere_id,:item_id,:prof_id, NOW(),:demande_score,:demande_statut,:demande_messages,:demande_doc)'; $DB_VAR = array(':eleve_id' => $eleve_id, ':matiere_id' => $matiere_id, ':item_id' => $item_id, ':prof_id' => $prof_id, ':demande_score' => $demande_score, ':demande_statut' => $demande_statut, ':demande_messages' => $demande_messages, ':demande_doc' => $demande_doc); DB::query(SACOCHE_STRUCTURE_BD_NAME, $DB_SQL, $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * ajouter_devoir * * @param int $prof_id * @param int $groupe_id * @param string $date_mysql * @param string $info * @param string $date_visible_mysql * @param string $date_autoeval_mysql * @param string $doc_sujet * @param string $doc_corrige * @param string $eleves_ordre 'alpha' | 'classe' * @return int */ public static function DB_ajouter_devoir($prof_id,$groupe_id,$date_mysql,$info,$date_visible_mysql,$date_autoeval_mysql,$doc_sujet,$doc_corrige,$eleves_ordre) { $DB_SQL = 'INSERT INTO sacoche_devoir( proprio_id, groupe_id, devoir_date, devoir_info, devoir_visible_date, devoir_autoeval_date, devoir_doc_sujet, devoir_doc_corrige, devoir_fini, devoir_eleves_ordre) '; $DB_SQL.= 'VALUES (:proprio_id,:groupe_id,:devoir_date,:devoir_info,:devoir_visible_date,:devoir_autoeval_date,:devoir_doc_sujet,:devoir_doc_corrige,:devoir_fini,:devoir_eleves_ordre)'; $DB_VAR = array( ':proprio_id' => $prof_id, ':groupe_id' => $groupe_id, ':devoir_date' => $date_mysql, ':devoir_info' => $info, ':devoir_visible_date' => $date_visible_mysql, ':devoir_autoeval_date'=> $date_autoeval_mysql, ':devoir_doc_sujet' => $doc_sujet, ':devoir_doc_corrige' => $doc_corrige, ':devoir_fini' => 0, ':devoir_eleves_ordre' => $eleves_ordre, ); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * ajouter_message * * @param int $user_id * @param string $date_debut_mysql * @param string $date_fin_mysql * @param string $message_contenu * @return int */ public static function DB_ajouter_message( $user_id , $date_debut_mysql , $date_fin_mysql , $message_contenu ) { $DB_SQL = 'INSERT INTO sacoche_message( user_id, message_debut_date, message_fin_date, message_contenu, message_dests_cache) '; $DB_SQL.= 'VALUES (:user_id,:message_debut_date,:message_fin_date,:message_contenu,:message_dests_cache)'; $DB_VAR = array( ':user_id' => $user_id, ':message_debut_date' => $date_debut_mysql, ':message_fin_date' => $date_fin_mysql, ':message_contenu' => $message_contenu, ':message_dests_cache' => ',', ); DB::query(SACOCHE_STRUCTURE_BD_NAME , $DB_SQL , $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * ajouter_convention * * @param int $base_id * @param string $connexion_nom * @param string $convention_date_debut * @param string $convention_date_fin * @return int */ public static function DB_ajouter_convention($base_id,$connexion_nom,$convention_date_debut,$convention_date_fin) { $DB_SQL = 'INSERT INTO sacoche_convention(sacoche_base,connexion_nom,convention_date_debut,convention_date_fin,convention_creation,convention_signature,convention_paiement,convention_activation,convention_mail_renouv,convention_commentaire) '; $DB_SQL.= 'VALUES(:base_id,:connexion_nom,:convention_date_debut,:convention_date_fin,NOW(),:convention_signature,:convention_paiement,:convention_activation,:convention_mail_renouv,:convention_commentaire)'; $DB_VAR = array( ':base_id' => $base_id, ':connexion_nom' => $connexion_nom, ':convention_date_debut' => $convention_date_debut, ':convention_date_fin' => $convention_date_fin, ':convention_signature' => NULL, ':convention_paiement' => NULL, ':convention_activation' => 0, ':convention_mail_renouv' => NULL, ':convention_commentaire' => NULL, ); DB::query(SACOCHE_WEBMESTRE_BD_NAME , $DB_SQL , $DB_VAR); return DB::getLastOid(SACOCHE_WEBMESTRE_BD_NAME); }
/** * ajouter_message * * @param int $user_id * @param string $date_debut_mysql * @param string $date_fin_mysql * @param string $message_contenu * @param string $tab_destinataires * @return int */ public static function DB_ajouter_message($user_id, $date_debut_mysql, $date_fin_mysql, $message_contenu, $tab_destinataires) { $listing_destinataires = count($tab_destinataires) ? ',' . implode(',', $tab_destinataires) . ',' : ''; $DB_SQL = 'INSERT INTO sacoche_message( user_id, message_debut_date, message_fin_date, message_destinataires, message_contenu, message_dests_cache) '; $DB_SQL .= 'VALUES (:user_id,:message_debut_date,:message_fin_date,:message_destinataires,:message_contenu,:message_dests_cache)'; $DB_VAR = array(':user_id' => $user_id, ':message_debut_date' => $date_debut_mysql, ':message_fin_date' => $date_fin_mysql, ':message_destinataires' => $listing_destinataires, ':message_contenu' => $message_contenu, ':message_dests_cache' => ','); DB::query(SACOCHE_STRUCTURE_BD_NAME, $DB_SQL, $DB_VAR); return DB::getLastOid(SACOCHE_STRUCTURE_BD_NAME); }
/** * DB_WEBMESTRE_ajouter_structure * * @param int $base_id Pour forcer l'id de la base de la structure ; normalement transmis à 0 (=> auto-increment), sauf dans un cadre de gestion interne à Sésamath * @param int $geo_id * @param string $structure_uai * @param string $localisation * @param string $denomination * @param string $contact_nom * @param string $contact_prenom * @param string $contact_courriel * @param string $inscription_date Pour forcer la date d'inscription, par exemple en cas de transfert de bases académiques (facultatif). * @return int */ function DB_WEBMESTRE_ajouter_structure($base_id,$geo_id,$structure_uai,$localisation,$denomination,$contact_nom,$contact_prenom,$contact_courriel,$inscription_date=0) { $chaine_date = ($inscription_date) ? ':inscription_date' : 'NOW()' ; // Insérer l'enregistrement dans la base du webmestre if($base_id==0) { $DB_SQL = 'INSERT INTO sacoche_structure(geo_id,structure_uai,structure_localisation,structure_denomination,structure_contact_nom,structure_contact_prenom,structure_contact_courriel,structure_inscription_date) '; $DB_SQL.= 'VALUES(:geo_id,:structure_uai,:localisation,:denomination,:contact_nom,:contact_prenom,:contact_courriel,'.$chaine_date.')'; $DB_VAR = array(':geo_id'=>$geo_id,':structure_uai'=>$structure_uai,':localisation'=>$localisation,':denomination'=>$denomination,':contact_nom'=>$contact_nom,':contact_prenom'=>$contact_prenom,':contact_courriel'=>$contact_courriel,':inscription_date'=>$inscription_date); DB::query(SACOCHE_WEBMESTRE_BD_NAME , $DB_SQL , $DB_VAR); $base_id = DB::getLastOid(SACOCHE_WEBMESTRE_BD_NAME); } else { $DB_SQL = 'INSERT INTO sacoche_structure(sacoche_base,geo_id,structure_uai,structure_localisation,structure_denomination,structure_contact_nom,structure_contact_prenom,structure_contact_courriel,structure_inscription_date) '; $DB_SQL.= 'VALUES(:base_id,:geo_id,:structure_uai,:localisation,:denomination,:contact_nom,:contact_prenom,:contact_courriel,'.$chaine_date.')'; $DB_VAR = array(':base_id'=>$base_id,':geo_id'=>$geo_id,':structure_uai'=>$structure_uai,':localisation'=>$localisation,':denomination'=>$denomination,':contact_nom'=>$contact_nom,':contact_prenom'=>$contact_prenom,':contact_courriel'=>$contact_courriel,':inscription_date'=>$inscription_date); DB::query(SACOCHE_WEBMESTRE_BD_NAME , $DB_SQL , $DB_VAR); } // Génération des paramètres de connexion à la base de données $BD_name = 'sac_base_'.$base_id; // Limité à 64 caractères (tranquille...) $BD_user = '******'.$base_id; // Limité à 16 caractères (attention !) $BD_pass = fabriquer_mdp(); // Créer le fichier de connexion de la base de données de la structure fabriquer_fichier_connexion_base($base_id,SACOCHE_WEBMESTRE_BD_HOST,SACOCHE_WEBMESTRE_BD_PORT,$BD_name,$BD_user,$BD_pass); // Créer la base de données de la structure DB::query(SACOCHE_WEBMESTRE_BD_NAME , 'CREATE DATABASE sac_base_'.$base_id ); // Créer un utilisateur pour la base de données de la structure et lui attribuer ses droits // On doit créer en réalité un user sur "localhost" et un autre sur "%" car on doit pouvoir se connecter suivant les configurations depuis la machine locale comme depuis n'importe quel autre serveur (http://dev.mysql.com/doc/refman/5.0/fr/adding-users.html). DB::query(SACOCHE_WEBMESTRE_BD_NAME , 'CREATE USER '.$BD_user.'@"localhost" IDENTIFIED BY "'.$BD_pass.'"' ); DB::query(SACOCHE_WEBMESTRE_BD_NAME , 'CREATE USER '.$BD_user.'@"%" IDENTIFIED BY "'.$BD_pass.'"' ); DB::query(SACOCHE_WEBMESTRE_BD_NAME , 'GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON '.$BD_name.'.* TO '.$BD_user.'@"localhost"' ); DB::query(SACOCHE_WEBMESTRE_BD_NAME , 'GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON '.$BD_name.'.* TO '.$BD_user.'@"%"' ); /* Il reste à : + Lancer les requêtes pour installer et remplir les tables, éventuellement personnaliser certains paramètres de la structure + Insérer le compte administrateur dans la base de cette structure, éventuellement lui envoyer un courriel + Créer un dossier pour les les vignettes images */ return $base_id; }