diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 1a1354d4cdd..c1afa69bb53 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -63,6 +63,7 @@ class Conf public $sms_engine_modules = array(); public $barcode_modules = array(); public $substitutions_modules = array(); + public $societe_modules = array(); var $logbuffer = array(); @@ -164,9 +165,8 @@ class Conf if (! is_array($this->$varname)) { $this->$varname = array(); } $arrValue = @unserialize($value); if (is_array($arrValue) && ! empty($arrValue)) $value = $arrValue; - else if ($partname == 'barcode') $value = '/'.$modulename.'/core/modules/'.$partname.'/'; - else if ($partname == 'models') $value = $modulename.'/'; - else $value = ($value == 1 ? '/'.$modulename.'/core/'.$partname.'/' : $value); + else if (in_array($partname,array('login','menus','triggers'))) $value = '/'.$modulename.'/core/'.$partname.'/'; + else if ($value == 1) $value = '/'.$modulename.'/core/modules/'.$partname.'/'; $this->$varname = array_merge($this->$varname, array($modulename => $value)); } // If this is a module constant (must be at end) diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 999e6cfdd7d..67e2782e144 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -218,6 +218,9 @@ dol_fiche_head($head, 'general', $langs->trans("ThirdParty"), 0, 'company'); dol_htmloutput_mesg($mesg); +$dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + + // Module to manage customer/supplier code print_titre($langs->trans("CompanyCodeChecker")); @@ -232,9 +235,10 @@ print ' '.$langs->trans("Infos").''; print "\n"; $var = true; -foreach ($conf->file->dol_document_root as $dirroot) +foreach ($dirsociete as $dirroot) { - $dir = $dirroot . "/core/modules/societe/"; + $dir = dol_buildpath($dirroot,0); + $handle = @opendir($dir); if (is_resource($handle)) { @@ -246,7 +250,7 @@ foreach ($conf->file->dol_document_root as $dirroot) $file = substr($file, 0, dol_strlen($file)-4); try { - dol_include_once("/core/modules/societe/".$file.".php"); + dol_include_once($dirroot.$file.".php"); } catch(Exception $e) { @@ -312,11 +316,11 @@ print ''.$langs->trans("Status").''; print ' '; print "\n"; -$var = true; -foreach ($conf->file->dol_document_root as $dirroot) +foreach ($dirsociete as $dirroot) { - $dir = $dirroot . "/core/modules/societe/"; - $handle = @opendir($dir); + $dir = dol_buildpath($dirroot,0); + + $handle = @opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) @@ -325,7 +329,13 @@ foreach ($conf->file->dol_document_root as $dirroot) { $file = substr($file, 0, dol_strlen($file)-4); - dol_include_once("/core/modules/societe/".$file.".php"); + try { + dol_include_once($dirroot.$file.".php"); + } + catch(Exception $e) + { + dol_syslog($e->getMessage(), LOG_ERR); + } $modCodeCompta = new $file; $var = !$var; @@ -398,101 +408,104 @@ print ''.$langs->trans("Status").''; print ''.$langs->trans("Infos").''; print "\n"; -$var=true; -foreach ($conf->file->dol_document_root as $dirroot) +foreach ($dirsociete as $dirroot) { - $dir = $dirroot . "/core/modules/societe/doc"; + $dir = dol_buildpath($dirroot.'doc/',0); - if (is_dir($dir)) + $handle=@opendir($dir); + if (is_resource($handle)) { - $handle=opendir($dir); - if (is_resource($handle)) + while (($file = readdir($handle))!==false) { - while (($file = readdir($handle))!==false) + if (preg_match('/\.modules\.php$/i',$file)) { - if (preg_match('/\.modules\.php$/i',$file)) + $name = substr($file, 4, dol_strlen($file) -16); + $classname = substr($file, 0, dol_strlen($file) -12); + + try { + dol_include_once($dirroot.'doc/'.$file); + } + catch(Exception $e) + { + dol_syslog($e->getMessage(), LOG_ERR); + } + + $module = new $classname($db); + + $modulequalified=1; + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified=0; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified=0; + + if ($modulequalified) { - $name = substr($file, 4, dol_strlen($file) -16); - $classname = substr($file, 0, dol_strlen($file) -12); + $var = !$var; + print ''; + print $module->name; + print "\n"; + if (method_exists($module,'info')) print $module->info($langs); + else print $module->description; + print ''; - require_once($dir.'/'.$file); - $module = new $classname($db); - - $modulequalified=1; - if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified=0; - if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified=0; - - if ($modulequalified) + // Activate / Disable + if (in_array($name, $def)) { - $var = !$var; - print ''; - print $module->name; - print "\n"; - if (method_exists($module,'info')) print $module->info($langs); - else print $module->description; - print ''; - - // Activate / Disable - if (in_array($name, $def)) + print "\n"; + //if ($conf->global->COMPANY_ADDON_PDF != "$name") + //{ + print 'scandir.'&label='.urlencode($module->name).'">'; + print img_picto($langs->trans("Enabled"),'switch_on'); + print ''; + //} + //else + //{ + // print img_picto($langs->trans("Enabled"),'on'); + //} + print ""; + } + else + { + if (versioncompare($module->phpmin,versionphparray()) > 0) { print "\n"; - //if ($conf->global->COMPANY_ADDON_PDF != "$name") - //{ - print 'scandir.'&label='.urlencode($module->name).'">'; - print img_picto($langs->trans("Enabled"),'switch_on'); - print ''; - //} - //else - //{ - // print img_picto($langs->trans("Enabled"),'on'); - //} + print img_picto(dol_escape_htmltag($langs->trans("ErrorModuleRequirePHPVersion",join('.',$module->phpmin))),'switch_off'); print ""; } else { - if (versioncompare($module->phpmin,versionphparray()) > 0) - { - print "\n"; - print img_picto(dol_escape_htmltag($langs->trans("ErrorModuleRequirePHPVersion",join('.',$module->phpmin))),'switch_off'); - print ""; - } - else - { - print "\n"; - print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'switch_off').''; - print ""; - } + print "\n"; + print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print ""; } - - // Info - $htmltooltip = ''.$langs->trans("Name").': '.$module->name; - $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); - if ($modele->type == 'pdf') - { - $htmltooltip.='
'.$langs->trans("Height").'/'.$langs->trans("Width").': '.$module->page_hauteur.'/'.$module->page_largeur; - } - $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; - $htmltooltip.='
'.$langs->trans("WatermarkOnDraft").': '.yn($module->option_draft_watermark,1,1); - - - print ''; - if ($modele->type == 'pdf') - { - $linkspec=''.img_object($langs->trans("Preview"),'bill').''; - } - else - { - $linkspec=img_object($langs->trans("PreviewNotAvailable"),'generic'); - } - print $form->textwithpicto('   '.$linkspec,$htmltooltip,1,0); - print ''; - - print "\n"; } + + // Info + $htmltooltip = ''.$langs->trans("Name").': '.$module->name; + $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); + if ($modele->type == 'pdf') + { + $htmltooltip.='
'.$langs->trans("Height").'/'.$langs->trans("Width").': '.$module->page_hauteur.'/'.$module->page_largeur; + } + $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; + $htmltooltip.='
'.$langs->trans("WatermarkOnDraft").': '.yn($module->option_draft_watermark,1,1); + + + print ''; + if ($modele->type == 'pdf') + { + $linkspec=''.img_object($langs->trans("Preview"),'bill').''; + } + else + { + $linkspec=img_object($langs->trans("PreviewNotAvailable"),'generic'); + } + print $form->textwithpicto('   '.$linkspec,$htmltooltip,1,0); + print ''; + + print "\n"; } } - closedir($handle); } + closedir($handle); } } print ''; diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index ff0696f237b..41894985623 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -438,7 +438,12 @@ abstract class ActionsCardCommon { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeClient = new $module; $this->tpl['auto_customercode'] = $modCodeClient->code_auto; // We verified if the tag prefix is used @@ -470,7 +475,12 @@ abstract class ActionsCardCommon { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeFournisseur = new $module; $this->tpl['auto_suppliercode'] = $modCodeFournisseur->code_auto; // We verified if the tag prefix is used diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index baf6a4a65ef..db26e573b8c 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1658,15 +1658,21 @@ class Societe extends CommonObject } /** - * \brief Attribut un code client a partir du module de controle des codes. - * \return code_client Code client automatique + * Attribut un code client a partir du module de controle des codes. + * + * @return code_client Code client automatique */ function get_codeclient($objsoc=0,$type=0) { global $conf; if ($conf->global->SOCIETE_CODECLIENT_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODECLIENT_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODECLIENT_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODECLIENT_ADDON; $mod = new $var; @@ -1678,15 +1684,21 @@ class Societe extends CommonObject } /** - * \brief Attribut un code fournisseur a partir du module de controle des codes. - * \return code_fournisseur Code fournisseur automatique + * Attribut un code fournisseur a partir du module de controle des codes. + * + * @return code_fournisseur Code fournisseur automatique */ function get_codefournisseur($objsoc=0,$type=1) { global $conf; if ($conf->global->SOCIETE_CODEFOURNISSEUR_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_FOURNISSEUR_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODEFOURNISSEUR_ADDON; $mod = new $var; @@ -1706,7 +1718,12 @@ class Societe extends CommonObject global $conf; if ($conf->global->SOCIETE_CODECLIENT_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODECLIENT_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODECLIENT_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODECLIENT_ADDON; @@ -1734,7 +1751,12 @@ class Societe extends CommonObject global $conf; if ($conf->global->SOCIETE_CODEFOURNISSEUR_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODEFOURNISSEUR_ADDON; @@ -1766,7 +1788,12 @@ class Societe extends CommonObject global $conf; if ($conf->global->SOCIETE_CODECLIENT_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODECLIENT_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODECLIENT_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODECLIENT_ADDON; @@ -1795,7 +1822,12 @@ class Societe extends CommonObject global $conf; if ($conf->global->SOCIETE_CODEFOURNISSEUR_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODEFOURNISSEUR_ADDON; @@ -1824,7 +1856,12 @@ class Societe extends CommonObject if ($conf->global->SOCIETE_CODECOMPTA_ADDON) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/societe/'.$conf->global->SOCIETE_CODECOMPTA_ADDON.'.php'; + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$conf->global->SOCIETE_CODECOMPTA_ADDON.".php"); + if ($res) break; + } $var = $conf->global->SOCIETE_CODECOMPTA_ADDON; diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 0ba5c8e23fb..e38f4e04f1e 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -499,7 +499,12 @@ else { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeClient = new $module; $module=$conf->global->SOCIETE_CODEFOURNISSEUR_ADDON; if (! $module) $module=$conf->global->SOCIETE_CODECLIENT_ADDON; @@ -507,7 +512,12 @@ else { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeFournisseur = new $module; //if ($_GET["type"]=='cp') { $object->client=3; } @@ -693,10 +703,11 @@ else // Prospect/Customer print ''.$langs->trans('ProspectCustomer').''; print ''.$langs->trans('CustomerCode').''; @@ -716,7 +727,7 @@ else // Supplier print ''; print ''.$langs->trans('Supplier').''; - print $form->selectyesno("fournisseur",$object->fournisseur,1); + print $form->selectyesno("fournisseur",(isset($_POST['fournisseur'])?GETPOST('fournisseur'):$object->fournisseur),1); print ''; print ''.$langs->trans('SupplierCode').''; print '
'; @@ -991,7 +1002,12 @@ else { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeClient = new $module; // We verified if the tag prefix is used if ($modCodeClient->code_auto) @@ -1004,7 +1020,12 @@ else { $module = substr($module, 0, dol_strlen($module)-4); } - require_once(DOL_DOCUMENT_ROOT ."/core/modules/societe/".$module.".php"); + $dirsociete=array_merge(array('/core/modules/societe/'),$conf->societe_modules); + foreach ($dirsociete as $dirroot) + { + $res=dol_include_once($dirroot.$module.".php"); + if ($res) break; + } $modCodeFournisseur = new $module; // On verifie si la balise prefix est utilisee if ($modCodeFournisseur->code_auto)