upgrade 1.1.2 pour XML, MySql et SQLite
[mw_sourceml] / app / controllers / users / pistes.php
index 4fd25f6..60190de 100644 (file)
       if($groupes["total"] > 0){
         $select = array(
           "status" => $this->morceau_status_id,
-          "id_user" => $this->user["id"]
+          "id_user" => $this->user["id"],
+          "is_reference" => false
         );
         foreach($groupes["list"] as $id_groupe => $groupe){
           $select["id_groupe"] = $id_groupe;
         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(isset($_POST["button_derive"])){
+        if(
+              ($origin_source_id = $_POST["button_derive"])
+          &&  ($origin_source_xml_url = $data->source_xml_url($origin_source_id))
+          &&  ($origin_source_xml_content = $data->get_source_xml($origin_source_id))
+        ){
+          $piste["derivations"][$origin_source_id] = $users_sources_mod->get_source_from_xml(
+            $env,
+            $origin_source_xml_url,
+            $origin_source_xml_content,
+            false
+          );
+        }
+      }
+      elseif($_POST){
         if(!($groupe = $data->groupe($_POST["id_groupe"]))){
           $env->erreur("Impossible de lire les informations du groupe");
           return;
           );
           $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
           $source_infos["description"] = $_POST["description"];
+          $piste["description"] = $source_infos["description"];
+          $piste["date_creation"] = $source_infos["date_creation"];
           foreach($_POST as $post_key => $post_value){
             if(substr($post_key, 0, 13) == "document_nom_"){
               if($id_document = substr($post_key, 13)){
           }
         }
         if(!$env->messages()){
+          if(($image = $data->upload("image", $upload_dir)) === false){
+            $env->erreur("erreur lors de l'envoi de l'image. la piste n'a pas été ajoutée");
+            return;
+          }
+          if($image) $source_infos["image"] = $this->user["id"]."/".$image;
           if(
             (
               $id_source = $data->add_source(
                 $piste["groupes"],
                 $piste["titre"],
                 $this->piste_status_id,
-                $piste["licence"]["id"],
+                isset($piste["licence"]["id"]) ? $piste["licence"]["id"] : null,
                 $piste["documents"],
                 $piste["reference"],
                 $piste["derivations"],
         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(($compositions = $data->source_compositions(array("id_source" => $piste["id"]))) === false){
         $env->erreur("Impossible de lire la liste des compositions");
       }
       if($compositions) foreach($compositions[$piste["id"]] as $id_morceau) { $piste["morceau"] = $id_morceau; break; }
       if($_POST){
+        $permissions = $piste["permissions"];
+        $image = isset($piste["image"]) ? $piste["image"] : null;
+        $image_uri = isset($piste["image_uri"]) ? $piste["image_uri"] : null;
         $source_infos = array(
           "date_inscription" => $_POST["date_inscription"],
           "ordre" => isset($piste["ordre"]) ? $piste["ordre"] : 0
         $piste = $data->empty_source(
           array(
             "id" => $piste["id"],
-            "groupes" => $piste["groupes"]
+            "groupes" => $piste["groupes"],
+            "image" => isset($piste["image"]) ? $piste["image"] : ""
           )
         );
+        $piste["permissions"] = $permissions;
+        $piste["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
+        $piste["image"] = $image;
+        $piste["image_uri"] = $image_uri;
         $users_sources_mod = $env->get_controller("users/sources");
         if($_POST["morceau"]){
           if($morceau = $data->source($_POST["morceau"], true)){
           );
           $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"];
           $source_infos["description"] = $_POST["description"];
+          $piste["description"] = $source_infos["description"];
           foreach($_POST as $post_key => $post_value){
             if(substr($post_key, 0, 13) == "document_nom_"){
               if($id_document = substr($post_key, 13)){
           }
         }
         if(!$env->messages()){
+          if(isset($_POST["del_image"])){
+            if($piste["image"]){
+              if(!@unlink($env->path("content")."uploads/".$piste["image"])){
+                $env->erreur("Impossible d'effacer l'image de la piste");
+                return;
+              }
+            }
+            $piste["image"] = "";
+          }
+          else{
+            if(($up_image = $data->upload("image", $upload_dir)) === false){
+              $env->erreur("Impossible d'uploader l'image");
+              return;
+            }
+            if($up_image) $piste["image"] = $this->user["id"]."/".$up_image;
+          }
+          if($piste["image"]) $source_infos["image"] = $piste["image"];
           if(
             (
               $data->set_source(
     }
 
     function maj_xml(){
+      $env = $this->env();
       $data = $env->data();
       if(!($piste = $data->source($_GET[$env->param("id")], true))){
         $env->erreur("Impossible de lire les informations de la piste");
         $env->erreur("vous n'avez pas la permission d'editer cette piste");
         return;
       }
+
       if
-      (    isset($_GET[$env->param("id")])
-        && isset($_GET[$env->param("xml")])
-        && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
+      (    !isset($_GET[$env->param("id")])
+        || !isset($_GET[$env->param("xml")])
+        || ($_GET[$env->param("xml")] == "derviation" && !isset($_GET[$env->param("derivation")]))
       ){
         $env->erreur("parametre de fichier xml manquant");
         return;
       );
     }
 
+    function groupes(){
+      $env = $this->env();
+      if(
+            !($sources_invitations_controller = $env->get_controller("users/sources_invitations"))
+        ||  !$sources_invitations_controller->validate()
+      ){
+        $env->erreur("impossible de valider le controleur users/sources_invitations");
+        return;
+      }
+      $sources_invitations_controller->source_groupes();
+    }
+
   }
 
 ?>
\ No newline at end of file