<?php
/*
Fichier : TEMPLATEPATH. '/inc/modules/mod-export.inc.php'
Objet : Affiche une entrée dans le menu WP pour accéder à la gestion des accès rapides
Nom : MOD Export Annuaire Utilisateurs
Description : Exporte en CSV les utilisateurs membre annuaire
*/

add_action('admin_menu', 'a111_annuaire_menu');

function a111_annuaire_menu() {
    add_submenu_page("users.php", "Options", "Options", "manage_options", '/options_annuaire', "options_annuaire");
}

function options_annuaire(){
    ?>
    <div class="wrap">
        <h1>Options de l'annuaire</h1>
        <div class="wrap">
            <h2>Export de l'annuaire</h2>
            <div class="">
                <form method="post">
                    <p>Cet outil vous permet d'exporter tout l'annuaire publié dans fichier .csv.<br />Les cellules sont séparées d'un point virgule et les lignes d'un saut de ligne. A préciser à l'éditeur lors de l'ouverture du fichier .csv</p>
                    <p>
                        <input type="submit" name="export_annuaire" value="Exporter l'annuaire" class="button button-primary button-large" />
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
}


add_action('wp_loaded', 'a111_export_annuaire');

function a111_export_annuaire(){
    if(isset($_POST['export_annuaire']) && !empty($_POST['export_annuaire'])){

        global $post;

        $args = array('role' => 'membre-annuaire'
        );
        $user_query = get_users($args);

        if ( ! empty( $user_query ) ) {

            header('Content-type: text/csv');
            header('Content-disposition: attachment;filename=exportAnnuaire.csv');
            $returnCsv = '';
            $returnCsv .= 'Nom;';
            $typologies = get_field_object('field_5ca2201bd62b2');

            foreach($typologies['choices'] as $typologie){
                $returnCsv .= 'Type: '.$typologie.';';
            }

            $returnCsv .= 'Sous-type;Telephone;Mail de contact;Site internet; Description, adresse, informations; Personne(s) à contacter';
            $returnCsv .= "\n";
            foreach ( $user_query as $user ) {

                $userMeta = get_user_meta($user->data->ID);

                $returnCsv .= '"'.sanitize_string($userMeta['structure'][0]).'";';

                $typos = unserialize($userMeta['typologie'][0]);

                foreach($typologies['choices'] as $typologie){
                    $hasTaxo = false;
                    foreach($typos as $typo){
                        if($typologie == $typo){
                            $hasTaxo = true;
                            break;
                        }
                    }
                    if($hasTaxo){
                        //$returnCsv .= '"'.$taxo->name.'";';
                        $returnCsv .= '"X";';
                    }else{
                        $returnCsv .= '"";';
                    }
                }

                $returnCsv .= '"'.sanitize_string($userMeta['sous-type'][0]).'";';
                $returnCsv .= '"'.sanitize_string($userMeta['tel'][0]).'";';
                $returnCsv .= '"'.sanitize_string($userMeta['mail'][0]).'";';
                $returnCsv .= '"'.sanitize_string($userMeta['web'][0]).'";';
                $returnCsv .= '"'.sanitize_string($userMeta['user_description'][0]).'";';
                $returnCsv .= '"'.sanitize_string($userMeta['contact'][0]).'";';
                $returnCsv .= "\n";

            }

            echo mb_convert_encoding($returnCsv, 'UTF-8');
            exit();

        }else{
            echo 'no post';
        }
    }
}

function sanitize_string($str){
    $str = wp_strip_all_tags($str);
    $str = html_entity_decode($str);
    $str = str_replace(';', ',', $str);
    $str = preg_replace( "/\r|\n/", " ", $str );

    return $str;
}