2004-10-19 20:35:36 +00:00
< ? php
2007-04-07 11:52:16 +00:00
/* Copyright ( C ) 2003 - 2007 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2006-07-15 18:29:46 +00:00
* Copyright ( C ) 2003 Xavier Dutoit < doli @ sydesy . com >
2012-02-24 05:56:32 +00:00
* Copyright ( C ) 2004 - 2012 Laurent Destailleur < eldy @ users . sourceforge . net >
2012-12-30 14:13:49 +00:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
2007-04-05 07:11:17 +00:00
* Copyright ( C ) 2006 Jean Heimburger < jean @ tiaris . info >
2006-07-15 18:29:46 +00:00
*
2003-06-24 14:11:21 +00:00
* 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
2013-01-16 14:36:08 +00:00
* the Free Software Foundation ; either version 3 of the License , or
2003-06-24 14:11:21 +00:00
* ( 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
2011-07-31 23:45:11 +00:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2003-06-24 14:11:21 +00:00
*/
2005-04-02 14:29:10 +00:00
/**
2010-06-07 23:52:43 +00:00
* \file htdocs / core / class / conf . class . php
2008-11-27 23:24:50 +00:00
* \ingroup core
2011-07-30 10:23:24 +00:00
* \brief File of class to manage storage of current setup
* Config is stored into file conf . php
2008-11-27 23:24:50 +00:00
*/
2003-09-12 12:50:22 +00:00
2003-09-12 17:29:16 +00:00
2006-07-15 18:29:46 +00:00
/**
2012-02-19 16:12:17 +00:00
* Class to stock current configuration
2008-11-27 23:24:50 +00:00
*/
2004-08-22 10:03:01 +00:00
class Conf
2003-06-24 14:11:21 +00:00
{
2009-08-30 01:39:40 +00:00
/** \public */
2009-05-08 02:39:10 +00:00
//! To store properties found in conf file
var $file ;
2011-12-03 19:21:45 +00:00
//! Object with database handler
var $db ;
2011-10-29 17:50:25 +00:00
//! To store properties found into database
var $global ;
2010-01-12 22:57:12 +00:00
//! To store if javascript/ajax is enabked
2011-12-03 19:21:45 +00:00
public $use_javascript_ajax ;
2009-11-09 16:56:30 +00:00
//! Used to store current currency
2011-12-03 19:21:45 +00:00
public $currency ;
2009-11-09 16:56:30 +00:00
//! Used to store current css (from theme)
2011-12-03 19:21:45 +00:00
public $theme ; // Contains current theme ("eldy", "auguria", ...)
public $css ; // Contains full path of css page ("/theme/eldy/style.css.php", ...)
2013-04-03 13:20:56 +00:00
//! Used to store current menu handler
2013-01-17 17:39:15 +00:00
public $standard_menu ;
2009-02-20 20:28:16 +00:00
2012-02-23 13:28:50 +00:00
public $modules = array (); // List of activated modules
2013-01-08 11:26:02 +00:00
public $modules_parts = array ( 'css' => array (), 'js' => array (), 'tabs' => array (), 'triggers' => array (), 'login' => array (), 'substitutions' => array (), 'menus' => array (), 'theme' => array (), 'sms' => array (), 'tpl' => array (), 'barcode' => array (), 'models' => array (), 'societe' => array (), 'hooks' => array (), 'dir' => array ());
2013-01-10 05:13:02 +00:00
2012-02-23 13:28:50 +00:00
var $logbuffer = array ();
2012-12-02 13:33:24 +00:00
var $loghandlers = array ();
2010-10-03 15:42:01 +00:00
2012-02-19 16:12:17 +00:00
//! To store properties of multi-company
public $multicompany ;
//! Used to store running instance for multi-company (default 1)
2012-02-23 13:28:50 +00:00
public $entity = 1 ;
2012-02-19 16:12:17 +00:00
//! Used to store list of entities to use for each element
2012-02-23 13:28:50 +00:00
public $entities = array ();
2012-02-19 16:12:17 +00:00
2013-06-05 14:24:32 +00:00
public $dol_hide_topmenu ; // Set if we force param dol_hide_topmenu into login url
public $dol_hide_leftmenu ; // Set if we force param dol_hide_leftmenu into login url
public $dol_optimize_smallscreen ; // Set if we force param dol_optimize_smallscreen into login url or if browser is smartphone
public $dol_no_mouse_hover ; // Set if we force param dol_no_mouse_hover into login url or if browser is smartphone
public $dol_use_jmobile ; // Set if we force param dol_use_jmobile into login url
2012-02-19 16:12:17 +00:00
2010-10-03 15:42:01 +00:00
2009-05-08 02:39:10 +00:00
/**
* Constructor
*
* @ return Conf
*/
2012-07-30 15:17:33 +00:00
function __construct ()
2009-05-08 02:39:10 +00:00
{
2012-03-23 16:18:33 +00:00
// Avoid warnings when filling this->xxx
2013-01-19 13:32:37 +00:00
$this -> file = new stdClass ();
$this -> db = new stdClass ();
$this -> global = new stdClass ();
$this -> mycompany = new stdClass ();
$this -> admin = new stdClass ();
$this -> user = new stdClass ();
$this -> syslog = new stdClass ();
$this -> browser = new stdClass ();
$this -> multicompany = new stdClass ();
2012-04-10 10:38:10 +00:00
2012-03-23 16:18:33 +00:00
// First level object
2013-01-19 13:32:37 +00:00
$this -> expedition_bon = new stdClass ();
$this -> livraison_bon = new stdClass ();
$this -> fournisseur = new stdClass ();
$this -> product = new stdClass ();
$this -> service = new stdClass ();
$this -> contrat = new stdClass ();
$this -> actions = new stdClass ();
$this -> commande = new stdClass ();
$this -> propal = new stdClass ();
$this -> facture = new stdClass ();
$this -> contrat = new stdClass ();
$this -> adherent = new stdClass ();
$this -> bank = new stdClass ();
$this -> notification = new stdClass ();
$this -> mailing = new stdClass ();
2012-04-10 10:38:10 +00:00
2012-03-23 16:18:33 +00:00
//! Charset for HTML output and for storing data in memory
$this -> file -> character_set_client = 'UTF-8' ; // UTF-8, ISO-8859-1
2009-05-08 02:39:10 +00:00
}
2007-04-07 11:52:16 +00:00
2007-10-21 23:04:06 +00:00
/**
2011-11-04 08:09:53 +00:00
* Load setup values into conf object ( read llx_const )
2012-12-19 12:06:45 +00:00
* Note that this -> db -> xxx , this -> file -> xxx and this -> multicompany have been already loaded when setValues is called .
2011-11-04 08:09:53 +00:00
*
2012-12-19 12:06:45 +00:00
* @ param DoliDB $db Database handler
2011-11-04 08:09:53 +00:00
* @ return int < 0 if KO , >= 0 if OK
2009-08-30 01:39:40 +00:00
*/
2009-04-23 13:19:28 +00:00
function setValues ( $db )
2007-10-21 23:04:06 +00:00
{
2011-12-03 19:21:45 +00:00
dol_syslog ( get_class ( $this ) . " ::setValues " );
2009-05-07 15:37:47 +00:00
2007-10-21 23:04:06 +00:00
/*
2009-04-29 19:54:34 +00:00
* Definition de toutes les constantes globales d ' environnement
2009-03-09 21:59:29 +00:00
* - En constante php ( TODO a virer )
2007-10-21 23:04:06 +00:00
* - En $this -> global -> key = value
*/
2011-03-09 16:38:44 +00:00
$sql = " SELECT " . $db -> decrypt ( 'name' ) . " as name, " ;
$sql .= " " . $db -> decrypt ( 'value' ) . " as value, entity " ;
2009-05-04 10:27:01 +00:00
$sql .= " FROM " . MAIN_DB_PREFIX . " const " ;
2011-11-04 08:09:53 +00:00
if ( ! empty ( $this -> multicompany -> transverse_mode ))
{
$sql .= " WHERE entity IN (0,1, " . $this -> entity . " ) " ;
}
else
{
$sql .= " WHERE entity IN (0, " . $this -> entity . " ) " ;
}
2009-11-29 14:38:21 +00:00
$sql .= " ORDER BY entity " ; // This is to have entity 0 first, then entity 1 that overwrite.
2009-05-05 17:06:05 +00:00
2011-12-04 23:25:01 +00:00
$resql = $db -> query ( $sql );
if ( $resql )
2012-02-05 14:13:31 +00:00
{
2007-10-21 23:04:06 +00:00
$i = 0 ;
2011-12-04 23:25:01 +00:00
$numr = $db -> num_rows ( $resql );
2007-10-21 23:04:06 +00:00
while ( $i < $numr )
{
2011-12-04 23:25:01 +00:00
$objp = $db -> fetch_object ( $resql );
2007-10-21 23:04:06 +00:00
$key = $objp -> name ;
2009-04-17 18:26:21 +00:00
$value = $objp -> value ;
2007-10-21 23:04:06 +00:00
if ( $key )
2007-10-29 12:47:43 +00:00
{
2013-01-14 16:12:13 +00:00
if ( ! defined ( " $key " )) define ( " $key " , $value ); // In some cases, the constant might be already forced (Example: SYSLOG_HANDLERS during install)
2007-10-29 12:47:43 +00:00
$this -> global -> $key = $value ;
2009-11-29 14:38:21 +00:00
2011-03-05 11:22:42 +00:00
if ( $value && preg_match ( '/^MAIN_MODULE_/' , $key ))
2010-04-02 17:09:26 +00:00
{
2014-01-12 19:02:41 +00:00
// If this is constant for a new tab page activated by a module. It initializes modules_parts['tabs'].
2012-11-12 18:09:53 +00:00
if ( preg_match ( '/^MAIN_MODULE_([0-9A-Z_]+)_TABS_/i' , $key ))
2009-04-29 23:39:04 +00:00
{
2013-01-07 12:28:14 +00:00
$partname = 'tabs' ;
2010-04-18 23:17:41 +00:00
$params = explode ( ':' , $value , 2 );
2013-01-07 12:28:14 +00:00
if ( ! isset ( $this -> modules_parts [ $partname ]) || ! is_array ( $this -> modules_parts [ $partname ])) { $this -> modules_parts [ $partname ] = array (); }
2014-01-12 19:02:41 +00:00
$this -> modules_parts [ $partname ][ $params [ 0 ]][] = $value ; // $value may be a string or an array
2012-02-23 18:42:57 +00:00
}
2014-01-12 19:02:41 +00:00
// If this is constant for all generic part activated by a module. It initializes
// modules_parts['login'], modules_parts['menus'], modules_parts['substitutions'], modules_parts['triggers'], modules_parts['tpl'],
// modules_parts['models'], modules_parts['theme']
// modules_parts['sms'],
// modules_parts['css'], ...
2012-11-12 18:09:53 +00:00
elseif ( preg_match ( '/^MAIN_MODULE_([0-9A-Z_]+)_([A-Z]+)$/i' , $key , $reg ))
2012-02-23 13:28:50 +00:00
{
$modulename = strtolower ( $reg [ 1 ]);
$partname = strtolower ( $reg [ 2 ]);
2012-03-03 15:44:05 +00:00
if ( ! isset ( $this -> modules_parts [ $partname ]) || ! is_array ( $this -> modules_parts [ $partname ])) { $this -> modules_parts [ $partname ] = array (); }
2012-03-18 18:59:38 +00:00
$arrValue = json_decode ( $value , true );
2012-02-23 16:34:17 +00:00
if ( is_array ( $arrValue ) && ! empty ( $arrValue )) $value = $arrValue ;
2013-01-08 12:45:52 +00:00
else if ( in_array ( $partname , array ( 'login' , 'menus' , 'substitutions' , 'triggers' , 'tpl' ))) $value = '/' . $modulename . '/core/' . $partname . '/' ;
2013-01-08 14:21:56 +00:00
else if ( in_array ( $partname , array ( 'models' , 'theme' ))) $value = '/' . $modulename . '/' ;
2013-01-07 12:28:14 +00:00
else if ( in_array ( $partname , array ( 'sms' ))) $value = $modulename ;
else if ( $value == 1 ) $value = '/' . $modulename . '/core/modules/' . $partname . '/' ; // ex: partname = societe
2014-01-12 19:02:41 +00:00
$this -> modules_parts [ $partname ] = array_merge ( $this -> modules_parts [ $partname ], array ( $modulename => $value )); // $value may be a string or an array
2012-02-23 13:28:50 +00:00
}
2012-02-22 15:18:03 +00:00
// If this is a module constant (must be at end)
2012-11-12 18:09:53 +00:00
elseif ( preg_match ( '/^MAIN_MODULE_([0-9A-Z_]+)$/i' , $key , $reg ))
2010-04-18 23:17:41 +00:00
{
2012-02-29 21:54:34 +00:00
$modulename = strtolower ( $reg [ 1 ]);
2012-03-22 07:33:44 +00:00
if ( $modulename == 'propale' ) $modulename = 'propal' ;
2013-01-19 13:32:37 +00:00
if ( ! isset ( $this -> $modulename ) || ! is_object ( $this -> $modulename )) $this -> $modulename = new stdClass ();
2012-02-29 21:54:34 +00:00
$this -> $modulename -> enabled = true ;
$this -> modules [] = $modulename ; // Add this module in list of enabled modules
2009-04-29 23:39:04 +00:00
}
2008-11-27 23:02:49 +00:00
}
2007-10-29 12:47:43 +00:00
}
2007-10-21 23:04:06 +00:00
$i ++ ;
}
2012-07-06 18:25:00 +00:00
2012-02-19 16:12:17 +00:00
$db -> free ( $resql );
2007-10-21 23:04:06 +00:00
}
2010-04-18 23:17:41 +00:00
//var_dump($this->modules);
2013-01-08 12:45:52 +00:00
//var_dump($this->modules_parts['theme']);
2012-04-10 10:38:10 +00:00
2014-03-21 17:35:50 +00:00
// If you can't set timezone of your PHP, set this constant. Better is to set it to UTC.
// In future, this constant will be forced to 'UTC' so PHP server timezone will not have effect anymore.
//$this->global->MAIN_SERVER_TZ='Europe/Paris';
2014-04-09 15:09:38 +00:00
if ( ! empty ( $this -> global -> MAIN_SERVER_TZ ) && $this -> global -> MAIN_SERVER_TZ != 'auto' )
{
try {
date_default_timezone_set ( $this -> global -> MAIN_SERVER_TZ );
}
catch ( Exception $e )
{
dol_syslog ( " Error: Bad value for parameter MAIN_SERVER_TZ= " . $this -> global -> MAIN_SERVER_TZ , LOG_ERR );
}
}
2014-03-21 17:35:50 +00:00
2012-07-02 17:30:37 +00:00
// Object $mc
if ( ! defined ( 'NOREQUIREMC' ) && ! empty ( $this -> multicompany -> enabled ))
{
global $mc ;
$ret = @ dol_include_once ( '/multicompany/class/actions_multicompany.class.php' );
if ( $ret ) $mc = new ActionsMulticompany ( $db );
2012-04-06 20:39:40 +00:00
}
2012-04-10 10:38:10 +00:00
2012-03-23 16:18:33 +00:00
// Second or others levels object
2013-01-19 13:32:37 +00:00
$this -> propal -> cloture = new stdClass ();
$this -> propal -> facturation = new stdClass ();
$this -> commande -> client = new stdClass ();
$this -> commande -> fournisseur = new stdClass ();
$this -> facture -> client = new stdClass ();
$this -> facture -> fournisseur = new stdClass ();
$this -> fournisseur -> commande = new stdClass ();
$this -> fournisseur -> facture = new stdClass ();
$this -> contrat -> services = new stdClass ();
$this -> contrat -> services -> inactifs = new stdClass ();
$this -> contrat -> services -> expires = new stdClass ();
$this -> adherent -> cotisation = new stdClass ();
$this -> bank -> rappro = new stdClass ();
$this -> bank -> cheque = new stdClass ();
2007-10-21 23:04:06 +00:00
2009-05-08 02:39:10 +00:00
// Clean some variables
2013-02-24 02:29:03 +00:00
if ( empty ( $this -> global -> MAIN_MENU_STANDARD )) $this -> global -> MAIN_MENU_STANDARD = " eldy_menu.php " ;
if ( empty ( $this -> global -> MAIN_MENUFRONT_STANDARD )) $this -> global -> MAIN_MENUFRONT_STANDARD = " eldy_menu.php " ;
if ( empty ( $this -> global -> MAIN_MENU_SMARTPHONE )) $this -> global -> MAIN_MENU_SMARTPHONE = " eldy_menu.php " ; // Use eldy by default because smartphone does not work on all phones
if ( empty ( $this -> global -> MAIN_MENUFRONT_SMARTPHONE )) $this -> global -> MAIN_MENUFRONT_SMARTPHONE = " eldy_menu.php " ; // Use eldy by default because smartphone does not work on all phones
2007-10-21 23:04:06 +00:00
// Variable globales LDAP
2007-12-26 23:05:09 +00:00
if ( empty ( $this -> global -> LDAP_FIELD_FULLNAME )) $this -> global -> LDAP_FIELD_FULLNAME = '' ;
2007-10-23 23:28:13 +00:00
if ( ! isset ( $this -> global -> LDAP_KEY_USERS )) $this -> global -> LDAP_KEY_USERS = $this -> global -> LDAP_FIELD_FULLNAME ;
if ( ! isset ( $this -> global -> LDAP_KEY_GROUPS )) $this -> global -> LDAP_KEY_GROUPS = $this -> global -> LDAP_FIELD_FULLNAME ;
if ( ! isset ( $this -> global -> LDAP_KEY_CONTACTS )) $this -> global -> LDAP_KEY_CONTACTS = $this -> global -> LDAP_FIELD_FULLNAME ;
if ( ! isset ( $this -> global -> LDAP_KEY_MEMBERS )) $this -> global -> LDAP_KEY_MEMBERS = $this -> global -> LDAP_FIELD_FULLNAME ;
2007-10-21 23:04:06 +00:00
2008-11-27 23:02:49 +00:00
// Load translation object with current language
2008-08-07 06:33:35 +00:00
if ( empty ( $this -> global -> MAIN_LANG_DEFAULT )) $this -> global -> MAIN_LANG_DEFAULT = " en_US " ;
2007-10-21 23:04:06 +00:00
2010-08-10 01:39:40 +00:00
// By default, we repeat info on all tabs
2010-09-19 12:50:53 +00:00
if ( ! isset ( $this -> global -> MAIN_REPEATCONTACTONEACHTAB )) $this -> global -> MAIN_REPEATCONTACTONEACHTAB = 1 ;
2012-03-14 17:03:36 +00:00
if ( ! isset ( $this -> global -> MAIN_REPEATADDRESSONEACHTAB )) $this -> global -> MAIN_REPEATADDRESSONEACHTAB = 1 ;
2010-08-10 01:39:40 +00:00
2009-04-29 19:54:34 +00:00
$rootfordata = DOL_DATA_ROOT ;
2009-05-06 14:02:39 +00:00
$rootforuser = DOL_DATA_ROOT ;
2009-04-29 19:54:34 +00:00
// If multicompany module is enabled, we redefine the root of data
2012-04-06 20:39:40 +00:00
if ( ! empty ( $this -> multicompany -> enabled ) && ! empty ( $this -> entity ) && $this -> entity > 1 )
2012-02-15 18:35:19 +00:00
{
$rootfordata .= '/' . $this -> entity ;
}
2009-04-29 19:54:34 +00:00
// Define default dir_output and dir_temp for directories of modules
foreach ( $this -> modules as $module )
{
2012-09-05 15:34:56 +00:00
// For multicompany sharings
2012-07-02 17:30:37 +00:00
$this -> $module -> multidir_output = array ( $this -> entity => $rootfordata . " / " . $module );
2012-04-06 21:24:31 +00:00
$this -> $module -> multidir_temp = array ( $this -> entity => $rootfordata . " / " . $module . " /temp " );
// For backward compatibility
$this -> $module -> dir_output = $rootfordata . " / " . $module ;
$this -> $module -> dir_temp = $rootfordata . " / " . $module . " /temp " ;
2009-04-29 19:54:34 +00:00
}
2009-04-29 18:38:45 +00:00
2012-09-05 15:34:56 +00:00
// External modules storage
if ( ! empty ( $this -> modules_parts [ 'dir' ]))
{
2012-09-07 15:23:16 +00:00
foreach ( $this -> modules_parts [ 'dir' ] as $module => $dirs )
2012-09-05 15:34:56 +00:00
{
foreach ( $dirs as $type => $name )
{
$subdir = ( $type == 'temp' ? '/temp' : '' );
// For multicompany sharings
$varname = 'multidir_' . $type ;
$this -> $module -> $varname = array ( $this -> entity => $rootfordata . " / " . $name . $subdir );
// For backward compatibility
$varname = 'dir_' . $type ;
$this -> $module -> $varname = $rootfordata . " / " . $name . $subdir ;
}
}
}
2011-12-04 21:25:49 +00:00
// For mycompany storage
2009-07-02 00:16:50 +00:00
$this -> mycompany -> dir_output = $rootfordata . " /mycompany " ;
$this -> mycompany -> dir_temp = $rootfordata . " /mycompany/temp " ;
2011-12-04 21:25:49 +00:00
// For admin storage
2009-07-02 00:16:50 +00:00
$this -> admin -> dir_output = $rootfordata . '/admin' ;
$this -> admin -> dir_temp = $rootfordata . '/admin/temp' ;
2009-04-29 19:58:56 +00:00
2011-12-04 21:25:49 +00:00
// For user storage
2012-07-02 17:30:37 +00:00
$this -> user -> multidir_output = array ( $this -> entity => $rootfordata . " /users " );
2012-04-06 21:24:31 +00:00
$this -> user -> multidir_temp = array ( $this -> entity => $rootfordata . " /users/temp " );
// For backward compatibility
2009-05-06 14:02:39 +00:00
$this -> user -> dir_output = $rootforuser . " /users " ;
$this -> user -> dir_temp = $rootforuser . " /users/temp " ;
2012-04-10 10:38:10 +00:00
2012-07-02 17:30:37 +00:00
// For propal storage
2012-08-01 17:34:42 +00:00
$this -> propal -> dir_output = $rootfordata . " /propale " ;
$this -> propal -> dir_temp = $rootfordata . " /propale/temp " ;
2009-05-04 11:06:49 +00:00
2009-07-02 00:16:50 +00:00
// Exception: Some dir are not the name of module. So we keep exception here
// for backward compatibility.
2008-05-20 00:09:11 +00:00
// Sous module bons d'expedition
2012-03-21 01:12:44 +00:00
$this -> expedition_bon -> enabled = defined ( " MAIN_SUBMODULE_EXPEDITION " ) ? MAIN_SUBMODULE_EXPEDITION : 0 ;
2006-06-24 17:10:32 +00:00
// Sous module bons de livraison
2008-05-20 00:09:11 +00:00
$this -> livraison_bon -> enabled = defined ( " MAIN_SUBMODULE_LIVRAISON " ) ? MAIN_SUBMODULE_LIVRAISON : 0 ;
2006-07-15 18:29:46 +00:00
2009-04-29 18:28:55 +00:00
// Module fournisseur
2009-04-29 18:38:45 +00:00
$this -> fournisseur -> commande -> dir_output = $rootfordata . " /fournisseur/commande " ;
$this -> fournisseur -> commande -> dir_temp = $rootfordata . " /fournisseur/commande/temp " ;
$this -> fournisseur -> facture -> dir_output = $rootfordata . " /fournisseur/facture " ;
$this -> fournisseur -> facture -> dir_temp = $rootfordata . " /fournisseur/facture/temp " ;
2012-04-10 10:38:10 +00:00
2010-06-02 08:57:27 +00:00
// Module product/service
2012-04-06 21:24:31 +00:00
$this -> product -> multidir_output = array ( $this -> entity => $rootfordata . " /produit " );
$this -> product -> multidir_temp = array ( $this -> entity => $rootfordata . " /produit/temp " );
$this -> service -> multidir_output = array ( $this -> entity => $rootfordata . " /produit " );
$this -> service -> multidir_temp = array ( $this -> entity => $rootfordata . " /produit/temp " );
// For backward compatibility
2012-07-02 17:30:37 +00:00
$this -> product -> dir_output = $rootfordata . " /produit " ;
$this -> product -> dir_temp = $rootfordata . " /produit/temp " ;
$this -> service -> dir_output = $rootfordata . " /produit " ;
2012-04-06 21:24:31 +00:00
$this -> service -> dir_temp = $rootfordata . " /produit/temp " ;
2012-04-10 10:38:10 +00:00
2009-04-29 18:28:55 +00:00
// Module contrat
2009-04-29 18:38:45 +00:00
$this -> contrat -> dir_output = $rootfordata . " /contracts " ;
2011-12-03 19:21:45 +00:00
$this -> contrat -> dir_temp = $rootfordata . " /contracts/temp " ;
2009-02-20 20:28:16 +00:00
2010-09-29 18:38:47 +00:00
2011-12-04 23:25:01 +00:00
// Set some default values
2006-07-15 18:29:46 +00:00
2006-06-02 23:20:36 +00:00
// societe
2011-12-03 19:21:45 +00:00
if ( empty ( $this -> global -> SOCIETE_CODECLIENT_ADDON )) $this -> global -> SOCIETE_CODECLIENT_ADDON = " mod_codeclient_leopard " ;
if ( empty ( $this -> global -> SOCIETE_CODECOMPTA_ADDON )) $this -> global -> SOCIETE_CODECOMPTA_ADDON = " mod_codecompta_panicum " ;
2006-07-15 18:29:46 +00:00
2011-08-27 15:40:08 +00:00
// Security
2011-03-09 16:24:56 +00:00
if ( empty ( $this -> global -> USER_PASSWORD_GENERATED )) $this -> global -> USER_PASSWORD_GENERATED = 'standard' ; // Default password generator
if ( empty ( $this -> global -> MAIN_UMASK )) $this -> global -> MAIN_UMASK = '0664' ; // Default mask
2006-07-15 18:29:46 +00:00
2008-01-06 15:24:23 +00:00
// conf->use_javascript_ajax
$this -> use_javascript_ajax = 1 ;
if ( isset ( $this -> global -> MAIN_DISABLE_JAVASCRIPT )) $this -> use_javascript_ajax =! $this -> global -> MAIN_DISABLE_JAVASCRIPT ;
// If no javascript_ajax, Ajax features are disabled.
2011-12-04 21:25:49 +00:00
if ( ! $this -> use_javascript_ajax ) $this -> global -> PRODUIT_USE_SEARCH_TO_SELECT = 0 ;
2006-07-15 18:29:46 +00:00
2011-11-23 13:55:36 +00:00
// conf->currency
2008-01-10 15:53:12 +00:00
if ( empty ( $this -> global -> MAIN_MONNAIE )) $this -> global -> MAIN_MONNAIE = 'EUR' ;
2010-10-21 13:34:31 +00:00
$this -> currency = $this -> global -> MAIN_MONNAIE ;
2006-07-15 18:29:46 +00:00
2011-12-04 23:25:01 +00:00
// conf->global->COMPTA_MODE = Option des modules Comptabilites (simple ou expert). Defini le mode de calcul des etats comptables (CA,...)
2011-10-29 17:50:25 +00:00
if ( empty ( $this -> global -> COMPTA_MODE )) $this -> global -> COMPTA_MODE = 'RECETTES-DEPENSES' ; // By default. Can be 'RECETTES-DEPENSES' ou 'CREANCES-DETTES'
2006-07-15 18:29:46 +00:00
2011-12-04 23:25:01 +00:00
// conf->liste_limit = constante de taille maximale des listes
2008-01-10 15:53:12 +00:00
if ( empty ( $this -> global -> MAIN_SIZE_LISTE_LIMIT )) $this -> global -> MAIN_SIZE_LISTE_LIMIT = 25 ;
2006-06-02 23:20:36 +00:00
$this -> liste_limit = $this -> global -> MAIN_SIZE_LISTE_LIMIT ;
2006-07-15 18:29:46 +00:00
2011-12-04 23:25:01 +00:00
// conf->product->limit_size = constante de taille maximale des select de produit
2007-12-04 19:21:17 +00:00
if ( ! isset ( $this -> global -> PRODUIT_LIMIT_SIZE )) $this -> global -> PRODUIT_LIMIT_SIZE = 100 ;
2010-06-02 08:34:44 +00:00
$this -> product -> limit_size = $this -> global -> PRODUIT_LIMIT_SIZE ;
2006-07-15 18:29:46 +00:00
2011-12-04 23:25:01 +00:00
// conf->theme et $this->css
2012-04-17 08:27:42 +00:00
if ( empty ( $this -> global -> MAIN_THEME )) $this -> global -> MAIN_THEME = " eldy " ;
2013-01-08 12:45:52 +00:00
if ( ! empty ( $this -> global -> MAIN_FORCETHEME )) $this -> global -> MAIN_THEME = $this -> global -> MAIN_FORCETHEME ;
2006-06-02 23:20:36 +00:00
$this -> theme = $this -> global -> MAIN_THEME ;
2010-06-25 19:52:11 +00:00
$this -> css = " /theme/ " . $this -> theme . " /style.css.php " ;
2009-02-20 20:28:16 +00:00
2011-12-04 23:25:01 +00:00
// conf->email_from = email pour envoi par dolibarr des mails automatiques
2012-11-21 13:45:02 +00:00
$this -> email_from = " robot@domain.com " ;
2011-03-09 16:38:44 +00:00
if ( ! empty ( $this -> global -> MAIN_MAIL_EMAIL_FROM )) $this -> email_from = $this -> global -> MAIN_MAIL_EMAIL_FROM ;
2011-12-04 23:25:01 +00:00
// conf->notification->email_from = email pour envoi par Dolibarr des notifications
2009-08-30 01:39:40 +00:00
$this -> notification -> email_from = $this -> email_from ;
2011-03-09 16:38:44 +00:00
if ( ! empty ( $this -> global -> NOTIFICATION_EMAIL_FROM )) $this -> notification -> email_from = $this -> global -> NOTIFICATION_EMAIL_FROM ;
2006-08-05 16:44:43 +00:00
2011-12-04 23:25:01 +00:00
// conf->mailing->email_from = email pour envoi par Dolibarr des mailings
2011-03-09 16:38:44 +00:00
$this -> mailing -> email_from = $this -> email_from ;
if ( ! empty ( $this -> global -> MAILING_EMAIL_FROM )) $this -> mailing -> email_from = $this -> global -> MAILING_EMAIL_FROM ;
2006-07-15 18:29:46 +00:00
2013-01-02 17:43:59 +00:00
// Format for date (used by default when not found or not searched in lang)
2011-09-20 10:30:56 +00:00
$this -> format_date_short = " %d/%m/%Y " ; // Format of day with PHP/C tags (strftime functions)
$this -> format_date_short_java = " dd/MM/yyyy " ; // Format of day with Java tags
2010-08-27 23:42:10 +00:00
$this -> format_hour_short = " %H:%M " ;
$this -> format_hour_short_duration = " %H:%M " ;
$this -> format_date_text_short = " %d %b %Y " ;
$this -> format_date_text = " %d %B %Y " ;
$this -> format_date_hour_short = " %d/%m/%Y %H:%M " ;
2013-01-10 05:13:02 +00:00
$this -> format_date_hour_sec_short = " %d/%m/%Y %H:%M:%S " ;
2010-08-27 23:42:10 +00:00
$this -> format_date_hour_text_short = " %d %b %Y %H:%M " ;
$this -> format_date_hour_text = " %d %B %Y %H:%M " ;
2010-09-15 13:29:17 +00:00
2012-08-19 07:05:50 +00:00
// Duration of workday
2012-12-19 12:06:45 +00:00
if ( ! isset ( $this -> global -> MAIN_DURATION_OF_WORKDAY )) $this -> global -> MAIN_DURATION_OF_WORKDAY = 86400 ;
2012-08-19 07:05:50 +00:00
2008-01-10 15:53:12 +00:00
// Limites decimales si non definie (peuvent etre egale a 0)
2007-06-16 13:06:05 +00:00
if ( ! isset ( $this -> global -> MAIN_MAX_DECIMALS_UNIT )) $this -> global -> MAIN_MAX_DECIMALS_UNIT = 5 ;
2007-06-18 22:48:05 +00:00
if ( ! isset ( $this -> global -> MAIN_MAX_DECIMALS_TOT )) $this -> global -> MAIN_MAX_DECIMALS_TOT = 2 ;
2007-06-16 13:06:05 +00:00
if ( ! isset ( $this -> global -> MAIN_MAX_DECIMALS_SHOWN )) $this -> global -> MAIN_MAX_DECIMALS_SHOWN = 8 ;
2013-07-14 14:35:02 +00:00
// Default pdf use dash between lines
if ( ! isset ( $this -> global -> MAIN_PDF_DASH_BETWEEN_LINES )) $this -> global -> MAIN_PDF_DASH_BETWEEN_LINES = 1 ;
2012-08-13 14:18:02 +00:00
// Default max file size for upload
2013-01-02 17:43:59 +00:00
$this -> maxfilesize = ( empty ( $this -> global -> MAIN_UPLOAD_DOC ) ? 0 : $this -> global -> MAIN_UPLOAD_DOC * 1024 );
// Define list of limited modules
2014-01-07 13:55:03 +00:00
if ( ! isset ( $this -> global -> MAIN_MODULES_FOR_EXTERNAL )) $this -> global -> MAIN_MODULES_FOR_EXTERNAL = 'user,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda' ; // '' means 'all'. Note that contact is added here as it should be a module later.
2012-08-13 14:18:02 +00:00
2011-04-03 11:59:10 +00:00
// Timeouts
if ( empty ( $this -> global -> MAIN_USE_CONNECT_TIMEOUT )) $this -> global -> MAIN_USE_CONNECT_TIMEOUT = 10 ;
if ( empty ( $this -> global -> MAIN_USE_RESPONSE_TIMEOUT )) $this -> global -> MAIN_USE_RESPONSE_TIMEOUT = 30 ;
2010-09-29 18:38:47 +00:00
// Set default variable to calculate VAT as if option tax_mode was 0 (standard)
if ( empty ( $this -> global -> TAX_MODE_SELL_PRODUCT )) $this -> global -> TAX_MODE_SELL_PRODUCT = 'invoice' ;
if ( empty ( $this -> global -> TAX_MODE_BUY_PRODUCT )) $this -> global -> TAX_MODE_BUY_PRODUCT = 'invoice' ;
if ( empty ( $this -> global -> TAX_MODE_SELL_SERVICE )) $this -> global -> TAX_MODE_SELL_SERVICE = 'payment' ;
if ( empty ( $this -> global -> TAX_MODE_BUY_SERVICE )) $this -> global -> TAX_MODE_BUY_SERVICE = 'payment' ;
2011-01-16 18:47:33 +00:00
// Delay before warnings
2010-11-14 14:53:10 +00:00
$this -> actions -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_ACTIONS_TODO ) ? $this -> global -> MAIN_DELAY_ACTIONS_TODO : 7 ) * 24 * 60 * 60 ;
$this -> commande -> client -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_ORDERS_TO_PROCESS ) ? $this -> global -> MAIN_DELAY_ORDERS_TO_PROCESS : 2 ) * 24 * 60 * 60 ;
2012-03-21 01:12:44 +00:00
$this -> commande -> fournisseur -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS ) ? $this -> global -> MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS : 7 ) * 24 * 60 * 60 ;
$this -> propal -> cloture -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_PROPALS_TO_CLOSE ) ? $this -> global -> MAIN_DELAY_PROPALS_TO_CLOSE : 0 ) * 24 * 60 * 60 ;
$this -> propal -> facturation -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_PROPALS_TO_BILL ) ? $this -> global -> MAIN_DELAY_PROPALS_TO_BILL : 0 ) * 24 * 60 * 60 ;
2011-01-16 18:47:33 +00:00
$this -> facture -> client -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_CUSTOMER_BILLS_UNPAYED ) ? $this -> global -> MAIN_DELAY_CUSTOMER_BILLS_UNPAYED : 0 ) * 24 * 60 * 60 ;
2012-03-21 01:12:44 +00:00
$this -> facture -> fournisseur -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_SUPPLIER_BILLS_TO_PAY ) ? $this -> global -> MAIN_DELAY_SUPPLIER_BILLS_TO_PAY : 0 ) * 24 * 60 * 60 ;
$this -> contrat -> services -> inactifs -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_NOT_ACTIVATED_SERVICES ) ? $this -> global -> MAIN_DELAY_NOT_ACTIVATED_SERVICES : 0 ) * 24 * 60 * 60 ;
$this -> contrat -> services -> expires -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_RUNNING_SERVICES ) ? $this -> global -> MAIN_DELAY_RUNNING_SERVICES : 0 ) * 24 * 60 * 60 ;
2011-01-16 18:47:33 +00:00
$this -> adherent -> cotisation -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_MEMBERS ) ? $this -> global -> MAIN_DELAY_MEMBERS : 0 ) * 24 * 60 * 60 ;
$this -> bank -> rappro -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE ) ? $this -> global -> MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE : 0 ) * 24 * 60 * 60 ;
2007-12-26 23:05:09 +00:00
$this -> bank -> cheque -> warning_delay = ( isset ( $this -> global -> MAIN_DELAY_CHEQUES_TO_DEPOSIT ) ? $this -> global -> MAIN_DELAY_CHEQUES_TO_DEPOSIT : 0 ) * 24 * 60 * 60 ;
2010-06-02 08:34:44 +00:00
// For backward compatibility
2012-04-10 10:38:10 +00:00
if ( isset ( $this -> product )) $this -> produit = $this -> product ;
if ( isset ( $this -> facture )) $this -> invoice = $this -> facture ;
if ( isset ( $this -> commande )) $this -> order = $this -> commande ;
if ( isset ( $this -> contrat )) $this -> contract = $this -> contrat ;
if ( isset ( $this -> categorie )) $this -> category = $this -> categorie ;
2006-06-02 23:20:36 +00:00
2012-07-02 17:30:37 +00:00
// Object $mc
if ( ! defined ( 'NOREQUIREMC' ) && ! empty ( $this -> multicompany -> enabled ))
2012-04-06 20:39:40 +00:00
{
2012-07-02 17:30:37 +00:00
if ( is_object ( $mc )) $mc -> setValues ( $this );
2012-03-20 14:28:21 +00:00
}
2012-12-02 13:33:24 +00:00
2012-12-05 10:18:45 +00:00
// We init log handlers
if ( defined ( 'SYSLOG_HANDLERS' )) $handlers = json_decode ( constant ( 'SYSLOG_HANDLERS' ));
else $handlers = array ();
foreach ( $handlers as $handler )
{
$file = DOL_DOCUMENT_ROOT . '/core/modules/syslog/' . $handler . '.php' ;
if ( ! file_exists ( $file ))
{
throw new Exception ( 'Missing log handler file ' . $handler . '.php' );
}
require_once $file ;
$loghandlerinstance = new $handler ();
if ( ! $loghandlerinstance instanceof LogHandlerInterface )
{
throw new Exception ( 'Log handler does not extend LogHandlerInterface' );
}
2013-01-28 11:35:29 +00:00
if ( empty ( $conf -> loghandlers [ $handler ])) $this -> loghandlers [ $handler ] = $loghandlerinstance ;
2012-12-05 10:18:45 +00:00
}
2011-02-16 19:59:16 +00:00
}
2003-06-24 14:11:21 +00:00
}
?>