New: External modules can add their own substitution module

This commit is contained in:
Laurent Destailleur 2011-06-08 21:11:52 +00:00
parent cb5c24cd69
commit 87f01b0c18

View File

@ -3580,24 +3580,7 @@ function make_substitutions($chaine,$substitutionarray,$outputlangs,$object='')
{
global $conf,$user;
$listfonc=array('numberwords'); // For the moment only one substitution module to search
foreach($listfonc as $fonc)
{
// Check if there is external substitution to do asked by plugins
// We look files into the includes/modules/substitutions directory
// By default, there is no such external plugins.
foreach ($conf->file->dol_document_root as $dirroot)
{
// If module enabled and complete
if (! empty($conf->$fonc->enabled) && file_exists($dirroot.'/includes/modules/substitutions/functions_'.$fonc.'.lib.php'))
{
dol_syslog("Library functions_".$fonc.".lib.php found into ".$dirroot);
require_once($dirroot."/includes/modules/substitutions/functions_".$fonc.".lib.php");
numberwords_completesubstitutionarray($substitutionarray,$outputlangs,$object);
break;
}
}
}
complete_substitutions_array($substitutionarray,$outputlangs,$object);
// Make substitition
foreach ($substitutionarray as $key => $value)
@ -3607,6 +3590,44 @@ function make_substitutions($chaine,$substitutionarray,$outputlangs,$object='')
return $chaine;
}
/**
* Complete the $substitutionarray with more entries
* @param substitutionarray Array substitution old value => new value value
* @param outputlangs If we want substitution from special constants, we provide a language
* @param object If we want substitution from special constants, we provide data in a source object
*/
function complete_substitutions_array(&$substitutionarray,$outputlangs,$object='')
{
global $conf,$user;
require_once(DOL_DOCUMENT_ROOT.'/lib/files.lib.php');
// Check if there is external substitution to do asked by plugins
// We look files into the includes/modules/substitutions directory
// By default, there is no such external plugins.
foreach ($conf->file->dol_document_root as $dirroot)
{
$substitfiles=dol_dir_list($dirroot.'/includes/modules/substitutions','files',0,'functions_');
foreach($substitfiles as $substitfile)
{
if (preg_match('/functions_(.*)\.lib\.php/i',$substitfile['name'],$reg))
{
$module=$reg[1];
if (! empty($conf->$module->enabled)) // If module enabled and complete
{
dol_syslog("Library functions_".$module.".lib.php found into ".$dirroot);
require_once($dirroot."/includes/modules/substitutions/functions_".$module.".lib.php");
$function_name=$module."_completesubstitutionarray";
$function_name($substitutionarray,$outputlangs,$object);
//$res=call_user_func_array($module."_completesubstitutionarray", array($substitutionarray,$outputlangs,$object));
//print $res;
//numberwords_completesubstitutionarray($substitutionarray,$outputlangs,$object);
}
}
}
}
}
/**
* Format output for start and end date
* @param date_start Start date