<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.4
 *
 * Copyright (C) 2006-2016  Sylvain FATOME
 * This program is free software; you can redistribute it and/or modify it under the terms
 * of the GNU General Public License as published by the Free Software Foundation;
 * either version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program
 * (in the directory docs);
 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 *
 * Contact : galawa@free.fr
 *
 * Web : http://smi.no-ip.org
 ****************************************************************************************/


// Vérification des tentatives de hack
$pos = strpos($_SERVER['PHP_SELF'], 'inc.php');
if ($pos !== FALSE) {
    header('Location: ../index.php');
}

include_once('../down/download.php');

/**
 * Vérifie l'extension d'un fichier
 *
 * @param $extension
 *
 * @return bool
 */
function ext_fic_ok($extension)
{
    global
    $extensions_ok;

    if (in_array('.' . $extension, $extensions_ok, true)) {
        return true;
    } else {
        return false;
    }
}

/**
 * Vérifie la date d'un fichier
 *
 * @param $fichier
 * @param $operande
 * @param $date
 *
 * @return bool
 */
function date_fic_ok($fichier, $operande, $date)
{
    $date_ok = FALSE;
    $daterech_time = strtotime(datetomysql($date));
    $datefile_time = strtotime(date('Y/m/d', filemtime($fichier)));

    switch ($operande) {
        case 0 :
            $date_ok = TRUE;
            break;
        case 1 :
            if ($datefile_time <= $daterech_time) {
                $date_ok = TRUE;
            }
            break;
        case 2 :
            if ($datefile_time >= $daterech_time) {
                $date_ok = TRUE;
            }
            break;
        case 3 :
            if ($daterech_time == $datefile_time) {
                $date_ok = TRUE;
            }
            break;
        case 4 :
            if ($daterech_time <> $datefile_time) {
                $date_ok = TRUE;
            }
            break;

        default:
            break;
    }

    return $date_ok;
}


/**
 * Retourne le code d'un client
 *
 * @param $dir
 * @param $nivutil
 *
 * @return string
 */
function give_codecli($dir, $nivutil)
{
    global
    $_SESSION;

    $codecli = '';

    switch ($nivutil) {
        case 1 :
            $codecli = $_SESSION['code_log'];
            break;
        default    :
            // On est dans le dossier des clients ?
            $pos = strripos($dir, '/clients/');
            if ($pos === false) {
            } else {
                // Oui : on récupère le nom du client
                $racine = substr($dir, 0, $pos + 9);
                $str_clean = str_replace($racine, '', $dir);
                $tab_chemin = explode('/', $str_clean);
                $codefound = strtoupper(trim($tab_chemin[0]));
                // On vérifie si le code trouvé est bien un client
                $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
                $rech2 = 'SELECT cli_code FROM `' . TBCLI . "` WHERE `cli_code` = '" . $db->escape($codefound) . "'";
                $row2 = $db->get_row($rech2, ARRAY_A);
                if ($row2) {
                    extract($row2);
                    $codecli = $cli_code;
                }
                close_database();
            }
            break;
    }

    return $codecli;
}

/**
 * Dit si fichier visualisable ou pas
 *
 * @param      $nomficcomplet
 * @param bool $test_lie
 *
 * @return bool
 */
function fic_visuok($nomficcomplet, $test_lie = FALSE)
{
    global
    $_SESSION;

    $visuok = TRUE;
    $row = lit_enr_fic($nomficcomplet);
    if (is_array($row)) {
        extract($row);
        // C'est privé : on contrôle donc juste le code et le niveau du connecté
        if ($fic_prive == 1) {
            switch ($_SESSION['niv_log']) {
                // Client
                case 1 :
                    // Dans tous les cas, c'est 100% privé
                    $visuok = FALSE;
                    break;
                // Technicien agence
                case 3 :
                    if ($fic_minlevel == 0) {
                        // Si le technicien n'est pas le créateur du fichier, c'est 100% privé
                        if ($fic_codecrea <> $_SESSION['code_log']) {
                            $visuok = FALSE;
                        }
                    } else if ($fic_minlevel <> 3) {
                        $visuok = FALSE;
                    }
                    break;
                // Agence
                case 4 :
                    if ($fic_minlevel == 0) {
                        // Si le code créateur n'est pas l'agence, on vérifie que c'est un technicien
                        // Si ce technicien appartient à l'agence, elle a le droit de voir le fichier
                        if ($fic_codecrea <> $_SESSION['code_log']) {
                            $row2 = lit_enr_tec($fic_codecrea, TRUE);
                            if (is_array($row2)) {
                                $row2 = encode_str($row2);
                                extract($row2);
                                // Si c'est un technicien qui a créé le fichier, mais qu'il n'appartient pas à l'agence
                                // c'est 100% privé
                                if ($tec_codeage <> $_SESSION['code_log']) {
                                    $visuok = FALSE;
                                }
                            } // Si ce n'est pas un technicien qui a créé le fichier, c'est 100% privé
                            else {
                                $visuok = FALSE;
                            }
                        }
                    } else if ($fic_minlevel > 4) {
                        $visuok = FALSE;
                    }
                    break;
                // Centre de gestion
                case 5 :
                    if ($fic_minlevel == 0) {
                        if ($fic_codecrea <> $_SESSION['code_log']) {
                            $visuok = FALSE;
                        }
                    } else if ($fic_minlevel > 5) {
                        $visuok = FALSE;
                    }
                    break;
                default :
                    break;
            }
        } else // Pas privé : on vérifie si on doit tester si le fichier est lié ou pas
        {
            if ($test_lie == TRUE) {
                switch ($_SESSION['niv_log']) {
                    // Client
                    case 1 :
                        if (est_PJID($fic_id) == FALSE) {
                            $visuok = FALSE;
                        }
                        break;
                    // Technicien agence
                    case 3 :
                        if ($fic_minlevel <> 3) {
                            $visuok = FALSE;
                        }
                        break;
                    // Agence
                    case 4 :
                        if ($fic_minlevel > 4) {
                            $visuok = FALSE;
                        }
                        break;
                    // Centre de gestion
                    case 5 :
                        if ($fic_minlevel > 5) {
                            $visuok = FALSE;
                        }
                        break;
                    default :
                        break;
                }
            }
        }
    }

    return $visuok;
}

