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");
72 return "impossible de savoir si les tables existent deja";
75 return "des tables existent deja en base. installation annulee";
79 "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"";
83 "CREATE TABLE `#--sml_authors`("
84 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
85 ." `id_user` int(11) NOT NULL,"
86 ." `nom` varchar(255) NOT NULL,"
87 ." `image` varchar(255) DEFAULT NULL,"
88 ." `description` text,"
89 ." `email` varchar(255) NOT NULL,"
90 ." `contact_form` tinyint(4) NOT NULL,"
91 ." `captcha` tinyint(4) NOT NULL,"
92 ." PRIMARY KEY (`id`),"
93 ." KEY `id_user` (`id_user`)"
94 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
98 "CREATE TABLE `#--sml_classes`("
99 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
100 ." `nom` varchar(255) NOT NULL,"
101 ." PRIMARY KEY (`id`)"
102 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
106 "CREATE TABLE `#--sml_licences`("
107 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
108 ." `nom` varchar(255) NOT NULL,"
109 ." `url` varchar(255) NOT NULL,"
110 ." PRIMARY KEY (`id`)"
111 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
115 "CREATE TABLE `#--sml_sources`("
116 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
117 ." `id_class` int(11) NOT NULL,"
118 ." `reference` varchar(255) DEFAULT NULL,"
119 ." `titre` varchar(255) DEFAULT NULL,"
120 ." `licence` int(11) DEFAULT NULL,"
121 ." `date_creation` date DEFAULT NULL,"
122 ." `date_inscription` datetime NOT NULL,"
123 ." PRIMARY KEY (`id`),"
124 ." KEY `id_class` (`id_class`),"
125 ." KEY `licence` (`licence`)"
126 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
130 "CREATE TABLE `#--sml_sources_access`("
131 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
132 ." `nom` varchar(255) NOT NULL,"
133 ." `intitule` varchar(255) NOT NULL,"
134 ." PRIMARY KEY (`id`)"
135 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
139 "CREATE TABLE `#--sml_sources_authors`("
140 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
141 ." `id_source` int(11) NOT NULL,"
142 ." `id_author` int(11) NOT NULL,"
143 ." `id_sources_access` int(11) NOT NULL,"
144 ." PRIMARY KEY (`id`),"
145 ." KEY `id_object` (`id_source`),"
146 ." KEY `id_author` (`id_author`),"
147 ." KEY `id_sources_access` (`id_sources_access`)"
148 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
152 "CREATE TABLE `#--sml_sources_infos`("
153 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
154 ." `id_source` int(11) NOT NULL,"
155 ." `key` varchar(255) NOT NULL,"
156 ." `value` text NOT NULL,"
157 ." PRIMARY KEY (`id`),"
158 ." KEY `id_source` (`id_source`)"
159 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
163 "CREATE TABLE `#--sml_source_cache`("
164 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
165 ." `url` varchar(255) NOT NULL,"
166 ." `id_source` int(11) NOT NULL,"
167 ." `last_update` datetime NOT NULL,"
168 ." PRIMARY KEY (`id`)"
169 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
173 "CREATE TABLE `#--sml_source_compositions`("
174 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
175 ." `id_source` int(11) NOT NULL,"
176 ." `id_composition` int(11) NOT NULL,"
177 ." PRIMARY KEY (`id`),"
178 ." KEY `id_source` (`id_source`),"
179 ." KEY `id_composition` (`id_composition`)"
180 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
184 "CREATE TABLE `#--sml_source_derivations`("
185 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
186 ." `id_source` int(11) NOT NULL,"
187 ." `derivation` varchar(255) NOT NULL,"
188 ." PRIMARY KEY (`id`),"
189 ." KEY `derivation` (`derivation`)"
190 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
194 "CREATE TABLE `#--sml_source_documents`("
195 ." `id` int(11) NOT NULL AUTO_INCREMENT,"
196 ." `id_source` int(11) NOT NULL,"
197 ." `nom` varchar(255) NOT NULL,"
198 ." `url` varchar(255) NOT NULL,"
199 ." PRIMARY KEY (`id`),"
200 ." KEY `id_source` (`id_source`)"
201 .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
205 "CREATE TABLE `#--sml_sources_invitations`("
206 ." `id` INT(11) NOT NULL AUTO_INCREMENT,"
207 ." `id_user` INT(11) NOT NULL,"
208 ." `id_source` INT(11) NOT NULL,"
209 ." `id_author` INT(11) NOT NULL,"
210 ." `id_sources_access` INT(11) NOT NULL,"
211 ." PRIMARY KEY (`id`)"
217 return "imposible de creer les tables en base";
221 "INSERT INTO `#--sml_licences` (`id`, `nom`, `url`) VALUES"
222 ."(1, 'Creative commons by-sa 2.0', 'http://creativecommons.org/licenses/by-sa/2.0/deed.fr'),"
223 ."(2, 'Creative Commons by-nc-nd 2.5', 'http://creativecommons.org/licenses/by-nc-nd/2.5/'),"
224 ."(3, 'Creative Commons by-nc-sa 2.5', 'http://creativecommons.org/licenses/by-nc-sa/2.5/'),"
225 ."(4, 'Creative Commons by-nc 2.5', 'http://creativecommons.org/licenses/by-nc/2.5/'),"
226 ."(5, 'Creative Commons by-nd 2.5', 'http://creativecommons.org/licenses/by-nd/2.5/'),"
227 ."(6, 'Creative Commons by-sa 2.5', 'http://creativecommons.org/licenses/by-sa/2.5/'),"
228 ."(7, 'Creative Commons by 2.5', 'http://creativecommons.org/licenses/by/2.5/'),"
229 ."(8, 'Licence Art Libre', 'http://artlibre.org/licence/lal/'),"
230 ."(9, 'Licence C Reaction', 'http://morne.free.fr/Necktar7/creactionfr.htm'),"
231 ."(10, 'Yellow OpenMusic License', 'http://openmusic.linuxtag.org/yellow.html'),"
232 ."(11, 'Green OpenMusic License', 'http://openmusic.linuxtag.org/green.html')";
236 "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES"
243 "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES"
\r
244 ."(1, 'admin', 'administrateur'),"
\r
245 ."(2, 'editeur', 'éditeur'),"
\r
246 ."(3, 'contributeur', 'contributeur')";
251 return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut.";
256 // ---------------------------------------------------------------------------------
260 function uninstall($env){
262 $env->bdd("sgbd") == "mysql"
263 || $env->bdd("sgbd") == "pdo_mysql"
264 ) return $this->uninstall_mysql($env);
268 function uninstall_mysql($env){
269 $data = $env->data();
270 $sgbd = $data->sgbd();
271 if(!$this->disable($env)) return "impossible de desactiver le plugin";
273 $sgbd->query("DROP TABLE #--sml_authors");
276 return "impossible de supprimer la table #--sml_authors";
279 $sgbd->query("DROP TABLE #--sml_classes");
282 return "impossible de supprimer la table #--sml_classes";
285 $sgbd->query("DROP TABLE #--sml_licences");
288 return "impossible de supprimer la table #--sml_licences";
291 $sgbd->query("DROP TABLE #--sml_sources");
294 return "impossible de supprimer la table #--sml_sources";
297 $sgbd->query("DROP TABLE #--sml_sources_access");
300 return "impossible de supprimer la table #--sml_sources_access";
303 $sgbd->query("DROP TABLE #--sml_sources_authors");
306 return "impossible de supprimer la table #--sml_sources_authors";
309 $sgbd->query("DROP TABLE #--sml_sources_infos");
312 return "impossible de supprimer la table #--sml_sources_infos";
315 $sgbd->query("DROP TABLE #--sml_source_cache");
318 return "impossible de supprimer la table #--sml_source_cache";
321 $sgbd->query("DROP TABLE #--sml_source_compositions");
324 return "impossible de supprimer la table #--sml_source_compositions";
327 $sgbd->query("DROP TABLE #--sml_source_derivations");
330 return "impossible de supprimer la table #--sml_source_derivations";
333 $sgbd->query("DROP TABLE #--sml_source_documents");
336 return "impossible de supprimer la table #--sml_source_documents";
339 $sgbd->query("DROP TABLE #--sml_sources_invitations");
342 return "impossible de supprimer la table #--sml_sources_invitations";