X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=app%2Fcontrollers%2Fusers%2Fpistes.php;h=4fd25f64210c36a8728a1b5f3ca1937aae378971;hb=refs%2Ftags%2Fsourceml.0.15.2;hp=8d3d1ea080dbe48123ef9e0c0edec8a994dc397e;hpb=9391cb9ccb3dd2884e7be2f15aa729733288f1e5;p=mw_sourceml diff --git a/app/controllers/users/pistes.php b/app/controllers/users/pistes.php index 8d3d1ea..4fd25f6 100644 --- a/app/controllers/users/pistes.php +++ b/app/controllers/users/pistes.php @@ -1,11 +1,7 @@ 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 être identifier pour accéder à 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 été enregistré" - ); - } - 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, + ( + isset($_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) : "") + ), + isset($_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, + ( + isset($_POST["use_edit_reference_content"]) ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + isset($_POST["use_edit_reference_content"]) ? true : false + ); + } + else{ + if(!($piste["titre"] = trim($_POST["titre"]))){ + $env->message("merci de pré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é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 été ajoutée" - ); - } - else $env->erreur("La source a été ajoutée mais impossible de l'associer à ce morceau"); - } - else $env->redirect - ( $env->url("users/pistes"), - "la source a été ajouté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"] + ( + isset($_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 + isset($_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, + ( + isset($_POST["use_edit_reference_content"]) ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + isset($_POST["use_edit_reference_content"]) ? true : false + ); + } + else{ + if(!($piste["titre"] = trim($_POST["titre"]))){ + $env->message("merci de pré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é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 été modifiée" - ); - } - else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau"); - } - else $env->redirect - ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])), - "la source a été modifiée" - ); - } - else $env->erreur("La source a été modifiée mais impossible de l'associer à 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 été mises à jour", - 2 - ); - return; - } - else $erreur = - "le contenu du fichier XML a été mis à 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é 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 été mis à jour" + .", mais impossible de lire les informations de la piste" + ); } - else $erreur = "Impossible de mettre à 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é 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 été supprimé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" + ); } }