Projet

Général

Profil

Actions

Plugin » Historique » Révision 10

« Précédent | Révision 10/21 (diff) | Suivant »
Julien Jocal, 13/10/2009 21:28


Ce module est en plein développement (page de travail)

Coder son propre plugin pour Gepi

  • Chaque plugin sera stocké dans un répertoire qui porte son nom qui sera installé dans le répertoire plugins de Gepi. Le nom du répertoire ne devra comporter aucun point ni accent et les espaces seront remplacés par un tiret bas "_".
  • Chaque plugin sera composé au minimum d'une page index.php et d'un fichier plugin.xml qui sera utilisé pour son installation.
  • La gestion des droits sera contrôlée en interne par une méthode verifDroits() qui testera la table plugin_autorisations pour éviter l'écrasement des droits à chaque mise à jour.
  • Il faudra regarder sur la gestion des sessions (la classe est dans /lib) pour permettre de ne pas tester la table droits

Contenu des fichiers des plugins

  • Pour conserver un minimum de sécurité et une struture commune aux plugins, chaque fichier devra commencer par les vérifications d'usage : session, droits des utilisateurs et si le plugin est ouvert.
  • Quelque chose comme cela sera proposé :
$niveau_arbo = "2";
// Initialisations files (Attention au chemin des fichiers en fonction de l'arborescence)
include("../../lib/initialisationsPropel.inc.php");
include("../../lib/initialisations.inc.php");
include("../plugins.class.php");

// Resume session
$resultat_session = $session_gepi->security_check();
if ($resultat_session == 'c') {
    header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
    die();
} else if ($resultat_session == '0') {
    header("Location: ../logout.php?auto=1");
    die();
}

// Il faut adapter cette ligne au statut des utilisateurs qui auront accès à cette page, par défaut des utilisateurs professionnels
$utilisateur = [[UtilisateurProfessionnelPeer]]::retrieveByLogin($_SESSION[[login]]);
$user_auth = new gepiPlugIn("nom_plugin");
$user_auth->verifDroits();

Struture du fichier xml

<?xml version="1.0" ?>

<gepinstall type="plugin">
    <nom>nom_du_plugin</nom>

    <creationDate>mois Année</creationDate>

    <auteur>Jean de la Courte</auteur>

    <licence>GNU/GPL</licence>

    <auteurCourriel>jdlc@gepi.com</auteurCourriel>

    <auteurSite>www.jdlc.fr</auteurSite>

    <version>1.0</version>

    <versiongepi>1.5.2</versiongepi>

    <description>Test de plugin</description>

    <installation>

        <requetes>

            <requete>

                CREATE TABLE IF NOT EXISTS @test_plugin@ ( @id@ int(11)
                NOT NULL auto_increment, @name@ varchar(100) NOT NULL
                default _, PRIMARY KEY (@id@) )
                TYPE=MyISAM;
            </requete>

        </requetes>

    </installation>

    <desinstallation>

        <requetes>

            <requete>DROP TABLE @test_plugin@;</requete>

        </requetes>

    </desinstallation>

    <administration>

            <fichier>

                <nomfichier autorisation="A-P-C-S-sec-E-R-autre">index.php</nomfichier>

                <nomfichier autorisation="A-S">fonctions_plugin.php</nomfichier>

                <nomfichier autorisation="P-C-autre">testeur_user.php</nomfichier>

            </fichier>

        <menu>

                <item autorisation="A" titre="Lister" description="Accéder au plugin TEST_PLUGIN">index.php</item>

                <item autorisation="P-C-autre" titre="Lister" description="Afficher la liste des utilisateurs testeurs">testeur_user.php</item>

        </menu>

    </administration>

</gepinstall>
  • Il est indispensable que chaque plugin de modifie pas pas les tables de GEPI autres que celles qu'il crée à son propre service.
  • Il est également indispensable que la désinstallation du plugin remette GEPI dans l'état où il était avant l'activation du plugin.
  • Dans le module plugin de l'administrateur, il peut installer le plugin sans forcément l'ouvrir.
  • Le fichier XML ci-dessus est assez explicite sur les informations à donner à Gepi pour qu'il crée les bons droits dans les bonnes tables.

Des idées de plugins :

Ce n'est pas ce qui manque
  • La page blanche du PP pour chacun de ses élèves.
  • La possibilité de changer de statut au cours d'une même session.
  • Intégrer du code pour initialiser GEPI à partir d'un ENT (ou de toute autre source externe).
  • Un lieu de réunion pour chaque équipe éducative qui pourrait ainsi laisser des infos avant un conseil ou pour aider celui qui prépare le conseil de classe.
  • Un tchat d'échange entre professeurs.
  • Bien d'autres idées, laissez vous aller :)

Mis à jour par Julien Jocal il y a plus de 14 ans · 10 révisions