diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 1d07a78604421edc547a2bd4a05956b9cd2010d9..fe9547075b599a4300fb375dd0c41c777220f892 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -279,23 +279,15 @@ if ($resql) { $boxname = $regs[1]; $module = $regs[2]; - - if (file_exists(DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php")) - { - $sourcefile = DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php"; - } - else - { - $sourcefile = DOL_DOCUMENT_EXTMODULE."/".$module."/inc/boxes/".$boxname.".php"; - } + $sourcefile = "/".$module."/inc/boxes/".$boxname.".php"; } else { $boxname=preg_replace('/.php$/i','',$obj->file); - $sourcefile = DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php"; + $sourcefile = "/includes/boxes/".$boxname.".php"; } - include_once($sourcefile); + dol_include_once($sourcefile); $box=new $boxname($db,$obj->note); // if (in_array($obj->rowid, $actives) && $box->box_multiple <> 1) @@ -390,23 +382,15 @@ if ($resql) { $boxname = $regs[1]; $module = $regs[2]; - - if (file_exists(DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php")) - { - $sourcefile = DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php"; - } - else - { - $sourcefile = DOL_DOCUMENT_EXTMODULE."/".$module."/inc/boxes/".$boxname.".php"; - } + $sourcefile = "/".$module."/inc/boxes/".$boxname.".php"; } else { $boxname=preg_replace('/.php$/i','',$obj->file); - $sourcefile = DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php"; + $sourcefile = "/includes/boxes/".$boxname.".php"; } - include_once($sourcefile); + dol_include_once($sourcefile); $box=new $boxname($db,$obj->note); if (preg_match('/^([^@]+)@([^@]+)$/i',$box->boximg)) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 86c6b0aefa8a13aca4eeb8b9a5d8f37517c595ab..80601ac6547c9d8e6b24d664fc97d392c98cbfcf 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -376,7 +376,7 @@ if ($mode != 4) { if (preg_match('/^([^@]+)@([^@]+)$/i',$urlpage,$regs)) { - if (file_exists(DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1])) + if (! defined('DOL_URL_EXTMODULE') || ! DOL_URL_EXTMODULE || file_exists(DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1])) { print '<a href="'.DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1].'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a> '; } @@ -395,7 +395,7 @@ if ($mode != 4) } else if (preg_match('/^([^@]+)@([^@]+)$/i',$objMod->config_page_url,$regs)) { - if (file_exists(DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1])) + if (! defined('DOL_URL_EXTMODULE') || ! DOL_URL_EXTMODULE || file_exists(DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1])) { print '<td align="right" valign="top"><a href="'.DOL_URL_ROOT.'/'.$regs[2].'/admin/'.$regs[1].'" title="'.$langs->trans("Setup").'">'.img_picto($langs->trans("Setup"),"setup").'</a></td>'; } diff --git a/htdocs/boxes.php b/htdocs/boxes.php index 1f7ae1eac64db775a412eda5e8746fa366ec6944..441c73f5b0f71feeb8a1fc3bb83acc81d42db461 100644 --- a/htdocs/boxes.php +++ b/htdocs/boxes.php @@ -220,14 +220,7 @@ class InfoBox $boxname = $regs[1]; $module = $regs[2]; - if (file_exists(DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php")) - { - $sourcefile = DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php"; - } - else - { - $sourcefile = DOL_DOCUMENT_EXTMODULE."/".$module."/inc/boxes/".$boxname.".php"; - } + dol_include_once("/".$module."/inc/boxes/".$boxname.".php"); } else { @@ -288,23 +281,15 @@ class InfoBox { $boxname = $regs[1]; $module = $regs[2]; - - if (file_exists(DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php")) - { - $sourcefile = DOL_DOCUMENT_ROOT."/".$module."/inc/boxes/".$boxname.".php"; - } - else - { - $sourcefile = DOL_DOCUMENT_EXTMODULE."/".$module."/inc/boxes/".$boxname.".php"; - } + $sourcefile = "/".$module."/inc/boxes/".$boxname.".php"; } else { $boxname=preg_replace('/.php$/i','',$obj->file); - $sourcefile = DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php"; + $sourcefile = "/includes/boxes/".$boxname.".php"; } - include_once($sourcefile); + dol_include_once($sourcefile); $box=new $boxname($db,$obj->note); $box->rowid=$obj->rowid; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 6499e99025c59cf534ed63c4547f6e950525b14e..e9ffe392d4df580c5151899c3262137ab349d642 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -687,11 +687,7 @@ if ($_POST['action'] == 'add' && $user->rights->facture->creer) if ($facid > 0) { - if (file_exists(DOL_DOCUMENT_ROOT.'/'.$element.'/class/'.$subelement.'.class.php')) { - require_once(DOL_DOCUMENT_ROOT.'/'.$element.'/class/'.$subelement.'.class.php'); - } else { - require_once(DOL_DOCUMENT_EXTMODULE.'/'.$element.'/class/'.$subelement.'.class.php'); - } + dol_include_once('/'.$element.'/class/'.$subelement.'.class.php'); $classname = ucfirst($subelement); $srcobject = new $classname($db); @@ -1397,11 +1393,7 @@ if ($_GET['action'] == 'create') if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } if ($element == 'contract') { $element = $subelement = 'contrat'; } - if (file_exists(DOL_DOCUMENT_ROOT.'/'.$element.'/class/'.$subelement.'.class.php')) { - require_once(DOL_DOCUMENT_ROOT.'/'.$element.'/class/'.$subelement.'.class.php'); - } else { - require_once(DOL_DOCUMENT_EXTMODULE.'/'.$element.'/class/'.$subelement.'.class.php'); - } + dol_include_once('/'.$element.'/class/'.$subelement.'.class.php'); $classname = ucfirst($subelement); $objectsrc = new $classname($db); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index b367d9c3fd472933a68b054a0cc1b3bd47101a12..5240a60eb429e3fe4617a5ccd179b4899920921b 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1284,38 +1284,22 @@ class CommonObject $daofile = 'dao_'.$module.'.class.php'; $pathroot = ''; - // Include class and library of thirdparty module - if (file_exists(DOL_DOCUMENT_ROOT.$path.$actionfile) && file_exists(DOL_DOCUMENT_ROOT.$path.$daofile)) - { - $pathroot = DOL_DOCUMENT_ROOT; - } - else if (file_exists(DOL_DOCUMENT_EXTMODULE.$path.$actionfile) && file_exists(DOL_DOCUMENT_EXTMODULE.$path.$daofile)) - { - $pathroot = DOL_DOCUMENT_EXTMODULE; - } - - if ($pathroot) - { - // Include actions class (controller) - require_once($pathroot.$path.$actionfile); + // Include actions class (controller) + dol_include_once($path.$actionfile); - // Include dataservice class (model) - require_once($pathroot.$path.$daofile); + // Include dataservice class (model) + dol_include_once($path.$daofile); - // Instantiate actions class (controller) - $controlclassname = 'Actions'.ucfirst($module); - $objModule = new $controlclassname($this->db); - $this->hooks[$objModule->module_number] = $objModule; + // Instantiate actions class (controller) + $controlclassname = 'Actions'.ucfirst($module); + $objModule = new $controlclassname($this->db); + $this->hooks[$objModule->module_number] = $objModule; - // Instantiate dataservice class (model) - $modelclassname = 'Dao'.ucfirst($module); - $this->hooks[$objModule->module_number]->object = new $modelclassname($this->db); - } + // Instantiate dataservice class (model) + $modelclassname = 'Dao'.ucfirst($module); + $this->hooks[$objModule->module_number]->object = new $modelclassname($this->db); - if (file_exists($pathroot.'/'.$module.'/lib/'.$module.'.lib.php')) - { - require_once($pathroot.'/'.$module.'/lib/'.$module.'.lib.php'); - } + dol_include_once('/'.$module.'/lib/'.$module.'.lib.php'); } } } @@ -1388,24 +1372,10 @@ class CommonObject //print $classfile." - ".$classpath." - ".$tplpath; if(!class_exists($classname)) { - if (file_exists(DOL_DOCUMENT_ROOT."/".$classpath."/".$classfile.".class.php")) - { - require(DOL_DOCUMENT_ROOT."/".$classpath."/".$classfile.".class.php"); - } - else - { - require(DOL_DOCUMENT_EXTMODULE."/".$classpath."/".$classfile.".class.php"); - } + dol_include_once("/".$classpath."/".$classfile.".class.php"); } $linkedObjectBlock = new $classname($this->db); - if (file_exists(DOL_DOCUMENT_ROOT.'/'.$tplpath.'/tpl/linkedobjectblock.tpl.php')) - { - include(DOL_DOCUMENT_ROOT.'/'.$tplpath.'/tpl/linkedobjectblock.tpl.php'); - } - else - { - include(DOL_DOCUMENT_EXTMODULE.'/'.$tplpath.'/tpl/linkedobjectblock.tpl.php'); - } + dol_include_once('/'.$tplpath.'/tpl/linkedobjectblock.tpl.php'); return $num; } diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 623504e8a88df40df94b112f8894e80f5e9816ed..1d4a1abdf42c3ade24667e10f828f998f9efa9ca 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -143,7 +143,7 @@ class Conf { $modulename = strtolower($reg[1]); if ($value == 1) $this->triggers_modules[] = DOL_DOCUMENT_ROOT.'/'.$modulename.'/inc/triggers/'; - else if ($value == 2) $this->triggers_modules[] = DOL_DOCUMENT_EXTMODULE.'/'.$modulename.'/inc/triggers/'; + else if ($value == 2) $this->triggers_modules[] = DOL_DOCUMENT_ROOT_ALT.'/'.$modulename.'/inc/triggers/'; } // If this is constant for login method activated by a module elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_LOGIN_METHOD$/i',$key,$reg)) diff --git a/htdocs/includes/menus/standard/auguria.lib.php b/htdocs/includes/menus/standard/auguria.lib.php index 514e6089c02b9fe33e1acacbecabb39cac64ad35..313e5df77b6939cc47ed0f89cf1d8b6470cad1cf 100644 --- a/htdocs/includes/menus/standard/auguria.lib.php +++ b/htdocs/includes/menus/standard/auguria.lib.php @@ -64,8 +64,8 @@ function print_auguria_menu($db,$atarget,$type_user) else { preg_match('/^([^<]+\.php)/i',$tabMenu[$i]['url'],$regs); - if (file_exists(DOL_DOCUMENT_ROOT.$regs[1])) $url=DOL_URL_ROOT.$tabMenu[$i]['url']; - else $url=DOL_URL_EXTMODULE.$tabMenu[$i]['url']; + $url=DOL_URL_ROOT.$tabMenu[$i]['url']; + if (defined('DOL_URL_EXTMODULE') && DOL_URL_EXTMODULE && ! file_exists(DOL_DOCUMENT_ROOT.$tabMenu[$i]['url'])) $url=DOL_URL_EXTMODULE.$tabMenu[$i]['url']; if (! preg_match('/\?/',$url)) $url.='?'; else $url.='&'; if (! preg_match('/mainmenu/i',$url) || ! preg_match('/leftmenu/i',$url)) @@ -278,8 +278,8 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after) // Add mainmenu in GET url. This make to go back on correct menu even when using Back on browser. preg_match('/^([^<]+\.php)/i',$menu_array[$i]['url'],$regs); - if (file_exists(DOL_DOCUMENT_ROOT.$regs[1])) $url=DOL_URL_ROOT.$menu_array[$i]['url']; - else $url=DOL_URL_EXTMODULE.$menu_array[$i]['url']; + $url=DOL_URL_ROOT.$menu_array[$i]['url']; + if (defined('DOL_URL_EXTMODULE') && DOL_URL_EXTMODULE && ! file_exists(DOL_DOCUMENT_ROOT.$regs[1])) $url=DOL_URL_EXTMODULE.$menu_array[$i]['url']; if (! preg_match('/mainmenu=/i',$menu_array[$i]['url'])) { diff --git a/htdocs/includes/menus/standard/eldy.lib.php b/htdocs/includes/menus/standard/eldy.lib.php index aa49c3877cfd7576aff0c433471f6df78c9a3546..3942082e26dfa89df391f2efcabf12f99b4d2e4e 100644 --- a/htdocs/includes/menus/standard/eldy.lib.php +++ b/htdocs/includes/menus/standard/eldy.lib.php @@ -453,8 +453,8 @@ function print_eldy_menu($db,$atarget,$type_user) } else { - if (file_exists(DOL_DOCUMENT_ROOT.$tabMenu[$i]['url'])) $url=DOL_URL_ROOT.$tabMenu[$i]['url']; - else $url=DOL_URL_EXTMODULE.$tabMenu[$i]['url']; + $url=DOL_URL_ROOT.$tabMenu[$i]['url']; + if (defined('DOL_URL_EXTMODULE') && DOL_URL_EXTMODULE && ! file_exists(DOL_DOCUMENT_ROOT.$tabMenu[$i]['url'])) $url=DOL_URL_EXTMODULE.$tabMenu[$i]['url']; if (! preg_match('/\?/',$url)) $url.='?'; else $url.='&'; if (! preg_match('/mainmenu/i',$url) || ! preg_match('/leftmenu/i',$url)) @@ -1387,8 +1387,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after) // For external modules preg_match('/^([^<]+\.php)/i',$menu_array[$i]['url'],$regs); - if (file_exists(DOL_DOCUMENT_ROOT.$regs[1])) $url=DOL_URL_ROOT.$menu_array[$i]['url']; - else $url=DOL_URL_EXTMODULE.$menu_array[$i]['url']; + $url=DOL_URL_ROOT.$menu_array[$i]['url']; + if (defined('DOL_URL_EXTMODULE') && DOL_URL_EXTMODULE && ! file_exists(DOL_DOCUMENT_ROOT.$regs[1])) $url=DOL_URL_EXTMODULE.$menu_array[$i]['url']; // Menu niveau 0 if ($menu_array[$i]['level'] == 0) diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 61d8d1d9ec3fd8bdc3a1fb06c644245308ac615b..88d143863834aa3101c7fb810868f0058e42c161 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -125,7 +125,7 @@ define('MAIN_DB_PREFIX',(isset($dolibarr_main_db_prefix)?$dolibarr_main_db_prefi define('DOL_DATA_ROOT',(isset($dolibarr_main_data_root)?$dolibarr_main_data_root:'')); define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir -define('DOL_DOCUMENT_EXTMODULE', (isset($dolibarr_main_document_root_alt)?$dolibarr_main_document_root_alt:'')); // Filesystem path to external modules dir +define('DOL_DOCUMENT_ROOT_ALT', (isset($dolibarr_main_document_root_alt)?$dolibarr_main_document_root_alt:'')); // Filesystem path to external root dir (external modules) define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root)?$dolibarr_main_url_root:'')); // URL relative root $uri=preg_replace('/^http(s?):\/\//i','',constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http* $suburi = strstr ($uri, '/'); // $suburi contains url without domain diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 9fe2dfd07a5c1510c38b346664c9b819228d2471..a436021aa3354b3e8af0730149f549e2d10669c2 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -62,6 +62,18 @@ function GETPOST($paramname,$check='',$method=0) return $out; } +/** + * Make an include_once using default root and alternate root if it fails. + * @param relpath Relative path to file (Ie: mydir/myfile, ../myfile, ...) + * @return int Result + */ +function dol_include_once($relpath) +{ + $res=@include_once(DOL_DOCUMENT_ROOT.$relpath); + if (! $res && defined('DOL_DOCUMENT_ROOT_ALT')) $res=@include_once(DOL_DOCUMENT_ROOT_ALT.$relpath); + return $res; +} + /** * Create a clone of instance of object (new instance with same properties) * This function works for both PHP4 and PHP5. diff --git a/htdocs/lib/security.lib.php b/htdocs/lib/security.lib.php index a022a2e4f6fc953fb14b555db136824f3e5c62dd..059c64f4ca637c60f4edfa00c082b85b8aeeed1e 100644 --- a/htdocs/lib/security.lib.php +++ b/htdocs/lib/security.lib.php @@ -159,14 +159,7 @@ function dol_loginfunction($langs,$conf,$mysoc) { $rowspan++; - if(file_exists(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php')) - { - $res=@include_once(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php'); - } - else - { - $res=@include_once(DOL_DOCUMENT_EXTMODULE.'/multicompany/class/actions_multicompany.class.php'); - } + $res=dol_include_once('/multicompany/class/actions_multicompany.class.php'); if ($res) { $mc = new ActionsMulticompany($db); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 1b803046dd59e44008742f23ed32d648011d533d..dd70e99e091d759129b0b4ed625a41832cbbf11e 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1068,15 +1068,8 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a { if ($user->admin && ! $user->entity) { - if(file_exists(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php')) - { - $res=@include_once(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php'); - } - else - { - $res=@include_once(DOL_DOCUMENT_EXTMODULE.'/multicompany/class/actions_multicompany.class.php'); - } - + $res=@dol_include_once('/multicompany/class/actions_multicompany.class.php'); + if ($res) { //$mc = new ActionsMulticompany($db); diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index a1fce0a13609a43cd02d5a0dcc702850697a0c23..aae5f3b937ad1756825f08078714ee41c72762ea 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -104,7 +104,7 @@ if (empty($dolibarr_main_data_root)) define('DOL_DOCUMENT_ROOT', $dolibarr_main_document_root); // Filesystem core php (htdocs) define('DOL_DATA_ROOT', $dolibarr_main_data_root); // Filesystem data (documents) define('DOL_CLASS_PATH', 'class/'); // Filesystem path to class dir -define('DOL_DOCUMENT_EXTMODULE', $dolibarr_main_document_root_alt); // Filesystem path to external modules dir +define('DOL_DOCUMENT_ROOT_ALT', $dolibarr_main_document_root_alt); // Filesystem path to external modules dir // If dolibarr_main_url_root = auto (Hidden feature for developers only), we try to forge it. if ($dolibarr_main_url_root == 'auto' && ! empty($_SERVER["SCRIPT_URL"]) && ! empty($_SERVER["SCRIPT_URI"])) { diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index fc2b07f21dab33ae5cac63e8a322817bc7f5f6ec..6b65b1163cd605843f4c0a339954ce1b4bc6f59e 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -216,15 +216,7 @@ if (! empty($conf->global->MAIN_MODULE_MULTICOMPANY) && ! $disabled) { global $db; - if(file_exists(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php')) - { - $res=@include_once(DOL_DOCUMENT_ROOT.'/multicompany/class/actions_multicompany.class.php'); - } - else - { - $res=@include_once(DOL_DOCUMENT_EXTMODULE.'/multicompany/class/actions_multicompany.class.php'); - } - + $res=dol_include_once('/multicompany/class/actions_multicompany.class.php'); if ($res) { $mc = new ActionsMulticompany($db);