From: dj3c1t
Date: Sun, 23 Jun 2013 20:02:45 +0000 (+0200)
Subject: sourceml devient un plugin mtweb
X-Git-Tag: sourceml.0.15
X-Git-Url: http://git.dj3c1t.com/?p=mw_sourceml;a=commitdiff_plain;h=9391cb9ccb3dd2884e7be2f15aa729733288f1e5
sourceml devient un plugin mtweb
---
9391cb9ccb3dd2884e7be2f15aa729733288f1e5
diff --git a/app/config.xml b/app/config.xml
new file mode 100644
index 0000000..67903bd
--- /dev/null
+++ b/app/config.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ parent
+ status
+ groupe
+ album
+ morceau
+ piste
+ xml
+ derivation
+ reference
+
+
+
\ No newline at end of file
diff --git a/app/controllers/admin/cache.php b/app/controllers/admin/cache.php
new file mode 100644
index 0000000..b45330a
--- /dev/null
+++ b/app/controllers/admin/cache.php
@@ -0,0 +1,37 @@
+env();
+ $data = $env->data();
+ if(($CONFIG = $env->get_CONFIG()) !== false){
+ if(!isset($CONFIG["cache_actif"])) $CONFIG["cache_actif"] = "0";
+ if(!isset($CONFIG["cache_maj_auto"])) $CONFIG["cache_maj_auto"] = "0";
+ if(!isset($CONFIG["cache_time"])) $CONFIG["cache_time"] = "72";
+ $env->set_out("config", $CONFIG);
+ if($_POST){
+ $env->set_out("config", $_POST);
+ if(preg_match("/^[0-9]+$/", $_POST["cache_time"])){
+ $CONTINUE = true;
+ if($CONTINUE && $data->set_config("cache_actif", $_POST["cache_actif"]));
+ else $CONTINUE = false;
+ if($CONTINUE && $data->set_config("cache_maj_auto", $_POST["cache_maj_auto"]));
+ else $CONTINUE = false;
+ if($CONTINUE && $data->set_config("cache_time", $_POST["cache_time"]));
+ else $CONTINUE = false;
+ if($CONTINUE) $env->redirect(
+ $env->url("admin/cache"),
+ "la configuration du cache a été enregistrée"
+ );
+ else $env->erreur("Impossible d'enregistrer la configuration du cache");
+ }
+ else $env->message("durée de validité du cache doit être un nombre");
+ }
+ }
+ else $env->erreur("Impossible de lire la configuration du cache");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/admin/licences.php b/app/controllers/admin/licences.php
new file mode 100644
index 0000000..0ea28df
--- /dev/null
+++ b/app/controllers/admin/licences.php
@@ -0,0 +1,86 @@
+env();
+ $data = $env->data();
+ if($env->set_out("licences", $data->licences()) !== false)
+ {
+ }
+ else $env->erreur("impossible de lire la liste des licences");
+ }
+
+ function add(){
+ $env = $this->env();
+ $data = $env->data();
+ if($_POST)
+ { $env->set_out("licence", $_POST);
+ if($_POST["nom"])
+ { if
+ ( $data->add_licence
+ ( $_POST["nom"],
+ $_POST["url"]
+ )
+ )
+ $env->redirect
+ ( $env->url("admin/licences"),
+ "la licence ".$_POST["nom"]." a été ajoutée"
+ );
+ else $env->erreur("Impossible d'ajouter la licence");
+ }
+ else $env->message("merci de préciser un nom");
+ }
+ }
+
+ function edit(){
+ $env = $this->env();
+ $data = $env->data();
+ if($env->set_out("licence", $data->licence($_GET[$env->param("id")])))
+ { if($_POST)
+ { if($_POST["nom"])
+ { $licence = $env->out("licence");
+ $env->set_out("licence", $_POST);
+ if
+ ( $data->set_licence
+ ( $_GET[$env->param("id")],
+ $_POST["nom"],
+ $_POST["url"]
+ )
+ )
+ $env->redirect
+ ( $env->url("admin/licences"),
+ "la licence ".$licence["nom"]." a été modifiée"
+ );
+ else $env->erreur("Impossible de mettre à jour la licence");
+ }
+ else $env->message("Merci de préciser un nom");
+ }
+ }
+ else $env->erreur("impossible de lire la licence");
+ }
+
+ function del(){
+ $env = $this->env();
+ $data = $env->data();
+ if($env->set_out("licence", $data->licence($_GET[$env->param("id")])))
+ { $licence = $env->out("licence");
+ if(($res = $data->del_licence($_GET[$env->param("id")])) !== false)
+ { if($res === 1) $env->redirect
+ ( $env->url("admin/licences"),
+ "Des sources sur ce site utilisent cette licence, elle n'a pas été supprimée.",
+ 5
+ );
+ else $env->redirect
+ ( $env->url("admin/licences"),
+ "la licence ".$licence["nom"]." a été supprimée"
+ );
+ }
+ else $env->erreur("Impossible de supprimer la licence");
+ }
+ else $env->erreur("Impossible de lire les informations de cette licence");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/admin/maintenance.php b/app/controllers/admin/maintenance.php
new file mode 100644
index 0000000..7791b50
--- /dev/null
+++ b/app/controllers/admin/maintenance.php
@@ -0,0 +1,34 @@
+env();
+ $data = $env->data();
+ if($data->empty_source_cache())
+ { $env->redirect
+ ( $env->url("admin/maintenance"),
+ "le cache a été vidé"
+ );
+ }
+ else $env->erreur("Impossible de vider le cache");
+ }
+
+ function maj_all_xml(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->maj_source_xml_all())
+ { $env->redirect
+ ( $env->url("admin/maintenance"),
+ "les fichiers XML des sources ont été mis à jour"
+ );
+ }
+ else $env->erreur("Impossible de mettre à jour les fichiers XML des sources");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/admin/sourceml.php b/app/controllers/admin/sourceml.php
new file mode 100644
index 0000000..cc674c1
--- /dev/null
+++ b/app/controllers/admin/sourceml.php
@@ -0,0 +1,97 @@
+env();
+ $data = $env->data();
+ if(($this->status = $data->source_status()) === false)
+ { return "Impossible de lire la liste des status de source";
+ }
+ foreach($this->status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
+ if(isset($this->album_status_id) && isset($this->morceau_status_id)) break;
+ }
+ if(!isset($this->album_status_id)) return "Type de source inconnu: album";
+ if(($this->groupes = $data->groupes()) === false)
+ { return "Impossible de lire la liste des groupes";
+ }
+ $select = array("status" => $this->album_status_id);
+ if(($this->albums = $data->sources($select)) === false) return "impossible de lire la liste des albums";
+ return true;
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if(!($groupes = $this->groupes)){
+ $env->erreur("Impossible de lire la liste des groupes");
+ return;
+ }
+ if(!($albums = $this->albums)){
+ $env->erreur("Impossible de lire la liste des albums");
+ return;
+ }
+ if(($CONFIG = $env->get_CONFIG()) === false){
+ $env->erreur("Impossible de lire la configuration");
+ return;
+ }
+ if($_POST){
+ if($_POST["start_action"] == "sources/groupe"){
+ if(!$data->set_config("start_action", "sources/groupe")){
+ $env->erreur("impossible d'enregistrer la configuration");
+ return;
+ }
+ }
+ elseif($_POST["start_action"] == "sources/groupe/view"){
+ $params = array("id" => $_POST["groupe_param"]);
+ if(
+ !$data->set_config("start_action", "sources/groupe/view")
+ || !$data->set_config("start_action_params", @serialize($params))
+ ){
+ $env->erreur("impossible d'enregistrer la configuration");
+ return;
+ }
+ }
+ elseif($_POST["start_action"] == "sources/album/view"){
+ $params = array("album" => $_POST["album_param"]);
+ if(
+ !$data->set_config("start_action", "sources/album/view")
+ || !$data->set_config("start_action_params", @serialize($params))
+ ){
+ $env->erreur("impossible d'enregistrer la configuration");
+ return;
+ }
+ }
+ elseif(
+ isset($CONFIG["start_action"])
+ && (
+ ($CONFIG["start_action"] == "sources/groupe")
+ || ($CONFIG["start_action"] == "sources/groupe/view")
+ || ($CONFIG["start_action"] == "sources/album/view")
+ )
+ ){
+ if(!$data->set_config("start_action", "")){
+ $env->erreur("impossible d'enregistrer la configuration");
+ return;
+ }
+ }
+ $env->redirect(
+ $env->url("admin/sourceml"),
+ "la configuration a été enregistrée"
+ );
+ }
+ $env->set_out("groupes", $this->groupes);
+ $env->set_out("albums", $this->albums);
+ $env->set_out("config", $CONFIG);
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/content/sources.php b/app/controllers/content/sources.php
new file mode 100644
index 0000000..f76d956
--- /dev/null
+++ b/app/controllers/content/sources.php
@@ -0,0 +1,277 @@
+env();
+ $this->validation_result = true;
+ $this->validate_status($env);
+ $this->validate_licences($env);
+ return true;
+ }
+
+ function validate_status(){
+ $env = $this->env();
+ if($this->validation_result === true)
+ { $data = $env->data();
+ if(($this->status = $data->source_status()) !== false)
+ { foreach($this->status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
+ if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
+ if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
+ if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
+ }
+ if(!isset($this->album_status_id)) $this->validation_result = "Type de source inconnu: album";
+ elseif(!isset($this->morceau_status_id)) $this->validation_result = "Type de source inconnu: morceau";
+ elseif(!isset($this->piste_status_id)) $this->validation_result = "Type de source inconnu: piste";
+ }
+ else $this->validation_result = "Impossible de lire la liste des status de source";
+ }
+ }
+
+ function validate_licences(){
+ $env = $this->env();
+ if($this->validation_result === true)
+ { $data = $env->data();
+ if(($this->licences = $data->licences()) !== false)
+ { $env->set_out("licences", $this->licences);
+ }
+ else $this->validation_result = "Impossible de lire la liste des licences";
+ }
+ }
+
+ function validate_source(){
+ $env = $this->env();
+ if($this->validation_result === true)
+ { $data = $env->data();
+ if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")])
+ { if($this->source = $data->source($_GET[$env->param("id")]))
+ {
+ }
+ else $this->validation_result = "Impossible de lire les informations de la source";
+ }
+ else $this->validation_result = "parametre source manquant";
+ }
+ }
+
+ function validate_groupes(){
+ $env = $this->env();
+ if($this->validation_result === true)
+ { $data = $env->data();
+ if(($groupes = $data->groupes()) !== false)
+ { $env->set_out("groupes", $groupes);
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")])
+ { if(($this->groupe = $data->groupe($_GET[$env->param("groupe")])) !== false)
+ { $env->set_out("groupe", $groupe);
+ }
+ else $this->validation_result = "Impossible de lire les informations du groupe";
+ }
+ }
+ else $this->validation_result = "Impossible de lire la liste des groupes";
+ }
+ }
+
+ function sources(){
+ $env = $this->env();
+ $this->validate_source($env);
+ if($this->validation_result === true)
+ { $data = $env->data();
+ $sources = array("list" => array(), "total" => 0);
+ if($this->source)
+ { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false)
+ { $this->url_params = array();
+ foreach($source_ariane as $id_composition => $composition)
+ { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
+ elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
+ }
+ if($this->source["status"] == $this->morceau_status_id)
+ { $this->source_param = $env->set_out("source_param", "piste");
+ $this->source_controller = $env->set_out("source_controller", "piste");
+ $this->url_params["morceau"] = $this->source["id"];
+ }
+ elseif($this->source["status"] == $this->album_status_id)
+ { $this->source_param = $env->set_out("source_param", "morceau");
+ $this->source_controller = $env->set_out("source_controller", "morceau");
+ $this->url_params["album"] = $this->source["id"];
+ }
+ $env->set_out("url_params", $this->url_params);
+ if(($_sources = $data->source_compositions(array("id_composition" => $this->source["id"]))) !== false)
+ { if(isset($_sources[$this->source["id"]]) && $_sources[$this->source["id"]])
+ { foreach($_sources[$this->source["id"]] as $id_source)
+ { if(($sources["list"][$id_source] = $data->source($id_source, true)) !== false)
+ { $sources["total"]++;
+ }
+ else
+ { $this->erreur("Impossible de lire les informations de l'une des sources");
+ break;
+ }
+ }
+ }
+ $sources["list"] = $data->ordonne($sources["list"], "ordre");
+ $env->set_out("sources", $sources);
+ }
+ else $this->erreur("Impossible de lire la liste des sources");
+ }
+ else $this->erreur("Impossible de lire le fil d'ariane");
+ }
+ else $this->erreur("Impossible de lire les informations de la source");
+ }
+ else $this->erreur($this->validation_result);
+ }
+
+ function derivations(){
+ $env = $this->env();
+ $this->validate_source($env);
+ if($this->validation_result === true)
+ { $data = $env->data();
+ $derivations = array("list" => array(), "total" => 0);
+ if($this->source)
+ { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false)
+ { $this->url_params = array();
+ foreach($source_ariane as $id_composition => $composition)
+ { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
+ elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
+ }
+ if($this->source["status"] == $this->piste_status_id)
+ { $this->source_param = $env->set_out("source_param", "piste");
+ $this->source_controller = $env->set_out("source_controller", "piste");
+ $this->url_params["piste"] = $this->source["id"];
+ }
+ elseif($this->source["status"] == $this->morceau_status_id)
+ { $this->source_param = $env->set_out("source_param", "morceau");
+ $this->source_controller = $env->set_out("source_controller", "morceau");
+ $this->url_params["morceau"] = $this->source["id"];
+ }
+ $env->set_out("url_params", $this->url_params);
+ if(($_derivations = $data->source_derivations(array("derivation" => $this->source["id"]))) !== false)
+ { foreach($_derivations as $id_derivation => $derivation)
+ { if(($derivations["list"][$id_derivation] = $data->source($id_derivation, true)) !== false)
+ { $derivations["total"]++;
+ }
+ else
+ { $this->erreur("Impossible de lire les informations de l'une des derivations");
+ break;
+ }
+ }
+ $derivations["list"] = $data->ordonne($derivations["list"], "ordre");
+ $env->set_out("sources", $derivations);
+ }
+ else $this->erreur("Impossible de lire la liste des derivations");
+ }
+ else $this->validation_result = "Impossible de lire le fil d'ariane";
+ }
+ else $this->erreur("Impossible de lire les informations de la source");
+ }
+ else $this->erreur($this->validation_result);
+ }
+
+ function xml_form(){
+ $env = $this->env();
+ if(isset($_GET[$env->param("form")]))
+ { $data = $env->data();
+ $form_params = array();
+ if(isset($_GET[$env->param("derivation")]))
+ { if($_GET[$env->param("form")] == "edit")
+ { if(($source_derivation = $data->source_derivation($_GET[$env->param("derivation")])) !== false)
+ { $source = array
+ ( "id" => $source_derivation["id"],
+ "xml" => array
+ ( "url" => $source_derivation["derivation"],
+ "content" => "",
+ "use_edit_content" => false
+ )
+ );
+ $derivation_edit_file = $data->derivation_edit_xml_path($source_derivation["id_source"], $source_derivation["id"]);
+ if(file_exists($derivation_edit_file))
+ { if(($derivation_edit_content = $data->get_edit_derivation_content($source_derivation["id_source"], $source_derivation["id"])) !== false)
+ { if(($source = $data->source_xml_read($source_derivation["derivation"], $derivation_edit_content)) !==false)
+ { $source["xml"] = array
+ ( "url" => $source_derivation["derivation"],
+ "content" => $derivation_edit_content,
+ "use_edit_content" => true
+ );
+ }
+ else $this->erreur("Impossible de lire le XML de la source");
+ }
+ else $this->erreur("Impossible de lire le XML de la source");
+ }
+ else
+ { if(($source = $data->source_xml_read($source_derivation["derivation"])) === false)
+ { $source = $data->empty_source();
+ }
+ }
+ $source["id_source"] = $source_derivation["id_source"];
+ $source["id"] = $_GET[$env->param("derivation")];
+ $form_params["maj_url"] = $env->url("users/morceaux/maj_xml", array("id" => $_GET[$env->param("derivation")], "xml" => "derivation"));
+ }
+ }
+ elseif($_GET[$env->param("form")] == "add"){
+ $source = $data->empty_source();
+ $source["id"] = $_GET[$env->param("derivation")];
+ $source["xml"] = array(
+ "use_edit_content" => false,
+ "content" => ""
+ );
+ }
+ $form_params["name"] = "derivation";
+ $form_params["label"] = "dérive de » ";
+ $form_params["can_delete"] = true;
+ $form_params["id"] = $_GET[$env->param("derivation")];
+ }
+ elseif(isset($_GET[$env->param("reference")]))
+ {
+ }
+ $env->set_out("form_params", $form_params);
+ $env->set_out("xml_form_source", $source);
+ }
+ else $this->erreur("Parametres invalides pour le formulaire");
+ }
+
+ function xml(){
+ $env = $this->env();
+ $this->validate_source($env);
+ if($this->validation_result === true)
+ { $data = $env->data();
+ $xml = "";
+ if($this->source)
+ { if($this->source = $data->load_source($this->source))
+ { $xml =
+ ""
+ .htmlentities
+ ( $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
+ ENT_COMPAT,
+ "UTF-8"
+ )
+ ."
";
+ }
+ else $this->erreur("Impossible de lire les informations XML de la source");
+ }
+ else $this->erreur("Impossible de lire les informations de la source");
+ }
+ else $this->erreur($this->validation_result);
+ echo $xml;
+ exit;
+ }
+
+ function erreur($content)
+ { echo $content;
+ exit;
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/forms/sourceml.php b/app/controllers/forms/sourceml.php
new file mode 100644
index 0000000..46fc014
--- /dev/null
+++ b/app/controllers/forms/sourceml.php
@@ -0,0 +1,97 @@
+env();
+ if($this->forms_contact_mod = $env->get_controller("forms/contact")){
+ return $this->forms_contact_mod->validate();
+ }
+ return "impossible de trouver le controlleur forms/contact";
+ }
+
+ function contact_author(){
+ $env = $this->env();
+ if(file_exists($env->path("mw_dir")."libs/ptitcaptcha.php")) require_once $env->path("mw_dir")."libs/ptitcaptcha.php";
+ $data = $env->data();
+ if(($status = $data->source_status()) !== false)
+ { foreach($status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album") $album_status_id = $id_source_status;
+ if(isset($album_status_id)) break;
+ }
+ if(isset($album_status_id))
+ { if($groupe = $data->groupe($_GET[$env->param("id")]))
+ { if($groupe["contact_form"] && $groupe["email"])
+ { $env->set_out("groupe", $groupe);
+ $select = array("status" => $album_status_id);
+ $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ if($_POST)
+ { if
+ ( $this->send
+ ( $env,
+ $_POST["email"],
+ "[".$env->config("site_name")." - ".$groupe["nom"]."] nouveau message",
+ $_POST["message"],
+ $groupe["email"],
+ $groupe["captcha"]
+ )
+ )
+ { $env->redirect
+ ( $env->url("sources/groupe/view", array("id" => $_GET[$env->param("id")])),
+ "Le message a été envoyé"
+ );
+ }
+ }
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else
+ { $env->run("sources/groupe/view", array("get" => array("id" => $groupe["id"])));
+ return;
+ }
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Type de source inconnu: album");
+ }
+ else $env->erreur("Impossible de lire la liste des status de source");
+ }
+
+ function send(&$env, $from, $titre, $message, $dest, $captcha)
+ { $env->set_out("ENVOYE", false);
+ if($captcha && !class_exists("PtitCaptchaHelper")){
+ $env->erreur("fichier du captcha introuvable");
+ return false;
+ }
+ if(!$captcha || PtitCaptchaHelper::checkCaptcha())
+ { if($from)
+ { if($dest)
+ { if
+ ( mail
+ ( $dest,
+ $titre,
+ $message,
+ "From: ".$from."\r\n"
+ ."Reply-To: ".$from."\r\n"
+ )
+ )
+ { $env->set_out("ENVOYE", true);
+ return true;
+ }
+ else $env->erreur("Erreur à l'envoi du mail");
+ }
+ else $env->erreur("Impossible de trouver l'email du destinataire");
+ }
+ else $env->message("merci de préciser un email");
+ }
+ else $env->message("anti-spam incorrect");
+ return false;
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/sources/album.php b/app/controllers/sources/album.php
new file mode 100644
index 0000000..3640ac8
--- /dev/null
+++ b/app/controllers/sources/album.php
@@ -0,0 +1,79 @@
+env();
+ if($this->content_sources_mod = $env->get_controller("content/sources"))
+ { $this->content_sources_mod->validation_result = true;
+ $this->content_sources_mod->validate_status($env);
+ $this->content_sources_mod->validate_licences($env);
+ return $this->content_sources_mod->validation_result;
+ }
+ return "impossible de valider le module";
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(($groupes = $data->groupes()) !== false)
+ { $env->set_out("groupes", $groupes);
+ $select = array();
+ $select["status"] = $this->content_sources_mod->album_status_id;
+ $select["order_by"] = "ordre";
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")])
+ { if(($groupe = $data->groupe($_GET[$env->param("groupe")])) !== false)
+ { $env->set_out("groupe", $groupe);
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ }
+ else $env->erreur("Impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire la liste des groupes");
+ }
+ }
+
+ function view(){
+ $env = $this->env();
+ $data = $env->data();
+ if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")])
+ { if($album = $data->source($_GET[$env->param("album")], true))
+ { $env->set_out("album", $album);
+ if($groupe = $data->get_admin_groupe($album["groupes"]))
+ { $env->set_out("groupe", $groupe);
+ $select = array("status" => $this->content_sources_mod->album_status_id);
+ $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ $select = array("status" => $this->content_sources_mod->morceau_status_id);
+ $select["id_composition"] = $album["id"];
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(($morceaux = $data->sources($select)) !== false)
+ { $env->set_out("morceaux", $morceaux);
+ }
+ else $env->erreur("impossible de lire la liste des morceaux");
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Impossible de lire les informations de l'album");
+ }
+ else $env->erreur("parametre d'album manquant");
+ }
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/sources/groupe.php b/app/controllers/sources/groupe.php
new file mode 100644
index 0000000..3400d7e
--- /dev/null
+++ b/app/controllers/sources/groupe.php
@@ -0,0 +1,55 @@
+env();
+ if($this->content_sources_mod = $env->get_controller("content/sources"))
+ { $this->content_sources_mod->validation_result = true;
+ $this->content_sources_mod->validate_status($env);
+ $this->content_sources_mod->validate_licences($env);
+ return $this->content_sources_mod->validation_result;
+ }
+ return "impossible de valider le module";
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if
+ ( ( $groupes = $data->groupes
+ ( null,
+ isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0
+ )
+ ) !== false
+ ) $env->set_out("groupes", $groupes);
+ else $env->erreur("Impossible de lire la liste des groupes");
+ }
+
+ function view(){
+ $env = $this->env();
+ $data = $env->data();
+ if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")])
+ { if(($groupe = $data->groupe($_GET[$env->param("id")])) !== false)
+ { $env->set_out("groupe", $groupe);
+ $select = array("status" => $this->content_sources_mod->album_status_id);
+ $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("parametre de groupe manquant");
+ }
+ else $env->erreur("Impossible de lire la liste des licences");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/sources/morceau.php b/app/controllers/sources/morceau.php
new file mode 100644
index 0000000..802430a
--- /dev/null
+++ b/app/controllers/sources/morceau.php
@@ -0,0 +1,109 @@
+env();
+ if($this->content_sources_mod = $env->get_controller("content/sources"))
+ { $this->content_sources_mod->validation_result = true;
+ $this->content_sources_mod->validate_status($env);
+ $this->content_sources_mod->validate_licences($env);
+ return $this->content_sources_mod->validation_result;
+ }
+ return "impossible de valider le module";
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if($this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(($groupes = $data->groupes()) !== false)
+ { $env->set_out("groupes", $groupes);
+ $groupe = null;
+ $album = null;
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")])
+ { if(isset($groupes["list"][$_GET[$env->param("groupe")]]))
+ { $groupe = $groupes["list"][$_GET[$env->param("groupe")]];
+ $env->set_out("groupe", $groupe);
+ }
+ else $groupe = false;
+ }
+ if($groupe !== false)
+ { if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")])
+ { if(($album = $data->source($_GET[$env->param("album")], true)) !== false)
+ { $env->set_out("album", $album);
+ if(!isset($groupe))
+ { $groupe = $data->get_admin_groupe($album["groupes"]);
+ if(!$groupe) $groupe = false;
+ }
+ }
+ }
+ }
+ if($groupe !== false)
+ { $env->set_out("groupe", $groupe);
+ if($album !== false)
+ { $select = array("status" => $this->content_sources_mod->album_status_id);
+ if(isset($groupe)) $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ $select = array();
+ $select["status"] = $this->content_sources_mod->morceau_status_id;
+ $select["order_by"] = "ordre";
+ if(isset($groupe)) $select["id_groupe"] = $groupe["id"];
+ if(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")];
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(($morceaux = $data->sources($select, true)) !== false) $env->set_out("morceaux", $morceaux);
+ else $env->erreur("Impossible de lire la liste des morceaux");
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire les informations de l'album");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Impossible de lire la liste des groupes");
+ }
+ else $env->erreur("Impossible de lire la liste des licences");
+ }
+
+ function view(){
+ $env = $this->env();
+ $data = $env->data();
+ if($this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")])
+ { if($morceau = $data->source($_GET[$env->param("morceau")], true))
+ { $env->set_out("morceau", $morceau);
+ if($groupe = $data->get_admin_groupe($morceau["groupes"]))
+ { $env->set_out("groupe", $groupe);
+ $select = array("status" => $this->content_sources_mod->album_status_id);
+ $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ if(($ariane = $data->source_ariane($morceau["id"])) !== false)
+ { $ariane = array_reverse($ariane);
+ $album = null;
+ foreach($ariane as $id_ariane => $source_ariane)
+ { if(!isset($album)) $album = $source_ariane;
+ }
+ if($album) $env->set_out("album", $album);
+ }
+ else $env->erreur("Impossible de lire le fil d'ariane");
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Impossible de lire les informations du morceau");
+ }
+ else $env->erreur("identifiant de morceau manquant");
+ }
+ else $env->erreur("Impossible de lire la liste des licences");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/sources/piste.php b/app/controllers/sources/piste.php
new file mode 100644
index 0000000..668892f
--- /dev/null
+++ b/app/controllers/sources/piste.php
@@ -0,0 +1,114 @@
+env();
+ if($this->content_sources_mod = $env->get_controller("content/sources"))
+ { $this->content_sources_mod->validation_result = true;
+ $this->content_sources_mod->validate_status($env);
+ $this->content_sources_mod->validate_licences($env);
+ return $this->content_sources_mod->validation_result;
+ }
+ return "impossible de valider le module";
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(($groupes = $data->groupes()) !== false)
+ { $env->set_out("groupes", $groupes);
+ $groupe = null;
+ $morceau = null;
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")])
+ { if(isset($groupes["list"][$_GET[$env->param("groupe")]]))
+ { $groupe = $groupes["list"][$_GET[$env->param("groupe")]];
+ $env->set_out("groupe", $groupe);
+ }
+ else $groupe = false;
+ }
+ if($groupe !== false)
+ { if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")])
+ { if(($morceau = $data->source($_GET[$env->param("morceau")], true)) !== false)
+ { $env->set_out("morceau", $morceau);
+ if(!isset($groupe))
+ { $groupe = $data->get_admin_groupe($morceau["groupes"]);
+ if(!$groupe) $groupe = false;
+ }
+ }
+ }
+ }
+ if($groupe !== false)
+ { $env->set_out("groupe", $groupe);
+ if($morceau !== false)
+ { $select = array("status" => $this->content_sources_mod->morceau_status_id);
+ if(isset($groupe)) $select["id_groupe"] = $groupe["id"];
+ if(($morceaux = $data->sources($select)) !== false)
+ { $env->set_out("morceaux", $morceaux);
+ $select = array();
+ $select["status"] = $this->content_sources_mod->piste_status_id;
+ $select["order_by"] = "ordre";
+ if(isset($groupe)) $select["id_groupe"] = $groupe["id"];
+ if(isset($_GET[$env->param("morceau")])) $select["id_composition"] = $_GET[$env->param("morceau")];
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(($pistes = $data->sources($select, true)) !== false) $env->set_out("pistes", $pistes);
+ else $env->erreur("Impossible de lire la liste des pistes");
+ }
+ else $env->erreur("impossible de lire la liste des morceaux");
+ }
+ else $env->erreur("Impossible de lire les informations du morceau");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $erreur = "impossible de lire la liste des groupes";
+ }
+ else $env->erreur("impossible de lire la liste des licences");
+ }
+
+ function view(){
+ $env = $this->env();
+ $data = $env->data();
+ if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false)
+ { $env->set_out("licences", $this->content_sources_mod->licences);
+ if(isset($_GET[$env->param("piste")]) && $_GET[$env->param("piste")])
+ { if($piste = $data->source($_GET[$env->param("piste")], true))
+ { $env->set_out("piste", $piste);
+ if($groupe = $data->get_admin_groupe($piste["groupes"]))
+ { $env->set_out("groupe", $groupe);
+ $select = array("status" => $this->content_sources_mod->album_status_id);
+ $select["id_groupe"] = $groupe["id"];
+ if(($albums = $data->sources($select)) !== false)
+ { $env->set_out("albums", $albums);
+ if(($ariane = $data->source_ariane($piste["id"])) !== false)
+ { $ariane = array_reverse($ariane);
+ $morceau = null;
+ $album = null;
+ foreach($ariane as $id_ariane => $source_ariane)
+ { if(!isset($morceau)) $morceau = $source_ariane;
+ else
+ { if(!isset($album)) $album = $source_ariane;
+ }
+ }
+ if($morceau) $env->set_out("morceau", $morceau);
+ if($album) $env->set_out("album", $album);
+ }
+ else $env->erreur("Impossible de lire le fil d'ariane");
+ }
+ else $env->erreur("impossible de lire la liste des albums");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Impossible de lire les informations de la source");
+ }
+ else $env->erreur("parametre de piste manquant");
+ }
+ else $env->erreur("impossible de lire la liste des licences");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/users/albums.php b/app/controllers/users/albums.php
new file mode 100644
index 0000000..b26e200
--- /dev/null
+++ b/app/controllers/users/albums.php
@@ -0,0 +1,260 @@
+env();
+ $data = $env->data();
+ if(($this->status = $data->source_status()) !== false)
+ { foreach($this->status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album")
+ { $this->album_status_id = $id_source_status;
+ break;
+ }
+ }
+ if(isset($this->album_status_id))
+ { if($this->user = $env->user())
+ { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
+ { $env->set_out("groupes", $this->groupes);
+ if($env->etat("action") == "edit" || $env->etat("action") == "del")
+ { if(($this->album = $data->source($_GET[$env->param("id")], true)) !== false && $this->album)
+ {
+ }
+ else return "Impossible de lire les informations de l'album";
+ }
+ if($env->etat("action") == "add" || $env->etat("action") == "edit")
+ { if(($this->licences = $data->licences()) !== false)
+ { $env->set_out("licences", $this->licences);
+ }
+ else return "Impossible de lire la liste des licences";
+ }
+ }
+ else return "Impossible de lire la liste des groupes";
+ }
+ else return "Vous devez être identifier pour accéder à cette page";
+ }
+ else return "Type de source inconnu: album";
+ }
+ else return "Impossible de lire la liste des status de source";
+ return true;
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ $select = array();
+ $select["status"] = $this->album_status_id;
+ $select["id_user"] = $this->user["id"];
+ $select["order_by"] = "ordre";
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
+ if(($albums = $data->sources($select)) !== false)
+ { foreach($albums["list"] as $id_album => $album)
+ { $albums["list"][$id_album]["permissions"] = $data->source_permissions($albums["list"][$id_album], $this->user["id"]);
+ }
+ if($_POST)
+ { $OK = true;
+ foreach($albums["list"] as $id_album => $album)
+ { if(isset($_POST["ordre_".$id_album]))
+ { if($data->set_source_info($id_album, "ordre", $_POST["ordre_".$id_album]) === false)
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ if($OK)
+ { $get_params = array();
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
+ $env->redirect
+ ( $env->url("users/albums", $get_params),
+ "l'ordre des albums a été enregistré"
+ );
+ }
+ else $env->erreur("Impossible d'enregistrer l'ordre des albums");
+ }
+ $env->set_out("albums", $albums);
+ }
+ else $env->erreur("Impossible de lire la liste des albums");
+ }
+
+ function add(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
+ $this->album = $data->empty_source();
+ $source_infos = array
+ ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
+ "ordre" => 0
+ );
+ if($_POST)
+ { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
+ { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $env->set_out("groupe", $groupe);
+ $this->album["groupes"] = array($groupe["id"] => $groupe);
+ $this->album["titre"] = trim($_POST["titre"]);
+ $this->album["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->album["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ if($this->album["titre"])
+ { if(($image = $data->upload("image", $upload_dir)) !== false)
+ { if($image) $source_infos["image"] = $this->user["id"]."/".$image;
+ if
+ ( $data->add_source
+ ( $this->album["groupes"],
+ $this->album["titre"],
+ $this->album_status_id,
+ $this->album["licence"]["id"],
+ $this->album["documents"],
+ $this->album["reference"],
+ $this->album["derivations"],
+ $source_infos
+ )
+ ) $env->redirect
+ ( $env->url("users/albums"),
+ "l'album a été ajouté"
+ );
+ else $env->erreur("Impossible d'ajouter l'album");
+ }
+ else $env->erreur("Impossible d'uploader l'image");
+ }
+ else $env->message("merci de préciser un titre pour l'album");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ foreach($source_infos as $info_key => $info_value) $this->album[$info_key] = $info_value;
+ $env->set_out("album", $this->album);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function edit(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]);
+ if($this->album["premissions"]["editeur"])
+ { if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
+ $source_infos = array
+ ( "date_inscription" => $this->album["date_inscription"],
+ "ordre" => $this->album["ordre"],
+ "date_creation" => $this->album["date_creation"],
+ "description" => $this->album["description"],
+ "image" => $this->album["image"]
+ );
+ $env->set_out("groupe", $data->get_admin_groupe($this->album["groupes"]));
+ if($_POST)
+ { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
+ { $env->set_out("groupe", $groupe);
+ $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $this->album["groupes"] = array($groupe["id"] => $groupe);
+ $this->album["titre"] = trim($_POST["titre"]);
+ $this->album["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->album["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ if($this->album["titre"])
+ { if(isset($_POST["del_image"]))
+ { if($this->album["image"])
+ { if(@unlink($env->path("content")."uploads/".$this->album["image"])) $this->album["image"] = "";
+ else
+ { $this->album["image"] = false;
+ $env->erreur("Impossible d'effacer l'image");
+ }
+ }
+ else $this->album["image"] = "";
+ }
+ else
+ { if(($up_image = $data->upload("image", $upload_dir)) !== false)
+ { if($up_image) $this->album["image"] = $this->user["id"]."/".$up_image;
+ }
+ else
+ { $env->erreur("Impossible d'uploader l'image");
+ return;
+ }
+ }
+ if($this->album["image"] !== false)
+ { if($this->album["image"]) $source_infos["image"] = $this->album["image"];
+ if
+ ( $data->set_source
+ ( $this->album["id"],
+ $this->album["groupes"],
+ $this->album["titre"],
+ $this->album_status_id,
+ $this->album["licence"]["id"],
+ $this->album["documents"],
+ $this->album["reference"],
+ $this->album["derivations"],
+ $source_infos
+ )
+ ) $env->redirect
+ ( $env->url("users/albums/edit", array("id" => $this->album["id"])),
+ "l'album a été modifié"
+ );
+ else $env->erreur("Impossible de modifier l'album");
+ }
+ else $env->erreur("Impossible d'uploader l'image");
+ }
+ else $env->message("merci de préciser un titre pour l'album");
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ $env->set_out("album", $this->album);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+ else $env->erreur("Vous n'avez pas la permission de modifier cet album");
+ }
+
+ function del(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]);
+ if($this->album["premissions"]["admin"])
+ { if($data->del_source($this->album["id"]))
+ { $env->redirect
+ ( $env->url("users/albums"),
+ "l'album a été supprimé"
+ );
+ }
+ else $env->erreur("Impossible de supprimer l'album");
+ }
+ else $env->erreur("Vous n'avez pas la permission de supprimer cet album");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/users/groupes.php b/app/controllers/users/groupes.php
new file mode 100644
index 0000000..8730e2c
--- /dev/null
+++ b/app/controllers/users/groupes.php
@@ -0,0 +1,183 @@
+env();
+ $data = $env->data();
+ if($this->user = $env->user())
+ { if($env->etat("action") == "edit" || $env->etat("action") == "del")
+ { if
+ ( ( $this->groupe = $data->groupe
+ ( $_GET[$env->param("id")]
+ )
+ ) !== false
+ && $this->groupe
+ )
+ { if($this->groupe["id_user"] == $this->user["id"])
+ { return true;
+ }
+ else return "Vous n'est pas autorisé à modifier ce groupe";
+ }
+ else return "Impossible de lire les informations du groupe";
+ }
+ else return true;
+ }
+ return "Vous devez être identifier pour accéder à cette page";
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ if
+ ( $env->set_out
+ ( "groupes",
+ $data->groupes
+ ( $this->user["id"],
+ isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0
+ )
+ ) !== false
+ )
+ {
+ }
+ else $env->erreur("Impossible de lire la liste des groupes");
+ }
+
+ function add(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
+ if($_POST)
+ { $env->set_out("groupe", $_POST);
+ if(($image = $data->upload("image", $upload_dir)) !== false){
+ if(trim($_POST["nom"]))
+ { if(($exists = $data->groupe_exists($_POST["nom"])) !== false)
+ { if(!isset($_POST["contact_form"]) || trim($_POST["email"]))
+ { if($exists == 0)
+ { if
+ ( $data->add_groupe
+ ( $this->user["id"],
+ $_POST["nom"],
+ $image ? $this->user["id"]."/".$image : null,
+ $_POST["description"],
+ $_POST["email"],
+ isset($_POST["contact_form"]) ? 1 : 0,
+ isset($_POST["captcha"]) ? 1 : 0
+ )
+ ) $env->redirect
+ ( $env->url("users/groupes"),
+ "le groupe a été ajouté"
+ );
+ else $env->erreur("Impossible d'ajouter le groupe");
+ }
+ else $env->message("Un groupe avec ce nom existe déjà");
+ }
+ else $env->message("merci de préciser un email pour le formulaire de contact");
+ }
+ else $env->erreur("Impossible de savoir si le groupe existe déjà");
+ }
+ else $env->message("merci de préciser un nom pour le groupe");
+ }
+ else $env->erreur("Impossible d'uploader l'image");
+ }
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function edit(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
+ if($env->set_out("groupe", $this->groupe))
+ { $groupe = $env->out("groupe");
+ if($_POST)
+ { $id = $groupe["id"];
+ $nom = $groupe["nom"];
+ $image = $groupe["image"];
+ $_POST["image"] = $image ? $_SESSION["upload_dir"]."/".$image : "";
+ $env->set_out("groupe", $_POST);
+ if(isset($_POST["del_image"]))
+ { if($image)
+ { if(@unlink($env->path("content")."uploads/".$image)) $image = "";
+ else
+ { $image = false;
+ $env->erreur("Impossible d'effacer l'image");
+ }
+ }
+ else $image = "";
+ }
+ else
+ { if(($new_image = $data->upload("image", $upload_dir)) !== false)
+ { if($new_image) $image = $this->user["id"]."/".$new_image;
+ }
+ else $env->erreur("Impossible d'uploader l'image");
+ }
+ if($image !== false)
+ { if(trim($_POST["nom"]))
+ { if(($exists = $data->groupe_exists($_POST["nom"], $this->groupe["id"])) !== false)
+ { if(!$exists)
+ { if(!isset($_POST["contact_form"]) || trim($_POST["email"]))
+ { if
+ ( $data->set_groupe
+ ( $id,
+ $_POST["nom"],
+ $image,
+ $_POST["description"],
+ $_POST["email"],
+ isset($_POST["contact_form"]) ? 1 : 0,
+ isset($_POST["captcha"]) ? 1 : 0
+ )
+ ) $env->redirect
+ ( $env->url("users/groupes/edit", array("id" => $_GET[$env->param("id")])),
+ "le groupe a été modifié"
+ );
+ else $env->erreur("Impossible de modifier le groupe");
+ }
+ else $env->message("merci de préciser un email pour le formulaire de contact");
+ }
+ else $env->message("Un groupe avec ce nom existe déjà");
+ }
+ else $env->erreur("Impossible de savoir si le groupe existe déjà");
+ }
+ else $env->message("merci de préciser un nom pour le groupe");
+ }
+ }
+ else
+ { $env->set_out("groupe", $groupe);
+ }
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function del(){
+ $env = $this->env();
+ $data = $env->data();
+ if(($res = $data->del_groupe($this->groupe["id"])) !== false)
+ { if($res === 1) $env->redirect
+ ( $env->url("users/groupes"),
+ "Ce groupe a des sources sur ce site, il n'a pas été supprimé.",
+ 5
+ );
+ else $env->redirect
+ ( $env->url("users/groupes"),
+ "le groupe a été supprimé"
+ );
+ }
+ else $env->erreur("Impossible de supprimer le groupe");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/users/morceaux.php b/app/controllers/users/morceaux.php
new file mode 100644
index 0000000..ba58bda
--- /dev/null
+++ b/app/controllers/users/morceaux.php
@@ -0,0 +1,435 @@
+env();
+ $data = $env->data();
+ if(($this->status = $data->source_status()) !== false)
+ { foreach($this->status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
+ if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
+ if(isset($this->album_status_id) && isset($this->morceau_status_id)) break;
+ }
+ if(isset($this->album_status_id) && isset($this->morceau_status_id))
+ { if($this->user = $env->user())
+ { if(($this->groupes = $data->groupes($this->user["id"])) !== false){
+ $env->set_out("groupes", $this->groupes);
+ $this->albums = array();
+ if($this->groupes["total"] > 0)
+ { $select = array();
+ $select["status"] = $this->album_status_id;
+ $select["id_user"] = $this->user["id"];
+ foreach($this->groupes["list"] as $id_groupe => $groupe)
+ { $select["id_groupe"] = $id_groupe;
+ if(($albums = $data->sources($select)) !== false)
+ { $this->albums[$id_groupe] = $albums["list"];
+ }
+ else $this->albums = false;
+ }
+ }
+ if($this->albums !== false)
+ { $env->set_out("albums", $this->albums);
+ if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
+ { if($this->morceau = $data->source($_GET[$env->param("id")], true))
+ {
+ }
+ else return "Impossible de lire les informations du morceau";
+ }
+ if($env->etat("action") == "add" || $env->etat("action") == "edit")
+ { if(($this->licences = $data->licences()) !== false)
+ { $env->set_out("licences", $this->licences);
+ }
+ else return "Impossible de lire la liste des licences";
+ }
+ }
+ else return "Impossible de lire la liste des albums";
+ }
+ else return "Impossible de lire la liste des groupes";
+ }
+ else return "Vous devez être identifier pour accéder à cette page";
+ }
+ else
+ { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
+ return "Type de source inconnu: morceau";
+ }
+ }
+ else return "Impossible de lire la liste des status de source";
+ return true;
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ $select = array();
+ $select["status"] = $this->morceau_status_id;
+ $select["id_user"] = $this->user["id"];
+ $select["order_by"] = "ordre";
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
+ if(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")];
+ if(($morceaux = $data->sources($select)) !== false)
+ { foreach($morceaux["list"] as $id_morceau => $morceau)
+ { $morceaux["list"][$id_morceau]["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+ }
+ if($_POST)
+ { $OK = true;
+ foreach($morceaux["list"] as $id_morceau => $morceau)
+ { if(isset($_POST["ordre_".$id_morceau]))
+ { if($data->set_source_info($morceau["id"], "ordre", $_POST["ordre_".$id_morceau]) === false)
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ if($OK)
+ { $get_params = array();
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
+ if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) $get_params["album"] = $_GET[$env->param("album")];
+ $env->redirect
+ ( $env->url("users/morceaux", $get_params),
+ "l'ordre des morceaux a été enregistré"
+ );
+ }
+ else $env->erreur("Impossible d'enregistrer l'ordre des morceaux");
+ }
+ $env->set_out("groupes", $this->groupes);
+ $env->set_out("albums", $this->albums);
+ $env->set_out("morceaux", $morceaux);
+ }
+ else $env->erreur("Impossible de lire la liste des morceaux");
+ }
+
+ function add(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+ $this->morceau = $data->empty_source();
+ $users_sources_mod = $env->get_controller("users/sources");
+ $source_infos = array
+ ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
+ "ordre" => 0
+ );
+ if($_POST)
+ { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
+ { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $this->morceau["groupes"] = array($groupe["id"] => $groupe);
+ if($_POST["album"])
+ { if($album = $data->source($_POST["album"], true))
+ { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+ if(!$album["permissions"]["contributeur"])
+ { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
+ return;
+ }
+ }
+ else
+ { $env->erreur("impossible de lire les informations de l'album");
+ return;
+ }
+ $this->morceau["album"] = $_POST["album"];
+ }
+ if($_POST["is_derivation"])
+ { foreach($_POST as $key => $value)
+ { if(substr($key, 0, 14) == "derivation_id_")
+ { $id_source_derivation = substr($key, 14);
+ $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+ $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+ $_POST["edit_derivation_content_".$id_source_derivation]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+ );
+ }
+ }
+ }
+ if($_POST["is_reference"])
+ { $xml_url = trim($_POST["reference"]);
+ $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_reference_content"] ?
+ $_POST["edit_reference_content"]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_reference_content"] ? true : false
+ );
+ }
+ else
+ { if($this->morceau["titre"] = trim($_POST["titre"]))
+ { $this->morceau["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->morceau["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ }
+ else $env->message("merci de préciser un titre pour le morceau");
+ }
+ if(!$env->out("messages") && !$env->out("erreur"))
+ { if
+ ( ( $id_source = $data->add_source
+ ( $this->morceau["groupes"],
+ $this->morceau["titre"],
+ $this->morceau_status_id,
+ $this->morceau["licence"]["id"],
+ $this->morceau["documents"],
+ $this->morceau["reference"],
+ $this->morceau["derivations"],
+ $source_infos
+ )
+ ) !== false
+ )
+ { if($_POST["album"])
+ { if($data->set_source_composition($id_source, $_POST["album"]))
+ { $env->redirect
+ ( $env->url("users/morceaux"),
+ "le morceau a été ajouté"
+ );
+ }
+ else $env->erreur("Le morceau a été ajouté mais impossible de l'associer à cet album");
+ }
+ else $env->redirect
+ ( $env->url("users/morceaux"),
+ "le morceau a été ajouté"
+ );
+ }
+ else $env->erreur("Impossible d'ajouter le morceau");
+ }
+ }
+ else $env->erreur("Impossible de lire les informations du groupe");
+ }
+ $env->set_out("morceau", $this->morceau);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function edit(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
+ if(!$this->morceau["premissions"]["editeur"])
+ { $env->erreur("vous n'avez la permission d'editer ce morceau");
+ return;
+ }
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+ if(($compositions = $data->source_compositions(array("id_source" => $this->morceau["id"]))) !== false)
+ { if($compositions) foreach($compositions[$this->morceau["id"]] as $id_album) { $this->morceau["album"] = $id_album; break; }
+ $env->set_out("groupe", $data->get_admin_groupe($this->morceau["groupes"]));
+ if($_POST)
+ { $source_infos = array
+ ( "date_inscription" => $_POST["date_inscription"],
+ "ordre" => isset($this->morceau["ordre"]) ? $this->morceau["ordre"] : 0
+ );
+ $this->morceau = $data->empty_source(array("id" => $this->morceau["id"]));
+ $users_sources_mod = $env->get_controller("users/sources");
+ if(!($groupe = $data->groupe($_POST["id_groupe"])))
+ { $env->erreur("Impossible de lire les informations du groupe");
+ return;
+ }
+ $env->set_out("groupe", $groupe);
+ $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $this->morceau["groupes"] = array($groupe["id"] => $groupe);
+ $this->morceau["derivations"] = array();
+ if($_POST["album"])
+ { if($album = $data->source($_POST["album"], true))
+ { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+ if(!$album["permissions"]["contributeur"])
+ { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
+ return;
+ }
+ }
+ else
+ { $env->erreur("Impossible de lire les informations de l'album");
+ return;
+ }
+ $this->morceau["album"] = $_POST["album"];
+ }
+ if($_POST["is_derivation"])
+ { foreach($_POST as $key => $value)
+ { if(substr($key, 0, 14) == "derivation_id_")
+ { $id_source_derivation = substr($key, 14);
+ $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+ $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+ $_POST["edit_derivation_content_".$id_source_derivation]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+ );
+ }
+ }
+ }
+ if($_POST["is_reference"])
+ { $xml_url = trim($_POST["reference"]);
+ $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_reference_content"] ?
+ $_POST["edit_reference_content"]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_reference_content"] ? true : false
+ );
+ }
+ else
+ { if($this->morceau["titre"] = trim($_POST["titre"]))
+ { $this->morceau["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->morceau["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ }
+ else $env->message("merci de préciser un titre pour le morceau");
+ }
+ if(!$env->out("messages") && !$env->out("erreur"))
+ { if
+ ( ( $data->set_source
+ ( $this->morceau["id"],
+ $this->morceau["groupes"],
+ $this->morceau["titre"],
+ $this->morceau_status_id,
+ $this->morceau["licence"]["id"],
+ $this->morceau["documents"],
+ $this->morceau["reference"],
+ $this->morceau["derivations"],
+ $source_infos
+ )
+ ) !== false
+ )
+ { if($data->del_source_compositions(array("id_source" => $this->morceau["id"])))
+ { if($_POST["album"])
+ { if($data->set_source_composition($this->morceau["id"], $_POST["album"]))
+ { $env->redirect
+ ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
+ "le morceau a été modifié"
+ );
+ }
+ else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
+ }
+ else $env->redirect
+ ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
+ "le morceau a été modifié"
+ );
+ }
+ else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
+ }
+ else $env->erreur("Impossible de modifier le morceau");
+ }
+ }
+ }
+ else $env->erreur("Impossible de lire la liste des compositions");
+ $env->set_out("morceau", $this->morceau);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function maj_xml(){
+ $data = $env->data();
+ $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
+ if(!$this->morceau["premissions"]["editeur"])
+ { $env->erreur("vous n'avez la permission d'editer ce morceau");
+ return;
+ }
+ if
+ ( isset($_GET[$env->param("id")])
+ && isset($_GET[$env->param("xml")])
+ && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
+ )
+ { $xml_url = "";
+ if($_GET[$env->param("xml")] == "derivation")
+ { if(isset($this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
+ $xml_url = $this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
+ }
+ elseif($_GET[$env->param("xml")] == "reference")
+ { if(isset($this->morceau["reference"]["xml"]["url"]))
+ $xml_url = $this->morceau["reference"]["xml"]["url"];
+ }
+ $erreur = "";
+ if($xml_url)
+ { if(($res = $data->maj_source_cache($xml_url)) !== false)
+ { if($res === true)
+ { if($this->morceau = $data->source($this->morceau["id"]))
+ { $env->redirect
+ ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
+ "Les informations du fichier XML ont été mises à jour",
+ 2
+ );
+ return;
+ }
+ else $erreur =
+ "le contenu du fichier XML a été mis à jour"
+ .", mais impossible de lire les informations du morceau";
+ }
+ else
+ { switch($res)
+ { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
+ case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break;
+ default: $erreur = "Erreur inconnue (?)"; break;
+ }
+ }
+ }
+ else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache";
+ }
+ else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
+ if($erreur) $env->erreur($erreur);
+ else $env->run("users/morceaux/edit", array("id" => $this->morceau["id"]));
+ }
+ else $env->erreur("parametre de fichier xml manquant");
+ }
+
+ function del(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
+ if($this->morceau["premissions"]["admin"])
+ { if($data->del_source($this->morceau["id"]))
+ { $env->redirect
+ ( $env->url("users/morceaux"),
+ "le morceau a été supprimé"
+ );
+ }
+ else $env->erreur("Impossible de supprimer le morceau");
+ }
+ else $env->erreur("vous n'avez la permission d'effacer ce morceau");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/users/pistes.php b/app/controllers/users/pistes.php
new file mode 100644
index 0000000..8d3d1ea
--- /dev/null
+++ b/app/controllers/users/pistes.php
@@ -0,0 +1,478 @@
+env();
+ $data = $env->data();
+ if(($this->status = $data->source_status()) !== false)
+ { foreach($this->status as $id_source_status => $source_status)
+ { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
+ if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
+ if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
+ if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
+ }
+ if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id))
+ { if($this->user = $env->user())
+ { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
+ { $env->set_out("groupes", $this->groupes);
+ $this->albums = array();
+ $this->morceaux = array();
+ if($this->groupes["total"] > 0)
+ { foreach($this->groupes["list"] as $id_groupe => $groupe)
+ { $this->albums[$id_groupe] = array();
+ $select = array
+ ( "status" => $this->album_status_id,
+ "id_user" => $this->user["id"],
+ "id_groupe" => $id_groupe
+ );
+ if(($albums = $data->sources($select)) !== false)
+ { $this->albums[$id_groupe] = $albums["list"];
+ }
+ else
+ { $this->albums = false;
+ break;
+ }
+
+ $this->morceaux[$id_groupe] = array();
+ $select = array
+ ( "status" => $this->morceau_status_id,
+ "id_user" => $this->user["id"],
+ "id_groupe" => $id_groupe
+ );
+ if(($morceaux = $data->sources($select)) !== false)
+ { foreach($morceaux["list"] as $id_morceau => $morceau)
+ { if(($compositions = $data->source_compositions(array("id_source" => $id_morceau))) !== false)
+ { if($compositions) foreach($compositions[$id_morceau] as $_id_album) { $morceaux["list"][$id_morceau]["album"] = $_id_album; break; }
+ if(!isset($morceaux["list"][$id_morceau]["album"])) $morceaux["list"][$id_morceau]["album"] = 0;
+ }
+ else
+ { $this->morceaux = false;
+ break;
+ }
+ }
+ if($this->morceaux !== false)
+ { foreach($morceaux["list"] as $id_morceau => $morceau)
+ { if(!isset($this->morceaux[$id_groupe][$morceau["album"]])) $this->morceaux[$id_groupe][$morceau["album"]] = array();
+ $this->morceaux[$id_groupe][$morceau["album"]][$id_morceau] = $morceau;
+ }
+ }
+ }
+ else
+ { $this->morceaux = false;
+ break;
+ }
+ if($this->morceaux === false) break;
+ }
+ }
+ if($this->albums !== false && $this->morceaux !== false)
+ { $env->set_out("albums", $this->albums);
+ $env->set_out("morceaux", $this->morceaux);
+ if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
+ { if(($this->piste = $data->source($_GET[$env->param("id")], true)) !== false && $this->piste)
+ {
+ }
+ else return "Impossible de lire les informations de la source";
+ }
+ if($env->etat("action") == "add" || $env->etat("action") == "edit")
+ { if(($this->licences = $data->licences()) !== false)
+ { $env->set_out("licences", $this->licences);
+ }
+ else return "Impossible de lire la liste des licences";
+ }
+ }
+ else return "Impossible de lire la liste des albums";
+ }
+ else return "Impossible de lire la liste des groupes";
+ }
+ else return "Vous devez être identifier pour accéder à cette page";
+ }
+ else
+ { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
+ return "Type de source inconnu: morceau";
+ }
+ }
+ else return "Impossible de lire la liste des status de source";
+ return true;
+ }
+
+ function index(){
+ $env = $this->env();
+ $data = $env->data();
+ $select = array();
+ $select["status"] = $this->piste_status_id;
+ $select["id_user"] = $this->user["id"];
+ $select["order_by"] = "ordre";
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
+ if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $select["id_composition"] = $_GET[$env->param("morceau")];
+ $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
+ if(($pistes = $data->sources($select)) !== false)
+ { foreach($pistes["list"] as $id_piste => $piste)
+ { $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+ }
+ if($_POST)
+ { $OK = true;
+ foreach($pistes["list"] as $id_piste => $piste)
+ { if(isset($_POST["ordre_".$id_piste]))
+ { if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false)
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ if($OK)
+ { $get_params = array();
+ if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
+ if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $get_params["morceau"] = $_GET[$env->param("morceau")];
+ $env->redirect
+ ( $env->url("users/pistes", $get_params),
+ "l'ordre des sources a été enregistré"
+ );
+ }
+ else $env->erreur("Impossible d'enregistrer l'ordre des sources");
+ }
+ $env->set_out("pistes", $pistes);
+ }
+ else $env->erreur("Impossible de lire la liste des sources");
+ }
+
+ function add(){
+ $env = $this->env();
+ $data = $env->data();
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+ $this->piste = $data->empty_source();
+ $users_sources_mod = $env->get_controller("users/sources");
+ $source_infos = array
+ ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
+ "ordre" => 0
+ );
+ if($_POST)
+ { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
+ { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $this->piste["groupes"] = array($groupe["id"] => $groupe);
+ $env->set_out("groupe", $groupe);
+ }
+ else
+ { $env->erreur("Impossible de lire les informations du groupe");
+ return;
+ }
+ if($_POST["morceau"])
+ { if($morceau = $data->source($_POST["morceau"], true))
+ { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+ if(!$morceau["permissions"]["contributeur"])
+ { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
+ return;
+ }
+ }
+ else
+ { $env->erreur("impossible de lire les informations du morceau");
+ return;
+ }
+ $this->piste["morceau"] = $_POST["morceau"];
+ }
+ if(isset($_POST["is_derivation"]))
+ { foreach($_POST as $key => $value)
+ { if(substr($key, 0, 14) == "derivation_id_")
+ { $id_source_derivation = substr($key, 14);
+ $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+ $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+ $_POST["edit_derivation_content_".$id_source_derivation]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+ );
+ }
+ }
+ }
+ if(isset($_POST["is_reference"]))
+ { $xml_url = trim($_POST["reference"]);
+ $this->piste["reference"] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_reference_content"] ?
+ $_POST["edit_reference_content"]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_reference_content"] ? true : false
+ );
+ }
+ else
+ { if($this->piste["titre"] = trim($_POST["titre"]))
+ { $this->piste["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->piste["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ }
+ else $env->message("merci de préciser un titre pour la source");
+ }
+ if(!$env->out("messages") && !$env->out("erreur"))
+ { if
+ ( ( $id_source = $data->add_source
+ ( $this->piste["groupes"],
+ $this->piste["titre"],
+ $this->piste_status_id,
+ $this->piste["licence"]["id"],
+ $this->piste["documents"],
+ $this->piste["reference"],
+ $this->piste["derivations"],
+ $source_infos
+ )
+ ) !== false
+ )
+ { if($_POST["morceau"])
+ { if($data->set_source_composition($id_source, $_POST["morceau"]))
+ { $env->redirect
+ ( $env->url("users/pistes"),
+ "la source a été ajoutée"
+ );
+ }
+ else $env->erreur("La source a été ajoutée mais impossible de l'associer à ce morceau");
+ }
+ else $env->redirect
+ ( $env->url("users/pistes"),
+ "la source a été ajoutée"
+ );
+ }
+ else $env->erreur("Impossible d'ajouter la source");
+ }
+ }
+ $env->set_out("piste", $this->piste);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function edit(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
+ if(!$this->piste["premissions"]["editeur"])
+ { $env->erreur("vous n'avez la permission d'editer cette source");
+ return;
+ }
+ if($data->check_user_uploads_dir())
+ { $web_path = $env->path("web");
+ $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+ if(($compositions = $data->source_compositions(array("id_source" => $this->piste["id"]))) !== false)
+ { if($compositions) foreach($compositions[$this->piste["id"]] as $id_morceau) { $this->piste["morceau"] = $id_morceau; break; }
+ $env->set_out("groupe", $data->get_admin_groupe($this->piste["groupes"]));
+ if($_POST)
+ { $source_infos = array
+ ( "date_inscription" => $_POST["date_inscription"],
+ "ordre" => isset($this->piste["ordre"]) ? $this->piste["ordre"] : 0
+ );
+ $this->piste = $data->empty_source(array("id" => $this->piste["id"]));
+ $users_sources_mod = $env->get_controller("users/sources");
+ if(!($groupe = $data->groupe($_POST["id_groupe"])))
+ { $env->erreur("Impossible de lire les informations du groupe");
+ return;
+ }
+ $env->set_out("groupe", $groupe);
+ $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+ $this->piste["groupes"] = array($groupe["id"] => $groupe);
+ $this->piste["derivations"] = array();
+ if($_POST["morceau"])
+ { if($morceau = $data->source($_POST["morceau"], true))
+ { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+ if(!$morceau["permissions"]["contributeur"])
+ { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
+ return;
+ }
+ }
+ else
+ { $env->erreur("impossible de lire les informations du morceau");
+ return;
+ }
+ $this->piste["morceau"] = $_POST["morceau"];
+ }
+ if(isset($_POST["is_derivation"]))
+ { foreach($_POST as $key => $value)
+ { if(substr($key, 0, 14) == "derivation_id_")
+ { $id_source_derivation = substr($key, 14);
+ $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+ $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+ $_POST["edit_derivation_content_".$id_source_derivation]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+ );
+ }
+ }
+ }
+ if(isset($_POST["is_reference"]))
+ { $xml_url = trim($_POST["reference"]);
+ $this->piste["reference"] = $users_sources_mod->get_source_from_xml
+ ( $env,
+ $xml_url,
+ ( $_POST["use_edit_reference_content"] ?
+ $_POST["edit_reference_content"]
+ : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+ ),
+ $_POST["use_edit_reference_content"] ? true : false
+ );
+ }
+ else
+ { if($this->piste["titre"] = trim($_POST["titre"]))
+ { $this->piste["licence"] = array
+ ( "id" => $_POST["licence"]
+ );
+ $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+ $source_infos["description"] = $_POST["description"];
+ foreach($_POST as $post_key => $post_value)
+ { if(substr($post_key, 0, 13) == "document_nom_")
+ { if($id_document = substr($post_key, 13))
+ { $this->piste["documents"][$id_document] = array
+ ( "nom" => $_POST["document_nom_".$id_document],
+ "url" => $_POST["document_url_".$id_document]
+ );
+ }
+ }
+ }
+ }
+ else $env->message("merci de préciser un titre pour la source");
+ }
+ if(!$env->out("messages") && !$env->out("erreur"))
+ { if
+ ( ( $data->set_source
+ ( $this->piste["id"],
+ $this->piste["groupes"],
+ $this->piste["titre"],
+ $this->piste_status_id,
+ $this->piste["licence"]["id"],
+ $this->piste["documents"],
+ $this->piste["reference"],
+ $this->piste["derivations"],
+ $source_infos
+ )
+ ) !== false
+ )
+ { if($data->del_source_compositions(array("id_source" => $this->piste["id"])))
+ { if($_POST["morceau"])
+ { if($data->set_source_composition($this->piste["id"], $_POST["morceau"]))
+ { $env->redirect
+ ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
+ "la source a été modifiée"
+ );
+ }
+ else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau");
+ }
+ else $env->redirect
+ ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
+ "la source a été modifiée"
+ );
+ }
+ else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau");
+ }
+ else $env->erreur("Impossible de modifier la source");
+ }
+ }
+ }
+ else $env->erreur("Impossible de lire la liste des compositions");
+ $env->set_out("piste", $this->piste);
+ }
+ else $env->erreur("Impossible de creer le repertoire utilisateur");
+ }
+
+ function maj_xml(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
+ if(!$this->piste["premissions"]["editeur"])
+ { $env->erreur("vous n'avez la permission d'editer cette source");
+ return;
+ }
+ if
+ ( isset($_GET[$env->param("id")])
+ && isset($_GET[$env->param("xml")])
+ && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
+ )
+ { $xml_url = "";
+ if($_GET[$env->param("xml")] == "derivation")
+ { if(isset($this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
+ $xml_url = $this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
+ }
+ elseif($_GET[$env->param("xml")] == "reference")
+ { if(isset($this->piste["reference"]["xml"]["url"]))
+ $xml_url = $this->piste["reference"]["xml"]["url"];
+ }
+ $erreur = "";
+ if($xml_url)
+ { if(($res = $data->maj_source_cache($xml_url)) !== false)
+ { if($res === true)
+ { if($this->piste = $data->source($this->piste["id"]))
+ { $env->redirect
+ ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
+ "Les informations du fichier XML ont été mises à jour",
+ 2
+ );
+ return;
+ }
+ else $erreur =
+ "le contenu du fichier XML a été mis à jour"
+ .", mais impossible de lire les informations de la source";
+ }
+ else
+ { switch($res)
+ { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
+ case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break;
+ default: $erreur = "Erreur inconnue (?)"; break;
+ }
+ }
+ }
+ else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache";
+ }
+ else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
+ if($erreur) $env->erreur($erreur);
+ else $env->run("users/pistes/edit", array("id" => $this->piste["id"]));
+ }
+ else $env->erreur("parametre de fichier xml manquant");
+ }
+
+ function del(){
+ $env = $this->env();
+ $data = $env->data();
+ $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
+ if($this->piste["premissions"]["admin"])
+ { if($data->del_source($this->piste["id"]))
+ { $env->redirect
+ ( $env->url("users/pistes"),
+ "la source a été supprimée"
+ );
+ }
+ else $env->erreur("Impossible de supprimer la source");
+ }
+ else $env->erreur("vous n'avez la permission d'effacer cette source");
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/controllers/users/sources.php b/app/controllers/users/sources.php
new file mode 100644
index 0000000..f962924
--- /dev/null
+++ b/app/controllers/users/sources.php
@@ -0,0 +1,58 @@
+data();
+ $source = $data->empty_source();
+ $source_xml = array
+ ( "url" => $xml_url,
+ "content" => $xml_content,
+ "use_edit_content" => $xml_use_edit_content
+ );
+ if($source_xml["url"])
+ { if($source_xml["content"])
+ { if
+ ( ( $source = $data->source_xml_read
+ ( $source_xml["url"],
+ $source_xml["content"]
+ )
+ ) === false
+ )
+ { $source = $data->empty_source();
+ $env->message
+ ( "Code XML invalide pour :"
+ ."
".$source_xml["url"].""
+ );
+ }
+ }
+ else
+ { if($source_xml["content"] === false)
+ { $env->message
+ ( "Impossible de lire le contenu du fichier XML pour :"
+ ."
".$source_xml["url"].""
+ );
+ }
+ else
+ { $env->message
+ ( "Le contenu du fichier XML est vide pour :"
+ ."
".$source_xml["url"].""
+ );
+ }
+ }
+ }
+ else
+ { $env->message("Merci de préciser l'ULR du fichier XML");
+ }
+ $source["xml"] = $source_xml;
+ return $source;
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/data/modules/share/sml_data_sources_cache.php b/app/data/modules/share/sml_data_sources_cache.php
new file mode 100644
index 0000000..e09f824
--- /dev/null
+++ b/app/data/modules/share/sml_data_sources_cache.php
@@ -0,0 +1,238 @@
+env();
+ $sgbd = $this->sgbd();
+ if(($cache_infos = $this->source_cache_infos_db($url)) !== false)
+ { if($cache_infos)
+ { if($env->config("cache_maj_auto"))
+ { if(($need_update = $this->cache_need_update($cache_infos["last_update"], $env->config("cache_time") * 60 * 60)) !== false)
+ { if(!$IGNORE_UPDATE && $need_update)
+ { if($this->buffer = @file_get_contents($url))
+ { if($this->parse_source_xml($this->buffer))
+ { if($this->del_source_cache($cache_infos["id"], $cache_infos["id_source"]))
+ { if($this->add_source_cache($url, $this->buffer)) return $this->buffer;
+ }
+ }
+ else return -1;
+ }
+ else return -1;
+ }
+ else return @file_get_contents($env->path("content")."cache/sources/".$cache_infos["id_source"].".xml");
+ }
+ }
+ }
+ else
+ { if($this->buffer = @file_get_contents($url))
+ { if($this->parse_source_xml($this->buffer))
+ { if(!$this->add_source_cache($url, $this->buffer)) return false;
+ }
+ return $this->buffer;
+ }
+ }
+ }
+ return false;
+ }
+
+ /*
+ * retourne 1 si $last_update + $cache_time est
+ * superieur ou egal a la date courante, 0 sinon
+ *
+ * retourne FAUX si le formta de $last_update ou
+ * de $cache_time est incorrect
+ *
+ * $last_update : date au format Y-m-d H:i:s
+ *
+ * $cache_time : duree, en secondes
+ *
+ */
+ function cache_need_update($last_update, $cache_time)
+ { $v_last_update = explode(" ", $last_update);
+ if(count($v_last_update) == 2)
+ { $v_date = explode("-", $v_last_update[0]);
+ if(count($v_date) == 3)
+ { $v_time = explode(":", $v_last_update[1]);
+ if(count($v_time) == 3)
+ { if
+ ( preg_match("/^[0-9]+$/", $v_date[0])
+ && preg_match("/^[0-9]+$/", $v_date[1])
+ && preg_match("/^[0-9]+$/", $v_date[2])
+ && preg_match("/^[0-9]+$/", $v_time[0])
+ && preg_match("/^[0-9]+$/", $v_time[1])
+ && preg_match("/^[0-9]+$/", $v_time[2])
+ && preg_match("/^[0-9]+$/", $cache_time)
+ )
+ { return (time() - mktime($v_time[0], $v_time[1], $v_time[2], $v_date[1], $v_date[2], $v_date[0])) < $cache_time ? 0 : 1;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /*
+ * ajoute un contenu xml dans le cache
+ *
+ * $url : l'URL du fichier XML d'origine
+ *
+ * $xml_content : le contenu du fichier XML
+ *
+ */
+ function add_source_cache($url, $xml_content)
+ { $env = $this->env();
+ $sgbd = $this->sgbd();
+ if(($cache_index = $this->inc_sources_cache_index()) !== false)
+ { if($fh = @fopen($env->path("content")."cache/sources/".$cache_index.".xml", "w+"))
+ { $res = false;
+ if(@fwrite($fh, $this->buffer))
+ { @fclose($fh);
+ $res = $this->add_source_cache_db($url, $cache_index);
+ }
+ @fclose($fh);
+ return $res;
+ }
+ }
+ return false;
+ }
+
+ /*
+ * met a jour le cache pour le fichier XML dont l'URL d'origine est $url
+ *
+ * retourne :
+ *
+ * VRAI si tout se passe bien
+ * -1 si l'URL est introuvable
+ * -2 si le contenu a cette URL n'est pas un fichier XML de source
+ * FAUX si le cache n'a pas pu etre mis a jour avec les nouvelles infos
+ *
+ */
+ function maj_source_cache($url)
+ { if($this->buffer = @file_get_contents($url))
+ { if($this->parse_source_xml($this->buffer))
+ { if(($cache_infos = $this->source_cache_infos_db($url)) !== false)
+ { if($cache_infos)
+ { if($this->del_source_cache($cache_infos["id"], $cache_infos["id_source"]))
+ { if($this->add_source_cache($url, $this->buffer)) return true;
+ }
+ }
+ else
+ { if($this->add_source_cache($url, $this->buffer)) return true;
+ }
+ }
+ return false;
+ }
+ else return -2;
+ }
+ else return -1;
+ }
+
+ /*
+ * vide le cache
+ *
+ */
+ function empty_source_cache()
+ { $OK = true;
+ if(($cache = $this->source_cache_db()) !== false)
+ { foreach($cache as $id_cache => $cache_infos)
+ { if(!$this->del_source_cache($id_cache, $cache_infos["id_source"]))
+ { $OK = false;
+ $break;
+ }
+ }
+ }
+ else $OK = false;
+ return $OK;
+ }
+
+ /*
+ * efface un contenu XML du cache
+ *
+ * $id_cache_data : l'index des informations de cache
+ * dans le dossier data
+ *
+ * $id_xml_cache : l'index du contenu XML dans le cache
+ *
+ */
+ function del_source_cache($id_cache_data, $id_xml_cache)
+ { $env = $this->env();
+ if($this->del_source_cache_db($id_cache_data))
+ { if(@unlink($env->path("content")."cache/sources/".$id_xml_cache.".xml")) return true;
+ }
+ return false;
+ }
+
+ /*
+ * initialise le cache
+ * cette fonction verifie que les dossiers du cache existent
+ * et les cree sinon
+ *
+ */
+ function init_sources_cache()
+ { $env = $this->env();
+ if(!is_dir($env->path("content")."cache")) @mkdir($env->path("content")."cache");
+ if(is_dir($env->path("content")."cache"))
+ { if(!is_dir($env->path("content")."cache/sources")) @mkdir($env->path("content")."cache/sources");
+ if(is_dir($env->path("content")."cache/sources"))
+ { return true;
+ }
+ }
+ return "impossible d'initialiser le cache";
+ }
+
+ /*
+ * incremente l'index du cache et retourne le nouvel index
+ *
+ */
+ function inc_sources_cache_index()
+ { clearstatcache();
+ $env = $this->env();
+ $cache_index = false;
+ if(is_dir($env->path("content")."cache/sources") && is_writable($env->path("content")."cache/sources"))
+ { if(!file_exists($env->path("content")."cache/sources/.index"))
+ { if($fh = @fopen($env->path("content")."cache/sources/.index", "w+"))
+ { if(@fwrite($fh, "0")) $cache_index = 0;
+ @fclose($fh);
+ }
+ }
+ else
+ { if(($cache_index = @file_get_contents($env->path("content")."cache/sources/.index")) !== false)
+ { if(preg_match("/^[0-9]+$/", $cache_index))
+ { $cache_index = (int)$cache_index;
+ }
+ else $cache_index = false;
+ }
+ }
+ }
+ if($cache_index !== false)
+ { $cache_index++;
+ if($fh = @fopen($env->path("content")."cache/sources/.index", "w+"))
+ { if(!@fwrite($fh, (string)$cache_index)) $cache_index = false;
+ @fclose($fh);
+ }
+ else $cache_index = false;
+ }
+ return $cache_index;
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/data/modules/share/sml_data_sources_xml.php b/app/data/modules/share/sml_data_sources_xml.php
new file mode 100644
index 0000000..1cf0cc4
--- /dev/null
+++ b/app/data/modules/share/sml_data_sources_xml.php
@@ -0,0 +1,207 @@
+env();
+ if($env->config("cache_actif")) return $this->get_source_xml_from_cache($url, $IGNORE_UPDATE);
+ else return @file_get_contents($url);
+ }
+
+ # ----------------------------------------------------------------------------------------
+ # XML source
+ #
+
+ function set_source_xml($id, $params = array())
+ { $env = $this->env();
+ $OK = false;
+ if(strlen($id) > 0 && ($fh = @fopen($this->source_xml_path($id), "wb")) !== false){
+ if(($content = $this->source_xml_content($id, $params)) !== false){
+ if(@fwrite($fh, $content)) $OK = true;
+ }
+ @fclose($fh);
+ }
+ return $OK;
+ }
+
+ function maj_source_xml_groupe($groupe)
+ { $OK = true;
+ if($groupe !== false)
+ { $sgbd = $this->sgbd();
+ $env = $this->env();
+ if(($sources = $this->sources(array("id_groupe" => $groupe["id"]))) !== false)
+ { foreach($sources["list"] as $id_source => $source)
+ { if(!$this->set_source_xml($source["id"], array("source" => $source)))
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ else $OK = false;
+ }
+ else $OK = false;
+ return $OK;
+ }
+
+ function maj_source_xml_licence($licence)
+ { $OK = true;
+ if($licence !== false)
+ { $sgbd = $this->sgbd();
+ $env = $this->env();
+ if(($sources = $this->sources(array("id_licence" => $licence["id"]))) !== false)
+ { foreach($sources["list"] as $id_source => $source)
+ { if(!$this->set_source_xml($source["id"], array("source" => $source)))
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ else $OK = false;
+ }
+ else $OK = false;
+ return $OK;
+ }
+
+ function maj_source_xml_all()
+ { $OK = true;
+ $sgbd = $this->sgbd();
+ $env = $this->env();
+ if(($sources = $this->sources(array())) !== false)
+ { foreach($sources["list"] as $id_source => $source)
+ { if(!$this->set_source_xml($source["id"], array("source" => $source)))
+ { $OK = false;
+ break;
+ }
+ }
+ }
+ else $OK = false;
+ return $OK;
+ }
+
+ function get_source_xml($id_source)
+ { $source_file = $this->source_xml_path($id_source);
+ if(file_exists($source_file))
+ { return @file_get_contents($source_file);
+ }
+ return "";
+ }
+
+ function del_source_xml($id_source)
+ { $env = $this->env();
+ if(file_exists($this->source_xml_path($id_source)))
+ { return
+ $this->del_edit_derivations(array("id_source" => $id_source))
+ && $this->del_edit_reference_content($id_source)
+ && @unlink($this->source_xml_path($id_source));
+ }
+ return true;
+ }
+
+ # ----------------------------------------------------------------------------------------
+ # edition XML derivation
+ #
+
+ function set_edit_derivation_content($id_source, $id_source_derivation, $content)
+ { $env = $this->env();
+ $derivations_dir = $this->derivations_edit_xml_dir_path();
+ if(!file_exists($derivations_dir) || !is_dir($derivations_dir)) @mkdir($derivations_dir);
+ if(file_exists($derivations_dir) && is_dir($derivations_dir))
+ { $derivations_dir = $this->derivations_edit_xml_dir_path($id_source);
+ if(!file_exists($derivations_dir) || !is_dir($derivations_dir)) @mkdir($derivations_dir);
+ if(file_exists($derivations_dir) && is_dir($derivations_dir))
+ { if($fh = @fopen($this->derivation_edit_xml_path($id_source, $id_source_derivation), "w+"))
+ { if(@fwrite($fh, $content))
+ { @fclose($fh);
+ return true;
+ }
+ @fclose($fh);
+ }
+ }
+ }
+ return false;
+ }
+
+ function get_edit_derivation_content($id_source, $id_source_derivation)
+ { $env = $this->env();
+ $derivation_file = $this->derivation_edit_xml_path($id_source, $id_source_derivation);
+ $derivation_content = "";
+ if(file_exists($derivation_file))
+ { $derivation_content = @file_get_contents($derivation_file);
+ }
+ return $derivation_content;
+ }
+
+ function del_edit_derivation_content($id_source, $id_source_derivation)
+ { $env = $this->env();
+ $derivation_file = $this->derivation_edit_xml_path($id_source, $id_source_derivation);
+ $OK = true;
+ if(file_exists($derivation_file))
+ { $OK = @unlink($derivation_file);
+ }
+ return $OK;
+ }
+
+ function del_edit_derivations($id_source)
+ { $env = $this->env();
+ $derivations_dir = $this->derivations_edit_xml_dir_path($id_source);
+ $OK = true;
+ if(is_dir($derivations_dir))
+ { if($dh = opendir($derivations_dir))
+ { while($OK && (($file = readdir($dh)) !== false))
+ { if(preg_match("/^.+\.xml$/", $file))
+ { $OK = @unlink($derivations_dir.$file) && $OK;
+ }
+ }
+ closedir($dh);
+// $OK = @rmdir($derivations_dir) && $OK;
+ @rmdir($derivations_dir);
+ }
+ else $OK = false;
+ }
+ return $OK;
+ }
+
+ # ----------------------------------------------------------------------------------------
+ # edition XML reference
+ #
+
+ function set_edit_reference_content($id_source, $content)
+ { $env = $this->env();
+ $references_dir = $this->reference_edit_xml_dir_path();
+ if(!file_exists($references_dir) || !is_dir($references_dir)) @mkdir($references_dir);
+ if(file_exists($references_dir) && is_dir($references_dir))
+ { if($fh = @fopen($this->reference_edit_xml_path($id_source), "w+"))
+ { if(@fwrite($fh, $content))
+ { @fclose($fh);
+ return true;
+ }
+ @fclose($fh);
+ }
+ }
+ return false;
+ }
+
+ function get_edit_reference_content($id_source)
+ { $env = $this->env();
+ $reference_file = $this->reference_edit_xml_path($id_source);
+ $reference_content = "";
+ if(file_exists($reference_file))
+ { $reference_content = @file_get_contents($reference_file);
+ }
+ return $reference_content;
+ }
+
+ function del_edit_reference_content($id_source)
+ { $env = $this->env();
+ $reference_file = $this->reference_edit_xml_path($id_source);
+ $OK = true;
+ if(file_exists($reference_file))
+ { $OK = @unlink($reference_file);
+ }
+ return $OK;
+ }
+
+ }
+
+?>
\ No newline at end of file
diff --git a/app/data/modules/share/sml_data_sources_xml_format.php b/app/data/modules/share/sml_data_sources_xml_format.php
new file mode 100644
index 0000000..0847036
--- /dev/null
+++ b/app/data/modules/share/sml_data_sources_xml_format.php
@@ -0,0 +1,178 @@
+env();
+ $content = false;
+ $this->status = isset($this->status) ? $this->status : $this->source_status();
+ if($this->status !== false)
+ { $this->source = isset($params["source"]) ? $params["source"] : $this->source($id, true);
+ if($this->source !== false)
+ { if($this->source["groupes"]) $this->groupes = $this->source["groupes"];
+ if(isset($params["groupes"])) $this->groupes = $params["groupes"];
+ if(!isset($this->groupes)) $this->groupes = $this->source_groupes($id);
+ if($this->groupes !== false)
+ { $this->licence = isset($params["licence"]) ? $params["licence"] : $this->licence($this->source["licence"]["id"]);
+ if($this->licence !== false)
+ { if(($this->sources = $this->source_compositions(array("id_composition" => $id))) !== false)
+ { $content = "
";
+ endif;
+
+?>
\ No newline at end of file
diff --git a/app/out/default/views/content/sources/xml_form.php b/app/out/default/views/content/sources/xml_form.php
new file mode 100644
index 0000000..f4b8925
--- /dev/null
+++ b/app/out/default/views/content/sources/xml_form.php
@@ -0,0 +1,77 @@
+get_out();
+
+ $xml_name = isset($out["form_params"]["name"]) ? $out["form_params"]["name"] : "sml_xn";
+ $xml_label = isset($out["form_params"]["label"]) ? $out["form_params"]["label"] : "";
+ $xml_maj_url = isset($out["form_params"]["maj_url"]) ? $out["form_params"]["maj_url"] : "";
+ $xml_id = isset($out["form_params"]["id"]) ? $out["form_params"]["id"] : "";
+ $xml_id_suffix = isset($out["form_params"]["id"]) ? "_".$out["form_params"]["id"] : "";
+ $xml_can_delete = isset($out["form_params"]["can_delete"]) ? $out["form_params"]["can_delete"] : false;
+ $source = $this->out("xml_form_source");
+ if(!$source) $source = $data->empty_source();
+
+?>
+
+
+
+
+
+
+
+
+
URL du fichier XML
+ : " />
+
+
+
+
+
+ -
+ source :
+ ">
+
+ ()
+
+
+ -
+ xml :
+ ">
+
+
+ - licence : ">
+
+
+ -
+ fichiers :
+
+ $document) : ?>
+ - ">
+
+
+
+
+
+
+
+
+
+ Editer le contenu du fichier XML
+ />
+ >
+
+
+
+
+
+
diff --git a/app/out/default/views/forms/sourceml/contact_author.php b/app/out/default/views/forms/sourceml/contact_author.php
new file mode 100644
index 0000000..5aac027
--- /dev/null
+++ b/app/out/default/views/forms/sourceml/contact_author.php
@@ -0,0 +1,39 @@
+
diff --git a/app/out/default/views/sources/album/ariane.php b/app/out/default/views/sources/album/ariane.php
new file mode 100644
index 0000000..3ea943e
--- /dev/null
+++ b/app/out/default/views/sources/album/ariane.php
@@ -0,0 +1,13 @@
+Albums
+
+
+
diff --git a/app/out/default/views/sources/album/list.php b/app/out/default/views/sources/album/list.php
new file mode 100644
index 0000000..05328e1
--- /dev/null
+++ b/app/out/default/views/sources/album/list.php
@@ -0,0 +1,52 @@
+out_file("views/sources/album/ariane.php"); ?>
+
+out["groupes"]["total"] > 1) : ?>
+
+
+
+
+
+out["groupe"]) : ?>
+
+out["groupe"]["description"] ?>
+
+
+
+
+
+out["albums"]["list"]) :
+ $source_status = "album";
+ $url_params = array();
+
+?>
+
+out_file("views/navig.php"); ?>
+
+
+out["albums"]["list"] as $id_source => $source)
+ { $url_params["album"] = $id_source;
+ $source["url"] = $this->url("sources/album/view", $url_params);
+ require $this->out_file("views/sources/source.php");
+ }
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucun album pour le moment
+
diff --git a/app/out/default/views/sources/album/view.php b/app/out/default/views/sources/album/view.php
new file mode 100644
index 0000000..5cf73de
--- /dev/null
+++ b/app/out/default/views/sources/album/view.php
@@ -0,0 +1,96 @@
+
+
+out["album"]["image_uri"]
+ && file_exists($this->out["album"]["image_uri"])
+ && ($img_size = $data->img_size($this->out["album"]["image_uri"], 150, 150)) !== false
+ ) :
+ $margin_top = floor((150 - $img_size["height"]) / 2);
+ $album_image_uri = $this->path("web").$this->out["album"]["image_uri"];
+?>
+
+ "
+ height=""
+ style="margin-top:px"
+ alt="" />
+
+
+
+
+
+out["album"];
+ $display_name = false;
+ require $this->out_file("views/sources/source.php");
+
+?>
+
+
+
+out["album"]["description"] ?>
+
+
+
+
+out["morceaux"]["list"]) :
+ $source_status = "morceau";
+ $url_params = array("album" => $this->out["album"]["id"]);
+
+?>
+
+Morceaux
+
+out["morceaux"]["list"] as $id_source => $source)
+ { $documents = $source["reference"] ? $source["reference"]["documents"] : $source["documents"];
+ if($documents)
+ { foreach($documents as $id_document => $document)
+ { if(strtolower(substr($document["url"], -4)) == ".mp3")
+ { $HAS_MP3_DOCUMENT = true;
+ break;
+ }
+ }
+ }
+ if($HAS_MP3_DOCUMENT) break;
+ }
+ if($HAS_MP3_DOCUMENT) :
+
+?>
+
+Ecouter l'album
+
+
+
+
+out_file("views/navig.php"); ?>
+
+
+out["morceaux"]["list"] as $id_source => $source)
+ { $url_params["morceau"] = $id_source;
+ $source["url"] = $this->url("sources/morceau/view", $url_params);
+ $display_name = true;
+ require $this->out_file("views/sources/source.php");
+ }
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
\ No newline at end of file
diff --git a/app/out/default/views/sources/ariane.php b/app/out/default/views/sources/ariane.php
new file mode 100644
index 0000000..7b11ef1
--- /dev/null
+++ b/app/out/default/views/sources/ariane.php
@@ -0,0 +1,21 @@
+Pistes
+
+
+
+out["groupe"]) && $this->out["groupe"]) : $ariane_params["groupe"] = $this->out["groupe"]["id"]; ?>
+ »
+ $this->out["groupe"]["id"])) ?>">out["groupe"]["nom"] ?>
+
+out["album"]) && $this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
+ »
+ ">out["album"]["titre"] ?>
+
+out["morceau"]) && $this->out["morceau"]) : $ariane_params["morceau"] = $this->out["morceau"]["id"]; ?>
+ »
+ ">out["morceau"]["titre"] ?>
+
+out["piste"]) && $this->out["piste"]) : $ariane_params["piste"] = $this->out["piste"]["id"]; ?>
+ »
+ ">out["piste"]["titre"] ?>
+
+
diff --git a/app/out/default/views/sources/colonne.php b/app/out/default/views/sources/colonne.php
new file mode 100644
index 0000000..f2a22e1
--- /dev/null
+++ b/app/out/default/views/sources/colonne.php
@@ -0,0 +1,8 @@
+out_file("views/sources/groupe_box.php");
+// require $this->out_file("views/sources/navig_menu.php");
+
+?>
+
+
diff --git a/app/out/default/views/sources/current_album.php b/app/out/default/views/sources/current_album.php
new file mode 100644
index 0000000..f0af20f
--- /dev/null
+++ b/app/out/default/views/sources/current_album.php
@@ -0,0 +1,31 @@
+out["album"]) && $this->out["album"]) : $album = $this->out["album"]; ?>
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/current_album_box.php b/app/out/default/views/sources/current_album_box.php
new file mode 100644
index 0000000..5a2dcdb
--- /dev/null
+++ b/app/out/default/views/sources/current_album_box.php
@@ -0,0 +1,11 @@
+etat("mod") == "sources" && $this->etat("controller") == "groupe" && $this->etat("action") == "view") : ?>
+
+out_config("nom_groupe")) require $this->out_file("views/sources/nom_groupe.php"); ?>
+
+out_config("colonne_logo_groupe")) require $this->out_file("views/sources/logo_groupe.php"); ?>
+
+
+
+out_config("albums_menu")) require $this->out_file("views/sources/current_album.php"); ?>
+
+out_file("views/sources/lien_contact.php"); ?>
diff --git a/app/out/default/views/sources/entete_groupe.php b/app/out/default/views/sources/entete_groupe.php
new file mode 100644
index 0000000..26d9055
--- /dev/null
+++ b/app/out/default/views/sources/entete_groupe.php
@@ -0,0 +1,27 @@
+ out["albums"]) && $this->out["albums"]["list"]) : ?>
+
+
+
diff --git a/app/out/default/views/sources/groupe/ariane.php b/app/out/default/views/sources/groupe/ariane.php
new file mode 100644
index 0000000..d3ce4ba
--- /dev/null
+++ b/app/out/default/views/sources/groupe/ariane.php
@@ -0,0 +1,11 @@
+Groupes
+
+
+
+
+out["groupe"]) && $this->out["groupe"]) : $ariane_params["groupe"] = $this->out["groupe"]["id"]; ?>
+ »
+ $this->out["groupe"]["id"])) ?>">out["groupe"]["nom"] ?>
+
+
+
diff --git a/app/out/default/views/sources/groupe/list.php b/app/out/default/views/sources/groupe/list.php
new file mode 100644
index 0000000..85bb7cc
--- /dev/null
+++ b/app/out/default/views/sources/groupe/list.php
@@ -0,0 +1,38 @@
+out["groupes"]["list"]) : ?>
+
+out_file("views/navig.php"); ?>
+
+
+
+out["groupes"]["list"] as $id_groupe => $groupe) : ?>
+ -
+
+
+
+
+
+out_file("views/navig.php"); ?>
+
+
diff --git a/app/out/default/views/sources/groupe/view.php b/app/out/default/views/sources/groupe/view.php
new file mode 100644
index 0000000..7daaf59
--- /dev/null
+++ b/app/out/default/views/sources/groupe/view.php
@@ -0,0 +1,42 @@
+
+out["groupe"]["description"] ?>
+
+
+
+
+out_config("groupe_view_albums")
+ && $this->out["albums"]["list"]
+ ) :
+
+?>
+
+
+
+
+
diff --git a/app/out/default/views/sources/groupe_box.php b/app/out/default/views/sources/groupe_box.php
new file mode 100644
index 0000000..76b0b9a
--- /dev/null
+++ b/app/out/default/views/sources/groupe_box.php
@@ -0,0 +1,9 @@
+out_config("nom_groupe")) require $this->out_file("views/sources/nom_groupe.php");
+ if($this->out_config("colonne_logo_groupe")) require $this->out_file("views/sources/logo_groupe.php");
+ if(($this->etat("controller") == "groupe") && $this->out_config("groupe_view_albums")) $this->set_config(array("out_albums_menu" => ""));
+ if($this->out_config("albums_menu")) require $this->out_file("views/sources/menu_albums.php");
+ require $this->out_file("views/sources/lien_contact.php");
+
+?>
\ No newline at end of file
diff --git a/app/out/default/views/sources/lien_contact.php b/app/out/default/views/sources/lien_contact.php
new file mode 100644
index 0000000..ee0804a
--- /dev/null
+++ b/app/out/default/views/sources/lien_contact.php
@@ -0,0 +1,8 @@
+out["groupe"]) && $this->out["groupe"] && $this->out["groupe"]["contact_form"]) : ?>
+
+
+
diff --git a/app/out/default/views/sources/logo_groupe.php b/app/out/default/views/sources/logo_groupe.php
new file mode 100644
index 0000000..87faa7b
--- /dev/null
+++ b/app/out/default/views/sources/logo_groupe.php
@@ -0,0 +1,22 @@
+out["groupe"])
+ && $this->out["groupe"]
+ && $this->out["groupe"]["image_uri"]
+ && file_exists($this->out["groupe"]["image_uri"])
+ && ($img_size = $data->img_size($this->out["groupe"]["image_uri"], 200, 130)) !== false
+ ) :
+ $margin_top = floor((150 - $img_size["height"]) / 2);
+
+?>
+
+
diff --git a/app/out/default/views/sources/menu_albums.php b/app/out/default/views/sources/menu_albums.php
new file mode 100644
index 0000000..a8b4616
--- /dev/null
+++ b/app/out/default/views/sources/menu_albums.php
@@ -0,0 +1,37 @@
+out["groupe"])
+ && $this->out["groupe"]
+ && $this->out["albums"]["list"]
+ ) :
+
+?>
+
+
+
+
diff --git a/app/out/default/views/sources/morceau/ariane.php b/app/out/default/views/sources/morceau/ariane.php
new file mode 100644
index 0000000..732c8fa
--- /dev/null
+++ b/app/out/default/views/sources/morceau/ariane.php
@@ -0,0 +1,18 @@
+Morceaux
+
+
+
+out["groupe"]) && $this->out["groupe"]) : $ariane_params["groupe"] = $this->out["groupe"]["id"]; ?>
+ »
+ $this->out["groupe"]["id"])) ?>">out["groupe"]["nom"] ?>
+
+out["album"]) && $this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
+ out["album"]["id"]; ?>
+ »
+ ">out["album"]["titre"] ?>
+
+out["morceau"]) && $this->out["morceau"]) : $ariane_params["morceau"] = $this->out["morceau"]["id"]; ?>
+ »
+ ">out["morceau"]["titre"] ?>
+
+
diff --git a/app/out/default/views/sources/morceau/list.php b/app/out/default/views/sources/morceau/list.php
new file mode 100644
index 0000000..0a326c1
--- /dev/null
+++ b/app/out/default/views/sources/morceau/list.php
@@ -0,0 +1,84 @@
+out_file("views/sources/morceau/ariane.php"); ?>
+
+out["groupes"]) && $this->out["groupes"]["total"] > 0)
+ || (isset($this->out["albums"]) && $this->out["albums"]["total"] > 0)
+ ) :
+
+?>
+
+
+
+
+
+
+
+out["morceaux"]["list"]) :
+ $source_status = "morceau";
+ $url_params = array();
+ if($this->out["groupe"]) $url_params["groupe"] = $this->out["groupe"]["id"];
+ if(isset($this->out["album"]) && $this->out["album"]) $url_params["album"] = $this->out["album"]["id"];
+
+?>
+
+out_file("views/navig.php"); ?>
+
+
+out["morceaux"]["list"] as $id_source => $source)
+ { $url_params["morceau"] = $id_source;
+ $source["url"] = $this->url("sources/morceau/view", $url_params);
+ require $this->out_file("views/sources/source.php");
+ }
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucun morceau pour le moment
+
diff --git a/app/out/default/views/sources/morceau/view.php b/app/out/default/views/sources/morceau/view.php
new file mode 100644
index 0000000..99020a1
--- /dev/null
+++ b/app/out/default/views/sources/morceau/view.php
@@ -0,0 +1,56 @@
+
+
+
+
+out["morceau"];
+ $display_name = false;
+ $url_params = array("morceau" => $morceau["id"]);
+
+?>
+
+
+url("sources/morceau/view", $url_params);
+ require $this->out_file("views/sources/source.php");
+
+?>
+
+
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/navig_menu.php b/app/out/default/views/sources/navig_menu.php
new file mode 100644
index 0000000..e89592f
--- /dev/null
+++ b/app/out/default/views/sources/navig_menu.php
@@ -0,0 +1,20 @@
+config("start_action"); ?>
+
diff --git a/app/out/default/views/sources/nom_groupe.php b/app/out/default/views/sources/nom_groupe.php
new file mode 100644
index 0000000..59ebd6b
--- /dev/null
+++ b/app/out/default/views/sources/nom_groupe.php
@@ -0,0 +1,7 @@
+out["groupe"]) && $this->out["groupe"]) : ?>
+
+
diff --git a/app/out/default/views/sources/piste/ariane.php b/app/out/default/views/sources/piste/ariane.php
new file mode 100644
index 0000000..d8ccd8b
--- /dev/null
+++ b/app/out/default/views/sources/piste/ariane.php
@@ -0,0 +1,22 @@
+Sources
+
+
+
+
diff --git a/app/out/default/views/sources/piste/list.php b/app/out/default/views/sources/piste/list.php
new file mode 100644
index 0000000..8051535
--- /dev/null
+++ b/app/out/default/views/sources/piste/list.php
@@ -0,0 +1,83 @@
+out_file("views/sources/piste/ariane.php"); ?>
+
+out["groupes"]) && $this->out["groupes"]["total"] > 0)
+ || (isset($this->out["albums"]) && $this->out["albums"]["total"] > 0)
+ ) :
+
+?>
+
+
+
+
+
+
+
+out["pistes"]["list"]) :
+ $source_status = "piste";
+ $url_params = array();
+ if(isset($this->out["groupe"]) && $this->out["groupe"]) $url_params["groupe"] = $this->out["groupe"]["id"];
+ if(isset($this->out["morceau"]) && $this->out["morceau"]) $url_params["morceau"] = $this->out["morceau"]["id"];
+
+?>
+
+out_file("views/navig.php"); ?>
+
+
+out["pistes"]["list"] as $id_source => $source)
+ { $url_params["piste"] = $id_source;
+ $source["url"] = $this->url("sources/piste/view", $url_params);
+ require $this->out_file("views/sources/source.php");
+ }
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucune source pour le moment
+
diff --git a/app/out/default/views/sources/piste/view.php b/app/out/default/views/sources/piste/view.php
new file mode 100644
index 0000000..5d089a0
--- /dev/null
+++ b/app/out/default/views/sources/piste/view.php
@@ -0,0 +1,64 @@
+
+
+
+
+out["piste"];
+ $display_name = false;
+ $url_params = array("piste" => $piste["id"]);
+
+?>
+
+
+url("sources/piste/view", $url_params);
+ require $this->out_file("views/sources/source.php");
+
+?>
+
+
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/source.php b/app/out/default/views/sources/source.php
new file mode 100644
index 0000000..1107918
--- /dev/null
+++ b/app/out/default/views/sources/source.php
@@ -0,0 +1,22 @@
+
+
+">
+
+out_file("views/sources/source/menu_source.php");
+ require $this->out_file("views/sources/source/header.php");
+ require $this->out_file("views/sources/source/metas.php");
+ require $this->out_file("views/sources/source/documents.php");
+
+?>
+
+out_file("views/sources/source/arbo.php");
+
+?>
+
+
+
+
diff --git a/app/out/default/views/sources/source/arbo.php b/app/out/default/views/sources/source/arbo.php
new file mode 100644
index 0000000..f9a0bc6
--- /dev/null
+++ b/app/out/default/views/sources/source/arbo.php
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/source/documents.php b/app/out/default/views/sources/source/documents.php
new file mode 100644
index 0000000..56af9e0
--- /dev/null
+++ b/app/out/default/views/sources/source/documents.php
@@ -0,0 +1,47 @@
+
+
+
+
+ $document) :
+ $ext = "";
+ $audio_type = "";
+ if(($k = strrpos($document["url"], ".")) !== false) $ext = strtolower(substr($document["url"], $k + 1));
+ switch($ext){
+ case "ogg":
+ $audio_type = "audio/ogg";
+ break;
+ case "mp3":
+ $audio_type = "audio/mp3";
+ break;
+ }
+
+ ?>
+
+ - ">
+
+
+
+
+ ">
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/source/header.php b/app/out/default/views/sources/source/header.php
new file mode 100644
index 0000000..6910161
--- /dev/null
+++ b/app/out/default/views/sources/source/header.php
@@ -0,0 +1,44 @@
+ $source["reference"]["auteur"],
+ "url" => $source["reference"]["from"]
+ );
+ }
+ else
+ { $groupe = $data->get_admin_groupe($source["groupes"]);
+ if($groupe) $groupe["url"] = $this->url("sources/groupe/view", array("id" => $groupe["id"]));
+ }
+
+?>
+
+
+
+">
+
+
+
+
+ référence » "> ()
+
+ ">
+
+
+
+
+ dérive de »
+
+ "> ()
+
+
+
+
+
+
+
+
+
diff --git a/app/out/default/views/sources/source/menu_source.php b/app/out/default/views/sources/source/menu_source.php
new file mode 100644
index 0000000..8370828
--- /dev/null
+++ b/app/out/default/views/sources/source/menu_source.php
@@ -0,0 +1,58 @@
+user();
+ if($user && ($source["status"] == 2 || $source["status"] == 3)) :
+
+?>
+
+
+
+
diff --git a/app/out/default/views/sources/source/metas.php b/app/out/default/views/sources/source/metas.php
new file mode 100644
index 0000000..9e5a331
--- /dev/null
+++ b/app/out/default/views/sources/source/metas.php
@@ -0,0 +1,41 @@
+helper("mw_helper_sourceml_out");
+
+ $metas =
+ ( $source["reference"] ?
+ array
+ ( "licence_name" => isset($source["reference"]["licence"]["nom"]) ? $source["reference"]["licence"]["nom"] : "",
+ "licence_url" => isset($source["reference"]["licence"]["url"]) ? $source["reference"]["licence"]["url"] : "",
+ "date_creation" => $source["reference"]["date_creation"],
+ "xml_url" => $source["reference"]["xml"]["url"]
+ )
+ : array
+ ( "licence_name" =>
+ ( isset($source["licence"]["id"]) && isset($this->out["licences"]["list"][$source["licence"]["id"]]) ?
+ $this->out["licences"]["list"][$source["licence"]["id"]]["nom"]
+ : ""
+ ),
+ "licence_url" =>
+ ( isset($source["licence"]["id"]) && isset($this->out["licences"]["list"][$source["licence"]["id"]]) ?
+ $this->out["licences"]["list"][$source["licence"]["id"]]["url"]
+ : ""
+ ),
+ "date_creation" => $source["date_creation"],
+ "xml_url" => $data->source_xml_url($source["id"])
+ )
+ );
+
+?>
+
+
diff --git a/app/out/default/views/users/albums/add.php b/app/out/default/views/users/albums/add.php
new file mode 100644
index 0000000..1d44877
--- /dev/null
+++ b/app/out/default/views/users/albums/add.php
@@ -0,0 +1,126 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Nouvel album
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter un album, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/albums/edit.php b/app/out/default/views/users/albums/edit.php
new file mode 100644
index 0000000..e1132d1
--- /dev/null
+++ b/app/out/default/views/users/albums/edit.php
@@ -0,0 +1,128 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Modifier un album
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter un album, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/albums/list.php b/app/out/default/views/users/albums/list.php
new file mode 100644
index 0000000..bd1ba9c
--- /dev/null
+++ b/app/out/default/views/users/albums/list.php
@@ -0,0 +1,86 @@
+Albums
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+ -
+
+
+
+
+
+
+out["albums"]["list"]) : ?>
+
+out_file("views/navig.php"); ?>
+
+param("groupe")]) && $_GET[$this->param("groupe")]) $get_params["groupe"] = $_GET[$this->param("groupe")];
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucun album pour le moment
+
diff --git a/app/out/default/views/users/groupes/add.php b/app/out/default/views/users/groupes/add.php
new file mode 100644
index 0000000..48920f6
--- /dev/null
+++ b/app/out/default/views/users/groupes/add.php
@@ -0,0 +1,50 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Nouveau groupe
+
+
+
+
diff --git a/app/out/default/views/users/groupes/edit.php b/app/out/default/views/users/groupes/edit.php
new file mode 100644
index 0000000..3b9a03a
--- /dev/null
+++ b/app/out/default/views/users/groupes/edit.php
@@ -0,0 +1,54 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Modifier un groupe
+
+
+
+
diff --git a/app/out/default/views/users/groupes/list.php b/app/out/default/views/users/groupes/list.php
new file mode 100644
index 0000000..2afd879
--- /dev/null
+++ b/app/out/default/views/users/groupes/list.php
@@ -0,0 +1,38 @@
+Groupes
+
+
+
+out["groupes"]["list"]) : ?>
+
+out_file("views/navig.php"); ?>
+
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucun groupe pour le moment
+
diff --git a/app/out/default/views/users/morceaux/add.php b/app/out/default/views/users/morceaux/add.php
new file mode 100644
index 0000000..ec9b692
--- /dev/null
+++ b/app/out/default/views/users/morceaux/add.php
@@ -0,0 +1,259 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Nouveau morceau
+
+
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter un morceau, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/morceaux/edit.php b/app/out/default/views/users/morceaux/edit.php
new file mode 100644
index 0000000..39d4c81
--- /dev/null
+++ b/app/out/default/views/users/morceaux/edit.php
@@ -0,0 +1,266 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Modifier un morceau
+
+
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter un morceau, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/morceaux/list.php b/app/out/default/views/users/morceaux/list.php
new file mode 100644
index 0000000..37e200e
--- /dev/null
+++ b/app/out/default/views/users/morceaux/list.php
@@ -0,0 +1,142 @@
+param("groupe")]) && $_GET[$this->param("groupe")] && is_array($this->out["albums"][$_GET[$this->param("groupe")]]))
+ { foreach($this->out["albums"][$_GET[$this->param("groupe")]] as $id_album => $album)
+ { $albums[$id_album] = $album;
+ }
+ }
+ else
+ { foreach($this->out["albums"] as $id_groupe => $_albums)
+ { foreach($this->out["albums"][$id_groupe] as $id_album => $album)
+ { $albums[$id_album] = $album;
+ }
+ }
+ }
+
+?>
+
+Morceaux
+
+
+
+out["groupes"]["total"] > 0 || (isset($this->out["albums"]["total"]) && $this->out["albums"]["total"] > 0)) : ?>
+
+
+out["groupes"]["total"] > 0) : ?>
+ -
+param("album")]) && !$_GET[$this->param("album")]) $url_params["album"] = "";
+
+?>
+
+
+
+
+ -
+
+param("groupe")])) $url_params["groupe"] = $_GET[$this->param("groupe")];
+
+?>
+
+
+
+
+
+
+
+
+out["morceaux"]["list"]) : ?>
+
+out_file("views/navig.php"); ?>
+
+param("groupe")]) && $_GET[$this->param("groupe")]) $get_params["groupe"] = $_GET[$this->param("groupe")];
+ if(isset($_GET[$this->param("album")]) && $_GET[$this->param("album")]) $get_params["album"] = $_GET[$this->param("album")];
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucun morceau pour le moment
+
diff --git a/app/out/default/views/users/pistes/add.php b/app/out/default/views/users/pistes/add.php
new file mode 100644
index 0000000..bfe82eb
--- /dev/null
+++ b/app/out/default/views/users/pistes/add.php
@@ -0,0 +1,264 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Nouvelle source
+
+
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter une piste, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/pistes/edit.php b/app/out/default/views/users/pistes/edit.php
new file mode 100644
index 0000000..be94c15
--- /dev/null
+++ b/app/out/default/views/users/pistes/edit.php
@@ -0,0 +1,272 @@
+out_file("views/tinymce.init.js.php"); ?>
+
+Modifier une source
+
+
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+
+
+
+Vous ne gérez aucun groupe pour le moment.
+Pour ajouter une piste, vous devez d'abord ">créer un groupe.
+
+
diff --git a/app/out/default/views/users/pistes/list.php b/app/out/default/views/users/pistes/list.php
new file mode 100644
index 0000000..a02b4a5
--- /dev/null
+++ b/app/out/default/views/users/pistes/list.php
@@ -0,0 +1,174 @@
+param("groupe")]) && $_GET[$this->param("groupe")] && is_array($this->out["albums"][$_GET[$this->param("groupe")]]))
+ { foreach($this->out["albums"][$_GET[$this->param("groupe")]] as $id_album => $album)
+ { $albums[$id_album] = $album;
+ }
+ }
+ else
+ { foreach($this->out["albums"] as $id_groupe => $_albums)
+ { foreach($this->out["albums"][$id_groupe] as $id_album => $album)
+ { $albums[$id_album] = $album;
+ }
+ }
+ }
+
+ $morceaux = array();
+ if(isset($_GET[$this->param("groupe")]) && $_GET[$this->param("groupe")])
+ { $id_groupe = $_GET[$this->param("groupe")];
+ if(is_array($this->out["morceaux"][$id_groupe]))
+ { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
+ { if(isset($_GET[$this->param("album")]) && $_GET[$this->param("album")])
+ { if($id_album == $_GET[$this->param("album")])
+ { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
+ { $morceaux[$id_morceau] = $morceau;
+ }
+ }
+ }
+ else
+ { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
+ { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
+ { $morceaux[$id_morceau] = $morceau;
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ { foreach($this->out["morceaux"] as $id_groupe => $_albums)
+ { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
+ { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
+ { $morceaux[$id_morceau] = $morceau;
+ }
+ }
+ }
+ }
+
+?>
+
+Sources
+
+
+
+out["groupes"]["total"] > 0) : ?>
+
+
+out["groupes"]["total"] > 0) : ?>
+ -
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+out["pistes"]["list"]) : ?>
+
+out_file("views/navig.php"); ?>
+
+param("groupe")]) && $_GET[$this->param("groupe")]) $get_params["groupe"] = $_GET[$this->param("groupe")];
+ if(isset($_GET[$this->param("morceau")]) && $_GET[$this->param("morceau")]) $get_params["morceau"] = $_GET[$this->param("morceau")];
+
+?>
+
+
+out_file("views/navig.php"); ?>
+
+
+Aucune source pour le moment
+
diff --git a/mw_sourceml.php b/mw_sourceml.php
new file mode 100644
index 0000000..ef62f77
--- /dev/null
+++ b/mw_sourceml.php
@@ -0,0 +1,331 @@
+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"), "Auteurs", 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);
+ $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");
+ }
+ 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);
+
+ }
+ 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";
+ }
+ return true;
+ }
+
+ }
+
+?>
\ No newline at end of file