dolibarr  18.0.6
inc.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
4  * Copyright (C) 2004 Sebastien DiCintio <sdicintio@ressource-toi.org>
5  * Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19  */
20 
27 // Define DOL_DOCUMENT_ROOT
28 if (!defined('DOL_DOCUMENT_ROOT')) {
29  define('DOL_DOCUMENT_ROOT', '..');
30 }
31 
32 require_once DOL_DOCUMENT_ROOT.'/core/class/conf.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/class/translate.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
36 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
37 
38 $conf = new Conf();
39 
40 // Force $_REQUEST["logtohtml"]
41 $_REQUEST["logtohtml"] = 1;
42 
43 // Correction PHP_SELF (ex pour apache via caudium) car PHP_SELF doit valoir URL relative
44 // et non path absolu.
45 if (isset($_SERVER["DOCUMENT_URI"]) && $_SERVER["DOCUMENT_URI"]) {
46  $_SERVER["PHP_SELF"] = $_SERVER["DOCUMENT_URI"];
47 }
48 
49 
50 $includeconferror = '';
51 
52 // Define vars
53 $conffiletoshowshort = "conf.php";
54 // Define localization of conf file
55 $conffile = "../conf/conf.php";
56 $conffiletoshow = "htdocs/conf/conf.php";
57 // For debian/redhat like systems
58 /*
59 if (!file_exists($conffile)) {
60  $conffile = "/etc/dolibarr/conf.php";
61  $conffiletoshow = "/etc/dolibarr/conf.php";
62 }
63 */
64 
65 // Load conf file if it is already defined
66 if (!defined('DONOTLOADCONF') && file_exists($conffile) && filesize($conffile) > 8) { // Test on filesize is to ensure that conf file is more that an empty template with just <?php in first line
67  $result = include_once $conffile; // Load conf file
68  if ($result) {
69  if (empty($dolibarr_main_db_type)) {
70  $dolibarr_main_db_type = 'mysql'; // For backward compatibility
71  }
72 
73  //Mysql driver support has been removed in favor of mysqli
74  if ($dolibarr_main_db_type == 'mysql') {
75  $dolibarr_main_db_type = 'mysqli';
76  }
77 
78  if (empty($dolibarr_main_db_port) && ($dolibarr_main_db_type == 'mysqli')) {
79  $dolibarr_main_db_port = '3306'; // For backward compatibility
80  }
81 
82  // Clean parameters
83  $dolibarr_main_data_root = isset($dolibarr_main_data_root) ?trim($dolibarr_main_data_root) : '';
84  $dolibarr_main_url_root = isset($dolibarr_main_url_root) ?trim($dolibarr_main_url_root) : '';
85  $dolibarr_main_url_root_alt = isset($dolibarr_main_url_root_alt) ?trim($dolibarr_main_url_root_alt) : '';
86  $dolibarr_main_document_root = isset($dolibarr_main_document_root) ?trim($dolibarr_main_document_root) : '';
87  $dolibarr_main_document_root_alt = isset($dolibarr_main_document_root_alt) ?trim($dolibarr_main_document_root_alt) : '';
88 
89  // Remove last / or \ on directories or url value
90  if (!empty($dolibarr_main_document_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root)) {
91  $dolibarr_main_document_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root);
92  }
93  if (!empty($dolibarr_main_url_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root)) {
94  $dolibarr_main_url_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root);
95  }
96  if (!empty($dolibarr_main_data_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_data_root)) {
97  $dolibarr_main_data_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_data_root);
98  }
99  if (!empty($dolibarr_main_document_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root_alt)) {
100  $dolibarr_main_document_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root_alt);
101  }
102  if (!empty($dolibarr_main_url_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root_alt)) {
103  $dolibarr_main_url_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root_alt);
104  }
105 
106  // Create conf object
107  if (!empty($dolibarr_main_document_root)) {
108  $result = loadconf($dolibarr_main_document_root);
109  }
110  // Load database driver
111  if ($result) {
112  if (!empty($dolibarr_main_document_root) && !empty($dolibarr_main_db_type)) {
113  $result = include_once $dolibarr_main_document_root."/core/db/".$dolibarr_main_db_type.'.class.php';
114  if (!$result) {
115  $includeconferror = 'ErrorBadValueForDolibarrMainDBType';
116  }
117  }
118  } else {
119  $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot';
120  }
121  } else {
122  $includeconferror = 'ErrorBadFormatForConfFile';
123  }
124 }
125 $conf->global->MAIN_LOGTOHTML = 1;
126 
127 // Define prefix
128 if (!isset($dolibarr_main_db_prefix) || !$dolibarr_main_db_prefix) {
129  $dolibarr_main_db_prefix = 'llx_';
130 }
131 define('MAIN_DB_PREFIX', (isset($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : ''));
132 
133 define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir
134 define('DOL_DATA_ROOT', (isset($dolibarr_main_data_root) ? $dolibarr_main_data_root : ''));
135 define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root) ? $dolibarr_main_url_root : '')); // URL relative root
136 $uri = preg_replace('/^http(s?):\/\//i', '', constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http*
137 $suburi = strstr($uri, '/'); // $suburi contains url without domain
138 if ($suburi == '/') {
139  $suburi = ''; // If $suburi is /, it is now ''
140 }
141 define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
142 
143 if (empty($character_set_client)) {
144  $character_set_client = "UTF-8";
145 }
146 $conf->file->character_set_client = strtoupper($character_set_client);
147 if (empty($dolibarr_main_db_character_set)) {
148  $dolibarr_main_db_character_set = ($conf->db->type == 'mysqli' ? 'utf8' : ''); // Old installation
149 }
150 $conf->db->character_set = $dolibarr_main_db_character_set;
151 if (empty($dolibarr_main_db_collation)) {
152  $dolibarr_main_db_collation = ($conf->db->type == 'mysqli' ? 'utf8_unicode_ci' : ''); // Old installation
153 }
154 $conf->db->dolibarr_main_db_collation = $dolibarr_main_db_collation;
155 if (empty($dolibarr_main_db_encryption)) {
156  $dolibarr_main_db_encryption = 0;
157 }
158 $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
159 if (empty($dolibarr_main_db_cryptkey)) {
160  $dolibarr_main_db_cryptkey = '';
161 }
162 $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey;
163 
164 if (empty($conf->db->user)) {
165  $conf->db->user = '';
166 }
167 
168 
169 // Defini objet langs
170 $langs = new Translate('..', $conf);
171 if (GETPOST('lang', 'aZ09')) {
172  $langs->setDefaultLang(GETPOST('lang', 'aZ09'));
173 } else {
174  $langs->setDefaultLang('auto');
175 }
176 
177 $bc[false] = ' class="bg1"';
178 $bc[true] = ' class="bg2"';
179 
180 
187 function loadconf($dolibarr_main_document_root)
188 {
189  global $conf;
190  global $dolibarr_main_db_type;
191  global $dolibarr_main_db_host;
192  global $dolibarr_main_db_port;
193  global $dolibarr_main_db_name;
194  global $dolibarr_main_db_user;
195  global $dolibarr_main_db_pass;
196  global $character_set_client;
197 
198  $return = 1;
199  if (!class_exists('Conf')) {
200  $return = include_once $dolibarr_main_document_root.'/core/class/conf.class.php';
201  }
202  if (!$return) {
203  return -1;
204  }
205 
206  $conf = new Conf();
207  $conf->db->type = trim($dolibarr_main_db_type);
208  $conf->db->host = trim($dolibarr_main_db_host);
209  $conf->db->port = trim($dolibarr_main_db_port);
210  $conf->db->name = trim($dolibarr_main_db_name);
211  $conf->db->user = trim($dolibarr_main_db_user);
212  $conf->db->pass = trim($dolibarr_main_db_pass);
213 
214  if (empty($conf->db->dolibarr_main_db_collation)) {
215  $conf->db->dolibarr_main_db_collation = 'utf8_unicode_ci';
216  }
217 
218  return 1;
219 }
220 
221 
230 function pHeader($soutitre, $next, $action = 'none')
231 {
232  global $conf, $langs;
233 
234  $langs->loadLangs(array("main", "admin"));
235 
236  // On force contenu dans format sortie
237  header("Content-type: text/html; charset=".$conf->file->character_set_client);
238 
239  // Security options
240  header("X-Content-Type-Options: nosniff");
241  header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
242 
243  print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n";
244  print '<head>'."\n";
245  print '<meta http-equiv="content-type" content="text/html; charset='.$conf->file->character_set_client.'">'."\n";
246  print '<meta name="robots" content="index,follow">'."\n";
247  print '<meta name="viewport" content="width=device-width, initial-scale=1.0">'."\n";
248  print '<meta name="keywords" content="help, center, dolibarr, doliwamp">'."\n";
249  print '<meta name="description" content="Dolibarr help center">'."\n";
250  print '<link rel="stylesheet" type="text/css" href="../install/default.css">'."\n";
251  print '<title>'.$langs->trans("DolibarrHelpCenter").'</title>'."\n";
252  print '</head>'."\n";
253 
254  print '<body class="center">'."\n";
255 
256  print '<div class="noborder centpercent center valignmiddle inline-block">';
257  print '<img src="helpcenter.png" alt="logohelpcenter" class="inline-block"><br><br>';
258  print '<span class="titre inline-block">'.$soutitre.'</span>'."\n";
259  print '</div><br>';
260 }
261 
269 function pFooter($nonext = 0, $setuplang = '')
270 {
271  global $langs;
272  $langs->load("main");
273  $langs->load("admin");
274 
275  print '</body>'."\n";
276  print '</html>'."\n";
277 }
Class to stock current configuration.
Definition: conf.class.php:34
Class to manage translations.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
pHeader($subtitle, $next, $action='set', $param='', $forcejqueryurl='', $csstable='main-inside')
Show HTML header of install pages.
Definition: inc.php:513
pFooter($nonext=0, $setuplang='', $jscheckfunction='', $withpleasewait=0, $morehtml='')
Print HTML footer of install pages.
Definition: inc.php:602
loadconf($dolibarr_main_document_root)
Load conf file (file must exists)
Definition: inc.php:187