3 class mw_users_pistes extends mw_controller{
9 var $morceau_status_id;
15 if(($this->status = $data->source_status()) === false){
16 return "Impossible de lire la liste des status de source";
18 foreach($this->status as $id_source_status => $source_status){
19 if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
20 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
21 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
22 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
25 !isset($this->album_status_id)
26 || !isset($this->morceau_status_id)
27 || !isset($this->piste_status_id)
29 return "liste des status de source incomplète";
31 if(!($this->user = $env->user())){
32 return "Vous devez être identifié pour accéder à cette page";
40 if(($groupes = $data->groupes($this->user["id"])) === false){
41 $env->erreur("Impossible de lire la liste des groupes");
44 $morceaux_groupes = $groupes["list"];
46 if(isset($_GET[$env->param("groupe")])){
47 $id_groupe = $_GET[$env->param("groupe")];
48 if(!isset($groupes["list"][$id_groupe])){
49 $env->erreur("Impossible de lire les informations du groupe");
54 $morceaux_groupes = array($id_groupe => $groupes["list"][$id_groupe]);
58 $morceaux = $data->groupes_sources(
60 "groupes" => $morceaux_groupes,
61 "id_class" => $this->morceau_status_id,
62 // on veut les morceaux pour lesquels au moins un groupe (et pas tous) ...
63 "satisfy_all_groupes_access" => false,
64 // ... a le droit de contribution
65 "id_source_access" => $data->id_groupe_status_contributeur()
69 ) return "impossible de lire la liste des morceaux";
70 if($id_morceau = isset($_GET[$env->param("morceau")]) ? $_GET[$env->param("morceau")] : false){
71 if(!($morceau = $data->source($id_morceau, true))){
72 $env->erreur("Impossible de lire les informations du morceau");
77 "status" => $this->piste_status_id,
78 "id_user" => $this->user["id"],
79 "order_by" => "ordre",
80 "start" => isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0
82 if($id_groupe) $select["id_groupe"] = $id_groupe;
83 if($id_morceau !== false) $select["id_composition"] = $id_morceau;
84 if(($pistes = $data->sources($select)) === false){
85 $env->erreur("impossible de lire la liste des pistes");
88 foreach($pistes["list"] as $id_piste => $piste){
89 $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]);
92 foreach($pistes["list"] as $id_piste => $piste){
93 if(isset($_POST["ordre_".$id_piste])){
94 if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false){
95 $env->erreur("Impossible d'enregistrer l'ordre des pistes");
100 $get_params = array();
101 if($id_groupe) $get_params["groupe"] = $id_groupe;
102 if($id_morceau) $get_params["morceau"] = $id_morceau;
104 $env->url("users/pistes", $get_params),
105 "l'ordre des pistes a été enregistré"
108 $env->set_out("groupes", $groupes);
109 $env->set_out("morceaux", $morceaux);
110 $env->set_out("pistes", $pistes);
115 $data = $env->data();
116 $piste = $data->empty_source();
117 $source_infos = array(
118 "date_inscription" => date("Y-m-d"),
123 if(($groupes = $data->groupes($this->user["id"])) === false){
124 $env->erreur("Impossible de lire la liste des groupes");
128 if($groupes["total"] > 0){
130 "status" => $this->morceau_status_id,
131 "id_user" => $this->user["id"]
133 foreach($groupes["list"] as $id_groupe => $groupe){
134 $select["id_groupe"] = $id_groupe;
135 if(($groupes_morceaux = $data->sources($select)) === false){
136 $env->erreur("impossible de lire la liste des morceaux");
139 $morceaux[$id_groupe] = $groupes_morceaux["list"];
142 if(($licences = $data->licences()) === false){
143 return "Impossible de lire la liste des licences";
145 if(!$data->check_user_uploads_dir()){
146 $env->erreur("Impossible de creer le repertoire utilisateur");
149 $web_path = $env->path("web");
150 $upload_dir = $env->path("content")."uploads/".$this->user["id"];
151 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
152 $users_sources_mod = $env->get_controller("users/sources");
154 if(!($groupe = $data->groupe($_POST["id_groupe"]))){
155 $env->erreur("Impossible de lire les informations du groupe");
158 $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
159 $piste["groupes"] = array($groupe["id"] => $groupe);
160 if($_POST["morceau"]){
161 if(!($morceau = $data->source($_POST["morceau"], true))){
162 $env->erreur("Impossible de lire les informations du morceau");
165 $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
166 if(!$morceau["permissions"]["contributeur"]){
167 $env->erreur("vous n'avez pas la permission d'ajouter une piste dans ce morceau");
170 $piste["morceau"] = $morceau["id"];
172 if(isset($_POST["is_derivation"])){
173 foreach($_POST as $key => $value){
174 if(substr($key, 0, 14) == "derivation_id_"){
175 $id_source_derivation = substr($key, 14);
176 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
177 $piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
181 isset($_POST["use_edit_derivation_content_".$id_source_derivation]) ?
182 $_POST["edit_derivation_content_".$id_source_derivation]
183 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
185 isset($_POST["use_edit_derivation_content_".$id_source_derivation]) ? true : false
190 if(isset($_POST["is_reference"])){
191 $xml_url = trim($_POST["reference"]);
192 $piste["reference"] = $users_sources_mod->get_source_from_xml(
196 isset($_POST["use_edit_reference_content"]) ?
197 $_POST["edit_reference_content"]
198 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
200 isset($_POST["use_edit_reference_content"]) ? true : false
204 if(!($piste["titre"] = trim($_POST["titre"]))){
205 $env->message("merci de préciser un titre pour la piste");
207 $piste["licence"] = array(
208 "id" => $_POST["licence"]
210 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
211 $source_infos["description"] = $_POST["description"];
212 foreach($_POST as $post_key => $post_value){
213 if(substr($post_key, 0, 13) == "document_nom_"){
214 if($id_document = substr($post_key, 13)){
215 $piste["documents"][$id_document] = array(
216 "nom" => $_POST["document_nom_".$id_document],
217 "url" => $_POST["document_url_".$id_document]
223 if(!$env->messages()){
224 if(($image = $data->upload("image", $upload_dir)) === false){
225 $env->erreur("erreur lors de l'envoi de l'image. la piste n'a pas été ajoutée");
228 if($image) $source_infos["image"] = $this->user["id"]."/".$image;
231 $id_source = $data->add_source(
234 $this->piste_status_id,
235 $piste["licence"]["id"],
238 $piste["derivations"],
243 $env->erreur("Impossible d'ajouter la piste");
247 if(!$data->set_source_composition($id_source, $morceau["id"])){
248 $env->erreur("La piste a été ajoutée mais impossible de l'associer au morceau");
253 $env->url("users/pistes"),
254 "la piste a été ajoutée"
258 $env->set_out("groupes", $groupes);
259 $env->set_out("morceaux", $morceaux);
260 $env->set_out("licences", $licences);
261 $env->set_out("piste", $piste);
262 $env->set_out("source_infos", $source_infos);
263 $env->set_out("groupe", $groupe);
264 $env->set_out("morceau", $morceau);
269 $data = $env->data();
270 if(($groupes = $data->groupes($this->user["id"])) === false){
271 $env->erreur("Impossible de lire la liste des groupes");
274 if(($licences = $data->licences()) === false){
275 $env->erreur("Impossible de lire la liste des licences");
278 if(($sources_access = $data->sources_access()) === false){
279 $env->erreur("Impossible de lire les types d'access");
282 if(!($piste = $data->source($_GET[$env->param("id")], true))){
283 $env->erreur("Impossible de lire les informations de la piste");
286 $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
287 if(!$piste["permissions"]["editeur"]){
288 $env->erreur("vous n'avez pas la permission d'editer cette piste");
293 $morceaux = $data->groupes_sources(
295 "groupes" => $piste["groupes"],
296 "id_class" => $this->morceau_status_id,
297 // on veut les morceaux pour lesquels chaque groupe du morceau ...
298 "satisfy_all_groupes_access" => true,
299 // ... a le droit de contribution
300 "id_source_access" => $data->id_groupe_status_contributeur()
304 ) return "impossible de lire la liste des morceaux";
305 if(!$data->check_user_uploads_dir()){
306 $env->erreur("Impossible de creer le repertoire utilisateur");
309 $web_path = $env->path("web");
310 $upload_dir = $env->path("content")."uploads/".$this->user["id"];
311 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
312 if(($compositions = $data->source_compositions(array("id_source" => $piste["id"]))) === false){
313 $env->erreur("Impossible de lire la liste des compositions");
316 if($compositions) foreach($compositions[$piste["id"]] as $id_morceau) { $piste["morceau"] = $id_morceau; break; }
318 $source_infos = array(
319 "date_inscription" => $_POST["date_inscription"],
320 "ordre" => isset($piste["ordre"]) ? $piste["ordre"] : 0
322 $piste = $data->empty_source(
324 "id" => $piste["id"],
325 "groupes" => $piste["groupes"],
326 "image" => isset($piste["image"]) ? $piste["image"] : ""
329 $users_sources_mod = $env->get_controller("users/sources");
330 if($_POST["morceau"]){
331 if($morceau = $data->source($_POST["morceau"], true)){
332 $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
333 if(!$morceau["permissions"]["contributeur"]){
334 $env->erreur("vous n'avez pas la permission d'ajouter une piste dans ce morceau");
339 $env->erreur("Impossible de lire les informations du morceau");
342 $piste["morceau"] = $morceau["id"];
344 if(isset($_POST["is_derivation"])){
345 foreach($_POST as $key => $value){
346 if(substr($key, 0, 14) == "derivation_id_"){
347 $id_source_derivation = substr($key, 14);
348 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
349 $piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
353 isset($_POST["use_edit_derivation_content_".$id_source_derivation]) ?
354 $_POST["edit_derivation_content_".$id_source_derivation]
355 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
357 isset($_POST["use_edit_derivation_content_".$id_source_derivation]) ? true : false
362 if(isset($_POST["is_reference"])){
363 $xml_url = trim($_POST["reference"]);
364 $piste["reference"] = $users_sources_mod->get_source_from_xml(
368 isset($_POST["use_edit_reference_content"]) ?
369 $_POST["edit_reference_content"]
370 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
372 isset($_POST["use_edit_reference_content"]) ? true : false
376 if(!($piste["titre"] = trim($_POST["titre"]))){
377 $env->message("merci de préciser un titre pour la piste");
379 $piste["licence"] = array(
380 "id" => $_POST["licence"]
382 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
383 $source_infos["description"] = $_POST["description"];
384 foreach($_POST as $post_key => $post_value){
385 if(substr($post_key, 0, 13) == "document_nom_"){
386 if($id_document = substr($post_key, 13)){
387 $piste["documents"][$id_document] = array(
388 "nom" => $_POST["document_nom_".$id_document],
389 "url" => $_POST["document_url_".$id_document]
395 if(!$env->messages()){
396 if(isset($_POST["del_image"])){
398 if(!@unlink($env->path("content")."uploads/".$piste["image"])){
399 $env->erreur("Impossible d'effacer l'image de la piste");
403 $piste["image"] = "";
406 if(($up_image = $data->upload("image", $upload_dir)) === false){
407 $env->erreur("Impossible d'uploader l'image");
410 if($up_image) $piste["image"] = $this->user["id"]."/".$up_image;
412 if($piste["image"]) $source_infos["image"] = $piste["image"];
419 $this->piste_status_id,
420 $piste["licence"]["id"],
423 $piste["derivations"],
428 $env->erreur("Impossible de modifier la piste");
431 if(!$data->del_source_compositions(array("id_source" => $piste["id"]))){
432 $env->erreur("La piste a été modifiée mais impossible de l'associer à ce morceau");
435 if($_POST["morceau"]){
436 if(!$data->set_source_composition($piste["id"], $_POST["morceau"])){
437 $env->erreur("La piste a été modifiée mais impossible de l'associer à ce morceau");
442 $env->url("users/pistes/edit", array("id" => $piste["id"])),
443 "la piste a été modifiée"
447 $env->set_out("groupes", $groupes);
448 $env->set_out("sources_access", $sources_access);
449 $env->set_out("licences", $licences);
450 $env->set_out("morceaux", $morceaux);
451 $env->set_out("piste", $piste);
455 $data = $env->data();
456 if(!($piste = $data->source($_GET[$env->param("id")], true))){
457 $env->erreur("Impossible de lire les informations de la piste");
460 $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
461 if(!$piste["permissions"]["editeur"]){
462 $env->erreur("vous n'avez pas la permission d'editer cette piste");
466 ( isset($_GET[$env->param("id")])
467 && isset($_GET[$env->param("xml")])
468 && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
470 $env->erreur("parametre de fichier xml manquant");
474 if($_GET[$env->param("xml")] == "derivation"){
475 if(isset($piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
476 $xml_url = $piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
478 elseif($_GET[$env->param("xml")] == "reference"){
479 if(isset($piste["reference"]["xml"]["url"]))
480 $xml_url = $piste["reference"]["xml"]["url"];
483 $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
486 if(!$env->messages()){
487 if(($res = $data->maj_source_cache($xml_url)) === false){
488 $env->erreur("Impossible de mettre à jour le contenu du fichier XML dans le cache");
492 if($piste = $data->source($piste["id"])){
494 $env->url("users/pistes/edit", array("id" => $piste["id"])),
495 "Les informations du fichier XML ont été mises à jour",
501 "le contenu du fichier XML a été mis à jour"
502 .", mais impossible de lire les informations de la piste"
508 case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
509 case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break;
510 default: $env->erreur("Erreur inconnue (?)"); return;
513 $env->run("users/pistes/edit", array("get" => array("id" => $piste["id"])));
518 $data = $env->data();
519 if(!($piste = $data->source($_GET[$env->param("id")], true))){
520 $env->erreur("Impossible de lire les informations de la piste");
523 $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
524 if(!$piste["permissions"]["admin"]){
525 $env->erreur("vous n'avez pas la permission d'effacer cette piste");
528 if(!$data->del_source($piste["id"])){
529 $env->erreur("Impossible de supprimer la piste");
533 $env->url("users/pistes"),
534 "la piste a été supprimée"