Projet

Général

Profil

Plugin » Historique » Version 10

Julien Jocal, 13/10/2009 21:28

1 9
_Ce module est en plein développement (page de travail)_
2 1
3 10 Julien Jocal
h1. Coder son propre plugin pour Gepi
4 9
5 1
6 10 Julien Jocal
* 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 "_".
7 1
8 10 Julien Jocal
* Chaque plugin sera composé au minimum d'une page index.php et d'un fichier plugin.xml qui sera utilisé pour son installation.
9 1
10 10 Julien Jocal
* 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.
11
* Il faudra regarder sur la gestion des sessions (la classe est dans /lib) pour permettre de ne pas tester la table @droits@
12 4
13 10 Julien Jocal
h2. Contenu des fichiers des plugins
14 9
15
16 10 Julien Jocal
* 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.
17 9
18 10 Julien Jocal
* Quelque chose comme cela sera proposé : 
19 9
20
<pre>
21 1
$niveau_arbo = "2";
22
// Initialisations files (Attention au chemin des fichiers en fonction de l'arborescence)
23
include("../../lib/initialisationsPropel.inc.php");
24
include("../../lib/initialisations.inc.php");
25
include("../plugins.class.php");
26
27
// Resume session
28
$resultat_session = $session_gepi->security_check();
29
if ($resultat_session == 'c') {
30
	header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
31
	die();
32
} else if ($resultat_session == '0') {
33
	header("Location: ../logout.php?auto=1");
34
	die();
35
}
36
37
// Il faut adapter cette ligne au statut des utilisateurs qui auront accès à cette page, par défaut des utilisateurs professionnels
38
$utilisateur = [[UtilisateurProfessionnelPeer]]::retrieveByLogin($_SESSION[[login]]);
39
$user_auth = new gepiPlugIn("nom_plugin");
40 9
$user_auth->verifDroits();
41 1
</pre>
42
43 9
44 10 Julien Jocal
h2. Struture du fichier xml
45
46
<pre>
47 9
<?xml version="1.0" ?>
48
49 1
<gepinstall type="plugin">
50 9
	<nom>nom_du_plugin</nom>
51
52
	<creationDate>mois Année</creationDate>
53
54
	<auteur>Jean de la Courte</auteur>
55
56
	<licence>GNU/GPL</licence>
57
58
	<auteurCourriel>jdlc@gepi.com</auteurCourriel>
59
60
	<auteurSite>www.jdlc.fr</auteurSite>
61
62
	<version>1.0</version>
63
64
	<versiongepi>1.5.2</versiongepi>
65
66
	<description>Test de plugin</description>
67
68
69
70
	<installation>
71
72
		<requetes>
73
74
			<requete>
75
76
				CREATE TABLE IF NOT EXISTS @test_plugin@ ( @id@ int(11)
77
				NOT NULL auto_increment, @name@ varchar(100) NOT NULL
78
				default _, PRIMARY KEY (@id@) )
79 1
				TYPE=MyISAM;
80 9
			</requete>
81
82
		</requetes>
83
84
	</installation>
85
86
	<desinstallation>
87
88
		<requetes>
89
90
			<requete>DROP TABLE @test_plugin@;</requete>
91
92
		</requetes>
93
94
	</desinstallation>
95
96
97
98
	<administration>
99
100
	        <fichier>
101
102
		        <nomfichier autorisation="A-P-C-S-sec-E-R-autre">index.php</nomfichier>
103
104
		        <nomfichier autorisation="A-S">fonctions_plugin.php</nomfichier>
105
106
		        <nomfichier autorisation="P-C-autre">testeur_user.php</nomfichier>
107
108
	        </fichier>
109 1
110
		<menu>
111
112
		        <item autorisation="A" titre="Lister" description="Accéder au plugin TEST_PLUGIN">index.php</item>
113
114
		        <item autorisation="P-C-autre" titre="Lister" description="Afficher la liste des utilisateurs testeurs">testeur_user.php</item>
115
116
		</menu>
117
118
	</administration>
119
120
121
122
</gepinstall>
123 10 Julien Jocal
</pre>
124
125
* Il est indispensable que chaque plugin de modifie pas pas les tables de GEPI autres que celles qu'il crée à son propre service.
126
* Il est également indispensable que la désinstallation du plugin remette GEPI dans l'état où il était avant l'activation du plugin.
127
* Dans le module plugin de l'administrateur, il peut installer le plugin sans forcément l'ouvrir.
128
* 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.
129
130
h2. Des idées de plugins :
131
132
Ce n'est pas ce qui manque
133
* La page blanche du PP pour chacun de ses élèves.
134
* La possibilité de changer de statut au cours d'une même session.
135
* Intégrer du code pour initialiser GEPI à partir d'un ENT (ou de toute autre source externe).
136
* 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.
137
* Un tchat d'échange entre professeurs.
138
* Bien d'autres idées, laissez vous aller :)