plusieurs auteurs (maj controleur albums)
[mw_sourceml] / app / controllers / users / albums.php
index de892dd..767ba19 100644 (file)
 <?php
 
-  class mw_users_albums extends mw_controller
-  {
-    var $groupes;
-    var $album;
+  class mw_users_albums extends mw_controller{
+
     var $user;
+
     var $status;
     var $album_status_id;
 
     function validate(){
       $env = $this->env();
       $data = $env->data();
-      if(($this->status = $data->source_status()) !== false)
-      { foreach($this->status as $id_source_status => $source_status)
-        { if($source_status["nom"] == "album")
-          { $this->album_status_id = $id_source_status;
-            break;
-          }
-        }
-        if(isset($this->album_status_id))
-        { if($this->user = $env->user())
-          { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
-            { $env->set_out("groupes", $this->groupes);
-              if($env->etat("action") == "edit" || $env->etat("action") == "del")
-              { if(($this->album = $data->source($_GET[$env->param("id")], true)) !== false && $this->album)
-                {
-                }
-                else return "Impossible de lire les informations de l'album";
-              }
-              if($env->etat("action") == "add" || $env->etat("action") == "edit")
-              { if(($this->licences = $data->licences()) !== false)
-                { $env->set_out("licences", $this->licences);
-                }
-                else return "Impossible de lire la liste des licences";
-              }
-            }
-            else return "Impossible de lire la liste des groupes";
-          }
-          else return "Vous devez &ecirc;tre identifier pour acc&eacute;der &agrave; cette page";
+      if(($this->status = $data->source_status()) === false){
+        return "Impossible de lire la liste des status de source";
+      }
+      foreach($this->status as $id_source_status => $source_status){
+        if($source_status["nom"] == "album"){
+          $this->album_status_id = $id_source_status;
+          break;
         }
-        else return "Type de source inconnu: album";
       }
-      else return "Impossible de lire la liste des status de source";
+      if(!isset($this->album_status_id)){
+        return "Type de source inconnu: album";
+      }
+      if(!($this->user = $env->user())){
+        return "Vous devez être identifié pour accéder à cette page";
+      }
       return true;
     }
 
     function index(){
       $env = $this->env();
       $data = $env->data();
-      $select = array();
-      $select["status"] = $this->album_status_id;
-      $select["id_user"] = $this->user["id"];
-      $select["order_by"] = "ordre";
-      $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
-      if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
-      if(($albums = $data->sources($select)) !== false){
-        foreach($albums["list"] as $id_album => $album)
-        { $albums["list"][$id_album]["permissions"] = $data->source_permissions($albums["list"][$id_album], $this->user["id"]);
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      $id_groupe = false;
+      if(isset($_GET[$env->param("groupe")])){
+        $id_groupe = $_GET[$env->param("groupe")];
+        if(!isset($groupes["list"][$id_groupe])){
+          $env->erreur("Impossible de lire les informations du groupe");
+          return;
         }
-        if($_POST)
-        { $OK = true;
-          foreach($albums["list"] as $id_album => $album)
-          { if(isset($_POST["ordre_".$id_album]))
-            { if($data->set_source_info($id_album, "ordre", $_POST["ordre_".$id_album]) === false)
-              { $OK = false;
-                break;
-              }
+      }
+      $select = array(
+        "status" => $this->album_status_id,
+        "id_user" => $this->user["id"],
+        "order_by" => "ordre",
+        "start" => isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0
+      );
+      if($id_groupe) $select["id_groupe"] = $id_groupe;
+      if(($albums = $data->sources($select)) === false){
+        $env->erreur("impossible de lire la liste des albums");
+        return;
+      }
+      foreach($albums["list"] as $id_album => $album){
+        $albums["list"][$id_album]["permissions"] = $data->source_permissions($album, $this->user["id"]);
+      }
+      if($_POST){
+        foreach($albums["list"] as $id_album => $album){
+          if(isset($_POST["ordre_".$id_album])){
+            if($data->set_source_info($album["id"], "ordre", $_POST["ordre_".$id_album]) === false){
+              $env->erreur("Impossible d'enregistrer l'ordre des albums");
+              return;
             }
           }
-          if($OK)
-          { $get_params = array();
-            if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
-            $env->redirect
-            ( $env->url("users/albums", $get_params),
-              "l'ordre des albums a &eacute;t&eacute; enregistr&eacute;"
-            );
-          }
-          else $env->erreur("Impossible d'enregistrer l'ordre des albums");
         }
-        $env->set_out("albums", $albums);
+        $get_params = array();
+        if($id_groupe) $get_params["groupe"] = $id_groupe;
+        $env->redirect(
+          $env->url("users/albums", $get_params),
+          "l'ordre des albums a été enregistré"
+        );
       }
-      else $env->erreur("Impossible de lire la liste des albums");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("albums", $albums);
     }
 
     function add(){
       $env = $this->env();
       $data = $env->data();
-      if($data->check_user_uploads_dir())
-      { $web_path = $env->path("web");
-        $upload_dir = $env->path("content")."uploads/".$this->user["id"];
-        $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
-        $this->album = $data->empty_source();
-        $source_infos = array
-        ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
-          "ordre" => 0
+      $album = $data->empty_source();
+      $source_infos = array(
+        "date_inscription" => date("Y-m-d"),
+        "ordre" => 0
+      );
+      $groupe = false;
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      if(($licences = $data->licences()) === false){
+        return "Impossible de lire la liste des licences";
+      }
+      if(!$data->check_user_uploads_dir()){
+        $env->erreur("Impossible de creer le repertoire utilisateur");
+        return;
+      }
+      $web_path = $env->path("web");
+      $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+      $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+      $users_sources_mod = $env->get_controller("users/sources");
+      if($_POST){
+        if(!($groupe = $data->groupe($_POST["id_groupe"]))){
+          $env->erreur("Impossible de lire les informations du groupe");
+          return;
+        }
+        $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
+        $album["groupes"] = array($groupe["id"] => $groupe);
+        if(!($album["titre"] = trim($_POST["titre"]))){
+          $env->message("merci de pr&eacute;ciser un titre pour l'album");
+        }
+        $album["licence"] = array(
+          "id" => $_POST["licence"]
         );
-        if($_POST)
-        { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
-          { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-            $env->set_out("groupe", $groupe);
-            $this->album["groupes"] = array($groupe["id"] => $groupe);
-            $this->album["titre"] = trim($_POST["titre"]);
-            $this->album["licence"] = array
-            ( "id" => $_POST["licence"]
-            );
-            $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
-            $source_infos["description"] = $_POST["description"];
-            foreach($_POST as $post_key => $post_value)
-            { if(substr($post_key, 0, 13) == "document_nom_")
-              { if($id_document = substr($post_key, 13))
-                { $this->album["documents"][$id_document] = array
-                  ( "nom" => $_POST["document_nom_".$id_document],
-                    "url" => $_POST["document_url_".$id_document]
-                  );
-                }
-              }
-            }
-            if($this->album["titre"])
-            { if(($image = $data->upload("image", $upload_dir)) !== false)
-              { if($image) $source_infos["image"] = $this->user["id"]."/".$image;
-                if
-                ( $data->add_source
-                  ( $this->album["groupes"],
-                    $this->album["titre"],
-                    $this->album_status_id,
-                    $this->album["licence"]["id"],
-                    $this->album["documents"],
-                    $this->album["reference"],
-                    $this->album["derivations"],
-                    $source_infos
-                  )
-                ) $env->redirect
-                ( $env->url("users/albums"),
-                  "l'album a &eacute;t&eacute; ajout&eacute;"
-                );
-                else $env->erreur("Impossible d'ajouter l'album");
-              }
-              else $env->erreur("Impossible d'uploader l'image");
+        $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+        $source_infos["description"] = $_POST["description"];
+        foreach($_POST as $post_key => $post_value){
+          if(substr($post_key, 0, 13) == "document_nom_"){
+            if($id_document = substr($post_key, 13)){
+              $album["documents"][$id_document] = array(
+                "nom" => $_POST["document_nom_".$id_document],
+                "url" => $_POST["document_url_".$id_document]
+              );
             }
-            else $env->message("merci de pr&eacute;ciser un titre pour l'album");
           }
-          else $env->erreur("Impossible de lire les informations du groupe");
         }
-        foreach($source_infos as $info_key => $info_value) $this->album[$info_key] = $info_value;
-        $env->set_out("album", $this->album);
+        if(!$env->messages()){
+          if(($image = $data->upload("image", $upload_dir)) === false){
+            $env->erreur("erreur lors de l'envoi de l'image. l'album n'a pas été ajouté");
+            return;
+          }
+          if($image) $source_infos["image"] = $this->user["id"]."/".$image;
+          if(
+            (
+              $id_source = $data->add_source(
+                $album["groupes"],
+                $album["titre"],
+                $this->album_status_id,
+                $album["licence"]["id"],
+                $album["documents"],
+                $album["reference"],
+                $album["derivations"],
+                $source_infos
+              )
+            ) === false
+          ){
+            $env->erreur("Impossible d'ajouter l'album");
+            return;
+          }
+          $env->redirect(
+            $env->url("users/albums"),
+            "l'album a été ajouté"
+          );
+        }
       }
-      else $env->erreur("Impossible de creer le repertoire utilisateur");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("licences", $licences);
+      $env->set_out("album", $album);
+      $env->set_out("source_infos", $source_infos);
+      $env->set_out("groupe", $groupe);
     }
 
     function edit(){
       $env = $this->env();
       $data = $env->data();
-      $this->album["permissions"] = $data->source_permissions($this->album, $this->user["id"]);
-      if($this->album["permissions"]["editeur"])
-      { if($data->check_user_uploads_dir())
-        { $web_path = $env->path("web");
-          $upload_dir = $env->path("content")."uploads/".$this->user["id"];
-          $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir;
-          $source_infos = array
-          ( "date_inscription" => $this->album["date_inscription"],
-            "ordre" => $this->album["ordre"],
-            "date_creation" => $this->album["date_creation"],
-            "description" => $this->album["description"],
-            "image" => isset($this->album["image"]) ? $this->album["image"] : null
-          );
-          $env->set_out("groupe", $data->get_admin_groupe($this->album["groupes"]));
-          
-          if($_POST)
-          { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
-            { $env->set_out("groupe", $groupe);
-              $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-              $this->album["groupes"] = array($groupe["id"] => $groupe);
-              $this->album["titre"] = trim($_POST["titre"]);
-              $this->album["licence"] = array
-              ( "id" => $_POST["licence"]
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      if(($licences = $data->licences()) === false){
+        $env->erreur("Impossible de lire la liste des licences");
+        return;
+      }
+      if(($sources_access = $data->sources_access()) === false){
+        $env->erreur("Impossible de lire les types d'access");
+        return;
+      }
+      if(!($album = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations de l'album");
+        return;
+      }
+      $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+      if(!$album["permissions"]["editeur"]){
+        $env->erreur("vous n'avez pas la permission d'editer cet album");
+        return;
+      }
+      if(!$data->check_user_uploads_dir()){
+        $env->erreur("Impossible de creer le repertoire utilisateur");
+        return;
+      }
+      $web_path = $env->path("web");
+      $upload_dir = $env->path("content")."uploads/".$this->user["id"];
+      $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+      if($_POST){
+        $source_infos = array(
+          "date_inscription" => $_POST["date_inscription"],
+          "ordre" => isset($album["ordre"]) ? $album["ordre"] : 0
+        );
+        $album = $data->empty_source(
+          array(
+            "id" => $album["id"],
+            "groupes" => $album["groupes"],
+            "image" => isset($album["image"]) ? $album["image"] : ""
+          )
+        );
+        $users_sources_mod = $env->get_controller("users/sources");
+        if(!($album["titre"] = trim($_POST["titre"]))){
+          $env->message("merci de pr&eacute;ciser un titre pour l'album");
+        }
+        $album["licence"] = array(
+          "id" => $_POST["licence"]
+        );
+        $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+        $source_infos["description"] = $_POST["description"];
+        foreach($_POST as $post_key => $post_value){
+          if(substr($post_key, 0, 13) == "document_nom_"){
+            if($id_document = substr($post_key, 13)){
+              $album["documents"][$id_document] = array(
+                "nom" => $_POST["document_nom_".$id_document],
+                "url" => $_POST["document_url_".$id_document]
               );
-              $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
-              $source_infos["description"] = $_POST["description"];
-              $this->album["documents"] = array();
-              foreach($_POST as $post_key => $post_value)
-              { if(substr($post_key, 0, 13) == "document_nom_")
-                { if($id_document = substr($post_key, 13))
-                  { $this->album["documents"][$id_document] = array
-                    ( "nom" => $_POST["document_nom_".$id_document],
-                      "url" => $_POST["document_url_".$id_document]
-                    );
-                  }
-                }
-              }
-              if($this->album["titre"])
-              { if(isset($_POST["del_image"]))
-                { if($this->album["image"])
-                  { if(@unlink($env->path("content")."uploads/".$this->album["image"])) $this->album["image"] = "";
-                    else
-                    { $this->album["image"] = false;
-                      $env->erreur("Impossible d'effacer l'image");
-                    }
-                  }
-                  else $this->album["image"] = "";
-                }
-                else
-                { if(($up_image = $data->upload("image", $upload_dir)) !== false)
-                  { if($up_image) $this->album["image"] = $this->user["id"]."/".$up_image;
-                  }
-                  else
-                  { $env->erreur("Impossible d'uploader l'image");
-                    return;
-                  }
-                }
-                if($this->album["image"] !== false)
-                { if($this->album["image"]) $source_infos["image"] = $this->album["image"];
-                  if
-                  ( $data->set_source
-                    ( $this->album["id"],
-                      $this->album["groupes"],
-                      $this->album["titre"],
-                      $this->album_status_id,
-                      $this->album["licence"]["id"],
-                      $this->album["documents"],
-                      $this->album["reference"],
-                      $this->album["derivations"],
-                      $source_infos
-                    )
-                  ) $env->redirect
-                  ( $env->url("users/albums/edit", array("id" => $this->album["id"])),
-                    "l'album a &eacute;t&eacute; modifi&eacute;"
-                  );
-                  else $env->erreur("Impossible de modifier l'album");
-                }
-                else $env->erreur("Impossible d'uploader l'image");
+            }
+          }
+        }
+        if(!$env->messages()){
+          if(isset($_POST["del_image"])){
+            if($album["image"]){
+              if(!@unlink($env->path("content")."uploads/".$album["image"])){
+                $env->erreur("Impossible d'effacer l'image");
+                return;
               }
-              else $env->message("merci de pr&eacute;ciser un titre pour l'album");
             }
-            else $env->erreur("Impossible de lire les informations du groupe");
+            $album["image"] = "";
+          }
+          else{
+            if(($up_image = $data->upload("image", $upload_dir)) === false){
+              $env->erreur("Impossible d'uploader l'image");
+              return;
+            }
+            if($up_image) $album["image"] = $this->user["id"]."/".$up_image;
           }
-          $env->set_out("album", $this->album);
+          if($album["image"]) $source_infos["image"] = $album["image"];
+          if(
+            (
+              $data->set_source(
+                $album["id"],
+                $album["groupes"],
+                $album["titre"],
+                $this->album_status_id,
+                $album["licence"]["id"],
+                $album["documents"],
+                $album["reference"],
+                $album["derivations"],
+                $source_infos
+              )
+            ) === false
+          ){
+            $env->erreur("Impossible de modifier l'album");
+            return;
+          }
+          $env->redirect(
+            $env->url("users/albums/edit", array("id" => $album["id"])),
+            "l'album a été modifié"
+          );
         }
-        else $env->erreur("Impossible de creer le repertoire utilisateur");
       }
-      else $env->erreur("Vous n'avez pas la permission de modifier cet album");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("sources_access", $sources_access);
+      $env->set_out("licences", $licences);
+      $env->set_out("album", $album);
     }
 
     function del(){
       $env = $this->env();
       $data = $env->data();
-      $this->album["permissions"] = $data->source_permissions($this->album, $this->user["id"]);
-      if($this->album["permissions"]["admin"])
-      { if($data->del_source($this->album["id"]))
-        { $env->redirect
-          ( $env->url("users/albums"),
-            "l'album a &eacute;t&eacute; supprim&eacute;"
-          );
-        }
-        else $env->erreur("Impossible de supprimer l'album");
+      if(!($album = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations de l'album");
+        return;
+      }
+      $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+      if(!$album["permissions"]["admin"]){
+        $env->erreur("vous n'avez pas la permission d'effacer cet album");
+        return;
+      }
+      if(!$data->del_source($album["id"])){
+        $env->erreur("Impossible de supprimer l'album");
+        return;
       }
-      else $env->erreur("Vous n'avez pas la permission de supprimer cet album");
+      $env->redirect(
+        $env->url("users/albums"),
+        "l'album a été supprimé"
+      );
     }
 
   }