X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw_sourceml.php;h=286c4554ad1d046c4a86de36e3e90c338317b460;hb=bddc14010d53febecfad747971148c14ec59f5aa;hp=2c7cc5bd121b07b5454871be1b2deab2d7761b43;hpb=b2437852f60b76e437950c0458149d92686ee38b;p=mw_sourceml diff --git a/mw_sourceml.php b/mw_sourceml.php index 2c7cc5b..286c455 100644 --- a/mw_sourceml.php +++ b/mw_sourceml.php @@ -10,6 +10,35 @@ return "Publication de sources musicales"; } + function loaded($env){ + $AUTO_ACTIVATE = false; + if(!$env->bdd("sgbd") || ($plugin_data = $env->plugin_data("mw_sourceml")) === false) return; + if(!isset($plugin_data["installed"]) || !$plugin_data["installed"]){ + $data = $env->data(); + $sgbd = $data->sgbd(); + if($env->bdd("sgbd") == "xml"){ + $AUTO_ACTIVATE = $sgbd->data_exists("sources"); + } + else{ + $AUTO_ACTIVATE = $sgbd->table_exists("#--sources"); + } + } + if($AUTO_ACTIVATE){ + if( + $env->set_plugin_data( + "mw_sourceml", + array( + "installed" => true, + "enabled" => true, + "priorite" => 0 + ) + ) + ){ + $env->init_plugins("ASC", $RELOAD = true); + } + } + } + function init($env){ $env->set_link("admin/sourceml", $env->url("admin/sourceml"), "SourceML", 50); @@ -21,7 +50,10 @@ $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); + + $invitations_title = "Invitations"; + if($nb_invitations = $this->nb_invitations($env)) $invitations_title .= " (".$nb_invitations.")"; + $env->set_link("users/sources_invitations", $env->url("users/sources_invitations"), $invitations_title, 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); @@ -31,319 +63,91 @@ return true; } + function nb_invitations($env){ + if($user = $env->user()){ + $data = $env->data(); + if($groupes = $data->groupes($user["id"])){ + if($invitations = $data->sources_invitations($groupes["list"], $user["id"])){ + return $invitations["total"]; + } + } + } + return 0; + } + function enable($env){ + $data = $env->data(); + if( + ($data->config("site_name") == "mtweb") + && (($plugins = $env->plugins()) !== false) + && (count($plugins) == 1) + ){ + $data->set_config("site_name", "SourceML"); + } return true; } function disable($env){ + $data = $env->data(); + if( + ($data->config("site_name") == "SourceML") + && (($plugins = $env->plugins()) !== false) + && (count($plugins) == 1) + ){ + $data->set_config("site_name", "mtweb"); + } return true; } - // --------------------------------------------------------------------------------- - // install - // - function install($env){ + $data = $env->data(); + $res = true; 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"); - } - 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," - ." 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; + ){ + $data->load_modules($env->path("mw_dir")."plugins/mw_sourceml/app/", "data/modules/sql/"); + $res = $data->mw_sourceml_install_mysql($this, $env); + } + elseif( + $env->bdd("sgbd") == "pdo_sqlite" + ){ + $data->load_modules($env->path("mw_dir")."plugins/mw_sourceml/app/", "data/modules/sql/"); + $res = $data->mw_sourceml_install_sqlite($this, $env); + } + elseif( + $env->bdd("sgbd") == "xml" + ){ + $data->load_modules($env->path("mw_dir")."plugins/mw_sourceml/app/", "data/modules/xml/"); + $res = $data->mw_sourceml_install_xml($this, $env); + } + else{ + $res = "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par SourceML"; + } + return $res; } - // --------------------------------------------------------------------------------- - // uninstall - // - function uninstall($env){ + $data = $env->data(); + $res = true; 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"); + || $env->bdd("sgbd") == "pdo_sqlite" + ){ + $data->load_modules($env->path("mw_dir")."plugins/mw_sourceml/app/", "data/modules/sql/"); + $res = $data->mw_sourceml_uninstall_sql($this, $env); } - catch(Exception $e){ - return "impossible de supprimer la table #--sml_sources"; + elseif( + $env->bdd("sgbd") == "xml" + ){ + $data->load_modules($env->path("mw_dir")."plugins/mw_sourceml/app/", "data/modules/xml/"); + $res = $data->mw_sourceml_uninstall_xml($this, $env); } - try{ - $sgbd->query("DROP TABLE #--sml_sources_access"); + else{ + $res = "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par SourceML"; } - 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; + return $res; } } - -?> \ No newline at end of file