3 class mw_sourceml extends mw_plugin{
9 function description(){
10 return "Publication de sources musicales";
15 $env->set_link("admin/sourceml", $env->url("admin/sourceml"), "SourceML", 50);
16 $env->set_link("admin/sourceml/licences", $env->url("admin/licences"), "Licences", 10);
17 $env->set_link("admin/sourceml/cache", $env->url("admin/cache"), "Cache", 20);
18 $env->set_link("admin/sourceml/maintenance", $env->url("admin/maintenance"), "Maintenance", 30);
20 $env->set_link("users/authors", $env->url("users/groupes"), "Groupes", 30);
21 $env->set_link("users/albums", $env->url("users/albums"), "Albums", 31);
22 $env->set_link("users/morceaux", $env->url("users/morceaux"), "Morceaux", 32);
23 $env->set_link("users/pistes", $env->url("users/pistes"), "Sources", 33);
24 $env->set_link("users/sources_invitations", $env->url("users/sources_invitations"), "Invitations", 34);
26 $env->set_link("menu_top/groupes", $env->url("sources/groupe"), "Groupes", 10);
27 $env->set_link("menu_top/albums", $env->url("sources/album"), "Albums", 11);
28 $env->set_link("menu_top/morceaux", $env->url("sources/morceau"), "Morceaux", 12);
29 $env->set_link("menu_top/pistes", $env->url("sources/piste"), "Sources", 13);
34 function enable($env){
38 function disable($env){
42 // ---------------------------------------------------------------------------------
46 function install($env){
48 $env->bdd("sgbd") == "mysql"
49 || $env->bdd("sgbd") == "pdo_mysql"
50 ) return $this->install_mysql($env);
54 function install_mysql($env){
56 $sgbd = $data->sgbd();
59 $sgbd->table_exists("#--sml_authors")
60 || $sgbd->table_exists("#--sml_classes")
61 || $sgbd->table_exists("#--sml_licences")
62 || $sgbd->table_exists("#--sml_sources")
63 || $sgbd->table_exists("#--sml_sources_access")
64 || $sgbd->table_exists("#--sml_sources_authors")
65 || $sgbd->table_exists("#--sml_sources_infos")
66 || $sgbd->table_exists("#--sml_source_cache")
67 || $sgbd->table_exists("#--sml_source_compositions")
68 || $sgbd->table_exists("#--sml_source_derivations")
69 || $sgbd->table_exists("#--sml_source_documents")
70 || $sgbd->table_exists("#--sml_sources_invitations");
73 return "impossible de savoir si les tables existent deja";
76 return "des tables existent deja en base. installation annulee";
80 "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"";
84 "CREATE TABLE `#--sml_authors`("
85 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
86 ." `id_user` int(11) NOT NULL,"
87 ." `nom` varchar(255) NOT NULL,"
88 ." `image` varchar(255) DEFAULT NULL,"
89 ." `description` text,"
90 ." `email` varchar(255) NOT NULL,"
91 ." `contact_form` tinyint(4) NOT NULL,"
92 ." `captcha` tinyint(4) NOT NULL,"
93 ." PRIMARY KEY (`id`),"
94 ." KEY `id_user` (`id_user`)"
95 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
99 "CREATE TABLE `#--sml_classes`("
100 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
101 ." `nom` varchar(255) NOT NULL,"
102 ." PRIMARY KEY (`id`)"
103 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
107 "CREATE TABLE `#--sml_licences`("
108 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
109 ." `nom` varchar(255) NOT NULL,"
110 ." `url` varchar(255) NOT NULL,"
111 ." PRIMARY KEY (`id`)"
112 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
116 "CREATE TABLE `#--sml_sources`("
117 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
118 ." `id_class` int(11) NOT NULL,"
119 ." `reference` varchar(255) DEFAULT NULL,"
120 ." `titre` varchar(255) DEFAULT NULL,"
121 ." `licence` int(11) DEFAULT NULL,"
122 ." `date_creation` date DEFAULT NULL,"
123 ." `date_inscription` datetime NOT NULL,"
124 ." PRIMARY KEY (`id`),"
125 ." KEY `id_class` (`id_class`),"
126 ." KEY `licence` (`licence`)"
127 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
131 "CREATE TABLE `#--sml_sources_access`("
132 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
133 ." `nom` varchar(255) NOT NULL,"
134 ." `intitule` varchar(255) NOT NULL,"
135 ." PRIMARY KEY (`id`)"
136 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
140 "CREATE TABLE `#--sml_sources_authors`("
141 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
142 ." `id_source` int(11) NOT NULL,"
143 ." `id_author` int(11) NOT NULL,"
144 ." `id_sources_access` int(11) NOT NULL,"
145 ." PRIMARY KEY (`id`),"
146 ." KEY `id_object` (`id_source`),"
147 ." KEY `id_author` (`id_author`),"
148 ." KEY `id_sources_access` (`id_sources_access`)"
149 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
153 "CREATE TABLE `#--sml_sources_infos`("
154 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
155 ." `id_source` int(11) NOT NULL,"
156 ." `key` varchar(255) NOT NULL,"
157 ." `value` text NOT NULL,"
158 ." PRIMARY KEY (`id`),"
159 ." KEY `id_source` (`id_source`)"
160 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
164 "CREATE TABLE `#--sml_source_cache`("
165 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
166 ." `url` varchar(255) NOT NULL,"
167 ." `id_source` int(11) NOT NULL,"
168 ." `last_update` datetime NOT NULL,"
169 ." PRIMARY KEY (`id`)"
170 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
174 "CREATE TABLE `#--sml_source_compositions`("
175 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
176 ." `id_source` int(11) NOT NULL,"
177 ." `id_composition` int(11) NOT NULL,"
178 ." PRIMARY KEY (`id`),"
179 ." KEY `id_source` (`id_source`),"
180 ." KEY `id_composition` (`id_composition`)"
181 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
185 "CREATE TABLE `#--sml_source_derivations`("
186 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
187 ." `id_source` int(11) NOT NULL,"
188 ." `derivation` varchar(255) NOT NULL,"
189 ." PRIMARY KEY (`id`),"
190 ." KEY `derivation` (`derivation`)"
191 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
195 "CREATE TABLE `#--sml_source_documents`("
196 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
197 ." `id_source` int(11) NOT NULL,"
198 ." `nom` varchar(255) NOT NULL,"
199 ." `url` varchar(255) NOT NULL,"
200 ." PRIMARY KEY (`id`),"
201 ." KEY `id_source` (`id_source`)"
202 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
206 "CREATE TABLE `#--sml_sources_invitations`("
207 ." `id` INT(11) NOT NULL AUTO_INCREMENT,"
208 ." `id_user` INT(11) NOT NULL,"
209 ." `id_source` INT(11) NOT NULL,"
210 ." `id_author` INT(11) NOT NULL,"
211 ." `id_sources_access` INT(11) NOT NULL,"
212 ." `date_invitation` datetime NOT NULL,"
213 ." PRIMARY KEY (`id`)"
219 return "imposible de creer les tables en base";
223 "INSERT INTO `#--sml_licences` (`id`, `nom`, `url`) VALUES"
224 ."(1, 'Creative commons by-sa 2.0', 'http://creativecommons.org/licenses/by-sa/2.0/deed.fr'),"
225 ."(2, 'Creative Commons by-nc-nd 2.5', 'http://creativecommons.org/licenses/by-nc-nd/2.5/'),"
226 ."(3, 'Creative Commons by-nc-sa 2.5', 'http://creativecommons.org/licenses/by-nc-sa/2.5/'),"
227 ."(4, 'Creative Commons by-nc 2.5', 'http://creativecommons.org/licenses/by-nc/2.5/'),"
228 ."(5, 'Creative Commons by-nd 2.5', 'http://creativecommons.org/licenses/by-nd/2.5/'),"
229 ."(6, 'Creative Commons by-sa 2.5', 'http://creativecommons.org/licenses/by-sa/2.5/'),"
230 ."(7, 'Creative Commons by 2.5', 'http://creativecommons.org/licenses/by/2.5/'),"
231 ."(8, 'Licence Art Libre', 'http://artlibre.org/licence/lal/'),"
232 ."(9, 'Licence C Reaction', 'http://morne.free.fr/Necktar7/creactionfr.htm'),"
233 ."(10, 'Yellow OpenMusic License', 'http://openmusic.linuxtag.org/yellow.html'),"
234 ."(11, 'Green OpenMusic License', 'http://openmusic.linuxtag.org/green.html')";
238 "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES"
245 "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES"
\r
246 ."(1, 'admin', 'administrateur'),"
\r
247 ."(2, 'editeur', 'éditeur'),"
\r
248 ."(3, 'contributeur', 'contributeur')";
253 return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut.";
258 // ---------------------------------------------------------------------------------
262 function uninstall($env){
264 $env->bdd("sgbd") == "mysql"
265 || $env->bdd("sgbd") == "pdo_mysql"
266 ) return $this->uninstall_mysql($env);
270 function uninstall_mysql($env){
271 $data = $env->data();
272 $sgbd = $data->sgbd();
273 if(!$this->disable($env)) return "impossible de desactiver le plugin";
275 $sgbd->query("DROP TABLE #--sml_authors");
278 return "impossible de supprimer la table #--sml_authors";
281 $sgbd->query("DROP TABLE #--sml_classes");
284 return "impossible de supprimer la table #--sml_classes";
287 $sgbd->query("DROP TABLE #--sml_licences");
290 return "impossible de supprimer la table #--sml_licences";
293 $sgbd->query("DROP TABLE #--sml_sources");
296 return "impossible de supprimer la table #--sml_sources";
299 $sgbd->query("DROP TABLE #--sml_sources_access");
302 return "impossible de supprimer la table #--sml_sources_access";
305 $sgbd->query("DROP TABLE #--sml_sources_authors");
308 return "impossible de supprimer la table #--sml_sources_authors";
311 $sgbd->query("DROP TABLE #--sml_sources_infos");
314 return "impossible de supprimer la table #--sml_sources_infos";
317 $sgbd->query("DROP TABLE #--sml_source_cache");
320 return "impossible de supprimer la table #--sml_source_cache";
323 $sgbd->query("DROP TABLE #--sml_source_compositions");
326 return "impossible de supprimer la table #--sml_source_compositions";
329 $sgbd->query("DROP TABLE #--sml_source_derivations");
332 return "impossible de supprimer la table #--sml_source_derivations";
335 $sgbd->query("DROP TABLE #--sml_source_documents");
338 return "impossible de supprimer la table #--sml_source_documents";
341 $sgbd->query("DROP TABLE #--sml_sources_invitations");
344 return "impossible de supprimer la table #--sml_sources_invitations";