<?php
if(isset($_POST['login']) && isset($_POST['pwd'])) {
    if(isset($logins[$_POST['login']])){
        $i=$logins[$_POST['login']];

        if($i['pwd']==$_POST['pwd']){
            // on la démarre :)
            $_SESSION['login'] = $_POST['login'];
            $_SESSION['pwd'] = $_POST['pwd'];
            $_SESSION['nom']=$logins[$_POST['login']]['nom'];
        } else {
            echo "Mauvais login ou mot de passe";
        }	
    } else {
        echo "Login/mot de passe non reconnu";
    }
}

if(isset($_POST['ajouter_item']) || isset($_POST['updater_item'])){
    //print_r($_POST);
    $message="";

    if(isset($_POST['ajouter_item'])){
        // ne pas injecter le bouton du form dans le xml !
        unset($_POST['ajouter_item']);

    } else {
        // ne pas injecter le bouton du form dans le xml !
        unset($_POST['updater_item']);
        $item=$_POST['url'];
    }
    // definition du xml
    $definition=$_POST['definition'];
    $structure=structured_item($_POST,$definition);
    //print_r($structure);

    // supprimer les fichiers si demandé
    if(isset($structure["doc-delete"])){

        $liste=$structure["doc-delete"]["value"];
        if(!is_array($liste)){ $liste=array($liste); }
        foreach($liste as $delete){
            $i=explode("|",$delete);
            // verifier que les deux infos (tag et nom) sont présent après l'explode sur pipe
            if(isset($i[1])){
                //echo "demande de suppression de -".$i[0]."- de type ".$i[1]."\n";

                // transformer value en array pour avoir un seul process
                if(!is_array($structure[$i[0]]["value"])){
                    $structure[$i[0]]["value"]=array($structure[$i[0]]["value"]);
                }
                foreach($structure[$i[0]]["value"] as $key => $val){
                    if($val==$i[1]){
                        unset($structure[$i[0]]["value"][$key]);
                    }
                }
                // supprimer le fichier lui-même
                unlink( $GLOBALS['root'].$i[1]);
            }
        }
        // retirer de la structure 
        unset($structure["doc-delete"]);
    }

    fix_exists_dir($GLOBALS['root'].$GLOBALS['dossier_images']);
    // traiter les fichiers
    // puis les ajouter dans la structure
    foreach($_FILES as $tag => $infos){
        //echo "<hr>Je prend file $tag";
        if($structure[$tag]['@attributes']['type']=='file' || $structure[$tag]['@attributes']['type']=='image'){ // peut-on associer un fichier à ce tag
            $ext_ok=explode(",",$structure[$tag]['@attributes']['allow']);
            foreach($infos['name'] as $num => $liste){ // passer 
                $ext = pathinfo($infos['name'][$num], PATHINFO_EXTENSION);
                if(in_array($ext,$ext_ok) && !empty($infos['name'][$num])){
                    //$message.="Extension compatible";
                    $tempFile = $infos['tmp_name'][$num];
                    $size= $infos['size'][$num];

                    // deplacer le fichier, en aménageant son nom
                    // et en remettant l
                    $fileParts = pathinfo($infos['name'][$num]);
                    $nom_seul=stripAccents($fileParts['filename']);

                    if(file_exists($GLOBALS['root'].$GLOBALS['dossier_images'].$nom_seul.".".$ext)){
                        $ad= hash('adler32', date("Y-m-d H:i:s"));
                        $nom_seul=$nom_seul."_".$ad; // ce serait mieux entre le nom et l'extension
                    } 
                    $retour=$GLOBALS['dossier_images'].$nom_seul.".".$ext;
                    move_uploaded_file($tempFile, $GLOBALS['root'].$GLOBALS['dossier_images'].$nom_seul.".".$ext);

                    //$message.= "- Je rentre dans $tag la valeur ".$retour."<br>";
                    // ajouter ce fichier dans $structure

                    // si une valeur unique est contenue dans value, la transformer en array
                    if(!is_array($structure[$tag]['value']) && $structure[$tag]['value'] !=""){
                        $structure[$tag]['value']=array($structure[$tag]['value']);

                    }
                    $structure[$tag]['value']=$retour;
                } else {
                    $message.="- Extension non compatible : $ext pas dans ".$structure[$tag]['@attributes']['allow']." ou fichier absent<br>";
                }

                //print_r($structure);

            }


        } else {
            $message.= "Pas possible de charger un fichier pour $tag<br>";
        }
    }
    // print_r($structure);

    $url=write_xml($structure);
    echo $url;
}

if(isset($_POST['ajouter_selection'])){
    unset($_POST['ajouter_selection']);

    $definition=$_POST['definition'];
    $structure=structured_item($_POST,$definition);
    // write_xml($contenus,$ecrase=false,$hometag="item")
    $url=write_xml($structure, false, "selection");
    // vider le cache de cette selection si elle existe
    echo $url;

}

