3 class mw_content_sources extends mw_controller{
6 public $album_status_id;
7 public $morceau_status_id;
8 public $piste_status_id;
14 public $source_controller;
15 public $validation_result;
17 public function validate(){
19 $this->validation_result = true;
20 $this->validate_status($env);
21 $this->validate_licences($env);
25 public function validate_status(){
27 if($this->validation_result === true){
29 if(($this->status = $data->source_status()) !== false){
30 foreach($this->status as $id_source_status => $source_status){
31 if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
32 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
33 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
34 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
36 if(!isset($this->album_status_id)) $this->validation_result = "Type de source inconnu: album";
37 elseif(!isset($this->morceau_status_id)) $this->validation_result = "Type de source inconnu: morceau";
38 elseif(!isset($this->piste_status_id)) $this->validation_result = "Type de source inconnu: piste";
40 else $this->validation_result = "Impossible de lire la liste des status de source";
44 public function validate_licences(){
46 if($this->validation_result === true){
48 if(($this->licences = $data->licences()) !== false){
49 $env->set_out("licences", $this->licences);
51 else $this->validation_result = "Impossible de lire la liste des licences";
55 public function validate_source(){
57 if($this->validation_result === true){
59 if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")]){
60 if($this->source = $data->source($_GET[$env->param("id")])){
62 else $this->validation_result = "Impossible de lire les informations de la source";
64 else $this->validation_result = "parametre source manquant";
68 public function validate_groupes(){
70 if($this->validation_result === true){
72 if(($groupes = $data->groupes()) !== false){
73 $env->set_out("groupes", $groupes);
74 if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]){
75 if(($this->groupe = $data->groupe($_GET[$env->param("groupe")])) !== false){
76 $env->set_out("groupe", $groupe);
78 else $this->validation_result = "Impossible de lire les informations du groupe";
81 else $this->validation_result = "Impossible de lire la liste des groupes";
85 public function sources(){
87 $this->validate_source($env);
88 if($this->validation_result === true){
90 $sources = array("list" => array(), "total" => 0);
92 if(($source_ariane = $data->source_ariane($this->source["id"])) !== false){
93 $this->url_params = array();
94 foreach($source_ariane as $id_composition => $composition){
95 if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition;
96 elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition;
98 if($this->source["status"] == $this->morceau_status_id){
99 $this->source_param = $env->set_out("source_param", "piste");
100 $this->source_controller = $env->set_out("source_controller", "piste");
101 $this->url_params["morceau"] = $this->source["id"];
103 elseif($this->source["status"] == $this->album_status_id){
104 $this->source_param = $env->set_out("source_param", "morceau");
105 $this->source_controller = $env->set_out("source_controller", "morceau");
106 $this->url_params["album"] = $this->source["id"];
108 $env->set_out("url_params", $this->url_params);
109 if(($_sources = $data->source_compositions(array("id_composition" => $this->source["id"]))) !== false){
110 if(isset($_sources[$this->source["id"]]) && $_sources[$this->source["id"]]){
111 foreach($_sources[$this->source["id"]] as $id_source){
112 if(($sources["list"][$id_source] = $data->source($id_source, true)) !== false){
113 if(!isset($sources["list"][$id_source]["ordre"])){
114 $sources["list"][$id_source]["ordre"] = 0;
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 public 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);
182 public function xml_form(){
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)){
202 $derivation_edit_content = $data->get_edit_derivation_content(
203 $source_derivation["id_source"],
204 $source_derivation["id"]
210 $source = $data->source_xml_read(
211 $source_derivation["derivation"],
212 $derivation_edit_content
216 $source["xml"] = array(
217 "url" => $source_derivation["derivation"],
218 "content" => $derivation_edit_content,
219 "use_edit_content" => true
222 else $this->erreur("Impossible de lire le XML de la source");
224 else $this->erreur("Impossible de lire le XML de la source");
227 if(($source = $data->source_xml_read($source_derivation["derivation"])) === false){
228 $source = $data->empty_source();
231 $source["id_source"] = $source_derivation["id_source"];
232 $source["id"] = $_GET[$env->param("derivation")];
233 $form_params["maj_url"] = $env->url("users/morceaux/maj_xml", array("id" => $_GET[$env->param("derivation")], "xml" => "derivation"));
236 elseif($_GET[$env->param("form")] == "add"){
237 $source = $data->empty_source();
238 $source["id"] = $_GET[$env->param("derivation")];
239 $source["xml"] = array(
240 "use_edit_content" => false,
244 $form_params["name"] = "derivation";
245 $form_params["label"] = "dérive de » ";
246 $form_params["can_delete"] = true;
247 $form_params["id"] = $_GET[$env->param("derivation")];
249 elseif(isset($_GET[$env->param("reference")])){
251 $env->set_out("form_params", $form_params);
252 $env->set_out("xml_form_source", $source);
254 else $this->erreur("Parametres invalides pour le formulaire");
257 public function xml(){
259 $this->validate_source($env);
260 if($this->validation_result === true){
261 $data = $env->data();
264 if($this->source = $data->load_source($this->source)){
268 $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
274 else $this->erreur("Impossible de lire les informations XML de la source");
276 else $this->erreur("Impossible de lire les informations de la source");
278 else $this->erreur($this->validation_result);
283 public function erreur($content){