/**
 * Lit les fichiers et dossiers
 *
 * @param $DIR
 * @param $niv_util
 * @param $code_util
 *
 * @return array
 */
function lit_dir($DIR, $niv_util, $code_util)
{
    global
    $url_gfc,
    $_SESSION;

    $test_lie = FALSE;

    // Création du niveau maximum de dossier
    switch ($niv_util) {
        // Si on est client, le répertoire maximum est le répertoire du client
        case 1 :
            $rep_top = $url_gfc . '/clients/' . strtolower($code_util);
            $rep_pj = $rep_top . '/PJ';

            // On doit tester si on est dans un dossier de pièces jointes
            $pos = strpos($DIR, $rep_pj);

            if ($pos === FALSE) // On est pas dans le sous répertoire des PJ du client
            {
                break;
            } else // on y est
            {
                if ($DIR <> $rep_pj) // On est pas 'pile' dessus, donc dedans
                {
                    // $tab_chemin = explode('/', str_replace($rep_pj . '/', '', $DIR));
                    $test_lie = TRUE;
                }
            }
            break;
            break;
        // Si on est admin, siège, agence, ou technicien, le répertoire maximum est le répertoire de base
        case 3 :
        case 4 :
        case 5 :
        case 9 :
            $rep_top = $url_gfc;
            break;
        default :
            break;
    }

    if ($DIR == $rep_top) // on est dans la "racine"
    {
        $rep_cour = '';
    } else {
        $rep_cour = str_replace($rep_top . '/', '', $DIR);
    }

    // Répertoire balayé (hors racine principale)
    $dossier = opendir($DIR);

    while (false !== ($Fichier = readdir($dossier))) {
        if (($Fichier != '.') && ($Fichier != '..') && ($Fichier != '.htaccess')) {
            $nomficcomplet = $DIR . '/' . $Fichier;

            if (is_dir($nomficcomplet) == TRUE) // C'est un dossier
            {
                $recupok = TRUE;
                // Tests si  Agence ou Technicien agence
                switch ($niv_util) {
                    case 3 :
                    case 4 :
                        $chemin_rep = $Fichier;
                        if ($rep_cour <> '') {
                            $chemin_rep = $rep_cour . '/' . $Fichier;
                        }

                        $tab_chemin = explode('/', $chemin_rep);
                        switch ($tab_chemin[0]) {
                            // On ne peut afficher que le répertoire de l'agence
                            case 'agences' :
                                if (count($tab_chemin) > 1) {
                                    if ($tab_chemin[1] <> strtolower($code_util)) {
                                        $recupok = FALSE;
                                    }
                                }
                                break;
                            // On ne peut afficher que les clients de l'agence
                            case 'client' :
                                if (count($tab_chemin) > 1) {
                                    $recupok = client_age_ok($tab_chemin[1], $code_util, TRUE);
                                }
                                break;
                            // On ne peut pas afficher le chemin des imports (racine) pour les agences
                            case 'imports' :
                                $recupok = FALSE;
                                break;
                            // On ne peut pas afficher le chemin des imports (racine) pour les agences
                            case 'pj' :
                                $recupok = FALSE;
                                break;
                            default :
                                break;
                        }
                        break;
                    default :
                        break;
                }

                if ($recupok == TRUE) {
                    // On vérifie si c'est privé ou pas
                    if (fic_visuok($nomficcomplet, $test_lie) == TRUE) {
                        $Arrayfic[] = ['nom' => $Fichier, 'fichier' => 0];
                    }
                }
            } else // C'est un fichier
            {
                // On vérifie si c'est privé ou pas
                if (fic_visuok($nomficcomplet, $test_lie) == TRUE) {
                    // On contrôle l'extension du fichier
                    $ext_fic = strtolower(substr(strrchr($Fichier, '.'), 1));
                    if (ext_fic_ok($ext_fic) == TRUE) {
                        $Arrayfic[] = ['nom' => $Fichier, 'fichier' => 1];
                    }
                }
            }
        }
    }
    closedir($dossier);

    return $Arrayfic;
}

/**
 * Tri par clef d'un tableau
 *
 * @param $array
 * @param $index
 *
 * @return array
 */
