<?PHP
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.2
 *
 * Copyright (C) 2006-2015  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)
    $ok_inc = TRUE;
else
    $ok_inc = FALSE;
if ($ok_inc == FALSE) header("Location: ../index.php");


/***********************************************************/
/*   Nom des villes, départements, pays, et code postaux   */
/***********************************************************/

/**
 * Fonction qui renvoie la ville en fonction de l'ID avec contrôle ouverture de la base MySQL
 *
 * @param $id
 * @param bool $open
 * @param bool $chkcompl
 * @return string
 */
function Retourneville_Id($id, $open = TRUE, $chkcompl = TRUE)
{
    global
    $db;
    $villes_nom = "";
    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT villes_nom FROM `" . TBVILLES . "` WHERE villes_id='" . $id . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        extract($row);
    }
    if ($open == TRUE)
        $db->disconnect();
    $ville = str_majuscules($villes_nom);
    if ($chkcompl == TRUE)
    {
        // Les villes de LYON, MARSEILLE, PARIS doivent être traitées à part (arrondissements)
        if (stristr($villes_nom, "LYON"))
            $ville = "LYON";
        if (stristr($villes_nom, "MARSEILLE"))
            $ville = "MARSEILLE";
        if (stristr($villes_nom, "PARIS"))
            $ville = "PARIS";
    }
    return $ville;
}

/**
 * Renvoie les enregistrements MySQL des villes en fonction du pays et du département sélectionnés
 *
 * @param $codedep
 * @param $codepays
 * @return array
 */
function give_rows_villes($codedep,$codepays)
{
    global
    $_SESSION,
    $db;

    $codelng = strtoupper($_SESSION['lng']);
    if ($codelng == '')
        $codelng = 'FR';

    $rows = [];
    if ($codedep <> "") {
        $rech = "";
        if (trim($codepays) <> '') {
            switch (strtoupper($codepays)) {
                case "FR" :
                    if ($codedep <> "-1") {
                        $filtre = $codedep;
                        if (($filtre == "2A") OR ($filtre == "2B"))
                            $filtre = "20";
                        $rech = "SELECT villes_id,villes_nom,villes_cp FROM `" . TBVILLES . "` WHERE `villes_dep` = '" . str_majuscules($filtre) . "' AND `villes_codepays`='" . str_majuscules($codepays) ."'";
                    } else
                        $rech = "SELECT villes_id,villes_nom,villes_cp FROM `" . TBVILLES . "` WHERE `villes_codepays`='" . str_majuscules($codepays) . "'";
                    break;
                default :
                    $rech = "SELECT villes_id,villes_nom,villes_cp FROM `" . TBVILLES . "` WHERE `villes_codepays`='" . str_majuscules($codepays) . "'";
                    break;
            }
        }
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        if ($rech <> "") {
            $rech .= " AND villes_lng='" . $codelng . "'";
            $rech .= " ORDER BY villes_nom";
            $rows = $db->get_results($rech, ARRAY_A);
        }
        $db->disconnect();
    }

    return $rows;
}

/**
 * Fonction qui renvoie le code postal en fonction de l'ID avec contrôle ouverture de la base MySQL
 *
 * @param $id
 * @param bool $open
 * @return string
 */
function Retournecp_Id($id, $open = TRUE)
{
    global
    $db;
    $villes_cp = "";
    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT villes_cp FROM `" . TBVILLES . "` WHERE villes_id='" . $id . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        extract($row);
    }
    if ($open == TRUE)
        $db->disconnect();

    return $villes_cp;
}

/**
 * Renvoie les enregistrements MySQL des pays
 *
 * @return array
 */
function give_rows_pays()
{
    global
        $_SESSION,
        $db;

    $codelng = strtoupper($_SESSION['lng']);
    if ($codelng == '')
        $codelng = 'FR';

    $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT pays_code,pays_nom FROM `" . TBPAYS . "`";
    $rech .= " WHERE pays_lng='" . $codelng . "'";
    $rows = $db->get_results($rech, ARRAY_A);
    $db->disconnect();

    return $rows;
}

/**
 * Fonction qui renvoie le nom de pays en fonction du code pays avec contrôle ouverture de la base MySQL
 *
 * @param $codepays
 * @param bool $open
 * @param string $lng
 * @return mixed
 */
