<?php

class Conf
{
  const admin = 1;                    // TRUE ou FALSE pour indiquer si l'application est admin ou non
  const intra = 1;                    // Est-ce un intranet privé TRUE 1, ou un site public FALSE 0
  const erp = 1;                      //! Est-ce un ERP ? Utile pour la gestion documentaire avec les paths spéciaux pour l'ERP
  const magazine = 0;             //! Est-ce qu'on veut transformer les PDF en JPG pour la lecture Magazine dans le d6tools.upload ?

  public $_appname;
  public $_appscript;
  public $_appversion;
  public $_appenv;
  public $_apptitle;

  public $_brandname;
  public $_brandadresse1;
  public $_brandadresse2;
  public $_brandcp;
  public $_brandville;
  public $_brandtel;
  public $_brandemail;
  public $_brandlogo;
  public $_brandgroupe;
  public $_brandmulti;

  public $_piwikid;
  public $_googlid;

  public $_excludeIp = "82.67.142.214";   //! IP à exclure pour le comptage des visites et pour le debug
  public $_clientIp;
  public $_devIp = false;
  
  //! Configuration du debug
  public $_debug_level = 0;        //! 0=off, 1=errors, 2=warnings, 3=info, 4=debug
  public $_log_sql = false;        //! Logger les requêtes SQL
  public $_log_performance = false; //! Logger les temps d'exécution
  public $_log_file_path = '';     //! Chemin du fichier de log

  public $_pathupload = "/pub/files/upload/";             //! le path de base pour les uploads

  //! les infos de connexion de la base de données
  public $_dbhost = 'localhost';
  public $_dbname = 'uof_frontal';
  public $_dbuser = 'uof_front_user';
  public $_dbpass = 'd66,UnikOffice.User';

  public $_dbghost = 'localhost';
  public $_dbgname = '';
  public $_dbguser = 'uof_linet_user';
  public $_dbgpass = 'd66,UOF-LinetRH.User';

  public $_dbuhost = 'localhost';
  public $_dbuname = '';
  public $_dbuuser = 'uof_linet_user';
  public $_dbupass = 'd66,UOF-LinetRH.User';

  public $_tbusers = "";    // Spécifie la table des users de cette application, par défaut uof_frontal.users, mais sur Linet c'est dans uof_linet.commerciaux

  //! les infos de l'entité de l'utilisateur
  public $_entite = '';

  //! indique si c'est une nouvelle version pour les tests de nouveaux modules et librairies
  public $_new_version = false;

  public function __construct()
  {
    //! on va chercher la configuration de l'application dans la table ce_frontal.y_conf
    $mysqli = new mysqli($this->_dbhost, $this->_dbuser, $this->_dbpass, $this->_dbname);
    $sql = 'SELECT * FROM y_conf WHERE admin=' . self::admin . ' AND active=1 LIMIT 1;';
    $mysqli->set_charset("utf8");
    $res = $mysqli->query($sql);
    $resconf = $res->fetch_assoc();
    $this->_appenv = $resconf["appenv"];
    $this->_appversion = "2.0.1";
    $this->_appscript = $resconf["appscript"];   //! le script à appeler par défaut si l'utilisateur n'est pas reconnu

    $this->_brandgroupe = $resconf["brandgroupe"];
    $this->_brandmulti = $resconf["brandmulti"];

    //! On va chercher les infos de base de cette appname dans ce_frontal.users_entites en fonction du http_host
    $http_host = $_SERVER['HTTP_HOST'];
    error_log("http_host : ".$http_host);
    $sql = 'SELECT * FROM users_entites WHERE http_host LIKE "%' . $http_host . '%" AND active=1 LIMIT 1;';
    $res = $mysqli->query($sql);
    $mysqli->close();
    $resentite = $res->fetch_assoc();
    if (empty($resentite)) {
      //! on ne trouve pas ce http_host, on part sur la demo
      $this->_appname = "udo_demo";
      $mysqli = new mysqli($this->_dbhost, $this->_dbuser, $this->_dbpass, $this->_dbname);
      $sql = 'SELECT * FROM users_entites WHERE rowid=1;'; // appname="' . $this->_appname . '" AND active=1 LIMIT 1;';
      $res = $mysqli->query($sql);
      $mysqli->close();
      $resentite = $res->fetch_assoc();
    }
    $this->_entite = $resentite;
    $this->_appname = $resentite["appname"];
    $this->_apptitle = $resentite["libelle"];
    $this->_brandname = $resentite["libelle"];
    $this->_brandadresse1 = $resentite["adresse1"];
    $this->_brandadresse2 = $resentite["adresse2"];
    $this->_brandcp = $resentite["cp"];
    $this->_brandville = $resentite["ville"];
    $this->_brandtel = $resentite["tel1"];
    $this->_brandemail = $resentite["email"];
    $this->_brandlogo = $resentite["appname"];

    $this->_dbgname = $resentite["groupebase"];
    $this->_dbuname = $resentite["genbase"];
    $this->_tbusers = $resentite["table_users_gen"];      //! Spécifie la table des users de cette application, par défaut dans uof_frontal.users

    if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
      $this->_clientIp = $_SERVER["HTTP_CLIENT_IP"];
    } elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
      $this->_clientIp = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
      $this->_clientIp = $_SERVER["REMOTE_ADDR"];
    }
    // Active le debug uniquement pour dev et recette
    if (strpos($http_host, 'dcleo.unikoffice.com') !== false || strpos($http_host, 'rcleo.unikoffice.com') !== false) {
      ini_set('error_reporting', -1);
      ini_set('display_errors', '1');
      $this->_devIp = true;
      
      // Configuration avancée du debug pour dev/recette
      $this->_debug_level = 4;  // Niveau debug complet
      $this->_log_sql = true;   // Logger les requêtes SQL
      $this->_log_performance = true; // Mesurer les performances
      $this->_log_file_path = dirname(__DIR__) . '/log/' . $this->_appname . '_debug_' . date('Y-m-d') . '.log';
      
      // Options PHP supplémentaires pour le debug
      ini_set('log_errors', '1');
      ini_set('error_log', $this->_log_file_path);
      ini_set('display_startup_errors', '1');
      ini_set('track_errors', '1');
      ini_set('html_errors', '1');
      ini_set('xmlrpc_errors', '0');
    } else {
      ini_set('error_reporting', 0);
      ini_set('display_errors', '0');
      ini_set('log_errors', '0');
      $this->_debug_level = 0;
      $this->_log_sql = false;
      $this->_log_performance = false;
    }
  }
}
