X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw_sourceml.php;h=a9e27f27f8114f052000b3b880d97a66e027f514;hb=refs%2Ftags%2Fsourceml.1.1.0;hp=2769e77da01946e9ec0b1eee2c85d29b75d3a6d1;hpb=2802d2dbcb5a1ea3c269d6fb4df9fbfb0f13f93d;p=mw_sourceml diff --git a/mw_sourceml.php b/mw_sourceml.php index 2769e77..a9e27f2 100644 --- a/mw_sourceml.php +++ b/mw_sourceml.php @@ -22,6 +22,10 @@ $env->set_link("users/morceaux", $env->url("users/morceaux"), "Morceaux", 32); $env->set_link("users/pistes", $env->url("users/pistes"), "Sources", 33); + $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); $env->set_link("menu_top/morceaux", $env->url("sources/morceau"), "Morceaux", 12); @@ -30,6 +34,18 @@ 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){ return true; } @@ -47,7 +63,13 @@ $env->bdd("sgbd") == "mysql" || $env->bdd("sgbd") == "pdo_mysql" ) return $this->install_mysql($env); - return false; + elseif( + $env->bdd("sgbd") == "pdo_sqlite" + ) return $this->install_sqlite($env); + elseif( + $env->bdd("sgbd") == "xml" + ) return $this->install_xml($env); + return "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par SourceML"; } function install_mysql($env){ @@ -65,7 +87,8 @@ || $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_source_documents") + || $sgbd->table_exists("#--sml_sources_invitations"); } catch(Exception $e){ return "impossible de savoir si les tables existent deja"; @@ -200,6 +223,18 @@ .") 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"; @@ -228,7 +263,7 @@ $sgbd->query($sql); $sql = - "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES" + "INSERT INTO `#--sml_sources_access` (`id`, `nom`, `intitule`) VALUES" ."(1, 'admin', 'administrateur')," ."(2, 'editeur', 'éditeur')," ."(3, 'contributeur', 'contributeur')"; @@ -241,6 +276,436 @@ return true; } + function install_sqlite($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 = + "CREATE TABLE #--sml_authors(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_user` INTEGER NOT NULL," + ." `nom` TEXT NOT NULL," + ." `image` TEXT DEFAULT NULL," + ." `description` TEXT," + ." `email` TEXT NOT NULL," + ." `contact_form` INTEGER NOT NULL," + ." `captcha` INTEGER NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_classes(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `nom` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_licences(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `nom` TEXT NOT NULL," + ." `url` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_sources(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_class` INTEGER NOT NULL," + ." `reference` TEXT DEFAULT NULL," + ." `titre` TEXT DEFAULT NULL," + ." `licence` INTEGER DEFAULT NULL," + ." `date_creation` TEXT DEFAULT NULL," + ." `date_inscription` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_sources_access(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `nom` TEXT NOT NULL," + ." `intitule` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_sources_authors(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_source` INTEGER NOT NULL," + ." `id_author` INTEGER NOT NULL," + ." `id_sources_access` INTEGER NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_sources_infos(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_source` INTEGER NOT NULL," + ." `key` TEXT NOT NULL," + ." `value` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_source_cache(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `url` TEXT NOT NULL," + ." `id_source` INTEGER NOT NULL," + ." `last_update` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_source_compositions(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_source` INTEGER NOT NULL," + ." `id_composition` INTEGER NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_source_derivations(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_source` INTEGER NOT NULL," + ." `derivation` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_source_documents(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_source` INTEGER NOT NULL," + ." `nom` TEXT NOT NULL," + ." `url` TEXT NOT NULL" + .")"; + $sgbd->query($sql); + + $sql = + "CREATE TABLE #--sml_sources_invitations(" + ." `id` INTEGER PRIMARY KEY AUTOINCREMENT," + ." `id_user` INTEGER NOT NULL," + ." `id_source` INTEGER NOT NULL," + ." `id_author` INTEGER NOT NULL," + ." `id_sources_access` INTEGER NOT NULL," + ." `date_invitation` TEXT NOT NULL" + .")"; + $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')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (2, 'Creative Commons by-nc-nd 2.5', 'http://creativecommons.org/licenses/by-nc-nd/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (3, 'Creative Commons by-nc-sa 2.5', 'http://creativecommons.org/licenses/by-nc-sa/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (4, 'Creative Commons by-nc 2.5', 'http://creativecommons.org/licenses/by-nc/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (5, 'Creative Commons by-nd 2.5', 'http://creativecommons.org/licenses/by-nd/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (6, 'Creative Commons by-sa 2.5', 'http://creativecommons.org/licenses/by-sa/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (7, 'Creative Commons by 2.5', 'http://creativecommons.org/licenses/by/2.5/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (8, 'Licence Art Libre', 'http://artlibre.org/licence/lal/')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (9, 'Licence C Reaction', 'http://morne.free.fr/Necktar7/creactionfr.htm')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (10, 'Yellow OpenMusic License', 'http://openmusic.linuxtag.org/yellow.html')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO #--sml_licences(`id`, `nom`, `url`)" + ." VALUES (11, 'Green OpenMusic License', 'http://openmusic.linuxtag.org/green.html')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES (1, 'album')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES (2, 'morceau')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_classes` (`id`, `nom`) VALUES (3, 'piste')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_sources_access` (`id`, `nom`, `intitule`) VALUES (1, 'admin', 'administrateur')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_sources_access` (`id`, `nom`, `intitule`) VALUES (2, 'editeur', 'éditeur')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `#--sml_sources_access` (`id`, `nom`, `intitule`) VALUES (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; + } + + function install_xml($env){ + $data = $env->data(); + $sgbd = $data->sgbd(); + + $RES = true; + $res = $sgbd->data_exists("sml_authors"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_classes"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_licences"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_sources"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_sources_access"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_sources_authors"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_sources_infos"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_source_cache"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_source_compositions"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_source_derivations"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_source_documents"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + $res = $sgbd->data_exists("sml_sources_invitations"); if(isset($res)){ if($res) $RES = 1; } else $RES = -1; + + if($RES === -1) return "impossible de savoir si les tables existent deja. installation annulee"; + if($RES === 1) return "des tables existent deja en base. installation annulee"; + + if(!$sgbd->create_data("sml_authors")) return "impossible de creer la table sml_authors"; + if(!$sgbd->create_data("sml_classes")) return "impossible de creer la table sml_classes"; + if(!$sgbd->create_data("sml_licences")) return "impossible de creer la table sml_licences"; + if(!$sgbd->create_data("sml_sources")) return "impossible de creer la table sml_sources"; + if(!$sgbd->create_data("sml_sources_access")) return "impossible de creer la table sml_sources_access"; + if(!$sgbd->create_data("sml_sources_authors")) return "impossible de creer la table sml_sources_authors"; + if(!$sgbd->create_data("sml_sources_infos")) return "impossible de creer la table sml_sources_infos"; + if(!$sgbd->create_data("sml_source_cache")) return "impossible de creer la table sml_source_cache"; + if(!$sgbd->create_data("sml_source_compositions")) return "impossible de creer la table sml_source_compositions"; + if(!$sgbd->create_data("sml_source_derivations")) return "impossible de creer la table sml_source_derivations"; + if(!$sgbd->create_data("sml_source_documents")) return "impossible de creer la table sml_source_documents"; + if(!$sgbd->create_data("sml_sources_invitations")) return "impossible de creer la table sml_sources_invitations"; + + $ERROR = false; + + // ------------------------------------ sml_licences + + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative commons by-sa 2.0", + "url" => "http://creativecommons.org/licenses/by-sa/2.0/deed.fr" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by-nc-nd 2.5", + "url" => "http://creativecommons.org/licenses/by-nc-nd/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by-nc-sa 2.5", + "url" => "http://creativecommons.org/licenses/by-nc-sa/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by-nc 2.5", + "url" => "http://creativecommons.org/licenses/by-nc/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by-nd 2.5", + "url" => "http://creativecommons.org/licenses/by-nd/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by-sa 2.5", + "url" => "http://creativecommons.org/licenses/by-sa/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Creative Commons by 2.5", + "url" => "http://creativecommons.org/licenses/by/2.5/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Licence Art Libre", + "url" => "http://artlibre.org/licence/lal/" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Licence C Reaction", + "url" => "http://morne.free.fr/Necktar7/creactionfr.htm" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Yellow OpenMusic License", + "url" => "http://openmusic.linuxtag.org/yellow.html" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_licences", + array( + "nom" => "Green OpenMusic License", + "url" => "http://openmusic.linuxtag.org/green.html" + ) + ) + ) $ERROR = true; + + // ------------------------------------ sml_classes + + if(!$ERROR) if( + !$sgbd->add_data( + "sml_classes", + array( + "nom" => "album" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_classes", + array( + "nom" => "morceau" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_classes", + array( + "nom" => "piste" + ) + ) + ) $ERROR = true; + + // ------------------------------------ sml_sources_access + + if(!$ERROR) if( + !$sgbd->add_data( + "sml_sources_access", + array( + "nom" => "admin", + "intitule" => "administrateur" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_sources_access", + array( + "nom" => "editeur", + "intitule" => "éditeur" + ) + ) + ) $ERROR = true; + if(!$ERROR) if( + !$sgbd->add_data( + "sml_sources_access", + array( + "nom" => "contributeur", + "intitule" => "contributeur" + ) + ) + ) $ERROR = true; + + if($ERROR){ + return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut."; + } + + return true; + } + // --------------------------------------------------------------------------------- // uninstall // @@ -249,11 +714,15 @@ if( $env->bdd("sgbd") == "mysql" || $env->bdd("sgbd") == "pdo_mysql" - ) return $this->uninstall_mysql($env); - return false; + || $env->bdd("sgbd") == "pdo_sqlite" + ) return $this->uninstall_sql($env); + if( + $env->bdd("sgbd") == "xml" + ) return $this->uninstall_xml($env); + return "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par SourceML"; } - function uninstall_mysql($env){ + function uninstall_sql($env){ $data = $env->data(); $sgbd = $data->sgbd(); if(!$this->disable($env)) return "impossible de desactiver le plugin"; @@ -323,6 +792,40 @@ 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; + } + + function uninstall_xml($env){ + $data = $env->data(); + $sgbd = $data->sgbd(); + if(!$this->disable($env)) return "impossible de desactiver le plugin"; + + $ERROR = false; + + if(!$ERROR) if(!$sgbd->remove_data("sml_authors")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_classes")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_licences")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_sources")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_sources_access")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_sources_authors")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_sources_infos")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_source_cache")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_source_compositions")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_source_derivations")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_source_documents")) $ERROR = true; + if(!$ERROR) if(!$sgbd->remove_data("sml_sources_invitations")) $ERROR = true; + + + if($ERROR){ + return "erreur lors de la suppression des tables"; + } + return true; }