plusieurs auteurs pour les sources
[mw_sourceml] / app / controllers / users / albums.php
1 <?php
2
3   class mw_users_albums extends mw_controller
4   {
5     var $groupes;
6     var $album;
7     var $user;
8     var $status;
9     var $album_status_id;
10
11     function validate(){
12       $env = $this->env();
13       $data = $env->data();
14       if(($this->status = $data->source_status()) !== false)
15       { foreach($this->status as $id_source_status => $source_status)
16         { if($source_status["nom"] == "album")
17           { $this->album_status_id = $id_source_status;
18             break;
19           }
20         }
21         if(isset($this->album_status_id))
22         { if($this->user = $env->user())
23           { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
24             { $env->set_out("groupes", $this->groupes);
25               if($env->etat("action") == "edit" || $env->etat("action") == "del")
26               { if(($this->album = $data->source($_GET[$env->param("id")], true)) !== false && $this->album)
27                 {
28                 }
29                 else return "Impossible de lire les informations de l'album";
30               }
31               if($env->etat("action") == "add" || $env->etat("action") == "edit")
32               { if(($this->licences = $data->licences()) !== false)
33                 { $env->set_out("licences", $this->licences);
34                 }
35                 else return "Impossible de lire la liste des licences";
36               }
37             }
38             else return "Impossible de lire la liste des groupes";
39           }
40           else return "Vous devez &ecirc;tre identifier pour acc&eacute;der &agrave; cette page";
41         }
42         else return "Type de source inconnu: album";
43       }
44       else return "Impossible de lire la liste des status de source";
45       return true;
46     }
47
48     function index(){
49       $env = $this->env();
50       $data = $env->data();
51       $select = array();
52       $select["status"] = $this->album_status_id;
53       $select["id_user"] = $this->user["id"];
54       $select["order_by"] = "ordre";
55       $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
56       if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
57       if(($albums = $data->sources($select)) !== false){
58         foreach($albums["list"] as $id_album => $album)
59         { $albums["list"][$id_album]["permissions"] = $data->source_permissions($albums["list"][$id_album], $this->user["id"]);
60         }
61         if($_POST)
62         { $OK = true;
63           foreach($albums["list"] as $id_album => $album)
64           { if(isset($_POST["ordre_".$id_album]))
65             { if($data->set_source_info($id_album, "ordre", $_POST["ordre_".$id_album]) === false)
66               { $OK = false;
67                 break;
68               }
69             }
70           }
71           if($OK)
72           { $get_params = array();
73             if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
74             $env->redirect
75             ( $env->url("users/albums", $get_params),
76               "l'ordre des albums a &eacute;t&eacute; enregistr&eacute;"
77             );
78           }
79           else $env->erreur("Impossible d'enregistrer l'ordre des albums");
80         }
81         $env->set_out("albums", $albums);
82       }
83       else $env->erreur("Impossible de lire la liste des albums");
84     }
85
86     function add(){
87       $env = $this->env();
88       $data = $env->data();
89       if($data->check_user_uploads_dir())
90       { $web_path = $env->path("web");
91         $upload_dir = $env->path("content")."uploads/".$this->user["id"];
92         $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
93         $this->album = $data->empty_source();
94         $source_infos = array
95         ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
96           "ordre" => 0
97         );
98         if($_POST)
99         { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
100           { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
101             $env->set_out("groupe", $groupe);
102             $this->album["groupes"] = array($groupe["id"] => $groupe);
103             $this->album["titre"] = trim($_POST["titre"]);
104             $this->album["licence"] = array
105             ( "id" => $_POST["licence"]
106             );
107             $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
108             $source_infos["description"] = $_POST["description"];
109             foreach($_POST as $post_key => $post_value)
110             { if(substr($post_key, 0, 13) == "document_nom_")
111               { if($id_document = substr($post_key, 13))
112                 { $this->album["documents"][$id_document] = array
113                   ( "nom" => $_POST["document_nom_".$id_document],
114                     "url" => $_POST["document_url_".$id_document]
115                   );
116                 }
117               }
118             }
119             if($this->album["titre"])
120             { if(($image = $data->upload("image", $upload_dir)) !== false)
121               { if($image) $source_infos["image"] = $this->user["id"]."/".$image;
122                 if
123                 ( $data->add_source
124                   ( $this->album["groupes"],
125                     $this->album["titre"],
126                     $this->album_status_id,
127                     $this->album["licence"]["id"],
128                     $this->album["documents"],
129                     $this->album["reference"],
130                     $this->album["derivations"],
131                     $source_infos
132                   )
133                 ) $env->redirect
134                 ( $env->url("users/albums"),
135                   "l'album a &eacute;t&eacute; ajout&eacute;"
136                 );
137                 else $env->erreur("Impossible d'ajouter l'album");
138               }
139               else $env->erreur("Impossible d'uploader l'image");
140             }
141             else $env->message("merci de pr&eacute;ciser un titre pour l'album");
142           }
143           else $env->erreur("Impossible de lire les informations du groupe");
144         }
145         foreach($source_infos as $info_key => $info_value) $this->album[$info_key] = $info_value;
146         $env->set_out("album", $this->album);
147       }
148       else $env->erreur("Impossible de creer le repertoire utilisateur");
149     }
150
151     function edit(){
152       $env = $this->env();
153       $data = $env->data();
154       $this->album["permissions"] = $data->source_permissions($this->album, $this->user["id"]);
155       if($this->album["permissions"]["editeur"])
156       { if($data->check_user_uploads_dir())
157         { $web_path = $env->path("web");
158           $upload_dir = $env->path("content")."uploads/".$this->user["id"];
159           $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
160           $source_infos = array
161           ( "date_inscription" => $this->album["date_inscription"],
162             "ordre" => $this->album["ordre"],
163             "date_creation" => $this->album["date_creation"],
164             "description" => $this->album["description"],
165             "image" => isset($this->album["image"]) ? $this->album["image"] : null
166           );
167           $env->set_out("groupe", $data->get_admin_groupe($this->album["groupes"]));
168           
169           if($_POST)
170           { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
171             { $env->set_out("groupe", $groupe);
172               $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
173               $this->album["groupes"] = array($groupe["id"] => $groupe);
174               $this->album["titre"] = trim($_POST["titre"]);
175               $this->album["licence"] = array
176               ( "id" => $_POST["licence"]
177               );
178               $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
179               $source_infos["description"] = $_POST["description"];
180               $this->album["documents"] = array();
181               foreach($_POST as $post_key => $post_value)
182               { if(substr($post_key, 0, 13) == "document_nom_")
183                 { if($id_document = substr($post_key, 13))
184                   { $this->album["documents"][$id_document] = array
185                     ( "nom" => $_POST["document_nom_".$id_document],
186                       "url" => $_POST["document_url_".$id_document]
187                     );
188                   }
189                 }
190               }
191               if($this->album["titre"])
192               { if(isset($_POST["del_image"]))
193                 { if($this->album["image"])
194                   { if(@unlink($env->path("content")."uploads/".$this->album["image"])) $this->album["image"] = "";
195                     else
196                     { $this->album["image"] = false;
197                       $env->erreur("Impossible d'effacer l'image");
198                     }
199                   }
200                   else $this->album["image"] = "";
201                 }
202                 else
203                 { if(($up_image = $data->upload("image", $upload_dir)) !== false)
204                   { if($up_image) $this->album["image"] = $this->user["id"]."/".$up_image;
205                   }
206                   else
207                   { $env->erreur("Impossible d'uploader l'image");
208                     return;
209                   }
210                 }
211                 if($this->album["image"] !== false)
212                 { if($this->album["image"]) $source_infos["image"] = $this->album["image"];
213                   if
214                   ( $data->set_source
215                     ( $this->album["id"],
216                       $this->album["groupes"],
217                       $this->album["titre"],
218                       $this->album_status_id,
219                       $this->album["licence"]["id"],
220                       $this->album["documents"],
221                       $this->album["reference"],
222                       $this->album["derivations"],
223                       $source_infos
224                     )
225                   ) $env->redirect
226                   ( $env->url("users/albums/edit", array("id" => $this->album["id"])),
227                     "l'album a &eacute;t&eacute; modifi&eacute;"
228                   );
229                   else $env->erreur("Impossible de modifier l'album");
230                 }
231                 else $env->erreur("Impossible d'uploader l'image");
232               }
233               else $env->message("merci de pr&eacute;ciser un titre pour l'album");
234             }
235             else $env->erreur("Impossible de lire les informations du groupe");
236           }
237           $env->set_out("album", $this->album);
238         }
239         else $env->erreur("Impossible de creer le repertoire utilisateur");
240       }
241       else $env->erreur("Vous n'avez pas la permission de modifier cet album");
242     }
243
244     function del(){
245       $env = $this->env();
246       $data = $env->data();
247       $this->album["permissions"] = $data->source_permissions($this->album, $this->user["id"]);
248       if($this->album["permissions"]["admin"])
249       { if($data->del_source($this->album["id"]))
250         { $env->redirect
251           ( $env->url("users/albums"),
252             "l'album a &eacute;t&eacute; supprim&eacute;"
253           );
254         }
255         else $env->erreur("Impossible de supprimer l'album");
256       }
257       else $env->erreur("Vous n'avez pas la permission de supprimer cet album");
258     }
259
260   }
261
262 ?>