3 class mw_users_morceaux extends mw_controller
12 var $morceau_status_id;
17 if(($this->status = $data->source_status()) !== false)
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(isset($this->album_status_id) && isset($this->morceau_status_id)) break;
23 if(isset($this->album_status_id) && isset($this->morceau_status_id))
24 { if($this->user = $env->user())
25 { if(($this->groupes = $data->groupes($this->user["id"])) !== false){
26 $env->set_out("groupes", $this->groupes);
27 $this->albums = array();
28 if($this->groupes["total"] > 0)
30 $select["status"] = $this->album_status_id;
31 $select["id_user"] = $this->user["id"];
32 foreach($this->groupes["list"] as $id_groupe => $groupe)
33 { $select["id_groupe"] = $id_groupe;
34 if(($albums = $data->sources($select)) !== false)
35 { $this->albums[$id_groupe] = $albums["list"];
37 else $this->albums = false;
40 if($this->albums !== false)
41 { $env->set_out("albums", $this->albums);
42 if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
43 { if($this->morceau = $data->source($_GET[$env->param("id")], true))
46 else return "Impossible de lire les informations du morceau";
48 if($env->etat("action") == "add" || $env->etat("action") == "edit")
49 { if(($this->licences = $data->licences()) !== false)
50 { $env->set_out("licences", $this->licences);
52 else return "Impossible de lire la liste des licences";
55 else return "Impossible de lire la liste des albums";
57 else return "Impossible de lire la liste des groupes";
59 else return "Vous devez être identifier pour accéder à cette page";
62 { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
63 return "Type de source inconnu: morceau";
66 else return "Impossible de lire la liste des status de source";
74 $select["status"] = $this->morceau_status_id;
75 $select["id_user"] = $this->user["id"];
76 $select["order_by"] = "ordre";
77 $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
78 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
79 if(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")];
80 if(($morceaux = $data->sources($select)) !== false)
81 { foreach($morceaux["list"] as $id_morceau => $morceau)
82 { $morceaux["list"][$id_morceau]["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
86 foreach($morceaux["list"] as $id_morceau => $morceau)
87 { if(isset($_POST["ordre_".$id_morceau]))
88 { if($data->set_source_info($morceau["id"], "ordre", $_POST["ordre_".$id_morceau]) === false)
95 { $get_params = array();
96 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
97 if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) $get_params["album"] = $_GET[$env->param("album")];
99 ( $env->url("users/morceaux", $get_params),
100 "l'ordre des morceaux a été enregistré"
103 else $env->erreur("Impossible d'enregistrer l'ordre des morceaux");
105 $env->set_out("groupes", $this->groupes);
106 $env->set_out("albums", $this->albums);
107 $env->set_out("morceaux", $morceaux);
109 else $env->erreur("Impossible de lire la liste des morceaux");
114 $data = $env->data();
115 if($data->check_user_uploads_dir())
116 { $web_path = $env->path("web");
117 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
118 $this->morceau = $data->empty_source();
119 $users_sources_mod = $env->get_controller("users/sources");
120 $source_infos = array
121 ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
125 { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
126 { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
127 $this->morceau["groupes"] = array($groupe["id"] => $groupe);
129 { if($album = $data->source($_POST["album"], true))
130 { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
131 if(!$album["permissions"]["contributeur"])
132 { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
137 { $env->erreur("impossible de lire les informations de l'album");
140 $this->morceau["album"] = $_POST["album"];
142 if($_POST["is_derivation"])
143 { foreach($_POST as $key => $value)
144 { if(substr($key, 0, 14) == "derivation_id_")
145 { $id_source_derivation = substr($key, 14);
146 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
147 $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
150 ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
151 $_POST["edit_derivation_content_".$id_source_derivation]
152 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
154 $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
159 if($_POST["is_reference"])
160 { $xml_url = trim($_POST["reference"]);
161 $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
164 ( $_POST["use_edit_reference_content"] ?
165 $_POST["edit_reference_content"]
166 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
168 $_POST["use_edit_reference_content"] ? true : false
172 { if($this->morceau["titre"] = trim($_POST["titre"]))
173 { $this->morceau["licence"] = array
174 ( "id" => $_POST["licence"]
176 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
177 $source_infos["description"] = $_POST["description"];
178 foreach($_POST as $post_key => $post_value)
179 { if(substr($post_key, 0, 13) == "document_nom_")
180 { if($id_document = substr($post_key, 13))
181 { $this->morceau["documents"][$id_document] = array
182 ( "nom" => $_POST["document_nom_".$id_document],
183 "url" => $_POST["document_url_".$id_document]
189 else $env->message("merci de préciser un titre pour le morceau");
191 if(!$env->out("messages") && !$env->out("erreur"))
193 ( ( $id_source = $data->add_source
194 ( $this->morceau["groupes"],
195 $this->morceau["titre"],
196 $this->morceau_status_id,
197 $this->morceau["licence"]["id"],
198 $this->morceau["documents"],
199 $this->morceau["reference"],
200 $this->morceau["derivations"],
205 { if($_POST["album"])
206 { if($data->set_source_composition($id_source, $_POST["album"]))
208 ( $env->url("users/morceaux"),
209 "le morceau a été ajouté"
212 else $env->erreur("Le morceau a été ajouté mais impossible de l'associer à cet album");
215 ( $env->url("users/morceaux"),
216 "le morceau a été ajouté"
219 else $env->erreur("Impossible d'ajouter le morceau");
222 else $env->erreur("Impossible de lire les informations du groupe");
224 $env->set_out("morceau", $this->morceau);
226 else $env->erreur("Impossible de creer le repertoire utilisateur");
231 $data = $env->data();
232 $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
233 if(!$this->morceau["premissions"]["editeur"])
234 { $env->erreur("vous n'avez la permission d'editer ce morceau");
237 if($data->check_user_uploads_dir())
238 { $web_path = $env->path("web");
239 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
240 if(($compositions = $data->source_compositions(array("id_source" => $this->morceau["id"]))) !== false)
241 { if($compositions) foreach($compositions[$this->morceau["id"]] as $id_album) { $this->morceau["album"] = $id_album; break; }
242 $env->set_out("groupe", $data->get_admin_groupe($this->morceau["groupes"]));
244 { $source_infos = array
245 ( "date_inscription" => $_POST["date_inscription"],
246 "ordre" => isset($this->morceau["ordre"]) ? $this->morceau["ordre"] : 0
248 $this->morceau = $data->empty_source(array("id" => $this->morceau["id"]));
249 $users_sources_mod = $env->get_controller("users/sources");
250 if(!($groupe = $data->groupe($_POST["id_groupe"])))
251 { $env->erreur("Impossible de lire les informations du groupe");
254 $env->set_out("groupe", $groupe);
255 $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
256 $this->morceau["groupes"] = array($groupe["id"] => $groupe);
257 $this->morceau["derivations"] = array();
259 { if($album = $data->source($_POST["album"], true))
260 { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
261 if(!$album["permissions"]["contributeur"])
262 { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
267 { $env->erreur("Impossible de lire les informations de l'album");
270 $this->morceau["album"] = $_POST["album"];
272 if($_POST["is_derivation"])
273 { foreach($_POST as $key => $value)
274 { if(substr($key, 0, 14) == "derivation_id_")
275 { $id_source_derivation = substr($key, 14);
276 $xml_url = trim($_POST["derivation_".$id_source_derivation]);
277 $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
280 ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
281 $_POST["edit_derivation_content_".$id_source_derivation]
282 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
284 $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
289 if($_POST["is_reference"])
290 { $xml_url = trim($_POST["reference"]);
291 $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
294 ( $_POST["use_edit_reference_content"] ?
295 $_POST["edit_reference_content"]
296 : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
298 $_POST["use_edit_reference_content"] ? true : false
302 { if($this->morceau["titre"] = trim($_POST["titre"]))
303 { $this->morceau["licence"] = array
304 ( "id" => $_POST["licence"]
306 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
307 $source_infos["description"] = $_POST["description"];
308 foreach($_POST as $post_key => $post_value)
309 { if(substr($post_key, 0, 13) == "document_nom_")
310 { if($id_document = substr($post_key, 13))
311 { $this->morceau["documents"][$id_document] = array
312 ( "nom" => $_POST["document_nom_".$id_document],
313 "url" => $_POST["document_url_".$id_document]
319 else $env->message("merci de préciser un titre pour le morceau");
321 if(!$env->out("messages") && !$env->out("erreur"))
323 ( ( $data->set_source
324 ( $this->morceau["id"],
325 $this->morceau["groupes"],
326 $this->morceau["titre"],
327 $this->morceau_status_id,
328 $this->morceau["licence"]["id"],
329 $this->morceau["documents"],
330 $this->morceau["reference"],
331 $this->morceau["derivations"],
336 { if($data->del_source_compositions(array("id_source" => $this->morceau["id"])))
337 { if($_POST["album"])
338 { if($data->set_source_composition($this->morceau["id"], $_POST["album"]))
340 ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
341 "le morceau a été modifié"
344 else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
347 ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
348 "le morceau a été modifié"
351 else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
353 else $env->erreur("Impossible de modifier le morceau");
357 else $env->erreur("Impossible de lire la liste des compositions");
358 $env->set_out("morceau", $this->morceau);
360 else $env->erreur("Impossible de creer le repertoire utilisateur");
364 $data = $env->data();
365 $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
366 if(!$this->morceau["premissions"]["editeur"])
367 { $env->erreur("vous n'avez la permission d'editer ce morceau");
371 ( isset($_GET[$env->param("id")])
372 && isset($_GET[$env->param("xml")])
373 && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
376 if($_GET[$env->param("xml")] == "derivation")
377 { if(isset($this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
378 $xml_url = $this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
380 elseif($_GET[$env->param("xml")] == "reference")
381 { if(isset($this->morceau["reference"]["xml"]["url"]))
382 $xml_url = $this->morceau["reference"]["xml"]["url"];
386 { if(($res = $data->maj_source_cache($xml_url)) !== false)
388 { if($this->morceau = $data->source($this->morceau["id"]))
390 ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
391 "Les informations du fichier XML ont été mises à jour",
397 "le contenu du fichier XML a été mis à jour"
398 .", mais impossible de lire les informations du morceau";
402 { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
403 case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break;
404 default: $erreur = "Erreur inconnue (?)"; break;
408 else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache";
410 else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
411 if($erreur) $env->erreur($erreur);
412 else $env->run("users/morceaux/edit", array("id" => $this->morceau["id"]));
414 else $env->erreur("parametre de fichier xml manquant");
419 $data = $env->data();
420 $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
421 if($this->morceau["premissions"]["admin"])
422 { if($data->del_source($this->morceau["id"]))
424 ( $env->url("users/morceaux"),
425 "le morceau a été supprimé"
428 else $env->erreur("Impossible de supprimer le morceau");
430 else $env->erreur("vous n'avez la permission d'effacer ce morceau");