3 class mw_users_albums extends mw_controller{
7 public $album_status_id;
9 public function validate(){
12 if(($this->status = $data->source_status()) === false){
13 return "Impossible de lire la liste des status de source";
15 foreach($this->status as $id_source_status => $source_status){
16 if($source_status["nom"] == "album"){
17 $this->album_status_id = $id_source_status;
21 if(!isset($this->album_status_id)){
22 return "Type de source inconnu: album";
24 if(!($this->user = $env->user())){
25 return "Vous devez être identifié pour accéder à cette page";
30 public function index(){
33 if(($groupes = $data->groupes($this->user["id"])) === false){
34 $env->erreur("Impossible de lire la liste des groupes");
38 if(isset($_GET[$env->param("groupe")])){
39 $id_groupe = $_GET[$env->param("groupe")];
40 if(!isset($groupes["list"][$id_groupe])){
41 $env->erreur("Impossible de lire les informations du groupe");
46 "status" => $this->album_status_id,
47 "id_user" => $this->user["id"],
48 "order_by" => "ordre",
49 "start" => isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0
51 if($id_groupe) $select["id_groupe"] = $id_groupe;
52 if(($albums = $data->sources($select)) === false){
53 $env->erreur("impossible de lire la liste des albums");
56 foreach($albums["list"] as $id_album => $album){
57 $albums["list"][$id_album]["permissions"] = $data->source_permissions($album, $this->user["id"]);
60 foreach($albums["list"] as $id_album => $album){
61 if(isset($_POST["ordre_".$id_album])){
62 if($data->set_source_info($album["id"], "ordre", $_POST["ordre_".$id_album]) === false){
63 $env->erreur("Impossible d'enregistrer l'ordre des albums");
68 $get_params = array();
69 if($id_groupe) $get_params["groupe"] = $id_groupe;
71 $env->url("users/albums", $get_params),
72 "l'ordre des albums a été enregistré"
75 $env->set_out("groupes", $groupes);
76 $env->set_out("albums", $albums);
79 public function add(){
82 $album = $data->empty_source();
83 $source_infos = array(
84 "date_inscription" => date("Y-m-d"),
88 if(($groupes = $data->groupes($this->user["id"])) === false){
89 $env->erreur("Impossible de lire la liste des groupes");
92 if(($licences = $data->licences()) === false){
93 return "Impossible de lire la liste des licences";
95 if(!$data->check_user_uploads_dir()){
96 $env->erreur("Impossible de creer le repertoire utilisateur");
99 $web_path = $env->path("web");
100 $upload_dir = $env->path("content")."uploads/".$this->user["id"];
101 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
102 $users_sources_mod = $env->get_controller("users/sources");
104 if(!($groupe = $data->groupe($_POST["id_groupe"]))){
105 $env->erreur("Impossible de lire les informations du groupe");
108 $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
109 $album["groupes"] = array($groupe["id"] => $groupe);
110 if(!($album["titre"] = trim($_POST["titre"]))){
111 $env->message("merci de préciser un titre pour l'album");
113 $album["licence"] = array(
114 "id" => $_POST["licence"]
116 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
117 $source_infos["description"] = $_POST["description"];
118 foreach($_POST as $post_key => $post_value){
119 if(substr($post_key, 0, 13) == "document_nom_"){
120 if($id_document = substr($post_key, 13)){
121 $album["documents"][$id_document] = array(
122 "nom" => $_POST["document_nom_".$id_document],
123 "url" => $_POST["document_url_".$id_document]
128 if(!$env->messages()){
129 if(($image = $data->upload("image", $upload_dir)) === false){
130 $env->erreur("erreur lors de l'envoi de l'image. l'album n'a pas été ajouté");
133 if($image) $source_infos["image"] = $this->user["id"]."/".$image;
136 $id_source = $data->add_source(
139 $this->album_status_id,
140 $album["licence"]["id"],
143 $album["derivations"],
148 $env->erreur("Impossible d'ajouter l'album");
152 $env->url("users/albums/edit", array("id" => $id_source)),
153 "l'album a été ajouté"
157 $env->set_out("groupes", $groupes);
158 $env->set_out("licences", $licences);
159 $env->set_out("album", $album);
160 $env->set_out("source_infos", $source_infos);
161 $env->set_out("groupe", $groupe);
164 public function edit(){
166 $data = $env->data();
167 if(($groupes = $data->groupes($this->user["id"])) === false){
168 $env->erreur("Impossible de lire la liste des groupes");
171 if(($licences = $data->licences()) === false){
172 $env->erreur("Impossible de lire la liste des licences");
175 if(($sources_access = $data->sources_access()) === false){
176 $env->erreur("Impossible de lire les types d'access");
179 if(!($album = $data->source($_GET[$env->param("id")], true))){
180 $env->erreur("Impossible de lire les informations de l'album");
183 $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
184 if(!$album["permissions"]["editeur"]){
185 $env->erreur("vous n'avez pas la permission d'editer cet album");
188 if(!$data->check_user_uploads_dir()){
189 $env->erreur("Impossible de creer le repertoire utilisateur");
192 $web_path = $env->path("web");
193 $upload_dir = $env->path("content")."uploads/".$this->user["id"];
194 $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
196 $source_infos = array(
197 "date_inscription" => $_POST["date_inscription"],
198 "ordre" => isset($album["ordre"]) ? $album["ordre"] : 0
200 $album = $data->empty_source(
202 "id" => $album["id"],
203 "groupes" => $album["groupes"],
204 "image" => isset($album["image"]) ? $album["image"] : ""
207 $users_sources_mod = $env->get_controller("users/sources");
208 if(!($album["titre"] = trim($_POST["titre"]))){
209 $env->message("merci de préciser un titre pour l'album");
211 $album["licence"] = array(
212 "id" => $_POST["licence"]
214 $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
215 $source_infos["description"] = $_POST["description"];
216 foreach($_POST as $post_key => $post_value){
217 if(substr($post_key, 0, 13) == "document_nom_"){
218 if($id_document = substr($post_key, 13)){
219 $album["documents"][$id_document] = array(
220 "nom" => $_POST["document_nom_".$id_document],
221 "url" => $_POST["document_url_".$id_document]
226 if(!$env->messages()){
227 if(isset($_POST["del_image"])){
229 if(!@unlink($env->path("content")."uploads/".$album["image"])){
230 $env->erreur("Impossible d'effacer l'image");
234 $album["image"] = "";
237 if(($up_image = $data->upload("image", $upload_dir)) === false){
238 $env->erreur("Impossible d'uploader l'image");
241 if($up_image) $album["image"] = $this->user["id"]."/".$up_image;
243 if($album["image"]) $source_infos["image"] = $album["image"];
250 $this->album_status_id,
251 $album["licence"]["id"],
254 $album["derivations"],
259 $env->erreur("Impossible de modifier l'album");
263 $env->url("users/albums/edit", array("id" => $album["id"])),
264 "l'album a été modifié"
268 $env->set_out("groupes", $groupes);
269 $env->set_out("sources_access", $sources_access);
270 $env->set_out("licences", $licences);
271 $env->set_out("album", $album);
274 public function del(){
276 $data = $env->data();
277 if(!($album = $data->source($_GET[$env->param("id")], true))){
278 $env->erreur("Impossible de lire les informations de l'album");
281 $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
282 if(!$album["permissions"]["admin"]){
283 $env->erreur("vous n'avez pas la permission d'effacer cet album");
286 if(!$data->del_source($album["id"])){
287 $env->erreur("Impossible de supprimer l'album");
291 $env->url("users/albums"),
292 "l'album a été supprimé"
296 public function groupes(){
299 !($sources_invitations_controller = $env->get_controller("users/sources_invitations"))
300 || !$sources_invitations_controller->validate()
302 $env->erreur("impossible de valider le controleur users/sources_invitations");
305 $sources_invitations_controller->source_groupes();