Projet

Général

Profil

Plugin » Historique » Révision 11

Révision 10 (Julien Jocal, 13/10/2009 21:28) → Révision 11/21 (Julien Jocal, 02/01/2010 16:32)

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

 h1. 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 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@ 

 h2. Contenu des fichiers des plugins 


 * Pour conserver un minimum de sécurité et une structure 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é :  

 <pre> 
 $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(); 
 </pre> 


 h2. Struture du fichier xml 

 <pre> 
 <?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> 
 </pre> 

 * 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. 

 h2. 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 :)