X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw_sourceml.php;h=47c3d4e6c098cf93b977aaf42345d70d21b65be3;hb=b54e7a0b72982b396436dd47189b3520dd3f0b5e;hp=ef62f77ce7c1a770ab9a1b6113563beb8a98ab2c;hpb=9391cb9ccb3dd2884e7be2f15aa729733288f1e5;p=mw_sourceml diff --git a/mw_sourceml.php b/mw_sourceml.php index ef62f77..47c3d4e 100644 --- a/mw_sourceml.php +++ b/mw_sourceml.php @@ -17,12 +17,16 @@ $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"), "Auteurs", 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("menu_top/groupes", $env->url("sources/groupe"), "Auteurs", 10); + $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); $env->set_link("menu_top/pistes", $env->url("sources/piste"), "Sources", 13); @@ -47,7 +51,10 @@ $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); + return "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par SourceML"; } function install_mysql($env){ @@ -65,7 +72,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 +208,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"; @@ -241,6 +261,234 @@ 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 `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES (1, 'admin', 'administrateur')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES (2, 'editeur', 'éditeur')"; + $sgbd->query($sql); + + $sql = + "INSERT INTO `mw_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; + } + // --------------------------------------------------------------------------------- // uninstall // @@ -249,11 +497,12 @@ 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); + 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,9 +572,46 @@ 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; } + // --------------------------------------------------------------------------------- + // fonctions internes + // + + function nb_invitations($env){ + if($user = $env->user()){ + $data = $env->data(); + if($groupes = $data->groupes($user["id"])){ + $groupes_in = ""; + foreach($groupes["list"] as $id_groupe => $groupe) $groupes_in .= ($groupes_in ? "," : "").$id_groupe; + if($groupes_in){ + if( + ( + $invitations = $data->list_sml_sources_invitations( + array( + "index_name" => "id", + "where"=> "id_author IN(".$groupes_in.") OR id_user=".$user["id"], + "order_by" => "date_invitation", + "order" => "DESC" + ) + ) + ) !== false + ){ + return $invitations["total"]; + } + } + } + } + return 0; + } + } ?> \ No newline at end of file