Projet

Général

Profil

Actions

Plugin » Historique » Révision 11

« Précédent | Révision 11/21 (diff) | Suivant »
Julien Jocal, 02/01/2010 16:32
Quelques corrections


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 mod_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 structure 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 · 11 révisions