plusieurs auteurs pour les sources sourceml.0.15.1
authordj3c1t <dj3c1t@free.fr>
Sun, 30 Jun 2013 18:36:43 +0000 (20:36 +0200)
committerdj3c1t <dj3c1t@free.fr>
Sun, 30 Jun 2013 18:36:43 +0000 (20:36 +0200)
37 files changed:
app/controllers/sources/album.php
app/controllers/sources/morceau.php
app/controllers/sources/piste.php
app/controllers/users/albums.php
app/controllers/users/morceaux.php
app/controllers/users/pistes.php
app/data/modules/share/sml_data_sources_xml_format.php
app/data/modules/sql/sml_data_source_groupes.php
app/data/modules/sql/sml_data_sources.php
app/out/default/css/actions/sources.css
app/out/default/css/sourceml_accounts.css
app/out/default/js/actions/users.js
app/out/default/layouts/sources.xml
app/out/default/views/forms/sourceml/contact_author.php
app/out/default/views/sources/album/ariane.php
app/out/default/views/sources/album/list.php
app/out/default/views/sources/album/view.php
app/out/default/views/sources/current_album.php [deleted file]
app/out/default/views/sources/current_album_box.php [deleted file]
app/out/default/views/sources/groupe/view.php
app/out/default/views/sources/groupe_box.php
app/out/default/views/sources/lien_contact.php [deleted file]
app/out/default/views/sources/logo_groupe.php
app/out/default/views/sources/morceau/ariane.php
app/out/default/views/sources/morceau/list.php
app/out/default/views/sources/morceau/view.php
app/out/default/views/sources/piste/list.php
app/out/default/views/sources/piste/view.php
app/out/default/views/sources/source/header.php
app/out/default/views/users/albums/edit.php
app/out/default/views/users/morceaux/edit.php
app/out/default/views/users/morceaux/groupes.php [new file with mode: 0644]
app/out/default/views/users/morceaux/list.php
app/out/default/views/users/pistes/add.php
app/out/default/views/users/pistes/edit.php
app/out/default/views/users/pistes/list.php
mw_sourceml.php

