Projet

Général

Profil

Plugin » Historique » Version 11

Julien Jocal, 02/01/2010 16:32
Quelques corrections

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 11 Julien Jocal
* 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 "_".
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 11 Julien Jocal
* 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.
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 :)