function Retournepays($codepays, $open = TRUE, $lng = '')
{
    global
    $db,
    $_SESSION;
    if (trim($lng) == '') $lng = $_SESSION["lng"];

    $pays_nom = $codepays;
    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT pays_nom FROM `" . TBPAYS . "` WHERE pays_code='" . $codepays . "' AND pays_lng='" . $lng . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        extract($row);
    }
    if ($open == TRUE)
        $db->disconnect();

    return $pays_nom;
}

/**
 * Fonction qui renvoie le département en fonction du code et du pays avec contrôle ouverture de la base MySQL
 *
 * @param $dep
 * @param $pays
 * @param bool $open
 * @param string $lng
 * @return string
 */
function Retournedep($dep, $pays, $open = TRUE, $lng = '')
{
    global
    $db,
    $_SESSION;
    if (trim($lng) == '') $lng = $_SESSION["lng"];

    $dep_nom = "";
    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
    $rech = "SELECT dep_nom FROM `" . TBDEP . "` WHERE `dep_code`='" . $dep . "' AND `dep_codepays`='" . $pays . "' AND `dep_lng`='" . $lng . "'";
    $row = $db->get_row($rech, ARRAY_A);
    if ($row) {
        $row = encode_str($row);
        extract($row);
    }
    if ($open == TRUE)
        $db->disconnect();

    return $dep_nom;
}

/**
 * Renvoie les enregistrements MySQL des départements en fonction du pays sélectionné
 *
 * @param $codepays
 * @return array
 */
function give_rows_dep($codepays)
{
    global
        $_SESSION,
        $db;

    $codelng = strtoupper($_SESSION['lng']);
    if ($codelng == '')
        $codelng = 'FR';

    $rows = [];
    if ($codepays <> "") {
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
        $rech = "SELECT dep_code,dep_nom FROM `" . TBDEP . "` WHERE `dep_codepays`='" . $codepays . "' ORDER BY dep_code";
        $rech .= " AND dep_lng='" . $codelng . "'";
        $rows = $db->get_results($rech, ARRAY_A);
        $db->disconnect();
    }

    return $rows;
}

/**
 * Vérifie si un code département (dans un pays donné) est utilisé
 *
 * @param $code
 * @param $pays
 * @param bool $open
 * @return bool
 */
