set_link("admin/sourceml", $env->url("admin/sourceml"), "SourceML", 50); $env->set_link("admin/sourceml/licences", $env->url("admin/licences"), "Licences", 10); $env->set_link("admin/sourceml/cache", $env->url("admin/cache"), "Cache", 20); $env->set_link("admin/sourceml/maintenance", $env->url("admin/maintenance"), "Maintenance", 30); $env->set_link("users/authors", $env->url("users/groupes"), "Groupes", 30); $env->set_link("users/albums", $env->url("users/albums"), "Albums", 31); $env->set_link("users/morceaux", $env->url("users/morceaux"), "Morceaux", 32); $env->set_link("users/pistes", $env->url("users/pistes"), "Sources", 33); $env->set_link("users/sources_invitations", $env->url("users/sources_invitations"), "Invitations", 34); $env->set_link("menu_top/groupes", $env->url("sources/groupe"), "Groupes", 10); $env->set_link("menu_top/albums", $env->url("sources/album"), "Albums", 11); $env->set_link("menu_top/morceaux", $env->url("sources/morceau"), "Morceaux", 12); $env->set_link("menu_top/pistes", $env->url("sources/piste"), "Sources", 13); return true; } function enable($env){ return true; } function disable($env){ return true; } // --------------------------------------------------------------------------------- // install // function install($env){ if( $env->bdd("sgbd") == "mysql" || $env->bdd("sgbd") == "pdo_mysql" ) return $this->install_mysql($env); return false; } function install_mysql($env){ $data = $env->data(); $sgbd = $data->sgbd(); try{ $EXISTS = $sgbd->table_exists("#--sml_authors") || $sgbd->table_exists("#--sml_classes") || $sgbd->table_exists("#--sml_licences") || $sgbd->table_exists("#--sml_sources") || $sgbd->table_exists("#--sml_sources_access") || $sgbd->table_exists("#--sml_sources_authors") || $sgbd->table_exists("#--sml_sources_infos") || $sgbd->table_exists("#--sml_source_cache") || $sgbd->table_exists("#--sml_source_compositions") || $sgbd->table_exists("#--sml_source_derivations") || $sgbd->table_exists("#--sml_source_documents") || $sgbd->table_exists("#--sml_sources_invitations"); } catch(Exception $e){ return "impossible de savoir si les tables existent deja"; } if($EXISTS){ return "des tables existent deja en base. installation annulee"; } try{ $sql = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\""; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_authors`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_user` int(11) NOT NULL," ." `nom` varchar(255) NOT NULL," ." `image` varchar(255) DEFAULT NULL," ." `description` text," ." `email` varchar(255) NOT NULL," ." `contact_form` tinyint(4) NOT NULL," ." `captcha` tinyint(4) NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_user` (`id_user`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_classes`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `nom` varchar(255) NOT NULL," ." PRIMARY KEY (`id`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_licences`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `nom` varchar(255) NOT NULL," ." `url` varchar(255) NOT NULL," ." PRIMARY KEY (`id`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_sources`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_class` int(11) NOT NULL," ." `reference` varchar(255) DEFAULT NULL," ." `titre` varchar(255) DEFAULT NULL," ." `licence` int(11) DEFAULT NULL," ." `date_creation` date DEFAULT NULL," ." `date_inscription` datetime NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_class` (`id_class`)," ." KEY `licence` (`licence`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_sources_access`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `nom` varchar(255) NOT NULL," ." `intitule` varchar(255) NOT NULL," ." PRIMARY KEY (`id`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_sources_authors`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_source` int(11) NOT NULL," ." `id_author` int(11) NOT NULL," ." `id_sources_access` int(11) NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_object` (`id_source`)," ." KEY `id_author` (`id_author`)," ." KEY `id_sources_access` (`id_sources_access`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_sources_infos`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_source` int(11) NOT NULL," ." `key` varchar(255) NOT NULL," ." `value` text NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_source` (`id_source`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_source_cache`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `url` varchar(255) NOT NULL," ." `id_source` int(11) NOT NULL," ." `last_update` datetime NOT NULL," ." PRIMARY KEY (`id`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_source_compositions`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_source` int(11) NOT NULL," ." `id_composition` int(11) NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_source` (`id_source`)," ." KEY `id_composition` (`id_composition`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_source_derivations`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_source` int(11) NOT NULL," ." `derivation` varchar(255) NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `derivation` (`derivation`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_source_documents`(" ." `id` int(11) NOT NULL AUTO_INCREMENT," ." `id_source` int(11) NOT NULL," ." `nom` varchar(255) NOT NULL," ." `url` varchar(255) NOT NULL," ." PRIMARY KEY (`id`)," ." KEY `id_source` (`id_source`)" .") DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; $sgbd->query($sql); $sql = "CREATE TABLE `#--sml_sources_invitations`(" ." `id` INT(11) NOT NULL AUTO_INCREMENT," ." `id_user` INT(11) NOT NULL," ." `id_source` INT(11) NOT NULL," ." `id_author` INT(11) NOT NULL," ." `id_sources_access` INT(11) NOT NULL," ." `date_invitation` datetime NOT NULL," ." PRIMARY KEY (`id`)" .")"; $sgbd->query($sql); } catch(Exception $e){ return "imposible de creer les tables en base"; } try{ $sql = "INSERT INTO `#--sml_licences` (`id`, `nom`, `url`) VALUES" ."(1, 'Creative commons by-sa 2.0', 'http://creativecommons.org/licenses/by-sa/2.0/deed.fr')," ."(2, 'Creative Commons by-nc-nd 2.5', 'http://creativecommons.org/licenses/by-nc-nd/2.5/')," ."(3, 'Creative Commons by-nc-sa 2.5', 'http://creativecommons.org/licenses/by-nc-sa/2.5/')," ."(4, 'Creative Commons by-nc 2.5', 'http://creativecommons.org/licenses/by-nc/2.5/')," ."(5, 'Creative Commons by-nd 2.5', 'http://creativecommons.org/licenses/by-nd/2.5/')," ."(6, 'Creative Commons by-sa 2.5', 'http://creativecommons.org/licenses/by-sa/2.5/')," ."(7, 'Creative Commons by 2.5', 'http://creativecommons.org/licenses/by/2.5/')," ."(8, 'Licence Art Libre', 'http://artlibre.org/licence/lal/')," ."(9, 'Licence C Reaction', 'http://morne.free.fr/Necktar7/creactionfr.htm')," ."(10, 'Yellow OpenMusic License', 'http://openmusic.linuxtag.org/yellow.html')," ."(11, 'Green OpenMusic License', 'http://openmusic.linuxtag.org/green.html')"; $sgbd->query($sql); $sql = "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES" ."(1, 'album')," ."(2, 'morceau')," ."(3, 'piste')"; $sgbd->query($sql); $sql = "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES" ."(1, 'admin', 'administrateur')," ."(2, 'editeur', 'éditeur')," ."(3, 'contributeur', 'contributeur')"; $sgbd->query($sql); } catch(Exception $e){ return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut."; } return true; } // --------------------------------------------------------------------------------- // uninstall // function uninstall($env){ if( $env->bdd("sgbd") == "mysql" || $env->bdd("sgbd") == "pdo_mysql" ) return $this->uninstall_mysql($env); return false; } function uninstall_mysql($env){ $data = $env->data(); $sgbd = $data->sgbd(); if(!$this->disable($env)) return "impossible de desactiver le plugin"; try{ $sgbd->query("DROP TABLE #--sml_authors"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_authors"; } try{ $sgbd->query("DROP TABLE #--sml_classes"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_classes"; } try{ $sgbd->query("DROP TABLE #--sml_licences"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_licences"; } try{ $sgbd->query("DROP TABLE #--sml_sources"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_sources"; } try{ $sgbd->query("DROP TABLE #--sml_sources_access"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_sources_access"; } try{ $sgbd->query("DROP TABLE #--sml_sources_authors"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_sources_authors"; } try{ $sgbd->query("DROP TABLE #--sml_sources_infos"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_sources_infos"; } try{ $sgbd->query("DROP TABLE #--sml_source_cache"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_source_cache"; } try{ $sgbd->query("DROP TABLE #--sml_source_compositions"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_source_compositions"; } try{ $sgbd->query("DROP TABLE #--sml_source_derivations"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_source_derivations"; } try{ $sgbd->query("DROP TABLE #--sml_source_documents"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_source_documents"; } try{ $sgbd->query("DROP TABLE #--sml_sources_invitations"); } catch(Exception $e){ return "impossible de supprimer la table #--sml_sources_invitations"; } return true; } } ?>