3 class mw_content_sources extends mw_controller
7 var $morceau_status_id;
15 var $source_controller;
17 var $validation_result;
21 $this->validation_result = true;
22 $this->validate_status($env);
23 $this->validate_licences($env);
27 function validate_status(){
29 if($this->validation_result === true)
30 { $data = $env->data();
31 if(($this->status = $data->source_status()) !== false)
32 { foreach($this->status as $id_source_status => $source_status)
33 { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
34 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
35 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
36 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
38 if(!isset($this->album_status_id)) $this->validation_result = "Type de source inconnu: album";
39 elseif(!isset($this->morceau_status_id)) $this->validation_result = "Type de source inconnu: morceau";
40 elseif(!isset($this->piste_status_id)) $this->validation_result = "Type de source inconnu: piste";
42 else $this->validation_result = "Impossible de lire la liste des status de source";
46 function validate_licences(){
48 if($this->validation_result === true)
49 { $data = $env->data();
50 if(($this->licences = $data->licences()) !== false)
51 { $env->set_out("licences", $this->licences);
53 else $this->validation_result = "Impossible de lire la liste des licences";
57 function validate_source(){
59 if($this->validation_result === true)
60 { $data = $env->data();
61 if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")])
62 { if($this->source = $data->source($_GET[$env->param("id")]))
65 else $this->validation_result = "Impossible de lire les informations de la source";
67 else $this->validation_result = "parametre source manquant";
71 function validate_groupes(){
73 if($this->validation_result === true)
74 { $data = $env->data();
75 if(($groupes = $data->groupes()) !== false)
76 { $env->set_out("groupes", $groupes);
77 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")])
78 { if(($this->groupe = $data->groupe($_GET[$env->param("groupe")])) !== false)
79 { $env->set_out("groupe", $groupe);
81 else $this->validation_result = "Impossible de lire les informations du groupe";
84 else $this->validation_result = "Impossible de lire la liste des groupes";
90 $this->validate_source($env);
91 if($this->validation_result === true)
92 { $data = $env->data();
93 $sources = array("list" => array(), "total" => 0);
95 { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false)
96 { $this->url_params = array();
97 foreach($source_ariane as $id_composition => $composition)
98 { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
99 elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
101 if($this->source["status"] == $this->morceau_status_id)
102 { $this->source_param = $env->set_out("source_param", "piste");
103 $this->source_controller = $env->set_out("source_controller", "piste");
104 $this->url_params["morceau"] = $this->source["id"];
106 elseif($this->source["status"] == $this->album_status_id)
107 { $this->source_param = $env->set_out("source_param", "morceau");
108 $this->source_controller = $env->set_out("source_controller", "morceau");
109 $this->url_params["album"] = $this->source["id"];
111 $env->set_out("url_params", $this->url_params);
112 if(($_sources = $data->source_compositions(array("id_composition" => $this->source["id"]))) !== false)
113 { if(isset($_sources[$this->source["id"]]) && $_sources[$this->source["id"]])
114 { foreach($_sources[$this->source["id"]] as $id_source)
115 { if(($sources["list"][$id_source] = $data->source($id_source, true)) !== false)
116 { if(!isset($sources["list"][$id_source]["ordre"])){
117 $sources["list"][$id_source]["ordre"] = 0;
122 { $this->erreur("Impossible de lire les informations de l'une des sources");
127 $sources["list"] = $data->ordonne($sources["list"], "ordre");
128 $env->set_out("sources", $sources);
130 else $this->erreur("Impossible de lire la liste des sources");
132 else $this->erreur("Impossible de lire le fil d'ariane");
134 else $this->erreur("Impossible de lire les informations de la source");
136 else $this->erreur($this->validation_result);
139 function derivations(){
141 $this->validate_source($env);
142 if($this->validation_result === true)
143 { $data = $env->data();
144 $derivations = array("list" => array(), "total" => 0);
146 { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false)
147 { $this->url_params = array();
148 foreach($source_ariane as $id_composition => $composition)
149 { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
150 elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
152 if($this->source["status"] == $this->piste_status_id)
153 { $this->source_param = $env->set_out("source_param", "piste");
154 $this->source_controller = $env->set_out("source_controller", "piste");
155 $this->url_params["piste"] = $this->source["id"];
157 elseif($this->source["status"] == $this->morceau_status_id)
158 { $this->source_param = $env->set_out("source_param", "morceau");
159 $this->source_controller = $env->set_out("source_controller", "morceau");
160 $this->url_params["morceau"] = $this->source["id"];
162 $env->set_out("url_params", $this->url_params);
163 if(($_derivations = $data->source_derivations(array("derivation" => $this->source["id"]))) !== false)
164 { foreach($_derivations as $id_derivation => $derivation)
165 { if(($derivations["list"][$id_derivation] = $data->source($id_derivation, true)) !== false)
166 { $derivations["total"]++;
169 { $this->erreur("Impossible de lire les informations de l'une des derivations");
173 $derivations["list"] = $data->ordonne($derivations["list"], "ordre");
174 $env->set_out("sources", $derivations);
176 else $this->erreur("Impossible de lire la liste des derivations");
178 else $this->validation_result = "Impossible de lire le fil d'ariane";
180 else $this->erreur("Impossible de lire les informations de la source");
182 else $this->erreur($this->validation_result);
187 if(isset($_GET[$env->param("form")]))
188 { $data = $env->data();
189 $form_params = array();
190 if(isset($_GET[$env->param("derivation")]))
191 { if($_GET[$env->param("form")] == "edit")
192 { if(($source_derivation = $data->source_derivation($_GET[$env->param("derivation")])) !== false)
194 ( "id" => $source_derivation["id"],
196 ( "url" => $source_derivation["derivation"],
198 "use_edit_content" => false
201 $derivation_edit_file = $data->derivation_edit_xml_path($source_derivation["id_source"], $source_derivation["id"]);
202 if(file_exists($derivation_edit_file))
203 { if(($derivation_edit_content = $data->get_edit_derivation_content($source_derivation["id_source"], $source_derivation["id"])) !== false)
204 { if(($source = $data->source_xml_read($source_derivation["derivation"], $derivation_edit_content)) !==false)
205 { $source["xml"] = array
206 ( "url" => $source_derivation["derivation"],
207 "content" => $derivation_edit_content,
208 "use_edit_content" => true
211 else $this->erreur("Impossible de lire le XML de la source");
213 else $this->erreur("Impossible de lire le XML de la source");
216 { if(($source = $data->source_xml_read($source_derivation["derivation"])) === false)
217 { $source = $data->empty_source();
220 $source["id_source"] = $source_derivation["id_source"];
221 $source["id"] = $_GET[$env->param("derivation")];
222 $form_params["maj_url"] = $env->url("users/morceaux/maj_xml", array("id" => $_GET[$env->param("derivation")], "xml" => "derivation"));
225 elseif($_GET[$env->param("form")] == "add"){
226 $source = $data->empty_source();
227 $source["id"] = $_GET[$env->param("derivation")];
228 $source["xml"] = array(
229 "use_edit_content" => false,
233 $form_params["name"] = "derivation";
234 $form_params["label"] = "dérive de » ";
235 $form_params["can_delete"] = true;
236 $form_params["id"] = $_GET[$env->param("derivation")];
238 elseif(isset($_GET[$env->param("reference")]))
241 $env->set_out("form_params", $form_params);
242 $env->set_out("xml_form_source", $source);
244 else $this->erreur("Parametres invalides pour le formulaire");
249 $this->validate_source($env);
250 if($this->validation_result === true)
251 { $data = $env->data();
254 { if($this->source = $data->load_source($this->source))
258 ( $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
264 else $this->erreur("Impossible de lire les informations XML de la source");
266 else $this->erreur("Impossible de lire les informations de la source");
268 else $this->erreur($this->validation_result);
273 function erreur($content)