<?php
require("../config/config.php");
require(CHEMIN."inc/inc-functions.php");
require(CHEMIN."inc/classe_xml.php");
require(CHEMIN."inc/inc-display-functions.php");

// import depuis un zip
// on envoie les images vers upload puis on lance le formulaire
//print_r($_POST);
//print_r($_FILES);
if(isset($_POST['submit-zip'])){
    $filename = $_FILES['zip']['name'];
    $tmp_name = $_FILES['zip']['tmp_name'];

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    if(!in_array(strtolower($ext),array('zip'))){
        echo "Erreur de fichier, ceci n'est pas un zip !";
        die();
    }
    
    
    
    
    
    zip_flatten( $tmp_name, CHEMIN.DOSSIER_UPLOAD ); 
    
    
/*
    $zip = new ZipArchive;
    $res = $zip->open($tmp_name);
    $valid_ext = array('jpg','png','gif','jpeg');
    if ($res === TRUE) {
        for($i = 0; $i < $zip->numFiles; $i++){  
            $nom=$zip->getNameIndex($i);
            if(strpos($nom, "__MACOSX") === false){

                $fileParts = pathinfo($nom);
                //print_r($fileParts);
                if(!isset($fileParts['extension'])){
                    continue;
                }
                $ext = strtolower($fileParts['extension']);
                if(in_array(strtolower($ext),$valid_ext)){
                    //echo $fileParts['basename']."<br>";
                    $zip->extractTo(CHEMIN.DOSSIER_UPLOAD,$nom);
                }

            } else {
                // erreur !
            }
        } 
        $zip->close();
        echo 'Unzippé !<br>Redirection dans un instant';
    } else {
        echo 'Echec !<br>Quelque chose s\'est mal passé';
    }
    */
    die();
}

function zip_flatten ( $zipfile, $dest='.' ){
    $valid_ext = array('jpg','png','gif','jpeg');
    $zip = new ZipArchive;
    if ( $zip->open( $zipfile ) ){
        for ( $i=0; $i < $zip->numFiles; $i++ ){
            $entry = $zip->getNameIndex($i);
            if ( substr( $entry, -1 ) == '/' ) continue; // skip directories
            
            $ext = strtolower(pathinfo($entry, PATHINFO_EXTENSION));
            
            if(!in_array(strtolower($ext),$valid_ext)){
                continue;
            }
           
            $fp = $zip->getStream( $entry );
            $ofp = fopen( $dest.'/'.basename($entry), 'w' );
           
            if ( ! $fp )
                throw new Exception('Unable to extract the file.');
           
            while ( ! feof( $fp ) )
                fwrite( $ofp, fread($fp, 8192) );
           
            fclose($fp);
            fclose($ofp);
        }

                $zip->close();
    }
    else
        return false;
   
    return $zip;
} 

?>
<div class="p-3">
    <h2 class="titre-medium mb-3">Ajouter des items zippés</h2>
    <div class="texte-small">
        Cet outil permet de créer des entrées dans la collection générale à partir d'un fichier unique en zip.
    </div> 

    <hr>
    <h3 class="titre-small">Liste des éléments</h3>
    <div class="texte-tiny">
        Images présentes dans le dossier upload
    </div>
    <div id="import-list" class="my-3 texte-mini">
        <form method="post" enctype="multipart/form-data" id="form-zip">            
            <fieldset class="form-group mb-3 livre fieldset-illustration">
                <label for="zip" class="mb-1">Fichier zip</label>
                <div class="file-item unique small row">
                    <div class="col-12 mb-1"><input class="form-control form-control-sm" type="file" name="zip" value=""></div></div>
            </fieldset>
            <input type="submit" class="btn btn-success btn-sm" name="submit-zip" value="Uploader">
        </form>
    </div>