dolibarr  17.0.4
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/translate.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
35 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
36 
37 // Avoid warnings with strict mode E_STRICT
38 $conf = new stdClass(); // instantiate $conf explicitely
39 $conf->global = new stdClass();
40 $conf->file = new stdClass();
41 $conf->db = new stdClass();
42 $conf->syslog = new stdClass();
43 
44 // Force $_REQUEST["logtohtml"]
45 $_REQUEST["logtohtml"] = 1;
46 
47 // Correction PHP_SELF (ex pour apache via caudium) car PHP_SELF doit valoir URL relative
48 // et non path absolu.
49 if (isset($_SERVER["DOCUMENT_URI"]) && $_SERVER["DOCUMENT_URI"]) {
50  $_SERVER["PHP_SELF"] = $_SERVER["DOCUMENT_URI"];
51 }
52 
53 
54 $includeconferror = '';
55 
56 // Define vars
57 $conffiletoshowshort = "conf.php";
58 // Define localization of conf file
59 $conffile = "../conf/conf.php";
60 $conffiletoshow = "htdocs/conf/conf.php";
61 // For debian/redhat like systems
62 if (!file_exists($conffile)) {
63  $conffile = "/etc/dolibarr/conf.php";
64  $conffiletoshow = "/etc/dolibarr/conf.php";
65 }
66 
67 
68 // Load conf file if it is already defined
69 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
70  $result = include_once $conffile; // Load conf file
71  if ($result) {
72  if (empty($dolibarr_main_db_type)) {
73  $dolibarr_main_db_type = 'mysql'; // For backward compatibility
74  }
75 
76  //Mysql driver support has been removed in favor of mysqli
77  if ($dolibarr_main_db_type == 'mysql') {
78  $dolibarr_main_db_type = 'mysqli';
79  }
80 
81  if (empty($dolibarr_main_db_port) && ($dolibarr_main_db_type == 'mysqli')) {
82  $dolibarr_main_db_port = '3306'; // For backward compatibility
83  }
84 
85  // Clean parameters
86  $dolibarr_main_data_root = isset($dolibarr_main_data_root) ?trim($dolibarr_main_data_root) : '';
87  $dolibarr_main_url_root = isset($dolibarr_main_url_root) ?trim($dolibarr_main_url_root) : '';
88  $dolibarr_main_url_root_alt = isset($dolibarr_main_url_root_alt) ?trim($dolibarr_main_url_root_alt) : '';
89  $dolibarr_main_document_root = isset($dolibarr_main_document_root) ?trim($dolibarr_main_document_root) : '';
90  $dolibarr_main_document_root_alt = isset($dolibarr_main_document_root_alt) ?trim($dolibarr_main_document_root_alt) : '';
91 
92  // Remove last / or \ on directories or url value
93  if (!empty($dolibarr_main_document_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root)) {
94  $dolibarr_main_document_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root);
95  }
96  if (!empty($dolibarr_main_url_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root)) {
97  $dolibarr_main_url_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root);
98  }
99  if (!empty($dolibarr_main_data_root) && !preg_match('/^[\\/]+$/', $dolibarr_main_data_root)) {
100  $dolibarr_main_data_root = preg_replace('/[\\/]+$/', '', $dolibarr_main_data_root);
101  }
102  if (!empty($dolibarr_main_document_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_document_root_alt)) {
103  $dolibarr_main_document_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_document_root_alt);
104  }
105  if (!empty($dolibarr_main_url_root_alt) && !preg_match('/^[\\/]+$/', $dolibarr_main_url_root_alt)) {
106  $dolibarr_main_url_root_alt = preg_replace('/[\\/]+$/', '', $dolibarr_main_url_root_alt);
107  }
108 
109  // Create conf object
110  if (!empty($dolibarr_main_document_root)) {
111  $result = conf($dolibarr_main_document_root);
112  }
113  // Load database driver
114  if ($result) {
115  if (!empty($dolibarr_main_document_root) && !empty($dolibarr_main_db_type)) {
116  $result = include_once $dolibarr_main_document_root."/core/db/".$dolibarr_main_db_type.'.class.php';
117  if (!$result) {
118  $includeconferror = 'ErrorBadValueForDolibarrMainDBType';
119  }
120  }
121  } else {
122  $includeconferror = 'ErrorBadValueForDolibarrMainDocumentRoot';
123  }
124  } else {
125  $includeconferror = 'ErrorBadFormatForConfFile';
126  }
127 }
128 $conf->global->MAIN_LOGTOHTML = 1;
129 
130 // Define prefix
131 if (!isset($dolibarr_main_db_prefix) || !$dolibarr_main_db_prefix) {
132  $dolibarr_main_db_prefix = 'llx_';
133 }
134 define('MAIN_DB_PREFIX', (isset($dolibarr_main_db_prefix) ? $dolibarr_main_db_prefix : ''));
135 
136 define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir
137 define('DOL_DATA_ROOT', (isset($dolibarr_main_data_root) ? $dolibarr_main_data_root : ''));
138 define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root) ? $dolibarr_main_url_root : '')); // URL relative root
139 $uri = preg_replace('/^http(s?):\/\//i', '', constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http*
140 $suburi = strstr($uri, '/'); // $suburi contains url without domain
141 if ($suburi == '/') {
142  $suburi = ''; // If $suburi is /, it is now ''
143 }
144 define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...)
145 
146 if (empty($character_set_client)) {
147  $character_set_client = "UTF-8";
148 }
149 $conf->file->character_set_client = strtoupper($character_set_client);
150 if (empty($dolibarr_main_db_character_set)) {
151  $dolibarr_main_db_character_set = ($conf->db->type == 'mysqli' ? 'utf8' : ''); // Old installation
152 }
153 $conf->db->character_set = $dolibarr_main_db_character_set;
154 if (empty($dolibarr_main_db_collation)) {
155  $dolibarr_main_db_collation = ($conf->db->type == 'mysqli' ? 'utf8_unicode_ci' : ''); // Old installation
156 }
157 $conf->db->dolibarr_main_db_collation = $dolibarr_main_db_collation;
158 if (empty($dolibarr_main_db_encryption)) {
159  $dolibarr_main_db_encryption = 0;
160 }
161 $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
162 if (empty($dolibarr_main_db_cryptkey)) {
163  $dolibarr_main_db_cryptkey = '';
164 }
165 $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey;
166 
167 if (empty($conf->db->user)) {
168  $conf->db->user = '';
169 }
170 
171 
172 // Defini objet langs
173 $langs = new Translate('..', $conf);
174 if (GETPOST('lang', 'aZ09')) {
175  $langs->setDefaultLang(GETPOST('lang', 'aZ09'));
176 } else {
177  $langs->setDefaultLang('auto');
178 }
179 
180 $bc[false] = ' class="bg1"';
181 $bc[true] = ' class="bg2"';
182 
183 
190 function conf($dolibarr_main_document_root)
191 {
192  global $conf;
193  global $dolibarr_main_db_type;
194  global $dolibarr_main_db_host;
195  global $dolibarr_main_db_port;
196  global $dolibarr_main_db_name;
197  global $dolibarr_main_db_user;
198  global $dolibarr_main_db_pass;
199  global $character_set_client;
200 
201  $return = include_once $dolibarr_main_document_root.'/core/class/conf.class.php';
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.
conf($dolibarr_main_document_root)
Load conf file (file must exists)
Definition: inc.php:292
pHeader($subtitle, $next, $action='set', $param='', $forcejqueryurl='', $csstable='main-inside')
Show HTML header of install pages.
Definition: inc.php:401
pFooter($nonext=0, $setuplang='', $jscheckfunction='', $withpleasewait=0, $morehtml='')
Print HTML footer of install pages.
Definition: inc.php:490