index 3640ac8..9364a64 100644 (file)
@@ -50,8 +50,9 @@
         if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")])
         { if($album = $data->source($_GET[$env->param("album")], true))
           { $env->set_out("album", $album);
-            if($groupe = $data->get_admin_groupe($album["groupes"]))
-            { $env->set_out("groupe", $groupe);
+            if($groupe = $data->get_admin_groupe($album["groupes"])){
+//              $env->set_out("groupe", $groupe);
+              $env->set_out("groupes", $album["groupes"]);
               $select = array("status" => $this->content_sources_mod->album_status_id);
               $select["id_groupe"] = $groupe["id"];
               if(($albums = $data->sources($select)) !== false)
index 802430a..3d68bed 100644 (file)
           { if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")])
             { if(($album = $data->source($_GET[$env->param("album")], true)) !== false)
               { $env->set_out("album", $album);
-                if(!isset($groupe))
-                { $groupe = $data->get_admin_groupe($album["groupes"]);
+/*
+                if(!isset($groupe)){
+                  $groupe = $data->get_admin_groupe($album["groupes"]);
                   if(!$groupe) $groupe = false;
                 }
+*/
               }
             }
           }
@@ -77,8 +79,9 @@
         if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")])
         { if($morceau = $data->source($_GET[$env->param("morceau")], true))
           { $env->set_out("morceau", $morceau);
-            if($groupe = $data->get_admin_groupe($morceau["groupes"]))
-            { $env->set_out("groupe", $groupe);
+            if($groupe = $data->get_admin_groupe($morceau["groupes"])){
+//              $env->set_out("groupe", $groupe);
+              $env->set_out("groupes", $morceau["groupes"]);
               $select = array("status" => $this->content_sources_mod->album_status_id);
               $select["id_groupe"] = $groupe["id"];
               if(($albums = $data->sources($select)) !== false)
index 668892f..b5f1cdf 100644 (file)
           { if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")])
             { if(($morceau = $data->source($_GET[$env->param("morceau")], true)) !== false)
               { $env->set_out("morceau", $morceau);
+/*
                 if(!isset($groupe))
                 { $groupe = $data->get_admin_groupe($morceau["groupes"]);
                   if(!$groupe) $groupe = false;
                 }
+*/
               }
             }
           }
@@ -77,8 +79,9 @@
         if(isset($_GET[$env->param("piste")]) && $_GET[$env->param("piste")])
         { if($piste = $data->source($_GET[$env->param("piste")], true))
           { $env->set_out("piste", $piste);
-            if($groupe = $data->get_admin_groupe($piste["groupes"]))
-            { $env->set_out("groupe", $groupe);
+            if($groupe = $data->get_admin_groupe($piste["groupes"])){
+//              $env->set_out("groupe", $groupe);
+              $env->set_out("groupes", $piste["groupes"]);
               $select = array("status" => $this->content_sources_mod->album_status_id);
               $select["id_groupe"] = $groupe["id"];
               if(($albums = $data->sources($select)) !== false)
index b26e200..de892dd 100644 (file)
@@ -54,8 +54,8 @@
       $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)
+      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($_POST)
     function edit(){
       $env = $this->env();
       $data = $env->data();
-      $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]);
-      if($this->album["premissions"]["editeur"])
+      $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"];
             "ordre" => $this->album["ordre"],
             "date_creation" => $this->album["date_creation"],
             "description" => $this->album["description"],
-            "image" => $this->album["image"]
+            "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);
               );
               $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))
     function del(){
       $env = $this->env();
       $data = $env->data();
-      $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]);
-      if($this->album["premissions"]["admin"])
+      $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"),
index ba58bda..abd7e2c 100644 (file)
@@ -1,10 +1,7 @@
 <?php
 
-  class mw_users_morceaux extends mw_controller
-  {
-    var $groupes;
-    var $albums;
-    var $morceau;
+  class mw_users_morceaux extends mw_controller{
+
     var $user;
 
     var $status;
     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;
-          if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
-          if(isset($this->album_status_id) && isset($this->morceau_status_id)) break;
-        }
-        if(isset($this->album_status_id) && isset($this->morceau_status_id))
-        { if($this->user = $env->user())
-          { if(($this->groupes = $data->groupes($this->user["id"])) !== false){
-              $env->set_out("groupes", $this->groupes);
-              $this->albums = array();
-              if($this->groupes["total"] > 0)
-              { $select = array();
-                $select["status"] = $this->album_status_id;
-                $select["id_user"] = $this->user["id"];
-                foreach($this->groupes["list"] as $id_groupe => $groupe)
-                { $select["id_groupe"] = $id_groupe;
-                  if(($albums = $data->sources($select)) !== false)
-                  { $this->albums[$id_groupe] = $albums["list"];
-                  }
-                  else $this->albums = false;
-                }
-              }
-              if($this->albums !== false)
-              { $env->set_out("albums", $this->albums);
-                if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
-                { if($this->morceau = $data->source($_GET[$env->param("id")], true))
-                  { 
-                  }
-                  else return "Impossible de lire les informations du morceau";
-                }
-                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 albums";
-            }
-            else return "Impossible de lire la liste des groupes";
-          }
-          else return "Vous devez &ecirc;tre identifier pour acc&eacute;der &agrave; cette page";
-        }
-        else
-        { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
-          return "Type de source inconnu: morceau";
-        }
+      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;
+        if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
+        if(isset($this->album_status_id) && isset($this->morceau_status_id)) break;
+      }
+      if(!isset($this->album_status_id) || !isset($this->morceau_status_id)){
+        if(!isset($this->album_status_id)) return "Type de source inconnu: album";
+        return "Type de source inconnu: morceau";
+      }
+      if(!($this->user = $env->user())){
+        return "Vous devez être identifié pour accéder à cette page";
       }
-      else return "Impossible de lire la liste des status de source";
       return true;
     }
 
     function index(){
       $env = $this->env();
       $data = $env->data();
-      $select = array();
-      $select["status"] = $this->morceau_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(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")];
-      if(($morceaux = $data->sources($select)) !== false)
-      { foreach($morceaux["list"] as $id_morceau => $morceau)
-        { $morceaux["list"][$id_morceau]["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      $albums_groupes = $groupes["list"];
+      $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($morceaux["list"] as $id_morceau => $morceau)
-          { if(isset($_POST["ordre_".$id_morceau]))
-            { if($data->set_source_info($morceau["id"], "ordre", $_POST["ordre_".$id_morceau]) === false)
-              { $OK = false;
-                break;
-              }
+      }
+      if($id_groupe){
+        $albums_groupes = array($id_groupe => $groupes["list"][$id_groupe]);
+      }
+      if(
+        (
+          $albums = $data->groupes_sources(
+            array(
+              "groupes" => $albums_groupes,
+              "id_class" => $this->album_status_id,
+              // on veut les albums pour lesquels au moins un groupe (et pas tous) ...
+              "satisfy_all_groupes_access" => false,
+              // ... a le droit de contribution
+              "id_source_access" => $data->id_groupe_status_contributeur()
+            )
+          )
+        ) === false
+      ) return "impossible de lire la liste des albums";
+      if($id_album = isset($_GET[$env->param("album")]) ? $_GET[$env->param("album")] : false){
+        if(!($album = $data->source($id_album, true))){
+          $env->erreur("Impossible de lire les informations de l'album");
+          return;
+        }
+      }
+      $select = array(
+        "status" => $this->morceau_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($id_album !== false) $select["id_composition"] = $id_album;
+      if(($morceaux = $data->sources($select)) === false){
+        $env->erreur("impossible de lire la liste des morceaux");
+        return;
+      }
+      foreach($morceaux["list"] as $id_morceau => $morceau){
+        $morceaux["list"][$id_morceau]["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+      }
+      if($_POST){
+        foreach($morceaux["list"] as $id_morceau => $morceau){
+          if(isset($_POST["ordre_".$id_morceau])){
+            if($data->set_source_info($morceau["id"], "ordre", $_POST["ordre_".$id_morceau]) === false){
+              $env->erreur("Impossible d'enregistrer l'ordre des morceaux");
+              return;
             }
           }
-          if($OK)
-          { $get_params = array();
-            if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
-            if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) $get_params["album"] = $_GET[$env->param("album")];
-            $env->redirect
-            ( $env->url("users/morceaux", $get_params),
-              "l'ordre des morceaux a &eacute;t&eacute; enregistr&eacute;"
-            );
-          }
-          else $env->erreur("Impossible d'enregistrer l'ordre des morceaux");
         }
-        $env->set_out("groupes", $this->groupes);
-        $env->set_out("albums", $this->albums);
-        $env->set_out("morceaux", $morceaux);
+        $get_params = array();
+        if($id_groupe) $get_params["groupe"] = $id_groupe;
+        if($id_album) $get_params["album"] = $id_album;
+        $env->redirect(
+          $env->url("users/morceaux", $get_params),
+          "l'ordre des morceaux a été enregistré"
+        );
       }
-      else $env->erreur("Impossible de lire la liste des morceaux");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("albums", $albums);
+      $env->set_out("morceaux", $morceaux);
     }
 
     function add(){
       $env = $this->env();
       $data = $env->data();
-      if($data->check_user_uploads_dir())
-      { $web_path = $env->path("web");
-        $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
-        $this->morceau = $data->empty_source();
-        $users_sources_mod = $env->get_controller("users/sources");
-        $source_infos = array
-        ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
-          "ordre" => 0
+      $morceau = $data->empty_source();
+      $source_infos = array(
+        "date_inscription" => date("Y-m-d"),
+        "ordre" => 0
+      );
+      $groupe = false;
+      $album = false;
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      $albums = array();
+      if($groupes["total"] > 0){
+        $select = array(
+          "status" => $this->album_status_id,
+          "id_user" => $this->user["id"]
         );
-        if($_POST)
-        { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
-          { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-            $this->morceau["groupes"] = array($groupe["id"] => $groupe);
-            if($_POST["album"])
-            { if($album = $data->source($_POST["album"], true))
-              { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
-                if(!$album["permissions"]["contributeur"])
-                { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
-                  return;
-                }
-              }
-              else
-              { $env->erreur("impossible de lire les informations de l'album");
-                return;
-              }
-              $this->morceau["album"] = $_POST["album"];
-            }
-            if($_POST["is_derivation"])
-            { foreach($_POST as $key => $value)
-              { if(substr($key, 0, 14) == "derivation_id_")
-                { $id_source_derivation = substr($key, 14);
-                  $xml_url = trim($_POST["derivation_".$id_source_derivation]);
-                  $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
-                  ( $env,
-                    $xml_url,
-                    ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
-                        $_POST["edit_derivation_content_".$id_source_derivation]
-                      : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
-                    ),
-                    $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
-                  );
-                }
-              }
-            }
-            if($_POST["is_reference"])
-            { $xml_url = trim($_POST["reference"]);
-              $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
-              ( $env,
+        foreach($groupes["list"] as $id_groupe => $groupe){
+          $select["id_groupe"] = $id_groupe;
+          if(($groupes_albums = $data->sources($select)) === false){
+            $env->erreur("impossible de lire la liste des albums");
+            return;
+          }
+          $albums[$id_groupe] = $groupes_albums["list"];
+        }
+      }
+      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");
+      $_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();
+        $morceau["groupes"] = array($groupe["id"] => $groupe);
+        if($_POST["album"]){
+          if(!($album = $data->source($_POST["album"], true))){
+            $env->erreur("Impossible de lire les informations de l'album");
+            return;
+          }
+          $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+          if(!$album["permissions"]["contributeur"]){
+            $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
+            return;
+          }
+          $morceau["album"] = $album["id"];
+        }
+        if(isset($_POST["is_derivation"])){
+          foreach($_POST as $key => $value){
+            if(substr($key, 0, 14) == "derivation_id_"){
+              $id_source_derivation = substr($key, 14);
+              $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+              $morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
+                $env,
                 $xml_url,
-                ( $_POST["use_edit_reference_content"] ?
-                    $_POST["edit_reference_content"]
+                (
+                  $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+                    $_POST["edit_derivation_content_".$id_source_derivation]
                   : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
                 ),
-                $_POST["use_edit_reference_content"] ? true : false
+                $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
               );
             }
-            else
-            { if($this->morceau["titre"] = trim($_POST["titre"]))
-              { $this->morceau["licence"] = array
-                ( "id" => $_POST["licence"]
+          }
+        }
+        if(isset($_POST["is_reference"])){
+          $xml_url = trim($_POST["reference"]);
+          $morceau["reference"] = $users_sources_mod->get_source_from_xml(
+            $env,
+            $xml_url,
+            (
+              $_POST["use_edit_reference_content"] ?
+                $_POST["edit_reference_content"]
+              : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+            ),
+            $_POST["use_edit_reference_content"] ? true : false
+          );
+        }
+        else{
+          if(!($morceau["titre"] = trim($_POST["titre"]))){
+            $env->message("merci de pr&eacute;ciser un titre pour le morceau");
+          }
+          $morceau["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)){
+                $morceau["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"];
-                foreach($_POST as $post_key => $post_value)
-                { if(substr($post_key, 0, 13) == "document_nom_")
-                  { if($id_document = substr($post_key, 13))
-                    { $this->morceau["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 le morceau");
             }
-            if(!$env->out("messages") && !$env->out("erreur"))
-            { if
-              ( ( $id_source = $data->add_source
-                  ( $this->morceau["groupes"],
-                    $this->morceau["titre"],
-                    $this->morceau_status_id,
-                    $this->morceau["licence"]["id"],
-                    $this->morceau["documents"],
-                    $this->morceau["reference"],
-                    $this->morceau["derivations"],
-                    $source_infos
-                  )
-                ) !== false
+          }
+        }
+        if(!$env->messages()){
+          if(
+            (
+              $id_source = $data->add_source(
+                $morceau["groupes"],
+                $morceau["titre"],
+                $this->morceau_status_id,
+                $morceau["licence"]["id"],
+                $morceau["documents"],
+                $morceau["reference"],
+                $morceau["derivations"],
+                $source_infos
               )
-              { if($_POST["album"])
-                { if($data->set_source_composition($id_source, $_POST["album"]))
-                  { $env->redirect
-                    ( $env->url("users/morceaux"),
-                      "le morceau a &eacute;t&eacute; ajout&eacute;"
-                    );
-                  }
-                  else $env->erreur("Le morceau a &eacute;t&eacute; ajout&eacute; mais impossible de l'associer &agrave; cet album");
-                }
-                else $env->redirect
-                ( $env->url("users/morceaux"),
-                  "le morceau a &eacute;t&eacute; ajout&eacute;"
-                );
-              }
-              else $env->erreur("Impossible d'ajouter le morceau");
+            ) === false
+          ){
+            $env->erreur("Impossible d'ajouter le morceau");
+            return;
+          }
+          if($album){
+            if(!$data->set_source_composition($id_source, $album["id"])){
+              $env->erreur("Le morceau a été ajouté mais impossible de l'associer à l'album");
+              return;
             }
           }
-          else $env->erreur("Impossible de lire les informations du groupe");
+          $env->redirect(
+            $env->url("users/morceaux"),
+            "le morceau a été ajouté"
+          );
         }
-        $env->set_out("morceau", $this->morceau);
       }
-      else $env->erreur("Impossible de creer le repertoire utilisateur");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("albums", $albums);
+      $env->set_out("licences", $licences);
+      $env->set_out("morceau", $morceau);
+      $env->set_out("source_infos", $source_infos);
+      $env->set_out("groupe", $groupe);
+      $env->set_out("album", $album);
     }
 
     function edit(){
       $env = $this->env();
       $data = $env->data();
-      $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
-      if(!$this->morceau["premissions"]["editeur"])
-      { $env->erreur("vous n'avez la permission d'editer ce morceau");
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
         return;
       }
-      if($data->check_user_uploads_dir())
-      { $web_path = $env->path("web");
-        $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
-        if(($compositions = $data->source_compositions(array("id_source" => $this->morceau["id"]))) !== false)
-        { if($compositions) foreach($compositions[$this->morceau["id"]] as $id_album) { $this->morceau["album"] = $id_album; break; }
-          $env->set_out("groupe", $data->get_admin_groupe($this->morceau["groupes"]));
-          if($_POST)
-          { $source_infos = array
-            ( "date_inscription" => $_POST["date_inscription"],
-              "ordre" => isset($this->morceau["ordre"]) ? $this->morceau["ordre"] : 0
-            );
-            $this->morceau = $data->empty_source(array("id" => $this->morceau["id"]));
-            $users_sources_mod = $env->get_controller("users/sources");
-            if(!($groupe = $data->groupe($_POST["id_groupe"])))
-            { $env->erreur("Impossible de lire les informations du groupe");
+      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(!($morceau = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations du morceau");
+        return;
+      }
+      $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+      if(!$morceau["permissions"]["editeur"]){
+        $env->erreur("vous n'avez pas la permission d'editer ce morceau");
+        return;
+      }
+      if(
+        (
+          $albums = $data->groupes_sources(
+            array(
+              "groupes" => $morceau["groupes"],
+              "id_class" => $this->album_status_id,
+              // on veut les albums pour lesquels chaque groupe du morceau ...
+              "satisfy_all_groupes_access" => true,
+              // ... a le droit de contribution
+              "id_source_access" => $data->id_groupe_status_contributeur()
+            )
+          )
+        ) === false
+      ) return "impossible de lire la liste des albums";
+      if(!$data->check_user_uploads_dir()){
+        $env->erreur("Impossible de creer le repertoire utilisateur");
+        return;
+      }
+      $web_path = $env->path("web");
+      $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
+      if(($compositions = $data->source_compositions(array("id_source" => $morceau["id"]))) === false){
+        $env->erreur("Impossible de lire la liste des compositions");
+        return;
+      }
+      if($compositions) foreach($compositions[$morceau["id"]] as $id_album) { $morceau["album"] = $id_album; break; }
+      if($_POST){
+        $source_infos = array(
+          "date_inscription" => $_POST["date_inscription"],
+          "ordre" => isset($morceau["ordre"]) ? $morceau["ordre"] : 0
+        );
+        $morceau = $data->empty_source(
+          array(
+            "id" => $morceau["id"],
+            "groupes" => $morceau["groupes"]
+          )
+        );
+        $users_sources_mod = $env->get_controller("users/sources");
+        if($_POST["album"]){
+          if($album = $data->source($_POST["album"], true)){
+            $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
+            if(!$album["permissions"]["contributeur"]){
+              $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
               return;
             }
-            $env->set_out("groupe", $groupe);
-            $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-            $this->morceau["groupes"] = array($groupe["id"] => $groupe);
-            $this->morceau["derivations"] = array();
-            if($_POST["album"])
-            { if($album = $data->source($_POST["album"], true))
-              { $album["permissions"] = $data->source_permissions($album, $this->user["id"]);
-                if(!$album["permissions"]["contributeur"])
-                { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album");
-                  return;
-                }
-              }
-              else
-              { $env->erreur("Impossible de lire les informations de l'album");
-                return;
-              }
-              $this->morceau["album"] = $_POST["album"];
-            }
-            if($_POST["is_derivation"])
-            { foreach($_POST as $key => $value)
-              { if(substr($key, 0, 14) == "derivation_id_")
-                { $id_source_derivation = substr($key, 14);
-                  $xml_url = trim($_POST["derivation_".$id_source_derivation]);
-                  $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
-                  ( $env,
-                    $xml_url,
-                    ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
-                        $_POST["edit_derivation_content_".$id_source_derivation]
-                      : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
-                    ),
-                    $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
-                  );
-                }
-              }
-            }
-            if($_POST["is_reference"])
-            { $xml_url = trim($_POST["reference"]);
-              $this->morceau["reference"] = $users_sources_mod->get_source_from_xml
-              ( $env,
+          }
+          else{
+            $env->erreur("Impossible de lire les informations de l'album");
+            return;
+          }
+          $morceau["album"] = $album["id"];
+        }
+        if(isset($_POST["is_derivation"])){
+          foreach($_POST as $key => $value){
+            if(substr($key, 0, 14) == "derivation_id_"){
+              $id_source_derivation = substr($key, 14);
+              $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+              $morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
+                $env,
                 $xml_url,
-                ( $_POST["use_edit_reference_content"] ?
-                    $_POST["edit_reference_content"]
+                (
+                  $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+                    $_POST["edit_derivation_content_".$id_source_derivation]
                   : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
                 ),
-                $_POST["use_edit_reference_content"] ? true : false
+                $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
               );
             }
-            else
-            { if($this->morceau["titre"] = trim($_POST["titre"]))
-              { $this->morceau["licence"] = array
-                ( "id" => $_POST["licence"]
+          }
+        }
+        if(isset($_POST["is_reference"])){
+          $xml_url = trim($_POST["reference"]);
+          $morceau["reference"] = $users_sources_mod->get_source_from_xml(
+            $env,
+            $xml_url,
+            (
+              $_POST["use_edit_reference_content"] ?
+                $_POST["edit_reference_content"]
+              : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+            ),
+            $_POST["use_edit_reference_content"] ? true : false
+          );
+        }
+        else{
+          if(!($morceau["titre"] = trim($_POST["titre"]))){
+            $env->message("merci de pr&eacute;ciser un titre pour le morceau");
+          }
+          $morceau["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)){
+                $morceau["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"];
-                foreach($_POST as $post_key => $post_value)
-                { if(substr($post_key, 0, 13) == "document_nom_")
-                  { if($id_document = substr($post_key, 13))
-                    { $this->morceau["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 le morceau");
             }
-            if(!$env->out("messages") && !$env->out("erreur"))
-            { if
-              ( ( $data->set_source
-                  ( $this->morceau["id"],
-                    $this->morceau["groupes"],
-                    $this->morceau["titre"],
-                    $this->morceau_status_id,
-                    $this->morceau["licence"]["id"],
-                    $this->morceau["documents"],
-                    $this->morceau["reference"],
-                    $this->morceau["derivations"],
-                    $source_infos
-                  )
-                ) !== false
+          }
+        }
+        if(!$env->messages()){
+          if(
+            (
+              $data->set_source(
+                $morceau["id"],
+                $morceau["groupes"],
+                $morceau["titre"],
+                $this->morceau_status_id,
+                $morceau["licence"]["id"],
+                $morceau["documents"],
+                $morceau["reference"],
+                $morceau["derivations"],
+                $source_infos
               )
-              { if($data->del_source_compositions(array("id_source" => $this->morceau["id"])))
-                { if($_POST["album"])
-                  { if($data->set_source_composition($this->morceau["id"], $_POST["album"]))
-                    { $env->redirect
-                      ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
-                        "le morceau a &eacute;t&eacute; modifi&eacute;"
-                      );
-                    }
-                    else $env->erreur("Le morceau a &eacute;t&eacute; modifi&eacute; mais impossible de l'associer &agrave; cet album");
-                  }
-                  else $env->redirect
-                  ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
-                    "le morceau a &eacute;t&eacute; modifi&eacute;"
-                  );
-                }
-                else $env->erreur("Le morceau a &eacute;t&eacute; modifi&eacute; mais impossible de l'associer &agrave; cet album");
-              }
-              else $env->erreur("Impossible de modifier le morceau");
+            ) === false
+          ){
+            $env->erreur("Impossible de modifier le morceau");
+            return;
+          }
+          if(!$data->del_source_compositions(array("id_source" => $morceau["id"]))){
+            $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
+            return;
+          }
+          if($_POST["album"]){
+            if(!$data->set_source_composition($morceau["id"], $_POST["album"])){
+              $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album");
+              return;
             }
           }
+          $env->redirect(
+            $env->url("users/morceaux/edit", array("id" => $morceau["id"])),
+            "le morceau a &eacute;t&eacute; modifi&eacute;"
+          );
         }
-        else $env->erreur("Impossible de lire la liste des compositions");
-        $env->set_out("morceau", $this->morceau);
       }
-      else $env->erreur("Impossible de creer le repertoire utilisateur");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("sources_access", $sources_access);
+      $env->set_out("licences", $licences);
+      $env->set_out("albums", $albums);
+      $env->set_out("morceau", $morceau);
     }
 
     function maj_xml(){
       $data = $env->data();
-      $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
-      if(!$this->morceau["premissions"]["editeur"])
-      { $env->erreur("vous n'avez la permission d'editer ce morceau");
+      if(!($morceau = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations du morceau");
+        return;
+      }
+      $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+      if(!$morceau["permissions"]["editeur"]){
+        $env->erreur("vous n'avez pas la permission d'editer ce morceau");
         return;
       }
       if
       (    isset($_GET[$env->param("id")])
         && isset($_GET[$env->param("xml")])
         && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true)
-      )
-      { $xml_url = "";
-        if($_GET[$env->param("xml")] == "derivation")
-        { if(isset($this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
-          $xml_url = $this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
-        }
-        elseif($_GET[$env->param("xml")] == "reference")
-        { if(isset($this->morceau["reference"]["xml"]["url"]))
-          $xml_url = $this->morceau["reference"]["xml"]["url"];
+      ){
+        $env->erreur("parametre de fichier xml manquant");
+        return;
+      }
+      $xml_url = "";
+      if($_GET[$env->param("xml")] == "derivation"){
+        if(isset($morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
+        $xml_url = $morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
+      }
+      elseif($_GET[$env->param("xml")] == "reference"){
+        if(isset($morceau["reference"]["xml"]["url"]))
+        $xml_url = $morceau["reference"]["xml"]["url"];
+      }
+      if(!$xml_url){
+        $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
+        return;
+      }
+      if(!$env->messages()){
+        if(($res = $data->maj_source_cache($xml_url)) === false){
+          $env->erreur("Impossible de mettre à jour le contenu du fichier XML dans le cache");
+          return;
         }
-        $erreur = "";
-        if($xml_url)
-        { if(($res = $data->maj_source_cache($xml_url)) !== false)
-          { if($res === true)
-            { if($this->morceau = $data->source($this->morceau["id"]))
-              { $env->redirect
-                ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])),
-                  "Les informations du fichier XML ont &eacute;t&eacute; mises &agrave; jour",
-                  2
-                );
-                return;
-              }
-              else $erreur =
-               "le contenu du fichier XML a &eacute;t&eacute; mis &agrave; jour"
-              .", mais impossible de lire les informations du morceau";
-            }
-            else
-            { switch($res)
-              { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
-                case -2: $env->message("Le fichier XML indiqu&eacute; ne contient pas un fichier de source valide"); break;
-                default: $erreur = "Erreur inconnue (?)"; break;
-              }
-            }
+        if($res === true){
+          if($morceau = $data->source($morceau["id"])){
+            $env->redirect(
+              $env->url("users/morceaux/edit", array("id" => $morceau["id"])),
+              "Les informations du fichier XML ont été mises à jour",
+              2
+            );
           }
-          else $erreur = "Impossible de mettre &agrave; jour le contenu du fichier XML dans le cache";
+          else{
+            $env->erreur(
+             "le contenu du fichier XML a &eacute;t&eacute; mis &agrave; jour"
+            .", mais impossible de lire les informations du morceau"
+            );
+          }
+          return;
+        }
+        switch($res){
+          case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
+          case -2: $env->message("Le fichier XML indiqu&eacute; ne contient pas un fichier de source valide"); break;
+          default: $env->erreur("Erreur inconnue (?)"); return;
         }
-        else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
-        if($erreur) $env->erreur($erreur);
-        else $env->run("users/morceaux/edit", array("id" => $this->morceau["id"]));
       }
-      else $env->erreur("parametre de fichier xml manquant");
+      $env->run("users/morceaux/edit", array("get" => array("id" => $morceau["id"])));
     }
 
     function del(){
       $env = $this->env();
       $data = $env->data();
-      $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]);
-      if($this->morceau["premissions"]["admin"])
-      { if($data->del_source($this->morceau["id"]))
-        { $env->redirect
-          ( $env->url("users/morceaux"),
-            "le morceau a &eacute;t&eacute; supprim&eacute;"
-          );
-        }
-        else $env->erreur("Impossible de supprimer le morceau");
+      if(!($morceau = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations du morceau");
+        return;
+      }
+      $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+      if(!$morceau["permissions"]["admin"]){
+        $env->erreur("vous n'avez pas la permission d'effacer ce morceau");
+        return;
+      }
+      if(!$data->del_source($morceau["id"])){
+        $env->erreur("Impossible de supprimer le morceau");
+        return;
       }
-      else $env->erreur("vous n'avez la permission d'effacer ce morceau");
+      $env->redirect(
+        $env->url("users/morceaux"),
+        "le morceau a été supprimé"
+      );
     }
 
   }
index 8d3d1ea..0ef6007 100644 (file)
@@ -1,11 +1,7 @@
 <?php
 
-  class mw_users_pistes extends mw_controller
-  {
-    var $groupes;
-    var $albums;
-    var $morceaux;
-    var $piste;
+  class mw_users_pistes extends mw_controller{
+
     var $user;
 
     var $status;
     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;
-          if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
-          if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
-          if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
-        }
-        if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id))
-        { if($this->user = $env->user())
-          { if(($this->groupes = $data->groupes($this->user["id"])) !== false)
-            { $env->set_out("groupes", $this->groupes);
-              $this->albums = array();
-              $this->morceaux = array();
-              if($this->groupes["total"] > 0)
-              { foreach($this->groupes["list"] as $id_groupe => $groupe)
-                { $this->albums[$id_groupe] = array();
-                  $select = array
-                  ( "status" => $this->album_status_id,
-                    "id_user" => $this->user["id"],
-                    "id_groupe" => $id_groupe
-                  );
-                  if(($albums = $data->sources($select)) !== false)
-                  { $this->albums[$id_groupe] = $albums["list"];
-                  }
-                  else
-                  { $this->albums = false;
-                    break;
-                  }
-
-                  $this->morceaux[$id_groupe] = array();
-                  $select = array
-                  ( "status" => $this->morceau_status_id,
-                    "id_user" => $this->user["id"],
-                    "id_groupe" => $id_groupe
-                  );
-                  if(($morceaux = $data->sources($select)) !== false)
-                  { foreach($morceaux["list"] as $id_morceau => $morceau)
-                    { if(($compositions = $data->source_compositions(array("id_source" => $id_morceau))) !== false)
-                      { if($compositions) foreach($compositions[$id_morceau] as $_id_album) { $morceaux["list"][$id_morceau]["album"] = $_id_album; break; }
-                        if(!isset($morceaux["list"][$id_morceau]["album"])) $morceaux["list"][$id_morceau]["album"] = 0;
-                      }
-                      else
-                      { $this->morceaux = false;
-                        break;
-                      }
-                    }
-                    if($this->morceaux !== false)
-                    { foreach($morceaux["list"] as $id_morceau => $morceau)
-                      { if(!isset($this->morceaux[$id_groupe][$morceau["album"]])) $this->morceaux[$id_groupe][$morceau["album"]] = array();
-                        $this->morceaux[$id_groupe][$morceau["album"]][$id_morceau] = $morceau;
-                      }
-                    }
-                  }
-                  else
-                  { $this->morceaux = false;
-                    break;
-                  }
-                  if($this->morceaux === false) break;
-                }
-              }
-              if($this->albums !== false && $this->morceaux !== false)
-              { $env->set_out("albums", $this->albums);
-                $env->set_out("morceaux", $this->morceaux);
-                if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml")
-                { if(($this->piste = $data->source($_GET[$env->param("id")], true)) !== false && $this->piste)
-                  {
-                  }
-                  else return "Impossible de lire les informations de la source";
-                }
-                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 albums";
-            }
-            else return "Impossible de lire la liste des groupes";
-          }
-          else return "Vous devez &ecirc;tre identifier pour acc&eacute;der &agrave; cette page";
-        }
-        else
-        { if(!isset($this->album_status_id)) return "Type de source inconnu: album";
-          return "Type de source inconnu: morceau";
-        }
+      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;
+        if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
+        if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
+        if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
+      }
+      if(
+            !isset($this->album_status_id)
+        ||  !isset($this->morceau_status_id)
+        ||  !isset($this->piste_status_id)
+      ){
+        return "liste des status de source incomplète";
+      }
+      if(!($this->user = $env->user())){
+        return "Vous devez être identifié pour accéder à cette page";
       }
-      else return "Impossible de lire la liste des status de source";
       return true;
     }
 
     function index(){
       $env = $this->env();
       $data = $env->data();
-      $select = array();
-      $select["status"] = $this->piste_status_id;
-      $select["id_user"] = $this->user["id"];
-      $select["order_by"] = "ordre";
-      if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")];
-      if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $select["id_composition"] = $_GET[$env->param("morceau")];
-      $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0;
-      if(($pistes = $data->sources($select)) !== false)
-      { foreach($pistes["list"] as $id_piste => $piste)
-        { $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      $morceaux_groupes = $groupes["list"];
+      $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($pistes["list"] as $id_piste => $piste)
-          { if(isset($_POST["ordre_".$id_piste]))
-            { if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false)
-              { $OK = false;
-                break;
-              }
+      }
+      if($id_groupe){
+        $morceaux_groupes = array($id_groupe => $groupes["list"][$id_groupe]);
+      }
+      if(
+        (
+          $morceaux = $data->groupes_sources(
+            array(
+              "groupes" => $morceaux_groupes,
+              "id_class" => $this->morceau_status_id,
+              // on veut les morceaux pour lesquels au moins un groupe (et pas tous) ...
+              "satisfy_all_groupes_access" => false,
+              // ... a le droit de contribution
+              "id_source_access" => $data->id_groupe_status_contributeur()
+            )
+          )
+        ) === false
+      ) return "impossible de lire la liste des morceaux";
+      if($id_morceau = isset($_GET[$env->param("morceau")]) ? $_GET[$env->param("morceau")] : false){
+        if(!($morceau = $data->source($id_morceau, true))){
+          $env->erreur("Impossible de lire les informations du morceau");
+          return;
+        }
+      }
+      $select = array(
+        "status" => $this->piste_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($id_morceau !== false) $select["id_composition"] = $id_morceau;
+      if(($pistes = $data->sources($select)) === false){
+        $env->erreur("impossible de lire la liste des pistes");
+        return;
+      }
+      foreach($pistes["list"] as $id_piste => $piste){
+        $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+      }
+      if($_POST){
+        foreach($pistes["list"] as $id_piste => $piste){
+          if(isset($_POST["ordre_".$id_piste])){
+            if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false){
+              $env->erreur("Impossible d'enregistrer l'ordre des pistes");
+              return;
             }
           }
-          if($OK)
-          { $get_params = array();
-            if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")];
-            if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $get_params["morceau"] = $_GET[$env->param("morceau")];
-            $env->redirect
-            ( $env->url("users/pistes", $get_params),
-              "l'ordre des sources a &eacute;t&eacute; enregistr&eacute;"
-            );
-          }
-          else $env->erreur("Impossible d'enregistrer l'ordre des sources");
         }
-        $env->set_out("pistes", $pistes);
+        $get_params = array();
+        if($id_groupe) $get_params["groupe"] = $id_groupe;
+        if($id_morceau) $get_params["morceau"] = $id_morceau;
+        $env->redirect(
+          $env->url("users/pistes", $get_params),
+          "l'ordre des pistes a été enregistré"
+        );
       }
-      else $env->erreur("Impossible de lire la liste des sources");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("morceaux", $morceaux);
+      $env->set_out("pistes", $pistes);
     }
 
     function add(){
       $env = $this->env();
       $data = $env->data();
-      if($data->check_user_uploads_dir())
-      { $web_path = $env->path("web");
-        $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
-        $this->piste = $data->empty_source();
-        $users_sources_mod = $env->get_controller("users/sources");
-        $source_infos = array
-        ( "date_inscription" => date("Y")."-".date("m")."-".date("d"),
-          "ordre" => 0
+      $piste = $data->empty_source();
+      $source_infos = array(
+        "date_inscription" => date("Y-m-d"),
+        "ordre" => 0
+      );
+      $groupe = false;
+      $morceau = false;
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
+        return;
+      }
+      $morceaux = array();
+      if($groupes["total"] > 0){
+        $select = array(
+          "status" => $this->morceau_status_id,
+          "id_user" => $this->user["id"]
         );
-        if($_POST)
-        { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false)
-          { $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-            $this->piste["groupes"] = array($groupe["id"] => $groupe);
-            $env->set_out("groupe", $groupe);
+        foreach($groupes["list"] as $id_groupe => $groupe){
+          $select["id_groupe"] = $id_groupe;
+          if(($groupes_morceaux = $data->sources($select)) === false){
+            $env->erreur("impossible de lire la liste des morceaux");
+            return;
+          }
+          $morceaux[$id_groupe] = $groupes_morceaux["list"];
+        }
+      }
+      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");
+      $_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();
+        $piste["groupes"] = array($groupe["id"] => $groupe);
+        if($_POST["morceau"]){
+          if(!($morceau = $data->source($_POST["morceau"], true))){
+            $env->erreur("Impossible de lire les informations du morceau");
+            return;
           }
-          else
-          { $env->erreur("Impossible de lire les informations du groupe");
+          $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+          if(!$morceau["permissions"]["contributeur"]){
+            $env->erreur("vous n'avez pas la permission d'ajouter une piste dans ce morceau");
             return;
           }
-          if($_POST["morceau"])
-          { if($morceau = $data->source($_POST["morceau"], true))
-            { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
-              if(!$morceau["permissions"]["contributeur"])
-              { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
-                return;
-              }
-            }
-            else
-            { $env->erreur("impossible de lire les informations du morceau");
-              return;
+          $piste["morceau"] = $morceau["id"];
+        }
+        if(isset($_POST["is_derivation"])){
+          foreach($_POST as $key => $value){
+            if(substr($key, 0, 14) == "derivation_id_"){
+              $id_source_derivation = substr($key, 14);
+              $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+              $piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
+                $env,
+                $xml_url,
+                (
+                  $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+                    $_POST["edit_derivation_content_".$id_source_derivation]
+                  : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+                ),
+                $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+              );
             }
-            $this->piste["morceau"] = $_POST["morceau"];
           }
-          if(isset($_POST["is_derivation"]))
-          { foreach($_POST as $key => $value)
-            { if(substr($key, 0, 14) == "derivation_id_")
-              { $id_source_derivation = substr($key, 14);
-                $xml_url = trim($_POST["derivation_".$id_source_derivation]);
-                $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
-                ( $env,
-                  $xml_url,
-                  ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
-                      $_POST["edit_derivation_content_".$id_source_derivation]
-                    : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
-                  ),
-                  $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
+        }
+        if(isset($_POST["is_reference"])){
+          $xml_url = trim($_POST["reference"]);
+          $piste["reference"] = $users_sources_mod->get_source_from_xml(
+            $env,
+            $xml_url,
+            (
+              $_POST["use_edit_reference_content"] ?
+                $_POST["edit_reference_content"]
+              : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+            ),
+            $_POST["use_edit_reference_content"] ? true : false
+          );
+        }
+        else{
+          if(!($piste["titre"] = trim($_POST["titre"]))){
+            $env->message("merci de pr&eacute;ciser un titre pour la piste");
+          }
+          $piste["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)){
+                $piste["documents"][$id_document] = array(
+                  "nom" => $_POST["document_nom_".$id_document],
+                  "url" => $_POST["document_url_".$id_document]
                 );
               }
             }
           }
-          if(isset($_POST["is_reference"]))
-          { $xml_url = trim($_POST["reference"]);
-            $this->piste["reference"] = $users_sources_mod->get_source_from_xml
-            ( $env,
-              $xml_url,
-              ( $_POST["use_edit_reference_content"] ?
-                  $_POST["edit_reference_content"]
-                : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
-              ),
-              $_POST["use_edit_reference_content"] ? true : false
-            );
-          }
-          else
-          { if($this->piste["titre"] = trim($_POST["titre"]))
-            { $this->piste["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->piste["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 la source");
+        }
+        if(!$env->messages()){
+          if(
+            (
+              $id_source = $data->add_source(
+                $piste["groupes"],
+                $piste["titre"],
+                $this->piste_status_id,
+                $piste["licence"]["id"],
+                $piste["documents"],
+                $piste["reference"],
+                $piste["derivations"],
+                $source_infos
+              )
+            ) === false
+          ){
+            $env->erreur("Impossible d'ajouter la piste");
+            return;
           }
-          if(!$env->out("messages") && !$env->out("erreur"))
-          { if
-            ( ( $id_source = $data->add_source
-                ( $this->piste["groupes"],
-                  $this->piste["titre"],
-                  $this->piste_status_id,
-                  $this->piste["licence"]["id"],
-                  $this->piste["documents"],
-                  $this->piste["reference"],
-                  $this->piste["derivations"],
-                  $source_infos
-                )
-              ) !== false
-            )
-            { if($_POST["morceau"])
-              { if($data->set_source_composition($id_source, $_POST["morceau"]))
-                { $env->redirect
-                  ( $env->url("users/pistes"),
-                    "la source a &eacute;t&eacute; ajout&eacute;e"
-                  );
-                }
-                else $env->erreur("La source a &eacute;t&eacute; ajout&eacute;e mais impossible de l'associer &agrave; ce morceau");
-              }
-              else $env->redirect
-              ( $env->url("users/pistes"),
-                "la source a &eacute;t&eacute; ajout&eacute;e"
-              );
+          if($morceau){
+            if(!$data->set_source_composition($id_source, $morceau["id"])){
+              $env->erreur("La piste a été ajoutée mais impossible de l'associer au morceau");
+              return;
             }
-            else $env->erreur("Impossible d'ajouter la source");
           }
+          $env->redirect(
+            $env->url("users/pistes"),
+            "la piste a été ajoutée"
+          );
         }
-        $env->set_out("piste", $this->piste);
       }
-      else $env->erreur("Impossible de creer le repertoire utilisateur");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("morceaux", $morceaux);
+      $env->set_out("licences", $licences);
+      $env->set_out("piste", $piste);
+      $env->set_out("source_infos", $source_infos);
+      $env->set_out("groupe", $groupe);
+      $env->set_out("morceau", $morceau);
     }
 
     function edit(){
       $env = $this->env();
       $data = $env->data();
-      $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
-      if(!$this->piste["premissions"]["editeur"])
-      { $env->erreur("vous n'avez la permission d'editer cette source");
+      if(($groupes = $data->groupes($this->user["id"])) === false){
+        $env->erreur("Impossible de lire la liste des groupes");
         return;
       }
-      if($data->check_user_uploads_dir())
-      { $web_path = $env->path("web");
-        $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"];
-        if(($compositions = $data->source_compositions(array("id_source" => $this->piste["id"]))) !== false)
-        { if($compositions) foreach($compositions[$this->piste["id"]] as $id_morceau) { $this->piste["morceau"] = $id_morceau; break; }
-          $env->set_out("groupe", $data->get_admin_groupe($this->piste["groupes"]));
-          if($_POST)
-          { $source_infos = array
-            ( "date_inscription" => $_POST["date_inscription"],
-              "ordre" => isset($this->piste["ordre"]) ? $this->piste["ordre"] : 0
-            );
-            $this->piste = $data->empty_source(array("id" => $this->piste["id"]));
-            $users_sources_mod = $env->get_controller("users/sources");
-            if(!($groupe = $data->groupe($_POST["id_groupe"])))
-            { $env->erreur("Impossible de lire les informations du groupe");
+      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(!($piste = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations de la piste");
+        return;
+      }
+      $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+      if(!$piste["permissions"]["editeur"]){
+        $env->erreur("vous n'avez pas la permission d'editer cette piste");
+        return;
+      }
+      if(
+        (
+          $morceaux = $data->groupes_sources(
+            array(
+              "groupes" => $piste["groupes"],
+              "id_class" => $this->morceau_status_id,
+              // on veut les morceaux pour lesquels chaque groupe du morceau ...
+              "satisfy_all_groupes_access" => true,
+              // ... a le droit de contribution
+              "id_source_access" => $data->id_groupe_status_contributeur()
+            )
+          )
+        ) === false
+      ) return "impossible de lire la liste des morceaux";
+      if(!$data->check_user_uploads_dir()){
+        $env->erreur("Impossible de creer le repertoire utilisateur");
+        return;
+      }
+      $web_path = $env->path("web");
+      $_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");
+        return;
+      }
+      if($compositions) foreach($compositions[$piste["id"]] as $id_morceau) { $piste["morceau"] = $id_morceau; break; }
+      if($_POST){
+        $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"]
+          )
+        );
+        $users_sources_mod = $env->get_controller("users/sources");
+        if($_POST["morceau"]){
+          if($morceau = $data->source($_POST["morceau"], true)){
+            $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
+            if(!$morceau["permissions"]["contributeur"]){
+              $env->erreur("vous n'avez pas la permission d'ajouter une  piste dans ce morceau");
               return;
             }
-            $env->set_out("groupe", $groupe);
-            $groupe["id_groupe_status"] = $data->id_groupe_status_admin();
-            $this->piste["groupes"] = array($groupe["id"] => $groupe);
-            $this->piste["derivations"] = array();
-            if($_POST["morceau"])
-            { if($morceau = $data->source($_POST["morceau"], true))
-              { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
-                if(!$morceau["permissions"]["contributeur"])
-                { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau");
-                  return;
-                }
-              }
-              else
-              { $env->erreur("impossible de lire les informations du morceau");
-                return;
-              }
-              $this->piste["morceau"] = $_POST["morceau"];
-            }
-            if(isset($_POST["is_derivation"]))
-            { foreach($_POST as $key => $value)
-              { if(substr($key, 0, 14) == "derivation_id_")
-                { $id_source_derivation = substr($key, 14);
-                  $xml_url = trim($_POST["derivation_".$id_source_derivation]);
-                  $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml
-                  ( $env,
-                    $xml_url,
-                    ( $_POST["use_edit_derivation_content_".$id_source_derivation] ?
-                        $_POST["edit_derivation_content_".$id_source_derivation]
-                      : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
-                    ),
-                    $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
-                  );
-                }
-              }
-            }
-            if(isset($_POST["is_reference"]))
-            { $xml_url = trim($_POST["reference"]);
-              $this->piste["reference"] = $users_sources_mod->get_source_from_xml
-              ( $env,
+          }
+          else{
+            $env->erreur("Impossible de lire les informations du morceau");
+            return;
+          }
+          $piste["morceau"] = $morceau["id"];
+        }
+        if(isset($_POST["is_derivation"])){
+          foreach($_POST as $key => $value){
+            if(substr($key, 0, 14) == "derivation_id_"){
+              $id_source_derivation = substr($key, 14);
+              $xml_url = trim($_POST["derivation_".$id_source_derivation]);
+              $piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml(
+                $env,
                 $xml_url,
-                ( $_POST["use_edit_reference_content"] ?
-                    $_POST["edit_reference_content"]
+                (
+                  $_POST["use_edit_derivation_content_".$id_source_derivation] ?
+                    $_POST["edit_derivation_content_".$id_source_derivation]
                   : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
                 ),
-                $_POST["use_edit_reference_content"] ? true : false
+                $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false
               );
             }
-            else
-            { if($this->piste["titre"] = trim($_POST["titre"]))
-              { $this->piste["licence"] = array
-                ( "id" => $_POST["licence"]
+          }
+        }
+        if(isset($_POST["is_reference"])){
+          $xml_url = trim($_POST["reference"]);
+          $piste["reference"] = $users_sources_mod->get_source_from_xml(
+            $env,
+            $xml_url,
+            (
+              $_POST["use_edit_reference_content"] ?
+                $_POST["edit_reference_content"]
+              : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "")
+            ),
+            $_POST["use_edit_reference_content"] ? true : false
+          );
+        }
+        else{
+          if(!($piste["titre"] = trim($_POST["titre"]))){
+            $env->message("merci de pr&eacute;ciser un titre pour la piste");
+          }
+          $piste["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)){
+                $piste["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"];
-                foreach($_POST as $post_key => $post_value)
-                { if(substr($post_key, 0, 13) == "document_nom_")
-                  { if($id_document = substr($post_key, 13))
-                    { $this->piste["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 la source");
             }
-            if(!$env->out("messages") && !$env->out("erreur"))
-            { if
-              ( ( $data->set_source
-                  ( $this->piste["id"],
-                    $this->piste["groupes"],
-                    $this->piste["titre"],
-                    $this->piste_status_id,
-                    $this->piste["licence"]["id"],
-                    $this->piste["documents"],
-                    $this->piste["reference"],
-                    $this->piste["derivations"],
-                    $source_infos
-                  )
-                ) !== false
+          }
+        }
+        if(!$env->messages()){
+          if(
+            (
+              $data->set_source(
+                $piste["id"],
+                $piste["groupes"],
+                $piste["titre"],
+                $this->piste_status_id,
+                $piste["licence"]["id"],
+                $piste["documents"],
+                $piste["reference"],
+                $piste["derivations"],
+                $source_infos
               )
-              { if($data->del_source_compositions(array("id_source" => $this->piste["id"])))
-                { if($_POST["morceau"])
-                  { if($data->set_source_composition($this->piste["id"], $_POST["morceau"]))
-                    { $env->redirect
-                      ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
-                        "la source a &eacute;t&eacute; modifi&eacute;e"
-                      );
-                    }
-                    else $env->erreur("La source a &eacute;t&eacute; modifi&eacute;e mais impossible de l'associer &agrave; ce morceau");
-                  }
-                  else $env->redirect
-                  ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
-                    "la source a &eacute;t&eacute; modifi&eacute;e"
-                  );
-                }
-                else $env->erreur("La source a &eacute;t&eacute; modifi&eacute;e mais impossible de l'associer &agrave; ce morceau");
-              }
-              else $env->erreur("Impossible de modifier la source");
+            ) === false
+          ){
+            $env->erreur("Impossible de modifier la piste");
+            return;
+          }
+          if(!$data->del_source_compositions(array("id_source" => $piste["id"]))){
+            $env->erreur("La piste a été modifiée mais impossible de l'associer à ce morceau");
+            return;
+          }
+          if($_POST["morceau"]){
+            if(!$data->set_source_composition($piste["id"], $_POST["morceau"])){
+              $env->erreur("La piste a été modifiée mais impossible de l'associer à ce morceau");
+              return;
             }
           }
+          $env->redirect(
+            $env->url("users/pistes/edit", array("id" => $piste["id"])),
+            "la piste a été modifiée"
+          );
         }
-        else $env->erreur("Impossible de lire la liste des compositions");
-        $env->set_out("piste", $this->piste);
       }
-      else $env->erreur("Impossible de creer le repertoire utilisateur");
+      $env->set_out("groupes", $groupes);
+      $env->set_out("sources_access", $sources_access);
+      $env->set_out("licences", $licences);
+      $env->set_out("morceaux", $morceaux);
+      $env->set_out("piste", $piste);
     }
 
     function maj_xml(){
-      $env = $this->env();
       $data = $env->data();
-      $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
-      if(!$this->piste["premissions"]["editeur"])
-      { $env->erreur("vous n'avez la permission d'editer cette source");
+      if(!($piste = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations de la piste");
+        return;
+      }
+      $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+      if(!$piste["permissions"]["editeur"]){
+        $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)
-      )
-      { $xml_url = "";
-        if($_GET[$env->param("xml")] == "derivation")
-        { if(isset($this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
-          $xml_url = $this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
-        }
-        elseif($_GET[$env->param("xml")] == "reference")
-        { if(isset($this->piste["reference"]["xml"]["url"]))
-          $xml_url = $this->piste["reference"]["xml"]["url"];
+      ){
+        $env->erreur("parametre de fichier xml manquant");
+        return;
+      }
+      $xml_url = "";
+      if($_GET[$env->param("xml")] == "derivation"){
+        if(isset($piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]))
+        $xml_url = $piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"];
+      }
+      elseif($_GET[$env->param("xml")] == "reference"){
+        if(isset($piste["reference"]["xml"]["url"]))
+        $xml_url = $piste["reference"]["xml"]["url"];
+      }
+      if(!$xml_url){
+        $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
+        return;
+      }
+      if(!$env->messages()){
+        if(($res = $data->maj_source_cache($xml_url)) === false){
+          $env->erreur("Impossible de mettre à jour le contenu du fichier XML dans le cache");
+          return;
         }
-        $erreur = "";
-        if($xml_url)
-        { if(($res = $data->maj_source_cache($xml_url)) !== false)
-          { if($res === true)
-            { if($this->piste = $data->source($this->piste["id"]))
-              { $env->redirect
-                ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])),
-                  "Les informations du fichier XML ont &eacute;t&eacute; mises &agrave; jour",
-                  2
-                );
-                return;
-              }
-              else $erreur =
-               "le contenu du fichier XML a &eacute;t&eacute; mis &agrave; jour"
-              .", mais impossible de lire les informations de la source";
-            }
-            else
-            { switch($res)
-              { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
-                case -2: $env->message("Le fichier XML indiqu&eacute; ne contient pas un fichier de source valide"); break;
-                default: $erreur = "Erreur inconnue (?)"; break;
-              }
-            }
+        if($res === true){
+          if($piste = $data->source($piste["id"])){
+            $env->redirect(
+              $env->url("users/pistes/edit", array("id" => $piste["id"])),
+              "Les informations du fichier XML ont été mises à jour",
+              2
+            );
+          }
+          else{
+            $env->erreur(
+             "le contenu du fichier XML a &eacute;t&eacute; mis &agrave; jour"
+            .", mais impossible de lire les informations de la piste"
+            );
           }
-          else $erreur = "Impossible de mettre &agrave; jour le contenu du fichier XML dans le cache";
+          return;
+        }
+        switch($res){
+          case -1: $env->message("Impossible de lire le contenu du fichier XML"); break;
+          case -2: $env->message("Le fichier XML indiqu&eacute; ne contient pas un fichier de source valide"); break;
+          default: $env->erreur("Erreur inconnue (?)"); return;
         }
-        else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations");
-        if($erreur) $env->erreur($erreur);
-        else $env->run("users/pistes/edit", array("id" => $this->piste["id"]));
       }
-      else $env->erreur("parametre de fichier xml manquant");
+      $env->run("users/pistes/edit", array("get" => array("id" => $piste["id"])));
     }
 
     function del(){
       $env = $this->env();
       $data = $env->data();
-      $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]);
-      if($this->piste["premissions"]["admin"])
-      { if($data->del_source($this->piste["id"]))
-        { $env->redirect
-          ( $env->url("users/pistes"),
-            "la source a &eacute;t&eacute; supprim&eacute;e"
-          );
-        }
-        else $env->erreur("Impossible de supprimer la source");
+      if(!($piste = $data->source($_GET[$env->param("id")], true))){
+        $env->erreur("Impossible de lire les informations de la piste");
+        return;
+      }
+      $piste["permissions"] = $data->source_permissions($piste, $this->user["id"]);
+      if(!$piste["permissions"]["admin"]){
+        $env->erreur("vous n'avez pas la permission d'effacer cette piste");
+        return;
+      }
+      if(!$data->del_source($piste["id"])){
+        $env->erreur("Impossible de supprimer la piste");
+        return;
       }
-      else $env->erreur("vous n'avez la permission d'effacer cette source");
+      $env->redirect(
+        $env->url("users/pistes"),
+        "la piste a été supprimée"
+      );
     }
 
   }
index 0847036..b087aae 100644 (file)
@@ -3,7 +3,7 @@
   class sml_data_sources_xml_format extends mw_data
   {
 
-    var $status;
+    var $status; // classes de sources - table sml_classes
     var $source;
     var $groupes;
     var $licence;
@@ -91,7 +91,7 @@
 
     function empty_source($params = array())
     { $source = array
-      ( "auteurs" => array(),
+      ( "groupes" => array(),
         "titre" => "",
         "from" => "",
         "licence" => array
         { $this->buffer = $this->sxml->data["source"][0];
           foreach($this->buffer["subs"] as $key => $value)
           { if($key == "auteur")
-            { $source["auteurs"][] = array
+            { $source["groupes"][] = array
               ( "nom" => $value[0]["data"]
               );
             }
             }
           }
           $source["auteur"] = "";
-          foreach($source["auteurs"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"];
+          foreach($source["groupes"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"];
         }
         else return false;
       }
index de997f9..44dec36 100644 (file)
@@ -16,7 +16,8 @@
          .", #--sml_sources_authors.id_sources_access as id_groupe_status"
         ." FROM #--sml_authors, #--sml_sources_authors"
         ." WHERE #--sml_sources_authors.id_author=#--sml_authors.id"
-        ." AND #--sml_sources_authors.id_source=".$this->eq($id_source);
+        ." AND #--sml_sources_authors.id_source=".$this->eq($id_source)
+        ." ORDER BY nom";
         $rst = $sgbd->query($sql);
         $groupes = array();
         while($v_rst = $sgbd->fetch_assoc($rst))
       return $groupes;
     }
 
+    function groupes_sources($params){
+      if(!isset($params["groupes"])) return false;
+      if(!isset($params["id_source_access"])) return false;
+      $satisfy_all_groupes_access = true;
+      if(isset($params["satisfy_all_groupes_access"])){
+        $satisfy_all_groupes_access = $params["satisfy_all_groupes_access"] ? true : false;
+      }
+      $source_access_ids = "";
+      if($params["id_source_access"] == $this->id_groupe_status_contributeur()){
+        $source_access_ids =
+         $this->id_groupe_status_contributeur()
+        .", ".$this->id_groupe_status_editeur()
+        .", ".$this->id_groupe_status_admin();
+      }
+      elseif($params["id_source_access"] == $this->id_groupe_status_editeur()){
+        $source_access_ids =
+         $this->id_groupe_status_editeur()
+        .", ".$this->id_groupe_status_admin();
+      }
+      elseif($params["id_source_access"] == $this->id_groupe_status_admin()){
+        $source_access_ids =
+         $this->id_groupe_status_admin();
+      }
+      if(!$source_access_ids) return false;
+      $sources = array();
+      if(!($groupes = $params["groupes"])) return $sources;
+      $author_ids = "";
+      foreach($groupes as $i => $groupe) $author_ids .= ($author_ids ? ", " : "").$groupe["id"];
+      $sgbd = $this->sgbd();
+      try{
+        $sql =
+         "SELECT #--sml_sources.*, #--sml_sources_authors.id_author"
+        ." FROM #--sml_sources, #--sml_sources_authors"
+        ." WHERE #--sml_sources.id=#--sml_sources_authors.id_source"
+        ." AND #--sml_sources_authors.id_sources_access IN(".$source_access_ids.")"
+        ." AND #--sml_sources_authors.id_author IN(".$author_ids.")";
+        if(isset($params["id_class"])){
+          $sql .= " AND #--sml_sources.id_class=".$this->eq($params["id_class"]);
+        }
+        $rst = $sgbd->query($sql);
+        while($v_rst = $sgbd->fetch_assoc($rst)){
+          if(!isset($sources[$v_rst["id"]])){
+            $sources[$v_rst["id"]] = $v_rst;
+            $sources[$v_rst["id"]]["authors"] = array();
+          }
+          $sources[$v_rst["id"]]["authors"][] = $v_rst["id_author"];
+        }
+        $sgbd->free_result($rst);
+        foreach($sources as $id_source => $source){
+          if($satisfy_all_groupes_access){
+            if(count($source["authors"]) < count($groupes)){
+              unset($sources[$id_source]);
+              continue;
+            }
+          }
+          if(!($sources[$id_source] = $this->load_source($source))) return false;
+        }
+      }
+      catch(Exception $e) { $sources = false; }
+      return $sources;
+    }
+
     function add_source_groupe($id_source, $id_groupe, $id_groupe_status)
     { $sgbd = $this->sgbd();
       try{
 
 // --------------------------------------------------------------------
 
+    function sources_access(){
+      $sgbd = $this->sgbd();
+      $sources_access = array();
+      try{
+        $sql = "SELECT * FROM #--sml_sources_access";
+        $rst = $sgbd->query($sql);
+        while($v_rst = $sgbd->fetch_assoc($rst)) $sources_access[$v_rst["id"]] = $v_rst;
+        $sgbd->free_result($rst);
+      }
+      catch(Exception $e) { $sources_access = false; }
+      return $sources_access;
+    }
+
     function id_groupe_status_admin()        { return 1; }
     function id_groupe_status_editeur()      { return 2; }
     function id_groupe_status_contributeur() { return 3; }
       return $groupe;
     }
 
+    function get_editor_groupes($groupes){
+      $editor_groupes = array();
+      if(is_array($groupes)) foreach($groupes as $source_groupe)
+      { if(
+              $source_groupe["id_groupe_status"] == $this->id_groupe_status_admin()
+          ||  $source_groupe["id_groupe_status"] == $this->id_groupe_status_editeur()
+        ){
+          $editor_groupes[] = $source_groupe;
+        }
+      }
+      return $editor_groupes;
+    }
+
     function source_permissions($source, $id_user)
     { $permissions = array
       ( "admin" => false,
index 8e8056e..f4d78bd 100644 (file)
@@ -5,7 +5,7 @@
     var $status;
 
     # ----------------------------------------------------------------------------------------
-    #                                                                         status de source
+    #                                                                        classes de source
     #
 
     function source_status(){
@@ -52,7 +52,7 @@
       $ORDER_FROM_SOURCES_INFOS = !$ORDER_FIELD_EXISTS;
       $sources = array("list" => array(), "total" => 0);
       $COUNT_SELECT = "SELECT count(*) as n";
-      $SELECT = "SELECT #--sml_sources.*, #--sml_sources.id_class as status";
+      $SELECT = "SELECT #--sml_sources.*, #--sml_sources.id_class as `status`";
       if($ORDER_FROM_SOURCES_INFOS){
         if($order_by == "ordre"){
           $SELECT .= ", (0 + #--sml_sources_infos.`value`) as ordre";
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id=#--sml_sources_authors.id_source"
       ." AND #--sml_sources_authors.id_author=#--sml_authors.id"
-      ." AND #--sml_authors.id_user=".$this->eq($id_user)
-      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin();
+      ." AND #--sml_authors.id_user=".$this->eq($id_user)/*
+      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin()*/;
       if(isset($id_groupe)) $WHERE .=
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id=#--sml_sources_authors.id_source"
-      ." AND #--sml_sources_authors.id_author=".$this->eq($id_groupe)
-      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin();
+      ." AND #--sml_sources_authors.id_author=".$this->eq($id_groupe)/*
+      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin()*/;
       if(isset($status)) $WHERE .=
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id_class=".$this->eq($status);
index bee10b0..1a7239c 100644 (file)
@@ -1,40 +1,46 @@
 /* ------------------------------- liste groupes ----------- */
 
-ul.groupes
-{ list-style-type: none;
+ul.groupes{
+  list-style-type: none;
 }
 
-ul.groupes li
-{ margin: 10px 10px 10px 100px;
+ul.groupes li{
   padding: 0px;
-/*  float: left;*/
-  width: 370px;
+  float: left;
+  width: 33%;
 }
 
-ul.groupes li h4
-{ font-size: 16px;
+ul.groupes li h4{
+  font-size: 1.2em;
+  font-weight: bold;
   margin: 0px;
   padding: 0px;
+  margin: 10px;
 }
 
-ul.groupes li h4 a
-{ display: block;
+ul.groupes li h4 a{
+  display: block;
   padding: 5px;
-  width: 370px;
   height: 100px;
+  border: solid 1px #d9d9d9;
+  border-radius: 3px 3px 3px 3px;
+  -moz-border-radius: 3px 3px 3px 3px;
+}
+ul.groupes li h4 a:hover{
+  color: #000066;
+  background-color: #f1f1f1;
 }
 
-ul.groupes li h4 a img
-{ display: block;
+ul.groupes li h4 a img{
+  display: block;
   float: left;
 }
 
-ul.groupes li h4 a span
-{ float: right;
+ul.groupes li h4 a span{
   display: block;
+  margin-left: 150px;
   padding: 3px;
   text-align: right;
-  width: 238px;
 }
 
 ul.groupes li .infos li
@@ -55,6 +61,10 @@ ul.groupes li .infos li
 
 /* ------------------------------- page album ----------- */
 
+.logo_album{
+  text-align: center;
+}
+
 p#play_all
 {
 }
@@ -113,7 +123,7 @@ p#play_all a
   float: right;
   padding: 10px 5px 0px 5px;
 }
-
+/*
 ul#lien_contact
 { margin: 20px 18px 0px 0px;
   padding: 0px;
@@ -130,7 +140,7 @@ ul#lien_contact li a
   text-align: right;
   padding: 5px 5px 0px 5px;
 }
-
+*/
 /* ------------------------------- albums (page groupe) --- */
 
 #center ul.menu_albums
@@ -330,21 +340,13 @@ ul.documents li
   padding: 0px;
 }
 
-/* ------------------------------- liste groupes ----------- */
-
-ul.groupes li h4 a
-{ border: solid 1px #d9d9d9;
-  border-radius: 3px 3px 3px 3px;
-  -moz-border-radius: 3px 3px 3px 3px;
-}
-
 /* ------------------------------- page album ----------- */
 
 p#play_all a
 { border: solid 1px #c0c0c0;
   border-radius: 3px 3px 3px 3px;
   -moz-border-radius: 3px 3px 3px 3px;
-  background-image: url("../icons/ecouter.png");
+  background-image: url("../../icons/ecouter.png");
   background-repeat: no-repeat;
   background-position: 6px 6px;
   background-color: #ffffff;
@@ -457,7 +459,7 @@ ul#lien_contact li a
 }
 
 .loading
-{ background-image: url("../icons/ajax-loader.gif");
+{ background-image: url("../../icons/ajax-loader.gif");
   background-repeat: no-repeat;
   background-position: 5px 5px;
 }
\ No newline at end of file
index 02e316a..0825116 100644 (file)
@@ -62,4 +62,7 @@ ul.xml_infos li
 { border: solid 1px #c0c0c0;
 }
 
-
+.source_groupes .access{
+  color: #c0c0c0;
+  padding-left: 20px;
+}
\ No newline at end of file
index 3927192..798f2bd 100644 (file)
@@ -31,11 +31,9 @@ function select_morceaux_groupe(id_groupe)
   + "<p>"
   + "<select name=\"morceau\" id=\"morceau\">"
   + "<option value=\"0\" selected=\"selected\">hors morceau</option>";
-  for(var id_album in morceaux["" + id_groupe])
-  { for(var id_morceau in morceaux["" + id_groupe]["" + id_album])
-    { content +=
-        "<option value=\"" + id_morceau + "\">" + morceaux["" + id_groupe]["" + id_album]["" + id_morceau] + "</option>";
-    }
+  for(var id_morceau in morceaux["" + id_groupe])
+  { content +=
+      "<option value=\"" + id_morceau + "\">" + morceaux["" + id_groupe]["" + id_morceau] + "</option>";
   }
   content +=
     "</select>"
index f1b18b0..7d319a7 100644 (file)
@@ -2,7 +2,8 @@
 <layout>
 
   <sources page="sources.php">
-    <groupe content="views/sources/groupe/list.php">
+    <groupe>
+      <index page="simple.php" content="views/sources/groupe/list.php" />
       <view content="views/sources/groupe/view.php" />
     </groupe>
     <album content="views/sources/album/list.php">
index 5aac027..9547cb0 100644 (file)
@@ -1,6 +1,6 @@
 <div id="contact">
 
-  <h2><a href="#" onclick="return false;">Envoyer un message &agrave; <?php echo $this->out["groupe"]["nom"] ?></a></h2>
+  <h2>Envoyer un message &agrave; <?php echo $this->out["groupe"]["nom"] ?></h2>
 
   <form action="<?php echo $this->url("forms/sourceml/contact_author", array("id" => $this->out["groupe"]["id"])) ?>" method="post">
     </fieldset>
index 3ea943e..f114276 100644 (file)
@@ -2,10 +2,6 @@
 <?php $ariane_params = array(); ?>
 <?php $FIRST = true; ?>
 <h2>
-<?php if(isset($this->out["groupe"]) && $this->out["groupe"]) : $ariane_params["groupe"] = $this->out["groupe"]["id"]; ?>
-  <?php if($FIRST) : $FIRST = false; else : ?>&raquo;<?php endif; ?>
-  <a href="<?php echo $this->url("sources/groupe/view", array("id" => $this->out["groupe"]["id"])) ?>"><?php echo $this->out["groupe"]["nom"] ?></a>
-<?php endif; ?>
 <?php if(isset($this->out["album"]) && $this->out["album"]) : ?>
   <?php if($FIRST) : $FIRST = false; else : ?>&raquo;<?php endif; ?>
   <a href="<?php echo $this->url("sources/album/view", array("album" => $this->out["album"]["id"])) ?>"><?php echo $this->out["album"]["titre"] ?></a>
index 05328e1..a450d4c 100644 (file)
@@ -1,4 +1,4 @@
-<?php require $this->out_file("views/sources/album/ariane.php"); ?>
+<h2>Albums</h2>
 
 <?php if($this->out["groupes"]["total"] > 1) : ?>
 
index 5cf73de..ce1561a 100644 (file)
@@ -1,8 +1,5 @@
 <h2>
-  <a href="<?php echo $this->url("sources/album/view", array("album" => $this->out["album"]["id"])) ?>">
-    <?php echo $this->out["album"]["reference"] ? $this->out["album"]["reference"]["titre"] : $this->out["album"]["titre"] ?>
-  </a>
-  &nbsp;
+  <?php echo $this->out["album"]["reference"] ? $this->out["album"]["reference"]["titre"] : $this->out["album"]["titre"] ?>
 </h2>
 
 <?php
   if
   (    $this->out["album"]["image_uri"]
     && file_exists($this->out["album"]["image_uri"])
-    && ($img_size = $data->img_size($this->out["album"]["image_uri"], 150, 150)) !== false
+    && ($img_size = $data->img_size($this->out["album"]["image_uri"], 450, 450)) !== false
   ) :
-  $margin_top = floor((150 - $img_size["height"]) / 2);
+//  $margin_top = floor((450 - $img_size["height"]) / 2);
+  $margin_top = 10;
   $album_image_uri = $this->path("web").$this->out["album"]["image_uri"];
 ?>
-<p>
+<p class="logo_album">
   <img src="<?php echo $album_image_uri ?>"
        width="<?php echo $img_size["width"] ?>"
        height="<?php echo $img_size["height"] ?>"
diff --git a/app/out/default/views/sources/current_album.php b/app/out/default/views/sources/current_album.php
deleted file mode 100644 (file)
index f0af20f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php if(isset($this->out["album"]) && $this->out["album"]) : $album = $this->out["album"]; ?>
-
-<ul id="album_links">
-  <li><a href="<?php echo $this->url("sources/album/view", array("album" => $album["id"])) ?>">album</a></li>
-</ul>
-
-<ul class="menu_albums">
-  <li><a href="<?php echo $this->url("sources/album/view", array("album" => $album["id"])) ?>" title="<?php echo str_replace("\"", "&quot;", $album["titre"]) ?>">
-
-  <?php
-
-    if
-    (    $album["image_uri"]
-      && file_exists($album["image_uri"])
-      && ($img_size = $data->img_size($album["image_uri"], 90, 90)) !== false
-    ) :
-    $margin_top = floor((90 - $img_size["height"]) / 2);
-
-  ?>
-    <img src="<?php echo $this->path("web").$album["image_uri"]; ?>"
-         width="<?php echo $img_size["width"] ?>"
-         height="<?php echo $img_size["height"] ?>"
-         style="margin-top:<?php echo $margin_top ?>px" />
-  <?php endif; ?>
-  <span><?php echo $album["titre"] ?></span>
-  </a></li>
-</ul>
-
-<div class="clear"><!-- --></div>
-
-<?php endif; ?>
diff --git a/app/out/default/views/sources/current_album_box.php b/app/out/default/views/sources/current_album_box.php
deleted file mode 100644 (file)
index 5a2dcdb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php if($this->etat("mod") == "sources" && $this->etat("controller") == "groupe" && $this->etat("action") == "view") : ?>
-
-<?php if($this->out_config("nom_groupe")) require $this->out_file("views/sources/nom_groupe.php"); ?>
-
-<?php if($this->out_config("colonne_logo_groupe")) require $this->out_file("views/sources/logo_groupe.php"); ?>
-
-<?php endif; ?>
-
-<?php if($this->out_config("albums_menu")) require $this->out_file("views/sources/current_album.php"); ?>
-
-<?php require $this->out_file("views/sources/lien_contact.php"); ?>
index 7daaf59..88556d9 100644 (file)
@@ -1,3 +1,4 @@
+<h2><?php echo $this->out["groupe"]["nom"]; ?></h2>
 <div class="description">
 <?php echo $this->out["groupe"]["description"] ?>
 </div>
 </ul>
 <div class="clear"><!-- --></div>
 <?php endif; ?>
+
+<?php if($this->out["groupe"]["contact_form"]) : ?>
+<h3>Contact</h3>
+<p>
+  <a href="<?php echo $this->url("forms/sourceml/contact_author", array("id" => $this->out["groupe"]["id"])) ?>">Envoyer un message à <?php echo $this->out["groupe"]["nom"]; ?></a>.
+</p>
+<?php endif; ?>
index 76b0b9a..e2c49bf 100644 (file)
@@ -4,6 +4,5 @@
   if($this->out_config("colonne_logo_groupe")) require $this->out_file("views/sources/logo_groupe.php");
   if(($this->etat("controller") == "groupe") && $this->out_config("groupe_view_albums")) $this->set_config(array("out_albums_menu" => ""));
   if($this->out_config("albums_menu")) require $this->out_file("views/sources/menu_albums.php");
-  require $this->out_file("views/sources/lien_contact.php");
 
 ?>
\ No newline at end of file
diff --git a/app/out/default/views/sources/lien_contact.php b/app/out/default/views/sources/lien_contact.php
deleted file mode 100644 (file)
index ee0804a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php if(isset($this->out["groupe"]) && $this->out["groupe"] && $this->out["groupe"]["contact_form"]) : ?>
-<ul id="lien_contact">
-  <li><a href="<?php echo $this->url("forms/sourceml/contact_author", array("id" => $this->out["groupe"]["id"])) ?>">
-    contact
-  </a></li>
-</ul>
-<div class="clear"><!-- --></div>
-<?php endif; ?>
index 87faa7b..769c303 100644 (file)
@@ -1,18 +1,39 @@
 <?php
 
+  $groupes = array();
+  $data = $this->data();
+
+  if(
+        $this->is_running("sources/album/view")
+    ||  $this->is_running("sources/morceau/view")
+    ||  $this->is_running("sources/piste/view")
+  ){
+    if($this->is_running("sources/album/view")) $groupes = $this->out["album"]["groupes"];
+    if($this->is_running("sources/morceau/view")) $groupes = $this->out["morceau"]["groupes"];
+    if($this->is_running("sources/piste/view")) $groupes = $this->out["piste"]["groupes"];
+    foreach($groupes as $id_groupe => $groupe){
+      if(
+            ($groupe["id_groupe_status"] != $data->id_groupe_status_admin())
+        &&  ($groupe["id_groupe_status"] != $data->id_groupe_status_editeur())
+      ) unset($groupes[$id_groupe]);
+    }
+  }
+  elseif($this->is_running("sources")){
+    if(isset($this->out["groupe"])) $groupes = array($this->out["groupe"]["id"] => $this->out["groupe"]);
+  }
+  foreach($groupes as $groupe) :
   if(
-       isset($this->out["groupe"])
-    && $this->out["groupe"]
-    && $this->out["groupe"]["image_uri"]
-    && file_exists($this->out["groupe"]["image_uri"])
-    && ($img_size = $data->img_size($this->out["groupe"]["image_uri"], 200, 130)) !== false
+        isset($groupe["image_uri"])
+    &&  $groupe["image_uri"]
+    &&  file_exists($groupe["image_uri"])
+    &&  ($img_size = $data->img_size($groupe["image_uri"], 200, 130)) !== false
   ) :
   $margin_top = floor((150 - $img_size["height"]) / 2);
 
 ?>
 <div class="logo_groupe">
-  <a href="<?php echo $this->url("sources/groupe/view", array("id" => $this->out["groupe"]["id"])) ?>">
-  <img src="<?php echo $this->path("web").$this->out["groupe"]["image_uri"]; ?>"
+  <a href="<?php echo $this->url("sources/groupe/view", array("id" => $groupe["id"])) ?>">
+  <img src="<?php echo $this->path("web").$groupe["image_uri"]; ?>"
        width="<?php echo $img_size["width"] ?>"
        height="<?php echo $img_size["height"] ?>"
        style="margin-top:<?php echo $margin_top ?>px"
@@ -20,3 +41,4 @@
   </a>
 </div>
 <?php endif; ?>
+<?php endforeach; ?>
index 732c8fa..6f1c354 100644 (file)
@@ -2,10 +2,6 @@
 <?php $ariane_params = array(); ?>
 <?php $FIRST = true; ?>
 <h2>
-<?php if(isset($this->out["groupe"]) && $this->out["groupe"]) : $ariane_params["groupe"] = $this->out["groupe"]["id"]; ?>
-  <?php if($FIRST) : $FIRST = false; else : ?>&raquo;<?php endif; ?>
-  <a href="<?php echo $this->url("sources/groupe/view", array("id" => $this->out["groupe"]["id"])) ?>"><?php echo $this->out["groupe"]["nom"] ?></a>
-<?php endif; ?>
 <?php if(isset($this->out["album"]) && $this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
   <?php $ariane_params["album"] = $this->out["album"]["id"]; ?>
   <?php if($FIRST) : $FIRST = false; else : ?>&raquo;<?php endif; ?>
index 0a326c1..452b0bf 100644 (file)
@@ -1,4 +1,4 @@
-<?php require $this->out_file("views/sources/morceau/ariane.php"); ?>
+<h2>Morceaux</h2>
 
 <?php
 
index 99020a1..4010f48 100644 (file)
@@ -1,6 +1,6 @@
 <h2>
 <?php $ariane_params = array("morceau" => $this->out["morceau"]["id"]); ?>
-<?php if($this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
+<?php if(isset($this->out["album"]) && $this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
 <a href="<?php echo $this->url("sources/album/view", $ariane_params) ?>">
 <?php echo $this->out["album"]["titre"] ?>
 </a>
index 8051535..4f6cd1b 100644 (file)
@@ -1,4 +1,4 @@
-<?php require $this->out_file("views/sources/piste/ariane.php"); ?>
+<h2>Sources</h2>
 
 <?php
 
index 5d089a0..f168843 100644 (file)
@@ -1,13 +1,13 @@
 <h2>
 <?php $ariane_params = array("piste" => $this->out["piste"]["id"]); ?>
-<?php if($this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
+<?php if(isset($this->out["album"]) && $this->out["album"]) : $ariane_params["album"] = $this->out["album"]["id"]; ?>
 <a href="<?php echo $this->url("sources/album/view", $ariane_params) ?>">
 <?php echo $this->out["album"]["titre"] ?>
 </a>
 &raquo;
 <?php endif; ?>
 
-<?php if($this->out["morceau"]) : $ariane_params["morceau"] = $this->out["morceau"]["id"]; ?>
+<?php if(isset($this->out["morceau"]) && $this->out["morceau"]) : $ariane_params["morceau"] = $this->out["morceau"]["id"]; ?>
 <a href="<?php echo $this->url("sources/morceau/view", $ariane_params) ?>">
 <?php echo $this->out["morceau"]["reference"] ? $this->out["morceau"]["reference"]["titre"] : $this->out["morceau"]["titre"] ?>
 </a>
index 6910161..7b87bd5 100644 (file)
@@ -1,26 +1,20 @@
 <?php
 
-  if($source["reference"])
-  { $groupe = array
-    ( "nom" => $source["reference"]["auteur"],
-      "url" => $source["reference"]["from"]
-    );
-  }
-  else
-  { $groupe = $data->get_admin_groupe($source["groupes"]);
-    if($groupe) $groupe["url"] = $this->url("sources/groupe/view", array("id" => $groupe["id"]));
-  }
+  $groupes = $data->get_editor_groupes($source["reference"] ? $source["reference"]["groupes"] : $source["groupes"]);
+  foreach($groupes as $k => $groupe) $groupes[$k]["url"] = $this->url("sources/groupe/view", array("id" => $groupe["id"]));
 
 ?>
 
   <h5>
 
-<?php if($groupe) : ?><a class="auteur" href="<?php echo $groupe["url"] ?>"><?php echo $groupe["nom"] ?></a><?php endif; ?>
+<?php if($groupes) : $k = 0; foreach($groupes as $groupe) : $k++; ?>
+    <a class="auteur" href="<?php echo $groupe["url"] ?>"><?php echo $groupe["nom"] ?></a><?php if($k < count($groupes)) : ?><br /><?php endif; ?>
+<?php endforeach; endif; ?>
 
 <?php if(!isset($display_name) || $display_name) : ?>
 
 <?php if($source["reference"]) : ?>
-    <span>r&eacute;f&eacute;rence &raquo; <a href="<?php echo $source["reference"]["from"] ?>"><strong><?php echo $source["reference"]["titre"] ?> (<?php echo $groupe["nom"] ?>)</strong></a></span>
+    <span>r&eacute;f&eacute;rence &raquo; <a href="<?php echo $source["reference"]["from"] ?>"><strong><?php echo $source["reference"]["titre"] ?></strong></a></span>
 <?php else : ?>
     <a href="<?php echo $source["url"] ?>"><?php echo $source["titre"] ?></a>
 <?php endif; ?>
index e1132d1..2d737f5 100644 (file)
@@ -33,7 +33,7 @@
       <li>
         <label for="image">icone</label>
         <div class="form_input">
-          <?php if($this->out["album"]["image"]) : ?>
+          <?php if(isset($this->out["album"]["image"])) : ?>
           <img class="logo" src="<?php echo $this->out["album"]["image_uri"] ?>" /><br /><br />
           <input type="checkbox" name="del_image" /> effacer l'icone<br /><br />
           <?php endif; ?>
index 39d4c81..160c7c2 100644 (file)
@@ -1,16 +1,9 @@
-<?php require $this->out_file("views/tinymce.init.js.php"); ?>
+<?php require $this->out_file("views/tinymce.init.js.php"); $data = $this->data(); ?>
 
 <h2>Modifier un morceau</h2>
 
 <script type="text/javascript">
 
-var albums = {};
-<?php foreach($this->out["albums"] as $id_groupe => $albums) : ?>
-albums["<?php echo $id_groupe ?>"] = {};
-<?php foreach($albums as $id_album => $album) : ?>
-albums["<?php echo $id_groupe ?>"]["<?php echo $id_album ?>"] = "<?php echo $album["titre"] ?>";
-<?php endforeach; ?>
-<?php endforeach; ?>
 var derivations = {};
 <?php
 
@@ -39,44 +32,36 @@ var is_reference = <?php echo $this->out["morceau"]["reference"] ? "true" : "fal
     <ul class="form">
   
       <li>
-        <label for="id_groupe">groupe</label>
+        <label for="id_groupe">&nbsp;</label>
         <div class="form_input">
-          <select name="id_groupe" id="id_groupe" onchange="select_groupe(this.options[this.selectedIndex].value)">
-          <?php
-  
-            $current_groupe = null;
-            $first_groupe = null;
-            foreach($this->out["groupes"]["list"] as $id_groupe => $groupe) :
-            $selected = false;
-            if(!isset($first_groupe)) $first_groupe = $id_groupe;
-            if($this->out["groupe"]["id"] == $id_groupe)
-            { $current_groupe = $id_groupe;
-              $selected = true;
-            }
-  
-          ?>
-            <option value="<?php echo $id_groupe ?>"<?php echo $selected ? "selected=\"selected\"" : "" ?>><?php echo $groupe["nom"] ?></option>
-          <?php
-  
-            endforeach;
-            if(!isset($current_groupe)) $current_groupe = $first_groupe;
-  
-          ?>
-          </select>
+          <ul class="source_groupes">
+            <?php foreach($this->out["morceau"]["groupes"] as $id_groupe => $groupe) : ?>
+            <li class="source_groupe" id="source_groupe_<?php echo $id_groupe; ?>">
+              <span class="author"><?php echo $groupe["nom"]; ?></span>
+              <span class="access"><?php echo $this->out["sources_access"][$groupe["id_groupe_status"]]["intitule"]; ?></span>
+            </li>
+            <?php endforeach; ?>
+          </ul>
         </div>
       </li>
-  
+
+    </ul>
+
+<!-- ul class="buttons">
+  <li><a href="<?php echo $this->url("users/morceaux/groupes") ?>">Editer les groupes du morceau</a></li>
+</ul -->
+
+    <ul>
+
       <li>
         <div id="album_select">
           <label for="album">album</label>
           <div class="form_input">
             <select name="album" id="album">
-              <option value="0"<?php echo $_GET[$this->param("album")] == "0" ? " selected=\"selected\"" : "" ?>>hors album</option>
-              <?php if($this->out["albums"][$current_groupe]) : ?>
-              <?php foreach($this->out["albums"][$current_groupe] as $id_album => $album) : ?>
+              <option value="0"<?php echo $this->out["morceau"]["album"] == "0" ? " selected=\"selected\"" : "" ?>>hors album</option>
+              <?php foreach($this->out["albums"] as $id_album => $album) : ?>
               <option value="<?php echo $id_album ?>"<?php echo $this->out["morceau"]["album"] == $id_album ? " selected=\"selected\"" : "" ?>><?php echo $album["titre"] ?></option>
               <?php endforeach; ?>
-              <?php endif; ?>
             </select>
           </div>
         </div>
@@ -185,7 +170,7 @@ var is_reference = <?php echo $this->out["morceau"]["reference"] ? "true" : "fal
           </select>
         </div>
       </li>
-  
+
       <li>
         <label for="date_creation">date de cr&eacute;ation</label>
         <div class="form_input">
diff --git a/app/out/default/views/users/morceaux/groupes.php b/app/out/default/views/users/morceaux/groupes.php
new file mode 100644 (file)
index 0000000..e20736a
--- /dev/null
@@ -0,0 +1,87 @@
+<?php require $this->out_file("views/tinymce.init.js.php"); $data = $this->data(); ?>
+
+<h2>Modifier les groupes d'un morceau</h2>
+
+<script type="text/javascript">
+
+<ul class="buttons">
+  <li><a href="<?php echo $this->url("users/morceaux/edit", array("id" => $this->out["morceau"]["id"])) ?>">Retour au morceau</a></li>
+  <li><a href="<?php echo $this->url("users/morceaux") ?>">Retour &agrave; la liste des morceaux</a></li>
+</ul>
+
+<form action="<?php echo $this->url("users/morceaux/groupes", array("id" => $this->out["morceau"]["id"])) ?>" method="post">
+  <fieldset>
+    <table class="admin">
+      <tr>
+        <th>groupe</th>
+        <th>accès</th>
+        <th align="center">enlever</th>
+      </tr>
+      <?php foreach($this->out["morceaux"]["groupes"] as $id_groupe => $groupe) : ?>
+      <tr class="hl">
+        <td>
+          <?php echo $groupe["nom"]; ?>
+        </td>
+        <td>
+          <select name="source_access_<?php echo $id_groupe; ?>" id="source_access_<?php echo $id_groupe; ?>">
+          <?php foreach($this->out["sources_access"]["list"] as $id_source_access => $source_access) : ?>
+            <option value="<?php echo $id_source_access ?>"<?php echo $groupe["id_groupe_status"] == $id_source_access ? " selected" : ""><?php echo $source_access["intitule"] ?></option>
+          <?php endforeach; ?>
+          </select>
+        </td>
+        <td class="action">
+        <a href="<?php echo $this->url("users/morceaux/del_groupe", array("morceau" => $id_morceau, "groupe" => $id_groupe)) ?>"
+           class="admin_link"
+           title="enlever ce groupe"><img src="<?php echo $this->out_url("icons/del.gif") ?>"
+           onclick="return confirm('enlever ce groupe ?')"/></a>
+        </td>
+      </tr>
+      <?php endforeach; ?>
+    </table>
+    <ul class="form">
+      <li class="buttons">
+        <div class="form_buttons">
+          <input type="submit" value="Enregistrer les accès" />
+        </div>
+      </li>
+    </ul>
+  </fieldset>
+</form>
+
+<?php if($this->out["groupes"]["total"] > 0) : ?>
+
+<h3>Ajouter un groupe</h3>
+
+<form name="morceau_form" action="<?php echo $this->url("users/morceaux/add_groupe", array("morceau" => $id_morceau, "groupe" => $id_groupe)) ?>" method="post">
+  <fieldset>
+    <ul class="form">
+      <li>
+        <label for="id_groupe">groupe</label>
+        <div class="form_input">
+          <select name="id_groupe" id="id_groupe">
+            <?php foreach($this->out["groupes"]["list"] as $id_groupe => $groupe) : ?>
+            <option value="<?php echo $id_groupe ?>"><?php echo $groupe["nom"] ?></option>
+            <?php endforeach; ?>
+          </select>
+        </div>
+      </li>
+      <li>
+        <label for="source_access_<?php echo $id_groupe; ?>">Accès</label>
+        <div class="form_input">
+          <select name="source_access_<?php echo $id_groupe; ?>" id="source_access_<?php echo $id_groupe; ?>">
+          <?php foreach($this->out["sources_access"]["list"] as $id_source_access => $source_access) : ?>
+            <option value="<?php echo $id_source_access ?>"><?php echo $source_access["intitule"] ?></option>
+          <?php endforeach; ?>
+          </select>
+        </div>
+      </li>  
+      <li class="buttons">
+        <div class="form_buttons">
+          <input type="submit" value="Ajouter" />
+        </div>
+      </li>  
+    </ul>
+  </fieldset>
+</form>
+
+<?php endif; ?>
index 37e200e..6c30f3f 100644 (file)
@@ -1,21 +1,3 @@
-<?php
-
-  $albums = array();
-  if(isset($_GET[$this->param("groupe")]) && $_GET[$this->param("groupe")] && is_array($this->out["albums"][$_GET[$this->param("groupe")]]))
-  { foreach($this->out["albums"][$_GET[$this->param("groupe")]] as $id_album => $album)
-    { $albums[$id_album] = $album;
-    }
-  }
-  else
-  { foreach($this->out["albums"] as $id_groupe => $_albums)
-    { foreach($this->out["albums"][$id_groupe] as $id_album => $album)
-      { $albums[$id_album] = $album;
-      }
-    }
-  }
-
-?>
-
 <h2>Morceaux</h2>
 
 <ul class="buttons">
@@ -41,7 +23,7 @@
     </select>
   </li>
 <?php endif; ?>
-<?php if($albums) : ?>
+<?php if($this->out["albums"]) : ?>
   <li>
     <span id="album_select">
 <?php
@@ -54,7 +36,7 @@
       <option value="<?php echo $this->url("users/morceaux", $url_params) ?>"<?php echo !isset($_GET[$this->param("album")]) ? " selected=\"selected\"" : "" ?>>Tous les morceaux</option>
 <?php $url_params["album"] = ""; ?>
       <option value="<?php echo $this->url("users/morceaux", $url_params) ?>"<?php echo isset($_GET[$this->param("album")]) && !$_GET[$this->param("album")] ? " selected=\"selected\"" : "" ?>>Hors album</option>
-      <?php foreach($albums as $id_album => $album) : $url_params["album"] = $id_album; ?>
+      <?php foreach($this->out["albums"] as $id_album => $album) : $url_params["album"] = $id_album; ?>
       <option value="<?php echo $this->url("users/morceaux", $url_params) ?>"<?php echo $_GET[$this->param("album")] == $id_album ? " selected=\"selected\"" : "" ?>>Album: <?php echo $album["reference"] ? $album["reference"]["titre"] : $album["titre"] ?></option>
       <?php endforeach; ?>
     </select>
index bfe82eb..9991ff4 100644 (file)
@@ -1,17 +1,14 @@
 <?php require $this->out_file("views/tinymce.init.js.php"); ?>
 
-<h2>Nouvelle source</h2>
+<h2>Nouvelle piste</h2>
 
 <script type="text/javascript">
 
 var morceaux = {};
-<?php foreach($this->out["morceaux"] as $id_groupe => $albums) : ?>
+<?php foreach($this->out["morceaux"] as $id_groupe => $morceaux) : ?>
 morceaux["<?php echo $id_groupe ?>"] = {};
-<?php foreach($albums as $id_album => $_morceaux) : ?>
-morceaux["<?php echo $id_groupe ?>"]["<?php echo $id_album ?>"] = {};
-<?php foreach($_morceaux as $id_morceau => $_morceau) : ?>
-morceaux["<?php echo $id_groupe ?>"]["<?php echo $id_album ?>"]["<?php echo $id_morceau ?>"] = "<?php echo $_morceau["reference"] ? $_morceau["reference"]["titre"] : $_morceau["titre"] ?>";
-<?php endforeach; ?>
+<?php foreach($morceaux as $id_morceau => $morceau) : ?>
+morceaux["<?php echo $id_groupe ?>"]["<?php echo $id_morceau ?>"] = "<?php echo $morceau["titre"] ?>";
 <?php endforeach; ?>
 <?php endforeach; ?>
 var derivations = {};
@@ -30,7 +27,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
 </script>
 
 <ul class="buttons">
-  <li><a href="<?php echo $this->url("users/pistes") ?>">Retour &agrave; la liste des sources</a></li>
+  <li><a href="<?php echo $this->url("users/pistes") ?>">Retour &agrave; la liste des pistes</a></li>
 </ul>
 
 <?php if($this->out["groupes"]["total"] > 0) : ?>
@@ -74,10 +71,8 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
             <select name="morceau" id="morceau">
               <option value="0"<?php echo $_GET[$this->param("morceau")] == "0" ? " selected=\"selected\"" : "" ?>>hors morceau</option>
               <?php if($this->out["morceaux"][$current_groupe]) : ?>
-              <?php foreach($this->out["morceaux"][$current_groupe] as $id_album => $album) : ?>
-              <?php foreach($this->out["morceaux"][$current_groupe][$id_album] as $id_morceau => $morceau) : ?>
-              <option value="<?php echo $id_morceau ?>"<?php echo $this->out["piste"]["morceau"] == $id_morceau ? " selected=\"selected\"" : "" ?>><?php echo $morceau["reference"] ? $morceau["reference"]["titre"] : $morceau["titre"] ?></option>
-              <?php endforeach; ?>
+              <?php foreach($this->out["morceaux"][$current_groupe] as $id_morceau => $morceau) : ?>
+              <option value="<?php echo $id_morceau ?>"<?php echo $this->out["piste"]["morceau"] == $id_morceau ? " selected=\"selected\"" : "" ?>><?php echo $morceau["titre"] ?></option>
               <?php endforeach; ?>
               <?php endif; ?>
             </select>
@@ -88,7 +83,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
   
     <ul class="admin_form_head">
       <li>
-        <label for="is_derivation">cette source est une d&eacute;rivation</label>
+        <label for="is_derivation">cette piste est une dérivation</label>
         <div class="form_input">
           <input type="checkbox" id="is_derivation" name="is_derivation"<?php echo $this->out["piste"]["derivations"] ? " checked=\"checked\"" : "" ?> />
         </div>
@@ -133,7 +128,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
   
     <ul class="admin_form_head">
       <li>
-        <label for="is_reference">cette source est une r&eacute;f&eacute;rence</label>
+        <label for="is_reference">cette piste est une r&eacute;f&eacute;rence</label>
         <div class="form_input">
           <input type="checkbox" id="is_reference" name="is_reference"<?php echo $this->out["piste"]["reference"] ? " checked=\"checked\"" : "" ?> />
         </div>
@@ -228,7 +223,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
             <input type="text" class="long_text" name="document_nom_<?php echo $id_document ?>" id="document_nom_<?php echo $id_document ?>" value="<?php echo $document["nom"] ?>" />
             <div class="clear"><!-- --></div>
             <label for="document_url_<?php echo $id_document ?>">url</label>
-            <input type="text" size="48" name="document_url_<?php echo $id_document ?>" id="document_url_<?php echo $id_document ?>" value="<?php echo $document["url"] ?>" />
+            <input type="text" size="40" name="document_url_<?php echo $id_document ?>" id="document_url_<?php echo $id_document ?>" value="<?php echo $document["url"] ?>" />
           </div>
           <script type="text/javascript">if(last_document_id <= <?php echo $id_document ?>) last_document_id = <?php echo $id_document ?> + 1; </script>
   
@@ -247,7 +242,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
     </ul>
   
     <ul class="form">
-      <li class="buttons">
+      <li>
         <div class="form_buttons">
           <input type="submit" value="Ajouter" />
         </div>
index be94c15..1c46820 100644 (file)
@@ -1,19 +1,9 @@
-<?php require $this->out_file("views/tinymce.init.js.php"); ?>
+<?php require $this->out_file("views/tinymce.init.js.php"); $data = $this->data(); ?>
 
-<h2>Modifier une source</h2>
+<h2>Modifier une piste</h2>
 
 <script type="text/javascript">
 
-var morceaux = {};
-<?php foreach($this->out["morceaux"] as $id_groupe => $albums) : ?>
-morceaux["<?php echo $id_groupe ?>"] = {};
-<?php foreach($albums as $id_album => $_morceaux) : ?>
-morceaux["<?php echo $id_groupe ?>"]["<?php echo $id_album ?>"] = {};
-<?php foreach($_morceaux as $id_morceau => $_morceau) : ?>
-morceaux["<?php echo $id_groupe ?>"]["<?php echo $id_album ?>"]["<?php echo $id_morceau ?>"] = "<?php echo $_morceau["titre"] ?>";
-<?php endforeach; ?>
-<?php endforeach; ?>
-<?php endforeach; ?>
 var derivations = {};
 <?php
 
@@ -30,59 +20,48 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
 </script>
 
 <ul class="buttons">
-  <li><a href="<?php echo $this->url("users/pistes") ?>">Retour &agrave; la liste des sources</a></li>
+  <li><a href="<?php echo $this->url("users/pistes") ?>">Retour &agrave; la liste des pistes</a></li>
 </ul>
 
 <?php if($this->out["groupes"]["total"] > 0) : ?>
 
 <form name="piste_form" action="<?php echo $this->url("users/pistes/edit", array("id" => $_GET[$this->param("id")])) ?>" method="post">
   <fieldset>
-
     <input type="hidden" name="date_inscription" value="<?php echo $this->out["piste"]["date_inscription"] ?>" />
-  
+
     <ul class="form">
   
       <li>
-        <label for="id_groupe">groupe</label>
+        <label for="id_groupe">&nbsp;</label>
         <div class="form_input">
-          <select name="id_groupe" id="id_groupe" onchange="select_morceaux_groupe(this.options[this.selectedIndex].value)">
-          <?php
-  
-            $current_groupe = null;
-            $first_groupe = null;
-            foreach($this->out["groupes"]["list"] as $id_groupe => $groupe) :
-            $selected = false;
-            if(!isset($first_groupe)) $first_groupe = $id_groupe;
-            if($this->out["groupe"]["id"] == $id_groupe)
-            { $current_groupe = $id_groupe;
-              $selected = true;
-            }
-  
-          ?>
-            <option value="<?php echo $id_groupe ?>"<?php echo $selected ? "selected=\"selected\"" : "" ?>><?php echo $groupe["nom"] ?></option>
-          <?php
-  
-            endforeach;
-            if(!isset($current_groupe)) $current_groupe = $first_groupe;
-  
-          ?>
-          </select>
+          <ul class="source_groupes">
+            <?php foreach($this->out["piste"]["groupes"] as $id_groupe => $groupe) : ?>
+            <li class="source_groupe" id="source_groupe_<?php echo $id_groupe; ?>">
+              <span class="author"><?php echo $groupe["nom"]; ?></span>
+              <span class="access"><?php echo $this->out["sources_access"][$groupe["id_groupe_status"]]["intitule"]; ?></span>
+            </li>
+            <?php endforeach; ?>
+          </ul>
         </div>
       </li>
-  
+
+    </ul>
+
+<!-- ul class="buttons">
+  <li><a href="<?php echo $this->url("users/pistes/groupes") ?>">Editer les groupes de la piste</a></li>
+</ul -->
+
+    <ul>
+
       <li>
         <div id="morceau_select">
           <label for="morceau">morceau</label>
           <div class="form_input">
             <select name="morceau" id="morceau">
-              <option value="0"<?php echo $_GET[$this->param("morceau")] == "0" ? " selected=\"selected\"" : "" ?>>hors morceau</option>
-              <?php if($this->out["morceaux"][$current_groupe]) : ?>
-              <?php foreach($this->out["morceaux"][$current_groupe] as $id_album => $album) : ?>
-              <?php foreach($this->out["morceaux"][$current_groupe][$id_album] as $id_morceau => $morceau) : ?>
-              <option value="<?php echo $id_morceau ?>"<?php echo $this->out["piste"]["morceau"] == $id_morceau ? " selected=\"selected\"" : "" ?>><?php echo $morceau["reference"] ? $morceau["reference"]["titre"] : $morceau["titre"] ?></option>
+              <option value="0"<?php echo $this->out["piste"]["morceau"] == "0" ? " selected=\"selected\"" : "" ?>>hors morceau</option>
+              <?php foreach($this->out["morceaux"] as $id_morceau => $morceau) : ?>
+              <option value="<?php echo $id_morceau ?>"<?php echo $this->out["piste"]["morceau"] == $id_morceau ? " selected=\"selected\"" : "" ?>><?php echo $morceau["titre"] ?></option>
               <?php endforeach; ?>
-              <?php endforeach; ?>
-              <?php endif; ?>
             </select>
           </div>
         </div>
@@ -91,7 +70,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
   
     <ul class="admin_form_head">
       <li>
-        <label for="is_derivation">cette source est une d&eacute;rivation</label>
+        <label for="is_derivation">cette piste est une d&eacute;rivation</label>
         <div class="form_input">
           <input type="checkbox" id="is_derivation" name="is_derivation"<?php echo $this->out["piste"]["derivations"] ? " checked=\"checked\"" : "" ?> />
         </div>
@@ -137,7 +116,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
   
     <ul class="admin_form_head">
       <li>
-        <label for="is_reference">cette source est une r&eacute;f&eacute;rence</label>
+        <label for="is_reference">cette piste est une r&eacute;f&eacute;rence</label>
         <div class="form_input">
           <input type="checkbox" id="is_reference" name="is_reference"<?php echo $this->out["piste"]["reference"] ? " checked=\"checked\"" : "" ?> />
         </div>
@@ -167,7 +146,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
           require $this->out_file("views/content/sources/xml_form.php");
   
         ?>
-  
+
       </li>
   
     </ul>
@@ -177,7 +156,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
       <li>
         <label for="titre">titre</label>
         <div class="form_input">
-          <input type="text" class="long_text" name="titre" id="titre" value="<?php echo $this->out["piste"]["titre"] ?>" /></p>
+          <input type="text" class="long_text" name="titre" id="titre" value="<?php echo $this->out["piste"]["titre"] ?>" />
         </div>
       </li>
   
@@ -191,7 +170,7 @@ var is_reference = <?php echo $this->out["piste"]["reference"] ? "true" : "false
           </select>
         </div>
       </li>
-  
+
       <li>
         <label for="date_creation">date de cr&eacute;ation</label>
         <div class="form_input">
index a02b4a5..8754f53 100644 (file)
-<?php
-
-  $albums = array();
-  if(isset($_GET[$this->param("groupe")]) && $_GET[$this->param("groupe")] && is_array($this->out["albums"][$_GET[$this->param("groupe")]]))
-  { foreach($this->out["albums"][$_GET[$this->param("groupe")]] as $id_album => $album)
-    { $albums[$id_album] = $album;
-    }
-  }
-  else
-  { foreach($this->out["albums"] as $id_groupe => $_albums)
-    { foreach($this->out["albums"][$id_groupe] as $id_album => $album)
-      { $albums[$id_album] = $album;
-      }
-    }
-  }
-
-  $morceaux = array();
-  if(isset($_GET[$this->param("groupe")]) && $_GET[$this->param("groupe")])
-  { $id_groupe = $_GET[$this->param("groupe")];
-    if(is_array($this->out["morceaux"][$id_groupe]))
-    { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
-      { if(isset($_GET[$this->param("album")]) && $_GET[$this->param("album")])
-        { if($id_album == $_GET[$this->param("album")])
-          { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
-            { $morceaux[$id_morceau] = $morceau;
-            }
-          }
-        }
-        else
-        { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
-          { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
-            { $morceaux[$id_morceau] = $morceau;
-            }
-          }
-        }
-      }
-    }
-  }
-  else
-  { foreach($this->out["morceaux"] as $id_groupe => $_albums)
-    { foreach($this->out["morceaux"][$id_groupe] as $id_album => $_morceaux)
-      { foreach($this->out["morceaux"][$id_groupe][$id_album] as $id_morceau => $morceau)
-        { $morceaux[$id_morceau] = $morceau;
-        }
-      }
-    }
-  }
-
-?>
-
-<h2>Sources</h2>
+<h2>Pistes</h2>
 
 <ul class="buttons">
-  <li><a class="add" href="<?php echo $this->url("users/pistes/add") ?>">Nouvelle source</a></li>
+  <li><a class="add" href="<?php echo $this->url("users/pistes/add") ?>">Nouvelle piste</a></li>
 </ul>
 
-<?php if($this->out["groupes"]["total"] > 0) : ?>
+<?php if($this->out["groupes"]["total"] > 0 || (isset($this->out["morceaux"]["total"]) && $this->out["morceaux"]["total"] > 0)) : ?>
 
 <ul class="filters">
 <?php if($this->out["groupes"]["total"] > 0) : ?>
   <li>
+<?php
+
+  $url_params = array();
+  if(isset($_GET[$this->param("morceau")]) && !$_GET[$this->param("morceau")]) $url_params["morceau"] = "";
+
+?>
     <select onchange="document.location=this.options[this.selectedIndex].value;">
-      <option value="<?php echo $this->url("users/pistes") ?>"<?php echo $_GET[$this->param("groupe")] == "0" ? " selected=\"selected\"" : "" ?>>Tous les groupes</option>
-      <?php foreach($this->out["groupes"]["list"] as $id_groupe => $groupe) : ?>
-      <option value="<?php echo $this->url("users/pistes", array("groupe" => $id_groupe)) ?>"<?php echo $_GET[$this->param("groupe")] == $id_groupe ? " selected=\"selected\"" : "" ?>><?php echo $groupe["nom"] ?></option>
-      <?php endforeach; ?>
-    </select>
-  </li>
-<?php endif; ?>
-<?php if(false && $albums) : ?>
-  <li>
-    <span id="album_select">
-    <select onchange="document.location=this.options[this.selectedIndex].value;">
-      <option value="<?php echo $this->url("users/pistes") ?>"<?php echo $_GET[$this->param("album")] == "0" ? " selected=\"selected\"" : "" ?>>Tous les albums</option>
-      <?php foreach($albums as $id_album => $album) : ?>
-      <option value="<?php echo $this->url("users/pistes", array("album" => $id_album)) ?>"<?php echo $_GET[$this->param("album")] == $id_album ? " selected=\"selected\"" : "" ?>><?php echo $album["reference"] ? $album["reference"]["titre"] : $album["titre"] ?></option>
+      <option value="<?php echo $this->url("users/pistes", $url_params) ?>"<?php echo isset($_GET[$this->param("groupe")]) && ($_GET[$this->param("groupe")] == "0") ? " selected=\"selected\"" : "" ?>>Tous les groupes</option>
+      <?php foreach($this->out["groupes"]["list"] as $id_groupe => $groupe) : $url_params["groupe"] = $id_groupe; ?>
+      <option value="<?php echo $this->url("users/pistes", $url_params) ?>"<?php echo isset($_GET[$this->param("groupe")]) && ($_GET[$this->param("groupe")] == $id_groupe) ? " selected=\"selected\"" : "" ?>><?php echo $groupe["nom"] ?></option>
       <?php endforeach; ?>
     </select>
-    </span>
   </li>
 <?php endif; ?>
-
-<?php if($morceaux) : ?>
+<?php if($this->out["morceaux"]) : ?>
   <li>
     <span id="morceau_select">
+<?php
+
+  $url_params = array();
+  if(isset($_GET[$this->param("groupe")])) $url_params["groupe"] = $_GET[$this->param("groupe")];
+
+?>
     <select onchange="document.location=this.options[this.selectedIndex].value;">
-      <option value="<?php echo $this->url("users/pistes") ?>"<?php echo $_GET[$this->param("morceau")] == "0" ? " selected=\"selected\"" : "" ?>>Tous les morceaux</option>
-      <?php foreach($morceaux as $id_morceau => $morceau) : ?>
-      <option value="<?php echo $this->url("users/pistes", array("morceau" => $id_morceau)) ?>"<?php echo $_GET[$this->param("morceau")] == $id_morceau ? " selected=\"selected\"" : "" ?>><?php echo $morceau["reference"] ? $morceau["reference"]["titre"] : $morceau["titre"] ?></option>
+      <option value="<?php echo $this->url("users/pistes", $url_params) ?>"<?php echo !isset($_GET[$this->param("morceau")]) ? " selected=\"selected\"" : "" ?>>Tous les morceaux</option>
+<?php $url_params["morceau"] = ""; ?>
+      <option value="<?php echo $this->url("users/pistes", $url_params) ?>"<?php echo isset($_GET[$this->param("morceau")]) && !$_GET[$this->param("morceau")] ? " selected=\"selected\"" : "" ?>>Hors album</option>
+      <?php foreach($this->out["morceaux"] as $id_morceau => $morceau) : $url_params["morceau"] = $id_morceau; ?>
+      <option value="<?php echo $this->url("users/pistes", $url_params) ?>"<?php echo isset($_GET[$this->param("morceau")]) && ($_GET[$this->param("morceau")] == $id_morceau) ? " selected=\"selected\"" : "" ?>>Morceau: <?php echo $morceau["reference"] ? $morceau["reference"]["titre"] : $morceau["titre"] ?></option>
       <?php endforeach; ?>
     </select>
     </span>
   </li>
 <?php endif; ?>
-
 </ul>
 
 <?php endif; ?>
 
 <?php if($this->out["pistes"]["list"]) : ?>
 
-<?php $items = "pistes"; $legend = "sources"; require $this->out_file("views/navig.php"); ?>
+<?php $items = "pistes"; $legend = "pistes"; require $this->out_file("views/navig.php"); ?>
 
 <?php
 
     <?php if($piste["reference"]) : ?>
           r&eacute;f&eacute;rence &raquo; <a href="<?php echo $piste["reference"]["from"] ?>"><?php echo $piste["reference"]["titre"] ?> (<?php echo $piste["reference"]["auteur"] ?>)</a>
     <?php else : ?>
-          <a href="<?php echo $this->url("users/pistes/edit", array("id" => $id_piste)) ?>"><?php echo $piste["titre"] ?></a>
+          <a href="<?php echo $this->url("users/pistes/edit", array("id" => $id_morceau)) ?>"><?php echo $piste["titre"] ?></a>
     <?php endif; ?>
     <?php if($piste["derivations"]) : ?>
           <br />
     <?php if($piste["permissions"]["editeur"]) : ?>
         <a href="<?php echo $this->url("users/pistes/edit", array("id" => $id_piste)) ?>"
            class="admin_link"
-           title="modifier cette source"><img src="<?php echo $this->out_url("icons/edit.gif") ?>" /></a>
+           title="modifier cette piste"><img src="<?php echo $this->out_url("icons/edit.gif") ?>" /></a>
     <?php else : ?>
         &nbsp;
     <?php endif; ?>
     <?php if($piste["permissions"]["admin"]) : ?>
         <a href="<?php echo $this->url("users/pistes/del", array("id" => $id_piste)) ?>"
            class="admin_link"
-           title="supprimer cette source"
-           onclick="return confirm('Supprimer cette source ?')"><img src="<?php echo $this->out_url("icons/del.gif") ?>" /></a>
+           title="supprimer cette piste"><img src="<?php echo $this->out_url("icons/del.gif") ?>"
+           onclick="return confirm('Supprimer cette piste ?')"/></a>
     <?php else : ?>
         &nbsp;
     <?php endif; ?>
   </fieldset>
 </form>
 
-<?php $items = "pistes"; $legend = "sources"; require $this->out_file("views/navig.php"); ?>
+<?php $items = "pistes"; $legend = "pistes"; require $this->out_file("views/navig.php"); ?>
 
 <?php else : ?>
-<p>Aucune source pour le moment</p>
+<p>Aucune piste pour le moment</p>
 <?php endif; ?>
index ef62f77..2769e77 100644 (file)
       $env->set_link("admin/sourceml/cache", $env->url("admin/cache"), "Cache", 20);
       $env->set_link("admin/sourceml/maintenance", $env->url("admin/maintenance"), "Maintenance", 30);
 
-      $env->set_link("users/authors", $env->url("users/groupes"), "Auteurs", 30);
+      $env->set_link("users/authors", $env->url("users/groupes"), "Groupes", 30);
       $env->set_link("users/albums", $env->url("users/albums"), "Albums", 31);
       $env->set_link("users/morceaux", $env->url("users/morceaux"), "Morceaux", 32);
       $env->set_link("users/pistes", $env->url("users/pistes"), "Sources", 33);
 
-      $env->set_link("menu_top/groupes", $env->url("sources/groupe"), "Auteurs", 10);
+      $env->set_link("menu_top/groupes", $env->url("sources/groupe"), "Groupes", 10);
       $env->set_link("menu_top/albums", $env->url("sources/album"), "Albums", 11);
       $env->set_link("menu_top/morceaux", $env->url("sources/morceau"), "Morceaux", 12);
       $env->set_link("menu_top/pistes", $env->url("sources/piste"), "Sources", 13);