Documentation administrateur
Ce document est périmé. Vous devriez consulter la page quoi de neuf
Guide technique
Plate-forme de certification et positionnement
C2i® niveau 1
(Version 1.3)
Sommaire |
Pré-requis
Serveurs
- Serveur Linux (testé sous debian 3.1) (fonctionne sous windows, testé avec easyphp 1.7 et aussi avec IIS et ajout de librairies)
- Apache
- php 4 avec notamment les librairies zlib, ldap
- mysql
- droits de lecture (la plateforme nationale lira des fichiers dans cette arborescence) et écriture (pour apache) sur le répertoire ressources (et ses sous répertoires)
- droits d’écriture (pour apache) sur le fichier commun/constantes.php
- droits d’écriture (pour apache) sur le répertoire installation
- droits requis sur le dossier c2i/ressources : bloquer aussi les accès aux personnes ayant un compte sur le serveur portant la PF.
| c2i | c2i/ressources | |
| apache | Lecture | Lecture et écriture |
| groupe apache | Lecture | Lecture et écriture |
| autres | AUCUN | AUCUN |
Soit sous Unix
#apache est propriétaire
chown -R apache:apache var/www/html/c2i/ressources
ou (suivant la distribution)
chown -R www-data var/www/html/c2i/ressources
#personne ne peut y lire sauf apache et root !
chmod -R o-r /var/www/html/c2i/ressources
- en cas d’utilisation d’annuaires LDAP, utiliser de préférence les annuaires utilisant les recommandations supann
- Il est recommandé d’utiliser le protocole HTTPS afin de sécuriser l’accès à la plateforme, bien qu’elle puisse fonctionner sans ce protocole
Clients
- navigateur mozilla firefox conseillé,
- navigateur Internet explorer (sous réserves pour les téléchargements de plateformes)
- Testé aussi sous navigateurs Firefox 2.0 sous Linux,Opera 9 sous Linux et Konqueror
- Testé aussi sous navigateur Safari, FireFox2.0 sous MacOSX Tigre X86
- en cas de ldap, le login étudiant utilisé est : uid
En cas d’utilisation d’annuaire non SUPANN il vous est possible de préciser les champs à utiliser via l’interface de configuration (les laisser vide si l’annuaire est standard SUPANN)
- Vous avez également la possibilité de choisir si la plateforme est utilisable via un ENT ou non. En cas d’ENT, il faut activer le CAS après l’installation en modifiant
manuellement le fichier commun/constantes.php
Il faut dans ce cas activer les 3 valeurs
$cas_server= le serveur du campus
$cas_port= normalemnt 443
$cas_service= normalement cas
Au niveau de l’ent il faut pointer vers certification.php ou positionnement.php selon la plateforme que l’on souhaite atteindre
- javascript activé (le plugin flash également pour le tirage manuel des questions dans un examen).
Utilisation
Pas d’espace ni de caractère autre que chiffres et lettre non accentuées dans les logins
Installation
Télécharger une version de la plateforme sur le serveur national.
La dézipper dans un répertoire web du serveur local.
Lancer via un navigateur web le fichier installation/installer.htm
Renseigner les valeurs demandées et valider. Cela créera un fichier commun/constantes.php
Vous pouvez vous loguer via le fichier certification.php ou positionnement.php après avoir désactivé le répertoire installation
Il est très fortement recommandé de sécuriser l’accès aux ressources à l’aide de directives pour apache telles qu’un .htaccess
Sécurisation du dossier soit par un .htaccess soit dans httpd.conf :
- interdire un listing du dossier si pas de index.html
(pas d'accès aux sources...)
<Directory /var/www/html/c2i>
Options None
</Directory>
- interdire tout accès au dossier ressources sauf à apache
<Directory /var/www/html/c2i/ressources>
Order deny,allow
Deny from all
</Directory>
Mise à jour
En cas de téléchargement de la mise à jour de la plateforme, il faut relancer l’installation qui ira modifier les champs de votre base de données (et en ajouter). De nouvelles constantes seront ajoutées à la fin du fichier commun/constantes.php sans modifier vos anciens paramètres. Un encodage des mots de passes des correspondants en md5 sera fait s’il n’a pas encore été fait lors de vos précédentes mises à jour.
Arborescence des fichiers
Les fichiers à la racine du site
Ces fichiers sont les fichiers de connexion à la plateforme de certification et de positionnement (certification.php et positionnement.php).
commun
Le répertoire commun contient les fichiers fréquemment inclus dans les pages de code php
- Constantes.php : contient les paramètres de la base de données, l’url du serveur national, …</p>
- C2i_params.php : contient la gestion des sessions, des connexions à la base de données, les traitements sur les données pour prendre en compte plusieurs configurations de
serveur possible</p>
- Dates.php : contient les fonctions de gestion des dates</p>
- Droits.php : effectue les requêtes de vérification des droits de l’utilisateur connecté selon
ses profils</p>
- Fonctions_divers.php : contient un ensemble de fonction comme l’abstraction de la base de données, la recherche du type mime d’un fichier, la gestion de copie/suppression récursive de dossiers, la recherche des paramètres de la plateforme utilisée, les paramètres de l’utilisateur connecté, un générateur de
mot de passe, la gestion des chaînes xml, la fonction de tracking …</p>
- Fonctions_session.php : contient les fonctions personnalisées de la gestion des sessions et des variables de session</p>
Gère également la mise en forme des url afin de passer l’identifiant de session lorsque le serveur ne le prend pas en charge lui-même.
Cela signifie que toute url en méthode GET doit passer par la fonction p_session, avec un second paramètre à 1 pour les url javascript ou header(Location), et que tous les formulaires doivent avoir un block id_session dans le template et il faut faire appel à la fonction form_session pour l’alimenter (en cas d’utilisation de plusieurs formulaires dans un même template (en tenant compte des sous-templates inclus) il faut avoir un nom différent par block id_session. Le problème ne s’est pas posé dans ce projet pour le moment)
- Menu_perso.php : contient le menu horizontal affiché dans les pages de type liste. Un certain
nombre de traitement est fait dans cette page, comme la vérification du type de plateforme utilisée (certification, positionnement) pour l’affichage des images et des colonnes adaptées, l’initialisation des compteurs de multipagination ...</p>
- Mime.ini : contient la définition des types mime. A priori pas besoin d’y toucher pour ce
type de projet.</p>
- Multipagination.php : contient la gestion de la multipagination pour les listes. Il suffit de l’inclure, d’initialiser les variables de compteur, et d’inclure le
bloc associé dans le template (il est déjà dans le template principal). La multipagination ne perd pas les tris, ni les critères de recherche (s’inspirer de liste.php (des questions ou examen) pour avoir un exemple.)</p>
- Parse.php : reformate les données (notamment en utf8) pour l’utilisation de flash (utilisé dans ce projet dans les cases à cocher synchrones : passage de qcm et sélection
des questions en mode manuel pour les examens)</p>
- Pclzip.lib.php : librairie libre de droit trouvée sur Internet gérant la manipulation d’archives (notamment .zip). Requiert la librairie zlib normalement installée en standard
avec php sauf pour les anciennes versions.</p>
- Scripts.js et style1.css : contiennent les scripts javascript fréquemment utilisés et la feuille de style du site.</p>
templates
ce répertoire contient les modèles de pages (entendre par modèle de page des pages au format html contenant la partie affichable des page. En fait, pour chaque page il y a séparation du code proprement dit (.php) et du graphisme (.html ou .htm).)
Les modèles de page sont gérés par la librairie orientée objet TemplatePower contenue dans ce répertoire.
Certains templates sont des gabarits utilisés dans quasiment toutes les pages
- principale.html est l’enveloppe de pages de toutes les pages non-popup</p>
- multipagination.html contient la barre de multipagination</p>
- popup.html est une enveloppe pour les popup classiques</p>
- mini_popup.html est l’enveloppe des popups de configuration (changement d’un seul paramètre à la fois)</p>
codes
Le répertoire codes contient les fichiers php classés par catégorie, ainsi que les fichiers de verification de connexion et de sortie :
- fichiers à la racine</p>
o quitter.php : clos la session et redirige vers la page d’accueil adaptée
o entrer.php : vérifie l’identifiant de l’utilisateur dans la base de données. Si c’est un enseignant il vérifie que le mot de passe est correct et affiche le menu, si c’est un étudiant vérifie son mot de passe s’il y en à un dans la base, sinon regarde si la base ldap de son établissement a été déclarée dans la plateforme (auquel cas une vérification des paramètres d’accès est faite vers le ldap), sinon déconnecte l’utilisateur.
o inc_connexion_etudiant.php : fichier inclus dans entrer.php pour la gestion de l’accès étudiant. Nécessite la libraire ldap pour php (en général en standard avec php sauf pour d’anciennes versions)
- acces</p>
o acces.php donne la liste des profils, des établissements et permet de gérer les utilisateurs (inscription des étudiants à un qcm en mode csv, ldap, groupe ldap).
A ce niveau l’administrateur général peut mettre à jour les profils et en ajouter / supprimer. Il peut aussi gérer les établissements (qui eux-mêmes ne peuvent gérer que le leur) dans le sous-dossier etablissement.
Dans le sous dossier etudiant il est possible d’inscrire des étudiants à la volée à un examen
• mode csv contenant tous les renseignements
• mode csv contenant le login ldap (uid obligatorement)
• groupe ldap
Il est également possible de modifier les renseignements des étudiants un par un.
Dans ce dossier le fichier d’inscription global permet également le transfert de questions vers la plateforme nationale pour un examen recevant pour la première fois des inscrits
Dans le sous-dossier personnel se trouvent les fichiers de gestion des enseignants (ajout + profil, modification, suppression)
- Config</p>
o Ce dossier contient les fichiers permettant la configuration de la plateforme pour chaque université, ainsi que la génération de versions téléchargeables des différentes plateformes (+bdd et fichier d’installation personnalisé)
En cas d’ajout de fichier de gestion de langue (par exemple en.php pour l’anglais), dans le fichier config_m.php il faut ajouter les lignes d’option correspondantes :
case "l" :
$tpl->assign("etiquette" , ucfirst($textes_langues["langue"]));
$tpl->newBlock("champ_liste");
$tpl->assign("nom_champ" , str_replace('"', """, "param_langue"));
$tpl->assign("_ROOT.nom_champ" , str_replace('"', """, "param_langue"));
$tpl->newBlock("liste_option");
$tpl->assign("valeur" , "fr");
$tpl->assign("nom" , "français ( fr )"); // à mettre à jour quand il y aura d'autres fichiers de langue
$tpl->assign("valeur" , "en");
$tpl->assign("nom" , "english ( en )");
/*
de Allemand
el Grec
it Italien
nl Néerlandais
no Norvégien
pl Polonais
pt Portuguais
ru Russe
*/
o Le sous-dossier tracking contient les fichiers d’exploitation du tracking des utilisateurs
* Examens
o Ce dossier contient les pages de gestion des examens (tout part de liste.php, qui comme toutes les listes où cela se justifie permet des tris sur les colonnes, une multipagination, une recherche par critères).
o Au niveau de la fiche d’examen il est possible d’accéder à l’ajout / modification du choix des questions associées, ainsi qu’aux résultats à ces examens (dans le sous-dossier resultats)
* Export
Contient le fichier d’export d’examen aléatoire (certification ou positionnement) de la plateforme nationale vers la plateforme locale qui en fait la demande. Les fichiers xml échangés sont zippés
- Import</p>
o Contient les fichiers d’import (import_l.php pour import local et import_n.php pour import national) des questions d’examens locaux vers la plateforme nationale et d’import au niveau local des banques de données nationales
o C’est à ce niveau que se trouve le parseur xml qui analyse les fichiers xml correspondant aux questions. Si la structure des fichiers xml devait évoluer il faudrait également adapter le parseur (dans les fichiers d’import). Le principe du parseur des de rechercher les débuts de balise xml, les fins de balises et les données (lignes à ligne, donc attention à bien traiter les données sur plusieurs lignes en cas de changement de parseur)
- Qcm</p>
Contient la liste des qcm que peut passer l’étudiant connecté, ainsi que le fichier de passage du qcm. Dans ce fichier il est fait appel à la technologie AJAX connectée avec php et mysql afin de gérer l’examen synchrone (sinon pour un étudiant qui dépasserait d’une seconde le temps requis (peut-être pour des raisons indépendantes de sa volonté (dues au réseau)) aucune réponse ne serait stockées même s’il a répondu à tout. Au-delà de ce temps ses réponses ne sont plus enregistrées. C’est le temps serveur qui compte, il faut donc que l’horloge soit à jour sur le serveur).
- questions</p>
o Ce dossier contient les pages de gestion des questions (tout part de liste.php, qui comme toutes les listes où cela se justifie permet des tris sur les colonnes, une multipagination, une recherche par critères). Peu importe que les questions soient de certification ou de positionnement, les mêmes fichiers sont appelés, seuls les fonctionnalités de validation diffèrent
o Ce dossier contient également le générateur de contenus xml C2I1, LOM et QTI (to_xml.php).
langues
Le répertoire langues contient les fichiers de mots utilisés dans la plateforme (menus, liens, textes javascript, …). Pour créer un nouveau fichier de langue il faut dupliquer le fichier fr.php , l’appeler avec un code standard type scorm (en.php pour anglais, …). Ensuite il reste à traduire la colonne de droite du tableau.
images
Le répertoire images contient les visuels de la plateforme ainsi que les applets flash.
installation
Ce répertoire contient les fichiers d’installation de la plateforme locale. Ils sont générés lors du téléchargement de la plateforme (à partir de la plateforme nationale).
Un administrateur local est automatiquement crée, avec le login et le mot de passe de l’utilisateur ayant téléchargé la plateforme encodé en md5 (Il faut donc avoir un compte sur la plateforme nationale). Il est conseillé d’en avoir une copie de sauvegarde mais de les effacer une fois l’installation terminée afin d’éviter que quelqu’un puisse changer les valeurs à sa guise. Attention, pour l’adresse de la plateforme locale, n’écrivez pas http://127.0.0.1/c2i/, ni http://localhost/c2i/, il faut une url accessible, car la plateforme nationale et les plateformes locales communiqueront entre elles lors d’échanges de questions.
Le fichier d’installation s’appelle installer.htm et celui de la base de données (qui se lancera automatiquement lors de la validation de l’installation) s’appelle initbase.php
ressources
Le répertoire ressources dont rien ne doit être effacé (qui doit avoir des droits spécifiques [cf : pré requis]) contient
- Tous les
fichiers xml des questions de la plateforme. Les questions sont stockées physiquement dans un répertoire ayant pour nom u_q où u est le numéro d’université et q est le numéro de la question. Chacun de ces dossiers contient 3 fichiers xml : c2i1.xml, lom.xml et qti.xml, ainsi qu’un répertoire documents contenant les documents attachés à la questions.</p>
- Un dossier csv
qui stocke les fichiers csv des résultats des qcm afin de faciliter leur téléchargement.</p>
- Un dossier
telechargement comprenant les diverses versions téléchargeables des plateformes (code source) ainsi qu’un répertoire par université pour générer les versions alimentées en question et le fichier d’installation</p>
- Un dossier
universites permettant les transferts d’examen et de questions entre la plateforme nationale et les plateformes locales</p>
Base de données : Dictionnaire des données
c2ialinea
Champ Type Null Défaut
referentielc2i varchar(5) Non
alinea tinyint(2) Non 0
aptitude Text Non
c2idroits
Champ Type Null Défaut
login varchar(100) Non
id_profil int(11) Non 0
c2ietablissement
Champ Type Null Défaut
id_etab int(11) Non
nom_etab varchar(255) Non
pere int(11) Non 1
positionnement tinyint(1) Non 0
certification tinyint(1) Non 0
locale tinyint(1) Non 0
nationale tinyint(1) Non 0
nb_telechargements int(11) Non 0
param_nb_items int(11) Non 10
param_nb_aleatoire int(11) Non 50
param_nb_experts int(11) Non 3
param_nb_qac int(11) Non 45
param_ldap varchar(255) Oui NULL
base_ldap varchar(255) Oui NULL
rdn_ldap varchar(255) Oui NULL
passe_ldap varchar(255) Oui NULL
param_langue varchar(20) Non fr
nb_quest_recup int(11) Non 50
ldap_group_class varchar(255) Oui NULL
ldap_group_attribute varchar(255) Oui NULL
ldap_id_attribute varchar(255) Oui NULL
c2iexamens
Champ Type Null Défaut
id_examen int(11) Non
id_etab int(11) Non -1
nom_examen varchar(255) Non
date_de_creation date Oui NULL
auteur varchar(255) Oui NULL
date_examen date Oui 0000-00-00
heure_debut time Oui NULL
heure_fin time Oui NULL
positionnement enum('OUI', 'NON') Non NON
certification enum('OUI', 'NON') Non NON
referentielc2i varchar(255) Oui -1
alinea int(11) Oui -1
os varchar(255) Oui NULL
suite_bureau varchar(255) Oui NULL
autre_logiciel varchar(255) Oui NULL
langue varchar(20) Oui NULL
mots_cles varchar(255) Oui NULL
difficulte varchar(20) Oui NULL
pre_requis text Oui NULL
contexte varchar(100) Oui NULL
caracteristiques text Oui NULL
auteur_mail varchar(255) Oui NULL
type_tirage enum('manuel', 'aléatoire', 'passage') Non manuel
date_examen_fin date Non 0000-00-00
mot_de_passe varchar(255) Oui NULL
ordre_q enum('aléatoire', 'fixe') Non aléatoire
ordre_r enum('aléatoire', 'fixe') Non aléatoire
correction tinyint(1) Non 0
different_de_difficulte tinyint(1) Non 0
different_de_contexte tinyint(1) Non 0
different_de_caracteristiques tinyint(1) Non 0
different_de_os tinyint(1) Non 0
different_de_suite_bureau tinyint(1) Non 0
c2iinscrits
Champ Type Null Défaut
login varchar(100) Non
password varchar(250) Non
nom varchar(250) Oui NULL
prenom varchar(250) Oui NULL
genre varchar(10) Oui NULL
numetudiant varchar(250) Oui NULL
etablissement int(11) Oui -1
session varchar(100) Non
c2iprofils
Champ Type Null Défaut
id_profil int(11) Non
intitule varchar(255) Non
q_ajouter tinyint(1) Non 0
q_modifier tinyint(1) Non 0
q_dupliquer tinyint(1) Non 0
q_lister tinyint(1) Non 0
q_supprimer tinyint(1) Non 0
ex_ajouter tinyint(1) Non 0
ex_modifier tinyint(1) Non 0
ex_dupliquer tinyint(1) Non 0
ex_lister tinyint(1) Non 0
ex_supprimer tinyint(1) Non 0
q_valider tinyint(1) Non 0
acces_tracking tinyint(1) Non 0
etudiant_ajouter tinyint(1) Non 0
etudiant_lister tinyint(1) Non 0
etudiant_supprimer tinyint(1) Non 0
resultats_afficher tinyint(1) Non 0
utilisateur_ajouter tinyint(1) Non 0
utilisateur_modifier tinyint(1) Non 0
utilisateur_lister tinyint(1) Non 0
utilisateur_supprimer tinyint(1) Non 0
plc_telecharger tinyint(1) Non 0
plp_telecharger tinyint(1) Non 0
banquedd_telecharger tinyint(1) Non 0
configurer tinyint(1) Non 0
c2iqcm
Champ Type Null Défaut
login varchar(200) Non
id_examen int(11) Non 0
id_etab int(11) Non 0
ip varchar(255) Oui NULL
c2iquestions
Champ Type Null Défaut
id int(11) Non
id_etab int(11) Non -1
titre text Non
referentielc2i varchar(255) Non
alinea int(11) Non 0
validation enum('OUI', 'NON') Non NON
os varchar(255) Oui NULL
suite_bureau varchar(255) Oui NULL
positionnement enum('OUI', 'NON') Non NON
certification enum('OUI', 'NON') Oui NON
etat enum('non examinée', 'validée', 'en attente', 'refusée') Non non examinée
autre_logiciel varchar(255) Oui NULL
langue varchar(20) Non fr
mots_cles text Oui NULL
difficulte enum('Très facile', 'facile', 'moyen', 'difficile', 'très difficile') Non moyen
pre_requis text Oui NULL
duree_de_vie date Oui NULL
contexte enum('droit et déontologie', 'internet', 'PAO', 'système d\'exploitation', 'traitement de texte', 'tableur', 'autre') Non autre
caracteristiques text Non
date_de_creation date Non 0000-00-00
auteur varchar(255) Oui NULL
auteur_mail varchar(255) Oui NULL
c2iquestionsdocuments
Commentaires sur la table : le nom du document est id_doc.extension
Champ Type Null Défaut
id int(11) Non 0
id_etab int(11) Non 0
id_doc int(11) Non 0
extension varchar(5) Non
c2iquestionsexamen
Champ Type Null Défaut
id_examen int(11) Non 0
id int(11) Non 0
id_examen_etab int(11) Non 0
id_etab int(11) Non 0
c2iquestionsvalidation
Champ Type Null Défaut
id int(11) Non
id_etab int(11) Non 0
validation enum('OUI', 'NON') Non NON
remarques longtext Oui NULL
modifications longtext Oui NULL
login varchar(100) Non 0
date date Non 0000-00-00
c2ireferentiel
Champ Type Null Défaut
referentielc2i varchar(5) Non
domaine varchar(255) Non
ponderation tinyint(1) Non 1
c2ireponses
Champ Type Null Défaut
num int(11) Non
id int(11) Non 0
id_etab int(11) Non -1
reponse text Non
bonne enum('OUI', 'NON') Oui NON
c2iresultats
Champ Type Null Défaut
login varchar(200) Non
question varchar(50) Non
examen varchar(50) Non
reponse int(11) Non 0
date date Non 0000-00-00
heure time Oui NULL
ip varchar(255) Oui NULL
c2itracking
Champ Type Null Défaut
id_tracking int(11) Non
date_t datetime Non 0000-00-00 00:00:00
action varchar(255) Non
login varchar(100) Non
id_objet varchar(255) Non
type_utilisateur enum('E', 'P') Non P
etat enum('echec', 'succes') Non succes
objet varchar(255) Oui NULL
3.16. c2iutilisateurs
Champ Type Null Défaut
login varchar(100) Non
password varchar(250) Oui NULL
nom varchar(250) Oui NULL
prenom varchar(250) Oui NULL
mail varchar(250) Oui NULL
est_superadmin enum('O', 'N') Oui N
est_admin_univ enum('O', 'N') Non N
etablissement int(11) Non -1
connexion datetime Non 0000-00-00 00:00:00
derniere_connexion datetime Non 0000-00-00 00:00:00
session varchar(100) Non
futur_mdp varchar(255) Oui NULL
futur_verif varchar(255) Oui NULL
Configuration php testés
PHP Version 4.3.10-2 sur debian 3.1
easyphp 1.7 : la configuration par défaut d’easyphp 1.7 sous Windows a été utilisée lors du développement.