3 class mw_users_pistes extends mw_controller
13 var $morceau_status_id;
19 if(($this->status = $data->source_status()) !== false)
20 { foreach($this->status as $id_source_status => $source_status)
21 { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
22 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
23 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
24 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
26 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id))
27 { if($this->user = $env->user())
28 { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
29 { $env->set_out("groupes", $this->groupes);
30 $this->albums = array();
31 $this->morceaux = array();
32 if($this->groupes["total"] > 0)
33 { foreach($this->groupes["list"] as $id_groupe => $groupe)
34 { $this->albums[$id_groupe] = array();
36 ( "status" => $this->album_status_id,
37 "id_user" => $this->user["id"],
38 "id_groupe" => $id_groupe
40 if(($albums = $data->sources($select)) !== false)
41 { $this->albums[$id_groupe] = $albums["list"];
44 { $this->albums = false;
48 $this->morceaux[$id_groupe] = array();
50 ( "status" => $this->morceau_status_id,
51 "id_user" => $this->user["id"],
52 "id_groupe" => $id_groupe
54 if(($morceaux = $data->sources($select)) !== false)
55 { foreach($morceaux["list"] as $id_morceau => $morceau)
56 { if(($compositions = $data->source_compositions(array("id_source" => $id_morceau))) !== false)
57 { if($compositions) foreach($compositions[$id_morceau] as $_id_album) { $morceaux["list"][$id_morceau]["album"] = $_id_album; break; }
58 if(!isset($morceaux["list"][$id_morceau]["album"])) $morceaux["list"][$id_morceau]["album"] = 0;
61 { $this->morceaux = false;
65 if($this->morceaux !== false)
66 { foreach($morceaux["list"] as $id_morceau => $morceau)
67 { if(!isset($this->morceaux[$id_groupe][$morceau["album"]])) $this->morceaux[$id_groupe][$morceau["album"]] = array();
68 $this->morceaux[$id_groupe][$morceau["album"]][$id_morceau] = $morceau;
73 { $this->morceaux = false;
76 if($this->morceaux === false) break;
79 if($this->albums !== false && $this->morceaux !== false)
80 { $env->set_out("albums", $this->albums);
81 $env->set_out("morceaux", $this->morceaux);
82 if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
83 { if(($this->piste = $data->source($_GET[$env->param("id")], true)) !== false && $this->piste)
86 else return "Impossible de lire les informations de la source";
88 if($env->etat("action") == "add" || $env->etat("action") == "edit")
89 { if(($this->licences = $data->licences()) !== false)
90 { $env->set_out("licences", $this->licences);
92 else return "Impossible de lire la liste des licences";
95 else return "Impossible de lire la liste des albums";
97 else return "Impossible de lire la liste des groupes";
99 else return "Vous devez être identifier pour accéder à cette page";
102 { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
103 return "Type de source inconnu: morceau";
106 else return "Impossible de lire la liste des status de source";
112 $data = $env->data();
114 $select["status"] = $this->piste_status_id;
115 $select["id_user"] = $this->user["id"];
116 $select["order_by"] = "ordre";
117 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
118 if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $select["id_composition"] = $_GET[$env->param("morceau")];
119 $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
120 if(($pistes = $data->sources($select)) !== false)
121 { foreach($pistes["list"] as $id_piste => $piste)
122 { $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]);
126 foreach($pistes["list"] as $id_piste => $piste)
127 { if(isset($_POST["ordre_".$id_piste]))
128 { if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false)
135 { $get_params = array();
136 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
137 if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $get_params["morceau"] = $_GET[$env->param("morceau")];
139 ( $env->url("users/pistes", $get_params),
140 "l'ordre des sources a été enregistré"
143 else $env->erreur("Impossible d'enregistrer l'ordre des sources");
145 $env->set_out("pistes", $pistes);
147 else $env->erreur("Impossible de lire la liste des sources");
152 $data = $env->data();
153 if($data->check_user_uploads_dir())
154 { $web_path = $env->path("web");
155 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
156 $this->piste = $data->empty_source();
157 $users_sources_mod = $env->get_controller("users/sources");
158 $source_infos = array
159 ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
163 { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
164 { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
165 $this->piste["groupes"] = array($groupe["id"] => $groupe);
166 $env->set_out("groupe", $groupe);
169 { $env->erreur("Impossible de lire les informations du groupe");
172 if($_POST["morceau"])
173 { if($morceau = $data->source($_POST["morceau"], true))
174 { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
175 if(!$morceau["permissions"]["contributeur"])
176 { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
181 { $env->erreur("impossible de lire les informations du morceau");
184 $this->piste["morceau"] = $_POST["morceau"];
186 if(isset($_POST["is_derivation"]))
187 { foreach($_POST as $key => $value)
188 { if(substr($key, 0, 14) == "derivation_id_")
189 { $id_source_derivation = substr($key, 14);
190 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
191 $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
194 ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
195 $_POST["edit_derivation_content_".$id_source_derivation]
196 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
198 $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
203 if(isset($_POST["is_reference"]))
204 { $xml_url = trim($_POST["reference"]);
205 $this->piste["reference"] = $users_sources_mod->get_source_from_xml
208 ( $_POST["use_edit_reference_content"] ?
209 $_POST["edit_reference_content"]
210 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
212 $_POST["use_edit_reference_content"] ? true : false
216 { if($this->piste["titre"] = trim($_POST["titre"]))
217 { $this->piste["licence"] = array
218 ( "id" => $_POST["licence"]
220 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
221 $source_infos["description"] = $_POST["description"];
222 foreach($_POST as $post_key => $post_value)
223 { if(substr($post_key, 0, 13) == "document_nom_")
224 { if($id_document = substr($post_key, 13))
225 { $this->piste["documents"][$id_document] = array
226 ( "nom" => $_POST["document_nom_".$id_document],
227 "url" => $_POST["document_url_".$id_document]
233 else $env->message("merci de préciser un titre pour la source");
235 if(!$env->out("messages") && !$env->out("erreur"))
237 ( ( $id_source = $data->add_source
238 ( $this->piste["groupes"],
239 $this->piste["titre"],
240 $this->piste_status_id,
241 $this->piste["licence"]["id"],
242 $this->piste["documents"],
243 $this->piste["reference"],
244 $this->piste["derivations"],
249 { if($_POST["morceau"])
250 { if($data->set_source_composition($id_source, $_POST["morceau"]))
252 ( $env->url("users/pistes"),
253 "la source a été ajoutée"
256 else $env->erreur("La source a été ajoutée mais impossible de l'associer à ce morceau");
259 ( $env->url("users/pistes"),
260 "la source a été ajoutée"
263 else $env->erreur("Impossible d'ajouter la source");
266 $env->set_out("piste", $this->piste);
268 else $env->erreur("Impossible de creer le repertoire utilisateur");
273 $data = $env->data();
274 $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
275 if(!$this->piste["premissions"]["editeur"])
276 { $env->erreur("vous n'avez la permission d'editer cette source");
279 if($data->check_user_uploads_dir())
280 { $web_path = $env->path("web");
281 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
282 if(($compositions = $data->source_compositions(array("id_source" => $this->piste["id"]))) !== false)
283 { if($compositions) foreach($compositions[$this->piste["id"]] as $id_morceau) { $this->piste["morceau"] = $id_morceau; break; }
284 $env->set_out("groupe", $data->get_admin_groupe($this->piste["groupes"]));
286 { $source_infos = array
287 ( "date_inscription" => $_POST["date_inscription"],
288 "ordre" => isset($this->piste["ordre"]) ? $this->piste["ordre"] : 0
290 $this->piste = $data->empty_source(array("id" => $this->piste["id"]));
291 $users_sources_mod = $env->get_controller("users/sources");
292 if(!($groupe = $data->groupe($_POST["id_groupe"])))
293 { $env->erreur("Impossible de lire les informations du groupe");
296 $env->set_out("groupe", $groupe);
297 $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
298 $this->piste["groupes"] = array($groupe["id"] => $groupe);
299 $this->piste["derivations"] = array();
300 if($_POST["morceau"])
301 { if($morceau = $data->source($_POST["morceau"], true))
302 { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
303 if(!$morceau["permissions"]["contributeur"])
304 { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
309 { $env->erreur("impossible de lire les informations du morceau");
312 $this->piste["morceau"] = $_POST["morceau"];
314 if(isset($_POST["is_derivation"]))
315 { foreach($_POST as $key => $value)
316 { if(substr($key, 0, 14) == "derivation_id_")
317 { $id_source_derivation = substr($key, 14);
318 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
319 $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
322 ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
323 $_POST["edit_derivation_content_".$id_source_derivation]
324 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
326 $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
331 if(isset($_POST["is_reference"]))
332 { $xml_url = trim($_POST["reference"]);
333 $this->piste["reference"] = $users_sources_mod->get_source_from_xml
336 ( $_POST["use_edit_reference_content"] ?
337 $_POST["edit_reference_content"]
338 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
340 $_POST["use_edit_reference_content"] ? true : false
344 { if($this->piste["titre"] = trim($_POST["titre"]))
345 { $this->piste["licence"] = array
346 ( "id" => $_POST["licence"]
348 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
349 $source_infos["description"] = $_POST["description"];
350 foreach($_POST as $post_key => $post_value)
351 { if(substr($post_key, 0, 13) == "document_nom_")
352 { if($id_document = substr($post_key, 13))
353 { $this->piste["documents"][$id_document] = array
354 ( "nom" => $_POST["document_nom_".$id_document],
355 "url" => $_POST["document_url_".$id_document]
361 else $env->message("merci de préciser un titre pour la source");
363 if(!$env->out("messages") && !$env->out("erreur"))
365 ( ( $data->set_source
366 ( $this->piste["id"],
367 $this->piste["groupes"],
368 $this->piste["titre"],
369 $this->piste_status_id,
370 $this->piste["licence"]["id"],
371 $this->piste["documents"],
372 $this->piste["reference"],
373 $this->piste["derivations"],
378 { if($data->del_source_compositions(array("id_source" => $this->piste["id"])))
379 { if($_POST["morceau"])
380 { if($data->set_source_composition($this->piste["id"], $_POST["morceau"]))
382 ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
383 "la source a été modifiée"
386 else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau");
389 ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
390 "la source a été modifiée"
393 else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau");
395 else $env->erreur("Impossible de modifier la source");
399 else $env->erreur("Impossible de lire la liste des compositions");
400 $env->set_out("piste", $this->piste);
402 else $env->erreur("Impossible de creer le repertoire utilisateur");
407 $data = $env->data();
408 $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
409 if(!$this->piste["premissions"]["editeur"])
410 { $env->erreur("vous n'avez la permission d'editer cette source");
414 ( isset($_GET[$env->param("id")])
415 && isset($_GET[$env->param("xml")])
416 && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
419 if($_GET[$env->param("xml")] == "derivation")
420 { if(isset($this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
421 $xml_url = $this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
423 elseif($_GET[$env->param("xml")] == "reference")
424 { if(isset($this->piste["reference"]["xml"]["url"]))
425 $xml_url = $this->piste["reference"]["xml"]["url"];
429 { if(($res = $data->maj_source_cache($xml_url)) !== false)
431 { if($this->piste = $data->source($this->piste["id"]))
433 ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
434 "Les informations du fichier XML ont été mises à jour",
440 "le contenu du fichier XML a été mis à jour"
441 .", mais impossible de lire les informations de la source";
445 { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
446 case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break;
447 default: $erreur = "Erreur inconnue (?)"; break;
451 else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache";
453 else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
454 if($erreur) $env->erreur($erreur);
455 else $env->run("users/pistes/edit", array("id" => $this->piste["id"]));
457 else $env->erreur("parametre de fichier xml manquant");
462 $data = $env->data();
463 $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
464 if($this->piste["premissions"]["admin"])
465 { if($data->del_source($this->piste["id"]))
467 ( $env->url("users/pistes"),
468 "la source a été supprimée"
471 else $env->erreur("Impossible de supprimer la source");
473 else $env->erreur("vous n'avez la permission d'effacer cette source");