if(isset($_POST['ajouter_upload'])){
    unset($_POST['ajouter_upload']);
    // reçoit la valeur compteur ajoutée lors de l'envoi
    $compteur=$_POST['compteur'];
    unset($_POST['compteur']);

    fix_exists_dir($GLOBALS['root'].$GLOBALS['dossier_images']);

    $base=$_POST;
    $base['date_entree'] = date("Y-m-d H:i:s");
    $definition=$base['definition'];
    $structure=structured_item($base,$definition);
    //print_r($structure);

    $nom_image=fichier_seul($structure['illustration']['value']);

    if(file_exists($GLOBALS['root'].$GLOBALS['dossier_images'].$nom_image)){
        $ad= hash('adler32', "_".date("Y-m-d H:i:s"));
        $nom_image=$nom_image.$ad;    // ajouter ça avant l'extension plus tard
    }
    rename($structure['illustration']['value'], $GLOBALS['root'].$GLOBALS['dossier_images'].$nom_image);
    $structure['illustration']['value']=$GLOBALS['dossier_images'].$nom_image;

    if(trim($base['title']) ==""){
        $nt=pathinfo($nom_image, PATHINFO_FILENAME);
        $structure['title']['value']=$nt;
        $structure['url']['value'] = $nt."_".hash('adler32', date("Y-m-d H:i:s"))."_".$compteur.".xml";
    } else {
        $structure['title']['value']=$base['title'];
        $structure['url']['value'] = nettoie_lien($base['title'])."_".hash('adler32', date("Y-m-d H:i:s"))."_".$compteur.".xml";
    }

    $l=write_xml($structure);

    echo $l;
    //$item=read_xml($l,true);
    //$retour.=affiche_vignette($item);

}

if(isset($_POST['update_items'])){

    $items=$_POST['item'];
    unset($_POST['item']);
    unset($_POST['update_items']);

    if(isset($_FILES)){    
        foreach($_FILES as $nom => $file){
            $lien=traiter_upload_doc($file);
            if($lien != -1){
                if($nom=="file"){
                    if(!isset($_POST['file'])){
                        $_POST['file']=$lien;
                    } else {
                        $_POST['file']=array_merge($_POST['file'], $lien);
                    }
                } else {
                    $_POST[$nom]=$lien[0];
                }
            }

        }
    }

    foreach($items as $item){
        if(file_exists( $item)){
            update_xml($item,$_POST,"item");
        }
    }
}

if(isset($_POST['action_admin'])){
    if(isset($_POST['vider_cache'])){
        remove_cache("collection.html");
        echo "Reload page !";
    }
}

if(isset($_POST['genere_vignette'])){
    $url=$_POST['url'];
    $c=read_xml($url,true);
    echo affiche_vignette($c);
}
if(isset($_POST['supprimer_item'])){
    $item=$_POST['item'];
    // rechercher les documents associés et les supprimer

    unlink($GLOBALS['root'].$item);
    remove_cache("collection.html");

    // vérifier les séletions et y retirer l'item
    $liste = glob($GLOBALS['root'].$GLOBALS['dossier_selections']."*.xml", GLOB_BRACE);

    if(is_array($liste)){
        foreach($liste as $url){ 
            $url=str_replace($GLOBALS['root'],"",$url);

            $selection = read_xml($url);


            // on est dans les selections
            foreach($selection['item'] as $num => $selection_item){
                if($selection_item==$item){
                    // l'item y est, enlever et sauver
                    unset($selection['item'][$num]);
                    $selection['url']=$url;

                    $structure=structured_item($selection,$GLOBALS['definition_selection']);
                    //print_r($structure);
                    write_xml($structure,true,"selection");
                }
            }
        }
    }

}
if(isset($_POST['supprimer_selection'])){
    $selection=$_POST['selection'];
    // rechercher les documents associés et les supprimer
    unlink($GLOBALS['root'].$selection);
}
if(isset($_POST['rotation_image'])){
    ini_set('memory_limit', '256M');
    $filename = $GLOBALS['root'].$_POST['url'];
    $degrees=$_POST['angle'];
    traiter_rotation_image($filename, $degrees);
}
if(isset($_POST['rotate_all'])){
    $liste_items=$_POST['item'];
    $degrees=$_POST['rotate_all'];

    foreach($liste_items as $item){
        $c=read_xml($item,true);
        traiter_rotation_image($GLOBALS['root'].$c['illustration'], $degrees);
    }    
}
if(isset($_POST['delete_all'])){
    $liste_items=$_POST['item'];

    foreach($liste_items as $item){
        unlink($GLOBALS['root'].$item);
        remove_cache("collection.html");
    }    
}
if(isset($_POST['update_all'])){




    $definition=$_POST['definition'];
    $liste_items=$_POST['item'];
    $post_info=$_POST;
    unset($_POST['item']);
    unset($_POST['update_all']);
    unset($_POST['date_entree']);
    unset($_POST['definition']);






    // virer les champs vides
    foreach($_POST as $champ => $valeur){
        if(trim($valeur)==""){
            //echo "je supprime ".$champ;
            unset($_POST[$champ]);   
        }
    }



    //traitement des pieces jointes
    /*
    if(isset($_FILES)){    
        foreach($_FILES as $nom => $file){
            $lien=traiter_upload_doc($file);
            if($lien != -1){
                if($nom=="file"){
                    if(!isset($_POST['file'])){
                        $post_info['file']=$lien;
                    } else {
                        $post_info['file']=array_merge($post_info['file'], $lien);
                    }
                } else {
                    $post_info[$nom]=$lien[0];
                }
            }
        }
    }
*/

    foreach($liste_items as $item){
        // lire les champs d'origine du xml
        // remplacer les champs du xml


        $origin_xml=structured_item(read_xml($item,true),$definition);

        foreach($_POST as $champ => $valeur){
            $origin_xml[$champ]['value']=$valeur;
        }
        print_r($origin_xml);

        //$new_xml=array_merge($origin_xml,$post_info);

        //$new_xml['url']=$item;
        echo write_xml($origin_xml,true); 

    }
    remove_cache("collection.html");
}

if(isset($_POST['delete_image'])){
    unset($post_info['delete_image']);

    $origin_xml = structured_item($_POST['item'],false);
    $fichier=$_POST['url'];
    @unlink($GLOBALS['root'].$GLOBALS['dossier_images'].$fichier);

    $origin_xml['illustration']['value']="";

    write_xml($origin_xml,$ecrase=true,"item");
    remove_cache("collection.html");
}
?>