function sort_by_key($array, $index)
{
    $sort = [];
    //préparation d'un nouveau tableau basé sur la clé à trier
    foreach ($array as $key => $val) {
        $sort[$key] = $val[$index];
    }
    //tri par ordre naturel et insensible à la casse
    natcasesort($sort);
    //formation du nouveau tableau trié selon la clé
    $output = [];
    foreach ($sort as $key => $val) {
        $output[] = $array[$key];
    }
    return $output;
}

/** @noinspection MoreThanThreeArgumentsInspection */
/**
 * Affichage d'un répertoire
 * rep : répertoire en partant de url_gfc

 * @param $niv_util
 * @param $code_util
 * @param $code_age
 * @param $operande
 * @param $date
 */
function affiche_rep($niv_util, $code_util, $code_age, $operande, $date)
{
    global
    $_SESSION,
    $url_gfc,
    $fictec_minlev;

    // Récupération des paramètres
    fix_magic_quotes();
    $_GET = clean_str($_GET);
    $dir = valget('dir');
    $tx = strtolower(valget('tx'));
    $ci = valget('ci');
    $cc = strtolower(valget('cc'));
    $mode_pj = FALSE;
    $rep_pj = '';
    $erreur = FALSE;

    // URLs diverses
    $link_rep_clients = $url_gfc . '/clients';
    $link_rep_agences = $url_gfc . '/agences';
    $url_mkdir = 'mdir.php?dir=' . $dir;

    // Variables en fonction du mode pièces jointes ou pas

    // URL de retour
    $racine_url_principale = '';
    // Affichage première colonne (sélection pour suppression, déplacement)
    $affcol1 = TRUE;
    // Affichage septième colonne (sélection attaché ou pas)
    $affcol7 = TRUE;


    // Vérification affichage colonnes
    switch ($tx) {
        case 'int' :
            $row = lit_enr_int($ci);
            if (is_array($row)) {
                extract($row);

                $racine_url_principale = 'fic_pj.php';
                $affcol1 = FALSE;
                $mode_pj = TRUE;

                // On crée l'URL de stockage
                $rep_pj = $url_gfc . '/clients/' . $cc . '/PJ/' . $ci;
            } else {
                $erreur = TRUE;
            }
            break;
        case 'cli' :
            $racine_url_principale = 'fic_pj.php';
            $affcol7 = FALSE;
            $mode_pj = TRUE;

            // On crée l'URL de stockage
            $rep_pj = $url_gfc . '/clients/' . $cc . '/PJ';

            break;
        case 'rel' :
            $affcol1 = FALSE;
            break;
        default :
            $affcol7 = FALSE;
            $racine_url_principale = 'fic_down.php';
            break;
    }

    if ($erreur == FALSE) {
        $link_icone .= '<a href="javascript:;" onclick="init_new_window(\'' . $url_mkdir . '\',\'rep_add\',900,400,\'yes\')")>';
        $link_icone .= '<img src="../img/rep_add.png" border="0" align="absmiddle" title="' . _('Ajout répertoire') . '"></a>';

        // $link_icone = "<a href=\"javascript:;\" onclick=\"fensaisie('" . $url_mkdir . "',900,400,'status=no,scrollbars=no,menubar=no,statusbar=no,location=no,locationbar=no');\")><img src=\"../img/rep_add.png\" title=\""._('Ajouter un répertoire')."\" border=\"0\" align=\"absmiddle\"></a>";

        // Variables poura affichage des boutons en bas de liste
        $mult_del = FALSE;
        $mult_mve = FALSE;

        // Création du niveau maximum de dossier
        switch ($niv_util) {
            // Si on est client, le répertoire maximum est le répertoire du client
            case 1 :
                if ($mode_pj == FALSE) {
                    $rep_top = $url_gfc . '/clients/' . strtolower($code_util);
                    if ($dir == '') {
                        $dir = 'clients/' . strtolower($code_util);
                    }
                } else {
                    $rep_top = $rep_pj;
                    if ($dir == '') {
                        $dir = 'clients/' . strtolower($code_util) . '/PJ';
                    }
                }
                break;
            // Si on est admin, siège, agence, ou technicien, le répertoire maximum est le répertoire de base
            case 3 :
            case 4 :
            case 5 :
            case 9 :
                $rep_top = $rep_pj;
                if ($mode_pj == FALSE) {
                    $rep_top = $url_gfc;
                }
                if ($dir == '') {
                    switch ($tx) {
                        case 'int' :
                            $dir = 'clients/' . strtolower($code_util) . '/PJ/' . $ci;
                            break;
                        case 'cli' :
                            $dir = 'clients/' . strtolower($code_util) . '/PJ';
                            break;
                        default :
                            break;
                    }
                }
                break;
            default :
                break;
        }
        $rep_balaye = $rep_top;
        if ($dir <> '') {
            $rep_balaye = $url_gfc . '/' . $dir;
        }
        $_SESSION['rb'] = $rep_balaye;
        // On vérifie si le dossier est affichable
        $aff_dir = TRUE;

        /* contrôles des tentatives de Hacks */
        switch ($niv_util) {
            case 1 :
                // Les clients ne peuvent pas visualiser la colonne de choix suppression/déplacement, ni de liaison
                $affcol1 = FALSE;
                $affcol7 = FALSE;
                if ($tx == 'cli') {
                    // Si c'est appel depuis la fiche client, on vérifie :
                    //   .Si dans le répertoire "clients/xxx", si on est bien dans celui du client
                    $rep_ce_client = $link_rep_clients . '/' . strtolower($code_util);
                    $pos = strpos($rep_balaye, $rep_ce_client);
                    if ($pos === FALSE) {
                        $aff_dir = FALSE;
                    }
                }
                break;
            case 3 :
            case 4 :
                // Si c'est une agence ou un technicien, on vérifie :
                //   .Si dans le répertoire "agences/xxx", si on est bien dans celui de l'agence
                //   .Si dans le répertoire "clients/xxx", si le client est bien géré par l'agence

                // Contrôle si dans répertoire "agences/xxx"
                // On vérifie si rep_agences fait partie de DIR
                // (CaD si le répertoire à parcourir est dans le répertoire contenant toutes les agences)
                $pos = strpos($rep_balaye, $link_rep_agences);
                if ($pos === FALSE) // On est pas dans le sous-répertoire privatif des agences, on peut donc afficher...sauf les imports
                {
                    $pos2 = strpos($rep_balaye, 'imports');
                    $aff_dir = FALSE;
                    if ($pos2 == FALSE) {
                        $aff_dir = TRUE;
                    }
                } else // on y est
                {
                    // "Pile" dans le répertoire principal des répertoires privés des agences,
                    // On accepte le chemin à parcourir
                    if ($rep_balaye == $link_rep_agences) {
                        $aff_dir = TRUE;
                    } else // On est dans un sous-répertoire au répertoire privatif des agences
                    {
                        $rep_cette_agence = $link_rep_agences . '/' . strtolower($code_age);
                        // On vérifie si on est bien dans le répertoire de l'agence connectée
                        $pos2 = strpos($rep_balaye, $rep_cette_agence);
                        if ($pos2 === FALSE) // On est pas dans le sous-répertoire privatif de cette agence, on ne peut pas afficher
                        {
                            $aff_dir = FALSE;
                        }
                    }
                }

                // Contrôle si dans répertoire "clients/xxx" (uniquement si pas déjà un problème)
                if ($aff_dir == TRUE) {
                    // On vérifie si link_rep_clients fait partie de DIR
                    // (CaD si le répertoire à parcourir est dans le répertoire contenant tous les clients)
                    $pos = strpos($rep_balaye, $link_rep_clients);
                    if ($pos === FALSE) // On est pas dans le sous-répertoire privatif des clients, on peut donc afficher
                    {
                        $aff_dir = TRUE;
                    } else // on y est
                    {
                        if ($dir <> 'clients') // On est dans un sous-répertoire du répertoire 'clients'
                        {
                            // Extraction du code client de l'URL
                            $tab_rep_get = explode('/', $dir);
                            $rep_get = $tab_rep_get[1];
                            // Contrôle du code client récupéré
                            if ($rep_get <> '') {
                                $row2 = lit_enr_cli($rep_get, TRUE);
                                if (is_array($row2)) // Ce code client existe, on vérifie donc le code agence "propriétaire" ou si non affecté
                                {
                                    $row2 = encode_str($row2);
                                    extract($row2);
                                    $row2 = lit_enr_age($code_age, TRUE); // On récupère informations sur l'agence
                                    if ($row2) {
                                        extract($row2);
                                        switch ($tx) {
                                            case 'int' :
                                                if (($int_codeage <> $code_age) AND ($int_codeages <> $code_age)) {
                                                    $aff_dir = FALSE;
                                                }
                                                break;
                                            default :
                                                // Vérifie si dans zone de chalandise
                                                $tab_depzc = tab_zcc_age_open($age_code, TRUE);
                                                if (count($tab_depzc) > 0) {
                                                    if (in_array($cli_dep . '_' . $cli_codepays, $tab_depzc,true)) {
                                                        // Dans la zone mais affecté à une autre agence : refusé
                                                        if (($cli_prop <> $code_age) AND ($cli_prop <> NULL)) {
                                                            $aff_dir = FALSE;
                                                        }
                                                    } else // Pas dans la zone : refusé
                                                    {
                                                        $aff_dir = FALSE;
                                                    }
                                                } else // Pas de zone : refusé
                                                {
                                                    $aff_dir = FALSE;
                                                }
                                                break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;
            default :
                break;
        }

        if ($aff_dir == TRUE) {
            /* Affichage des icônes de création de répertoires */
            $aff_ico_addrep = FALSE;
            switch ($niv_util) {
                case 3 :
                case 4 :
                case 5 :
                case 9 :
                    // On vérifie si on est dans le répertoire clients
                    $pos1 = strpos($dir, 'clients');
                    if ($pos1 === FALSE) {
                        // Non...On vérifie si on est dans le répertoire agences
                        $pos2 = strpos($dir, 'agences');
                        if ($pos2 === FALSE) {
                            // On est pas non plus dans le répertoire agences, on peut ajouter un répertoire si on est siège ou admin
                            if (($dir == '') AND ($niv_util >= 5)) {
                                $aff_ico_addrep = TRUE;
                            }
                            break;
                        } else {
                            // On y est..si on est dans un sous répertoire de 'agences' (donc dans son répertoire privé),
                            // on peut ajouter un répertoire
                            if ($dir <> 'agences') {
                                $aff_ico_addrep = TRUE;
                            }
                        }
                    } else {
                        // Oui...si on est pas pile le répertoire clients (donc dans un sous répertoire client autorisé)
                        // on peut ajouter un répertoire)
                        if ($dir <> 'clients') {
                            $aff_ico_addrep = TRUE;
                        }
                    }
                    break;
                default :
                    break;
            }
            if ($rep_balaye == $rep_top) // On est dans la "racine"
            {
                $txtrep = _('Dossier racine');
            } else {
                $txtrep = donne_desc_fic($rep_balaye);
            }
            if (trim($txtrep) == '') {
                $txtrep = $dir;
            }

            // Affichage du répertoire courant simplifié
            echo '<table border="0" width="100%" cellpadding="0" cellspacing="0">';
            echo '<td width="50%">';
            if (($dir <> '') AND ($rep_balaye <> $rep_top)) {
                echo ' <a href="javascript:history.back()">';
                echo '[' . _('Niveau précédent') . ']';
                echo '</a>';
                echo ' ';
                $newdir = '';
                if ($url_gfc <> $rep_top) {
                    $newdir = str_replace($url_gfc . '/', '', $rep_top);
                }
                echo ' <a href="' . $racine_url_principale;
                $url_variables = '?dir=' . $newdir . '&ope=' . $operande . '&date=' . $date;
                if ($cc <> '') {
                    $url_variables .= '&cc=' . $cc;
                }
                if ($ci <> '') {
                    $url_variables .= '&ci=' . $ci;
                }
                if ($tx <> '') {
                    $url_variables .= '&tx=' . $tx;
                }
                echo $url_variables;
                echo '">';
                echo '[' . _('Niveau principal') . ']';
                echo '</a>';
            } else {
                echo '&nbsp;';
            }
            echo '</td>';
            echo '<td width="50%" align="right">';
            echo '<span class="annot_petit_gras">';
            echo _('Dossier actuel') . ' : ';
            echo '</span>';
            echo '<span class="annot_petit_it">';
            echo $txtrep;
            echo '</span>';
            if ($aff_ico_addrep == TRUE) {
                echo ' ' . $link_icone;
            }
            echo '</td>';
            echo '</table>';

            if (is_dir($rep_balaye)) {
                $Lst_Fic = lit_dir($rep_balaye, $niv_util, $code_util);
                if (count($Lst_Fic) == 0) {
                    echo '<br />';
                    echo '<span class="annot_gras_it">' . _('Aucun fichier trouvé') . '</span><br />';
                } else {
                    switch ($tx) {
                        case 'int' :
                            echo '<form name="fic_maj" id="fic_maj"  method="post" action="fic_pj_enr.php">';
                            break;
                        default :
                            echo '<form name="fic_maj" id="fic_maj"  method="post" action="fddmm.php">';
                            break;
                    }
                    echo '<input name="dir" type="hidden" id="dir" value="' . $dir . '">';
                    echo '<input name="cc" type="hidden" id="cc" value="' . $cc . '">';
                    echo '<input name="ci" type="hidden" id="ci" value="' . $ci . '">';
                    echo '<input name="tx" type="hidden" id="tx" value="' . $tx . '">';
                    echo '<input name="txtrep" type="hidden" id="txrep" value="' . $txtrep . '">';
                    echo '<table class="Mtable" border="0" width="100%" cellpadding="0" cellspacing="0">';
                    if ($affcol1 == TRUE) {
                        echo '<th>';
                        echo _('Choisir');
                        echo '</th>';
                    }
                    echo '<th>';
                    echo _('Nom du fichier');
                    if ($niv_util == 9) {
                        echo '<span class="annot_petit_it">';
                        echo ' (' . _('propriétaire') . ')';
                        echo '</span>';
                    }
                    echo '</th>';
                    echo '<th>';
                    echo _('Taille');
                    echo '</th>';
                    echo '<th>';
                    echo _('Date et heure de modification');
                    echo '</th>';
                    echo '<th>';
                    echo _('Téléchargé');
                    echo '</th>';
                    if ($niv_util >= 3) {
                        echo '<th>';
                        echo _('Cliquer');
                        echo '</th>';
                        if ($affcol7 == TRUE) {
                            echo '<th>';
                            echo _('Lié');
                            echo '</th>';
                        }
                    }

                    $Tab_Fic = sort_by_key($Lst_Fic, 'fichier');
                    $Tab_Fic = sort_by_key($Tab_Fic, 'nom');
                    $i = 0;

                    foreach ($Tab_Fic as $val) {
                        $Fichier = $val['nom'];

                        $txtrech = valget('search');
                        $txtrech_maj = str_majuscules($txtrech);

                        $chemin_fichier = $rep_balaye . '/' . $Fichier;

                        // Récupération des données MySQL
                        if ($val['fichier'] == 1) {
                            $fic_nbtel = donne_nbtel_ficdir($dir . '/' . $Fichier);
                        }

                        $existe = FALSE;
                        $aff_fichier = TRUE;

                        $row = lit_enr_fic($chemin_fichier);

                        if (is_array($row)) {
                            $row = encode_str($row);
                            extract($row);
                            if ($fic_nom == $chemin_fichier) {
                                if ($fic_desc == '') {
                                    $fic_desc = $Fichier;
                                }
                                $existe = TRUE;
                            } else {
                                $fic_desc = $Fichier;
                            }
                        } else {
                            $fic_desc = $Fichier;
                        }
                        if ($existe == TRUE) {
                            $createur = donne_createur_ficdir($chemin_fichier);
                        }
                        $nfic = $Fichier;
                        if ($dir <> '') {
                            $nfic = $dir . '/' . $Fichier;
                        }

                        // En mode pièce jointe, le client ne voit que ce qui est lié
                        if ($val['fichier'] == 1) //Test uniquement si c'est un fichier
                        {
                            if ($mode_pj == TRUE) {
                                switch ($niv_util) {
                                    case 1 :
                                        if (est_PJ_code($nfic, $ci, TRUE) == FALSE) {
                                            $aff_fichier = FALSE;
                                        }
                                        break;
                                    default :
                                        break;
                                }
                            }
                        }

                        // Test si recherche demandée
                        if ($txtrech <> '') {
                            $aff_fichier = FALSE;

                            if ($val['fichier'] == 1) // C'est un fichier, on teste sur son "vrai" nom ou le descriptif
                            {
                                $fichier_maj = str_majuscules($Fichier);
                            } else // C'est un répertoire, on teste sur le nom affiché ou le descriptif
                            {
                                if ($dir <> '') // On est dans un sous répertoire
                                {
                                    $nom_rep = substr(str_replace($dir, '', $Fichier), 1);
                                } else {
                                    $nom_rep = substr($Fichier, 1);
                                }
                                $fichier_maj = str_majuscules($nom_rep);
                            }

                            // Le nom réel du fichier ou répertoire correspond à la recherche
                            // Ou le descriptif contient le(s) mot(s) recherché(s)
                            if ((strpos($fichier_maj, $txtrech_maj) !== false) OR (strpos(strtoupper($fic_desc), strtoupper($txtrech)) !== false) OR strpos(strtoupper($fic_createur), strtoupper($txtrech))) {
                                $aff_fichier = TRUE;
                            }
                        }

                        if ($aff_fichier == TRUE) // Filtre sur chaîne recherchée
                        {
                            if ($val['fichier'] == 1) // C'est un fichier
                            {
                                $urlfic = $rep_balaye . '/' . $Fichier;
                                if (date_fic_ok($urlfic, $operande, $date) == TRUE) // Filtre sur date
                                {
                                    // Création de l'entête de ligne (TR)
                                    echo '<tr>';

                                    if ($affcol1 == TRUE) {
                                        echo '<td align="center" width="30">';
                                        if ($niv_util >= 3) {
                                            if (($createur == $code_util) OR ($niv_util == 9)) {
                                                $mult_del = TRUE;
                                                $mult_mve = TRUE;
                                                echo '<input type="checkbox" name="fic_choisi[]" value="' . $Fichier . '"';
                                            } else {
                                                echo '&nbsp;';
                                            }
                                        }
                                        echo '</td>';
                                    }

                                    echo '<td width="50%" align="center">';
                                    echo ' <a href="../down/download.php?' . $nfic . '">' . $fic_desc . '</a>';

                                    if ($niv_util == 9) {
                                        echo '<span class="annot_petit_it">';
                                        echo ' (' . $createur . ')';
                                        echo '</span>';
                                    }
                                    // $detfic=donne_det_fic($chemin_fichier);
                                    if ($fic_detail <> '') {
                                        echo ' <a href="#" class="pop"><img src="../img/help.png" alt="' . _('Descriptif') . '" border="0" align="absmiddle"><span>' . formatetxtbr(stripslashes($fic_detail)) . '</span></a>';
                                    }

                                    if ($fic_prive == TRUE) {
                                        echo ' <a href="#" class="pop"><img src="../img/locked.png" alt="' . _('Privé') . '" border="0" align="absmiddle"><span>' . _('Privé') . ' (' . $fic_codecrea . ' - ' . $fictec_minlev[$fic_minlevel] . ')</span></a>';
                                    }

                                    echo '</td>';
                                    echo '<td align="center">';
                                    echo download_size($nfic);
                                    echo '</td>';
                                    echo '<td align="center">' . date('d/m/Y H:i:s', filemtime($urlfic)) . '</td>';
                                    $nb_fois = $fic_nbtel . ' ' . _('fois');
                                    echo '<td align="center">' . $nb_fois . '</td>';
                                    if ($niv_util >= 3) {
                                        echo '<td align="center">';
                                        if (($createur == $code_util) OR ($niv_util == 9)) {
                                            $lst_name = TRUE;
                                            $url_ren = 'fdren.php?td=1&name=' . $nfic;
                                            cre_falselnk_img('', 'fic_ren_' . $nfic, 'span', 'center', _('Nommer ou renommer'), 'lnkpop', $url_ren, '../img/edit.png', 900, 500);
                                        }
                                        if (($niv_util == 9) AND ($createur <> $code_util) AND ($existe == TRUE)) {
                                            $lst_grab = TRUE;
                                            $url_grab = 'fdgrab.php?td=1&name=' . $nfic;
                                            cre_falselnk_img('', 'fic_app_' . $nfic, 'span', 'center', _("S'approprier le fichier"), 'lnkpop', $url_grab, '../img/get.png', 700, 300);
                                        }
                                        echo '</td>';

                                        if ($affcol7 == TRUE) {
                                            echo '<td align="center" width="30">';
                                            if ($niv_util >= 3) {
                                                $checked = FALSE;
                                                switch ($tx) {
                                                    case 'int' :
                                                        $checked = est_PJ_code($nfic, $ci);
                                                        break;
                                                }

                                                echo '<input type="checkbox" name="fic_lie[]" value="' . $nfic . '"';
                                                if ($checked == TRUE) {
                                                    echo ' checked';
                                                }
                                                echo '>';
                                            }
                                            echo '</td>';
                                        }
                                    }

                                    echo '</tr>';
                                }
                            } else // C'est un répertoire
                            {
                                // Création de l'entête de ligne (TR)
                                echo '<tr>';

                                if ($affcol1 == TRUE) {
                                    echo '<td align="center" width="30">';
                                    if ($niv_util >= 3) {
                                        if ((($createur == $code_util) OR ($niv_util == 9)) AND ($Fichier <> 'agences') AND ($Fichier <> 'clients') AND ($Fichier <> 'imports')) {
                                            $mult_del = TRUE;
                                            $mult_mve = TRUE;
                                            echo '<input type="checkbox" name="fic_choisi[]" value="' . $Fichier . '">';
                                        } else {
                                            echo '&nbsp;';
                                        }
                                    }
                                    echo '</td>';
                                }
                                echo '<td width="50%" align="center">';
                                echo ' <a href="' . $racine_url_principale . '?dir=' . $nfic . '&ope=' . valget('ope') . '&date=' . valget('date') . '&cc=' . $cc . '&ci=' . $ci . '&tx=' . $tx . '"> ' . $fic_desc . ' </a>';
                                if ($niv_util == 9) {
                                    echo '<span class="annot_petit_it">';
                                    echo ' (' . $createur . ')';
                                    echo '</span>';
                                }

                                // $detfic=donne_det_fic($chemin_fichier);
                                if ($fic_detail <> '') {
                                    echo ' <a href="#" class="pop"><img src="../img/help.png" alt="' . _('Descriptif') . '" border="0" align="absmiddle"><span>' . formatetxtbr($fic_detail) . '</span></a>';
                                }
                                if ($fic_prive == TRUE) {
                                    echo ' <a href="#" class="pop"><img src="../img/locked.png" alt="' . _('Privé') . '" border="0" align="absmiddle"><span>' . _('Privé') . ' (' . $fic_codecrea . ' - ' . $fictec_minlev[$fic_minlevel] . ')</span></a>';
                                }
                                echo '</td>';
                                echo '<td>&nbsp;</td>';
                                echo '<td align="center">';
                                echo '<span class="annot_std_it">';
                                echo _('Répertoire');
                                echo '</span>';
                                echo '</td>';
                                echo '<td>&nbsp;</td>';
                                if ($niv_util >= 3) {
                                    echo '<td align="center">';
                                    if ((($createur == $code_util) OR ($niv_util == 9)) AND ($Fichier <> 'agences') AND ($Fichier <> 'clients') AND ($Fichier <> 'imports')) {
                                        $lst_name = TRUE;
                                        $url_ren = 'fdren.php?td=0&name=' . $nfic;
                                        cre_falselnk_img('', 'fic_ren_' . $nfic, 'span', 'center', _('Nommer ou renommer'), 'lnkpop', $url_ren, '../img/edit.png', 900, 500);
                                    }
                                    if (($niv_util == 9) AND ($createur <> $code_util) AND ($existe == TRUE)) {
                                        $lst_grab = TRUE;
                                        $url_grab = 'fdgrab.php?td=0&name=' . $nfic;
                                        cre_falselnk_img('', 'fic_app_' . $nfic, 'span', 'center', _("S'approprier le fichier"), 'lnkpop', $url_grab, '../img/get.png', 700, 300);
                                    }
                                    echo '</td>';
                                    if ($affcol7 == TRUE) {
                                        echo '<td align="center" width="30">';
                                        echo '&nbsp;';
                                        echo '</td>';
                                    }
                                }
                                echo '</tr>';
                            }
                            $i++;
                        }
                    }

                    echo '</table>';
                    if ($affcol1 == TRUE) {
                        if (($mult_mve == TRUE) OR ($mult_del == TRUE)) {
                            echo '<table border="0" width="100%" cellpadding="0" cellspacing="0">';
                            echo '<tr>';
                            echo '<td align="right" width="50">';
                            echo ' <img src="../img/arrow_ltr.png" title="' . _('Supprimer le répertoire') . '" border="0" align="absmiddle"></a>';
                            echo '</td>';
                            echo '<td align="center" width="80">';
                            echo ' <input type="button" name="check" id="check" value="Tous" style="text-decoration: none; font-size: 11px; color:White ;font-weight:bold;background-color: #666666;">';
                            echo '</td>';
                            echo '<td>';
                            echo ' / ';
                            echo '<span class="annot_std_gras">';
                            echo _('Pour la sélection') . ' : ';
                            echo '</span>';
                            if ($mult_del == TRUE) {
                                echo ' <input type="submit" name="multiple" value="' . _('Supprimer') . '" style="text-decoration: none; font-size: 11px; color:White ;font-weight:bold;background-color: #666666;">';
                            }
                            if ($mult_mve == TRUE) {
                                echo ' <input type="submit" name="multiple" value="' . _('Déplacer') . '" style="text-decoration: none; font-size: 11px; color:White ;font-weight:bold;background-color: #666666;">';
                            }
                            echo '</td>';
                            echo '</tr>';
                            echo '</table>';
                        }
                    }

                    if ($mode_pj == TRUE) {
                        echo '<br />';
                        echo '<table border="0" width="100%" cellpadding="0" cellspacing="0">';
                        echo '<tr>';
                        echo '<td align="right" width="40%">';
                        if ($affcol7 == TRUE) {
                            echo '<input type="submit" name="valider" value="' . _('Valider') . '" style="text-decoration: none; font-size: 11px; color:White ;font-weight:bold;background-color: #666666;">';
                        } else {
                            echo '&nbsp;';
                        }
                        echo '</td>';
                        echo '<td align="center" width="20%">';
                        echo '&nbsp;';
                        echo '</td>';
                        echo '<td align="left">';
                        echo '<input type="button" name="quit" value="' . _('Quitter') . '" style="text-decoration: none; font-size: 11px; color:White ;font-weight:bold;background-color: #666666;" onClick="javascript:; self.close(\'fscomp\');">';
                        echo '</td>';
                        echo '</tr>';
                        echo '</table>';
                    }

                    echo '</form>';

                    $taille_piedla = '';
                    include_once('piedla.inc.php');

                    switch ($niv_util) {
                        case 9 :
                            echo '<p align="center">';
                            if (nbhacks_ficlog() > 0) {
                                echo ' <a href="flog_lst.php?search=hack&rech=Rechercher&ord=DES&tri=Date">' . _('Hack(s) détecté(s)') . '</a>';
                            }
                            if (nbleechs_ficlog() > 0) {
                                echo ' <a href="flog_lst.php?search=leech&rech=Rechercher&ord=DES&tri=Date">' . _('Leech(s) détecté(s)') . '</a>';
                            }
                            if (nbnfounds_ficlog() > 0) {
                                echo ' <a href="flog_lst.php?search=inconnu&rech=Rechercher&ord=DES&tri=Date">' . _('Fichier(s) non touvé(s) détecté(s)') . '</a>';
                            }
                            echo '</p>';
                            break;

                        default :
                            break;
                    }
                }

                /* Affichage de la zone d'upload */
                $aff_upl = FALSE;
                switch ($niv_util) {
                    case 3 :
                    case 4 :
                        // On vérifie si on est dans le répertoire clients
                        $pos1 = strpos($dir, 'clients');
                        if ($pos1 === FALSE) {
                            // Non...On vérifie si on est dans le répertoire agences
                            $pos2 = strpos($dir, 'agences');
                            if ($pos2 === FALSE) {
                                // On est pas non plus dans le répertoire agences, on ne peut pas télécharger
                                break;
                            } else {
                                // On y est..si on est dans un sous répertoire de 'agences' (donc dans son répertoire privé), on peut télécharger
                                if ($dir <> 'agences') {
                                    $aff_upl = TRUE;
                                }
                            }
                        } else {
                            // Oui...si on est pas pile le répertoire clients (donc dans un sous répertoire client autorisé), on peut télécharger)
                            if ($dir <> 'clients') {
                                $aff_upl = TRUE;
                            }
                        }
                        break;
                    case 5 :
                    case 9 :
                        // On vérifie si on est dans le répertoire clients
                        $pos1 = strpos($dir, 'clients');
                        if ($pos1 === FALSE) {
                            // Non...On vérifie si on est dans le répertoire agences
                            $pos2 = strpos($dir, 'agences');
                            if ($pos2 === FALSE) {
                                // On est pas non plus dans le répertoire agences, on peut télécharger
                                $aff_upl = TRUE;
                                break;
                            } else {
                                // On y est..si on est dans un sous répertoire de 'agences' (donc dans son répertoire privé), on peut télécharger
                                if ($dir <> 'agences') {
                                    $aff_upl = TRUE;
                                }
                            }
                        } else {
                            // Oui...si on est pas pile le répertoire clients (donc dans un sous répertoire client autorisé), on peut télécharger)
                            if ($dir <> 'clients') {
                                $aff_upl = TRUE;
                            }
                        }
                        break;
                    default :
                        break;
                }
                if ($aff_upl == TRUE) {
                    include_once('upl.inc.php');
                }
            } else {
                echo _("Le répertoire spécifié n'existe pas ou erreur d'ouverture");
            }
        }
    } else {
        // Vérification affichage colonnes
        switch ($tx) {
            case 'int' :
            case 'cli' :
            case 'rel' :
                close_fen_auto('', 'fscomp');
                break;
            default :
                pop_ret_auto('', '', $racine_url_principale);
                break;
        }
    }
}
