diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index ebc3e7a9263..bdf2ca4fdf5 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -33,6 +33,24 @@ $dolibarr_main_url_root=''; $dolibarr_main_document_root=''; +# dolibarr_main_url_root_alt +# This parameter defines the alternative URL of your Dolibarr. +# It must link to the external modules directory. +# Examples: +# $dolibarr_main_url_root_alt='/custom'; +# +$dolibarr_main_url_root_alt=''; + + +# dolibarr_main_document_root_alt +# This parameter contains absolute alternative file system directory of Dolibarr +# Examples: +# $dolibarr_main_document_root_alt='/var/www/dolibarr/htdocs/custom'; +# $dolibarr_main_document_root_alt='C:/My web sites/dolibarr/htdocs/custom'; +# +$dolibarr_main_document_root_alt=''; + + # dolibarr_main_data_root # This parameter contains absolute file system directory of Dolibarr # directory used to store uploaded and generated physical files. diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 62de50c032b..6e60ea84b37 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1386,9 +1386,27 @@ class CommonObject if ($objecttype == 'invoice_supplier') { $classfile='fournisseur.facture'; $classname='FactureFournisseur'; } if ($objecttype == 'order_supplier') { $classfile='fournisseur.commande'; $classname='CommandeFournisseur'; } //print $classfile." - ".$classpath." - ".$tplpath; - if(!class_exists($classname)) require(DOL_DOCUMENT_ROOT."/".$classpath."/".$classfile.".class.php"); + 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"); + } + } $linkedObjectBlock = new $classname($this->db); - include(DOL_DOCUMENT_ROOT.'/'.$tplpath.'/tpl/linkedobjectblock.tpl.php'); + 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'); + } + return $num; } } diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index ebeb7cf1b7a..c0a1e59ab3a 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -534,6 +534,12 @@ function write_conf_file($conffile) fputs($fp, '$dolibarr_main_document_root=\''.addslashes($main_dir).'\';'); fputs($fp,"\n"); + + fputs($fp, '$dolibarr_main_url_root_alt=\''.addslashes("/custom").'\';'); + fputs($fp,"\n"); + + fputs($fp, '$dolibarr_main_document_root_alt=\''.addslashes($main_dir."/custom").'\';'); + fputs($fp,"\n"); fputs($fp, '$dolibarr_main_data_root=\''.addslashes($main_data_dir).'\';'); fputs($fp,"\n"); diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 478cb5d1579..61d8d1d9ec3 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -82,6 +82,8 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile)) if (! empty($dolibarr_main_document_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root)) $dolibarr_main_document_root=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root); if (! empty($dolibarr_main_url_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root)) $dolibarr_main_url_root=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root); if (! empty($dolibarr_main_data_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_data_root)) $dolibarr_main_data_root=preg_replace('/[\\/]+$/','',$dolibarr_main_data_root); + if (! empty($dolibarr_main_document_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root_alt); + if (! empty($dolibarr_main_url_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root_alt); // Create conf object if (! empty($dolibarr_main_document_root)) @@ -123,11 +125,13 @@ 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_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 if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now '' define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) +define('DOL_URL_EXTMODULE', DOL_URL_ROOT.(isset($dolibarr_main_url_root_alt)?$dolibarr_main_url_root_alt:'')); // URL relative for external modules if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8";