Documentation administrateur

De Wikipfc2i.

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('"', "&quot;", "param_langue"));

                    $tpl->assign("_ROOT.nom_champ" , str_replace('"', "&quot;", "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.

Outils personnels