function dep_in_pays_used($code, $pays, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    // Vérifie si utilisé dans une fiche agence
    $rexist = "SELECT COUNT(*) FROM `" . TBAGE . "` WHERE `age_dep` = '" . $db->escape($code) . "' AND `age_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche centre de gestion
    $rexist = "SELECT COUNT(*) FROM `" . TBCG . "` WHERE `cge_dep` = '" . $db->escape($code) . "' AND `cge_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche dépôt de location
    $rexist = "SELECT COUNT(*) FROM `" . TBDLOC . "` WHERE `dloc_dep` = '" . $db->escape($code) . "' AND `dloc_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche Opérateur
    $rexist = "SELECT COUNT(*) FROM `" . TBOPE . "` WHERE `ope_dep` = '" . $db->escape($code) . "' AND `ope_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche sous-traitant
    $rexist = "SELECT COUNT(*) FROM `" . TBST . "` WHERE `st_dep` = '" . $db->escape($code) . "' AND `st_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche client
    $rexist = "SELECT COUNT(*) FROM `" . TBCLI . "` WHERE `cli_dep` = '" . $db->escape($code) . "' AND `cli_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche demande
    $rexist = "SELECT COUNT(*) FROM `" . TBDDE . "` WHERE `dde_dep` = '" . $db->escape($code) . "' AND `dde_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche donneur d'ordre
    $rexist = "SELECT COUNT(*) FROM `" . TBDO . "` WHERE `do_dep` = '" . $db->escape($code) . "' AND `do_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche zone de chalandise
    $rexist = "SELECT COUNT(*) FROM `" . TBZCC . "` WHERE `zcc_codedep` = '" . $db->escape($code) . "' AND `zcc_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche zone de chalandise
    $rexist = "SELECT COUNT(*) FROM `" . TBZOC . "` WHERE `zoc_codedep` = '" . $db->escape($code) . "' AND `zoc_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche marque
    $rexist = "SELECT COUNT(*) FROM `" . TBMQUE . "` WHERE `mque_dep` = '" . $db->escape($code) . "' AND `mque_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche site client
    $rexist = "SELECT COUNT(*) FROM `" . TBSCLI . "` WHERE `scli_dep` = '" . $db->escape($code) . "' AND `scli_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche technicien
    $rexist = "SELECT COUNT(*) FROM `" . TBTEC . "` WHERE `tec_dep` = '" . $db->escape($code) . "' AND `tec_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche ville
    $rexist = "SELECT COUNT(*) FROM `" . TBVILLES . "` WHERE `villes_dep` = '" . $db->escape($code) . "' AND `villes_codepays` = '$pays'";
    $nbres = $db->get_var($rexist);
    
    if ($nbres > 0)
        return TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un code pays est utilisé
 *
 * @param $code
 * @param bool $open
 * @return bool
 */
function pays_used($code, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    // Vérifie si utilisé dans une fiche agence
    $rexist = "SELECT COUNT(*) FROM `" . TBAGE . "` WHERE `age_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche centre de gestion
    $rexist = "SELECT COUNT(*) FROM `" . TBCG . "` WHERE `cge_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche dépôt de location
    $rexist = "SELECT COUNT(*) FROM `" . TBDLOC . "` WHERE `dloc_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche Opérateur
    $rexist = "SELECT COUNT(*) FROM `" . TBOPE . "` WHERE `ope_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche sous-traitant
    $rexist = "SELECT COUNT(*) FROM `" . TBST . "` WHERE `st_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche client
    $rexist = "SELECT COUNT(*) FROM `" . TBCLI . "` WHERE `cli_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche demande
    $rexist = "SELECT COUNT(*) FROM `" . TBDDE . "` WHERE `dde_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche donneur d'ordre
    $rexist = "SELECT COUNT(*) FROM `" . TBDO . "` WHERE `do_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche zone de chalandise
    $rexist = "SELECT COUNT(*) FROM `" . TBZCC . "` WHERE `zcc_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche zone de chalandise
    $rexist = "SELECT COUNT(*) FROM `" . TBZOC . "` WHERE `zoc_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche marque
    $rexist = "SELECT COUNT(*) FROM `" . TBMQUE . "` WHERE `mque_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche site client
    $rexist = "SELECT COUNT(*) FROM `" . TBSCLI . "` WHERE `scli_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche technicien
    $rexist = "SELECT COUNT(*) FROM `" . TBTEC . "` WHERE `tec_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche ville
    $rexist = "SELECT COUNT(*) FROM `" . TBVILLES . "` WHERE `villes_codepays` = '" . $db->escape($code) . "'";
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;
    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}

/**
 * Vérifie si un id ville pays est utilisé
 *
 * @param $id
 * @param bool $open
 * @return bool
 */
function ville_used($id, $open = TRUE)
{
    global
    $db;
    $exist = FALSE;

    if ($open == TRUE)
        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

    // Vérifie si utilisé dans une fiche agence
    $rexist = "SELECT COUNT(*) FROM `" . TBAGE . "` WHERE `age_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche centre de gestion
    $rexist = "SELECT COUNT(*) FROM `" . TBCG . "` WHERE `cge_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche dépôt de location
    $rexist = "SELECT COUNT(*) FROM `" . TBDLOC . "` WHERE `dloc_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche Opérateur
    $rexist = "SELECT COUNT(*) FROM `" . TBOPE . "` WHERE `ope_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche sous-traitant
    $rexist = "SELECT COUNT(*) FROM `" . TBST . "` WHERE `st_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche client
    $rexist = "SELECT COUNT(*) FROM `" . TBCLI . "` WHERE `cli_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche demande
    $rexist = "SELECT COUNT(*) FROM `" . TBDDE . "` WHERE `dde_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche donneur d'ordre
    $rexist = "SELECT COUNT(*) FROM `" . TBDO . "` WHERE `do_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche marque
    $rexist = "SELECT COUNT(*) FROM `" . TBMQUE . "` WHERE `mque_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche site client
    $rexist = "SELECT COUNT(*) FROM `" . TBSCLI . "` WHERE `scli_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    // Vérifie si utilisé dans une fiche technicien
    $rexist = "SELECT COUNT(*) FROM `" . TBTEC . "` WHERE `tec_ville` = " . $id;
    $nbres = $db->get_var($rexist);
    if ($nbres > 0)
        return TRUE;

    if ($open == TRUE)
        $db->disconnect();

    return $exist;
}
