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 { $sources["total"]++;
119 { $this->erreur("Impossible de lire les informations de l'une des sources");
124 $sources["list"] = $data->ordonne($sources["list"], "ordre");
125 $env->set_out("sources", $sources);
127 else $this->erreur("Impossible de lire la liste des sources");
129 else $this->erreur("Impossible de lire le fil d'ariane");
131 else $this->erreur("Impossible de lire les informations de la source");
133 else $this->erreur($this->validation_result);
136 function derivations(){
138 $this->validate_source($env);
139 if($this->validation_result === true)
140 { $data = $env->data();
141 $derivations = array("list" => array(), "total" => 0);
143 { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false)
144 { $this->url_params = array();
145 foreach($source_ariane as $id_composition => $composition)
146 { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
147 elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
149 if($this->source["status"] == $this->piste_status_id)
150 { $this->source_param = $env->set_out("source_param", "piste");
151 $this->source_controller = $env->set_out("source_controller", "piste");
152 $this->url_params["piste"] = $this->source["id"];
154 elseif($this->source["status"] == $this->morceau_status_id)
155 { $this->source_param = $env->set_out("source_param", "morceau");
156 $this->source_controller = $env->set_out("source_controller", "morceau");
157 $this->url_params["morceau"] = $this->source["id"];
159 $env->set_out("url_params", $this->url_params);
160 if(($_derivations = $data->source_derivations(array("derivation" => $this->source["id"]))) !== false)
161 { foreach($_derivations as $id_derivation => $derivation)
162 { if(($derivations["list"][$id_derivation] = $data->source($id_derivation, true)) !== false)
163 { $derivations["total"]++;
166 { $this->erreur("Impossible de lire les informations de l'une des derivations");
170 $derivations["list"] = $data->ordonne($derivations["list"], "ordre");
171 $env->set_out("sources", $derivations);
173 else $this->erreur("Impossible de lire la liste des derivations");
175 else $this->validation_result = "Impossible de lire le fil d'ariane";
177 else $this->erreur("Impossible de lire les informations de la source");
179 else $this->erreur($this->validation_result);
184 if(isset($_GET[$env->param("form")]))
185 { $data = $env->data();
186 $form_params = array();
187 if(isset($_GET[$env->param("derivation")]))
188 { if($_GET[$env->param("form")] == "edit")
189 { if(($source_derivation = $data->source_derivation($_GET[$env->param("derivation")])) !== false)
191 ( "id" => $source_derivation["id"],
193 ( "url" => $source_derivation["derivation"],
195 "use_edit_content" => false
198 $derivation_edit_file = $data->derivation_edit_xml_path($source_derivation["id_source"], $source_derivation["id"]);
199 if(file_exists($derivation_edit_file))
200 { if(($derivation_edit_content = $data->get_edit_derivation_content($source_derivation["id_source"], $source_derivation["id"])) !== false)
201 { if(($source = $data->source_xml_read($source_derivation["derivation"], $derivation_edit_content)) !==false)
202 { $source["xml"] = array
203 ( "url" => $source_derivation["derivation"],
204 "content" => $derivation_edit_content,
205 "use_edit_content" => true
208 else $this->erreur("Impossible de lire le XML de la source");
210 else $this->erreur("Impossible de lire le XML de la source");
213 { if(($source = $data->source_xml_read($source_derivation["derivation"])) === false)
214 { $source = $data->empty_source();
217 $source["id_source"] = $source_derivation["id_source"];
218 $source["id"] = $_GET[$env->param("derivation")];
219 $form_params["maj_url"] = $env->url("users/morceaux/maj_xml", array("id" => $_GET[$env->param("derivation")], "xml" => "derivation"));
222 elseif($_GET[$env->param("form")] == "add"){
223 $source = $data->empty_source();
224 $source["id"] = $_GET[$env->param("derivation")];
225 $source["xml"] = array(
226 "use_edit_content" => false,
230 $form_params["name"] = "derivation";
231 $form_params["label"] = "dérive de » ";
232 $form_params["can_delete"] = true;
233 $form_params["id"] = $_GET[$env->param("derivation")];
235 elseif(isset($_GET[$env->param("reference")]))
238 $env->set_out("form_params", $form_params);
239 $env->set_out("xml_form_source", $source);
241 else $this->erreur("Parametres invalides pour le formulaire");
246 $this->validate_source($env);
247 if($this->validation_result === true)
248 { $data = $env->data();
251 { if($this->source = $data->load_source($this->source))
255 ( $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
261 else $this->erreur("Impossible de lire les informations XML de la source");
263 else $this->erreur("Impossible de lire les informations de la source");
265 else $this->erreur($this->validation_result);
270 function erreur($content)