$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);
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;
}
$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){
|| $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";
.") 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";
$sgbd->query($sql);
$sql =
- "INSERT INTO `mw_sml_sources_access` (`id`, `nom`, `intitule`) VALUES"\r
+ "INSERT INTO `#--sml_sources_access` (`id`, `nom`, `intitule`) VALUES"\r
."(1, 'admin', 'administrateur'),"\r
."(2, 'editeur', 'éditeur'),"\r
."(3, 'contributeur', 'contributeur')";
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')";\r
+ $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
//
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";
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;
}