syntaxe POO (visibilite) et maj indentation
[mw_sourceml] / app / controllers / content / sources.php
1 <?php
2
3   class mw_content_sources extends mw_controller{
4
5     public $status;
6     public $album_status_id;
7     public $morceau_status_id;
8     public $piste_status_id;
9     public $url_params;
10     public $source_param;
11     public $licences;
12     public $groupe;
13     public $source;
14     public $source_controller;
15     public $validation_result;
16
17     public function validate(){
18       $env = $this->env();
19       $this->validation_result = true;
20       $this->validate_status($env);
21       $this->validate_licences($env);
22       return true;
23     }
24
25     public function validate_status(){
26       $env = $this->env();
27       if($this->validation_result === true){
28         $data = $env->data();
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;
35           }
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";
39         }
40         else $this->validation_result = "Impossible de lire la liste des status de source";
41       }
42     }
43
44     public function validate_licences(){
45       $env = $this->env();
46       if($this->validation_result === true){
47         $data = $env->data();
48         if(($this->licences = $data->licences()) !== false){
49           $env->set_out("licences", $this->licences);
50         }
51         else $this->validation_result = "Impossible de lire la liste des licences";
52       }
53     }
54
55     public function validate_source(){
56       $env = $this->env();
57       if($this->validation_result === true){
58         $data = $env->data();
59         if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")]){
60           if($this->source = $data->source($_GET[$env->param("id")])){
61           }
62           else $this->validation_result = "Impossible de lire les informations de la source";
63         }
64         else $this->validation_result = "parametre source manquant";
65       }
66     }
67
68     public function validate_groupes(){
69       $env = $this->env();
70       if($this->validation_result === true){
71         $data = $env->data();
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);
77             }
78             else $this->validation_result = "Impossible de lire les informations du groupe";
79           }
80         }
81         else $this->validation_result = "Impossible de lire la liste des groupes";
82       }
83     }
84
85     public function sources(){
86       $env = $this->env();
87       $this->validate_source($env);
88       if($this->validation_result === true){
89         $data = $env->data();
90         $sources = array("list" => array(), "total" => 0);
91         if($this->source){
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;
97             }
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"];
102             }
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"];
107             }
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;
115                     }
116                     $sources["total"]++;
117                   }
118                   else{
119                     $this->erreur("Impossible de lire les informations de l'une des sources");
120                     break;
121                   }
122                 }
123               }
124               $sources["list"] = $data->ordonne($sources["list"], "ordre");
125               $env->set_out("sources", $sources);
126             }
127             else $this->erreur("Impossible de lire la liste des sources");
128           }
129           else $this->erreur("Impossible de lire le fil d'ariane");
130         }
131         else $this->erreur("Impossible de lire les informations de la source");
132       }
133       else $this->erreur($this->validation_result);
134     }
135
136     public function derivations(){
137       $env = $this->env();
138       $this->validate_source($env);
139       if($this->validation_result === true){
140         $data = $env->data();
141         $derivations = array("list" => array(), "total" => 0);
142         if($this->source){
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;
148             }
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"];
153             }
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"];
158             }
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"]++;
164                 }
165                 else{
166                   $this->erreur("Impossible de lire les informations de l'une des derivations");
167                   break;
168                 }
169               }
170               $derivations["list"] = $data->ordonne($derivations["list"], "ordre");
171               $env->set_out("sources", $derivations);
172             }
173             else $this->erreur("Impossible de lire la liste des derivations");
174           }
175           else $this->validation_result = "Impossible de lire le fil d'ariane";
176         }
177         else $this->erreur("Impossible de lire les informations de la source");
178       }
179       else $this->erreur($this->validation_result);
180     }
181
182     public function xml_form(){
183       $env = $this->env();
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){
190               $source = array(
191                 "id" => $source_derivation["id"],
192                 "xml" => array(
193                   "url" => $source_derivation["derivation"],
194                   "content" => "",
195                   "use_edit_content" => false
196                 )
197               );
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(
201                   (
202                     $derivation_edit_content = $data->get_edit_derivation_content(
203                       $source_derivation["id_source"],
204                       $source_derivation["id"]
205                     )
206                   ) !== false
207                 ){
208                   if(
209                     (
210                       $source = $data->source_xml_read(
211                         $source_derivation["derivation"],
212                         $derivation_edit_content
213                       )
214                     ) !==false
215                   ){
216                     $source["xml"] = array(
217                       "url" => $source_derivation["derivation"],
218                       "content" => $derivation_edit_content,
219                       "use_edit_content" => true
220                     );
221                   }
222                   else $this->erreur("Impossible de lire le XML de la source");
223                 }
224                 else $this->erreur("Impossible de lire le XML de la source");
225               }
226               else{
227                 if(($source = $data->source_xml_read($source_derivation["derivation"])) === false){
228                   $source = $data->empty_source();
229                 }
230               }
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"));
234             }
235           }
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,
241               "content" => ""
242             );
243           }
244           $form_params["name"] = "derivation";
245           $form_params["label"] = "d&eacute;rive de &raquo; ";
246           $form_params["can_delete"] = true;
247           $form_params["id"] = $_GET[$env->param("derivation")];
248         }
249         elseif(isset($_GET[$env->param("reference")])){
250         }
251         $env->set_out("form_params", $form_params);
252         $env->set_out("xml_form_source", $source);
253       }
254       else $this->erreur("Parametres invalides pour le formulaire");
255     }
256
257     public function xml(){
258       $env = $this->env();
259       $this->validate_source($env);
260       if($this->validation_result === true){
261         $data = $env->data();
262         $xml = "";
263         if($this->source){
264           if($this->source = $data->load_source($this->source)){
265             $xml =
266              "<pre>"
267             .htmlentities(
268               $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
269               ENT_COMPAT,
270               "UTF-8"
271             )
272             ."</pre>";
273           }
274           else $this->erreur("Impossible de lire les informations XML de la source");
275         }
276         else $this->erreur("Impossible de lire les informations de la source");
277       }
278       else $this->erreur($this->validation_result);
279       echo $xml;
280       exit;
281     }
282
283     public function erreur($content){
284       echo $content;
285       exit;
286     }
287
288   }