diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index 8c9d2e18328..57ee3b7e395 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -72,16 +72,8 @@ llxHeader('',$langs->trans("Setup"),$help_url);
print_fiche_titre($langs->trans("ModulesSetup"),'','setup');
-// Search modules
-$filename = array();
-$modules = array();
-$orders = array();
-$categ = array();
-$dirmod = array();
+// Search modules dirs
$modulesdir = array();
-$i = 0; // is a sequencer of modules found
-$j = 0; // j is module number. Automatically affected if module number not defined.
-
foreach ($conf->file->dol_document_root as $type => $dirroot)
{
$modulesdir[$dirroot . '/core/modules/'] = $dirroot . '/core/modules/';
@@ -104,6 +96,15 @@ foreach ($conf->file->dol_document_root as $type => $dirroot)
}
//var_dump($modulesdir);
+
+$filename = array();
+$modules = array();
+$orders = array();
+$categ = array();
+$dirmod = array();
+$i = 0; // is a sequencer of modules found
+$j = 0; // j is module number. Automatically affected if module number not defined.
+
foreach ($modulesdir as $dir)
{
// Load modules attributes in arrays (name, numero, orders) from dir directory
diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php
index b4d9aa44d4d..ddc349f5d5c 100644
--- a/htdocs/comm/mailing/cibles.php
+++ b/htdocs/comm/mailing/cibles.php
@@ -32,16 +32,11 @@ require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
$langs->load("mails");
// Security check
-if (! $user->rights->mailing->lire || $user->societe_id > 0)
-accessforbidden();
-
-
-$dirmod=DOL_DOCUMENT_ROOT."/core/modules/mailings";
+if (! $user->rights->mailing->lire || $user->societe_id > 0) accessforbidden();
$mesg = '';
-
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
$page = GETPOST("page",'int');
@@ -52,50 +47,78 @@ $pagenext = $page + 1;
if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="email";
-$search_nom=isset($_GET["search_nom"])?$_GET["search_nom"]:$_POST["search_nom"];
-$search_prenom=isset($_GET["search_prenom"])?$_GET["search_prenom"]:$_POST["search_prenom"];
-$search_email=isset($_GET["search_email"])?$_GET["search_email"]:$_POST["search_email"];
+$id=GETPOST('rowid')?GETPOST('rowid'):GETPOST('id');
+$action=GETPOST("action");
+$search_nom=GETPOST("search_nom");
+$search_prenom=GETPOST("search_prenom");
+$search_email=GETPOST("search_email");
+
+// Search modules dirs
+$modulesdir = array();
+foreach ($conf->file->dol_document_root as $type => $dirroot)
+{
+ $modulesdir[$dirroot . '/core/modules/mailings/'] = $dirroot . '/core/modules/mailings/';
+
+ $handle=@opendir($dirroot);
+ if (is_resource($handle))
+ {
+ while (($file = readdir($handle))!==false)
+ {
+ if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes')
+ {
+ if (is_dir($dirroot . '/' . $file . '/core/modules/mailings/'))
+ {
+ $modulesdir[$dirroot . '/' . $file . '/core/modules/mailings/'] = $dirroot . '/' . $file . '/core/modules/mailings/';
+ }
+ }
+ }
+ closedir($handle);
+ }
+}
+//var_dump($modulesdir);
+
+$dirmod=DOL_DOCUMENT_ROOT."/core/modules/mailings";
/*
* Actions
*/
-if ($_GET["action"] == 'add')
+if ($action == 'add')
{
- $modulename=$_GET["module"];
- $result=0;
+ $module=GETPOST("module");
+ $result=-1;
$var=true;
- foreach ($conf->file->dol_document_root as $dirmod)
+
+ foreach ($modulesdir as $dir)
{
- $dir=$dirmod."/core/modules/mailings/";
+ // Load modules attributes in arrays (name, numero, orders) from dir directory
+ //print $dir."\n
";
+ dol_syslog("Scan directory ".$dir." for modules");
- if (is_dir($dir))
+ // Chargement de la classe
+ $file = $dir."/".$module.".modules.php";
+ $classname = "mailing_".$module;
+
+ if (file_exists($file))
{
- // Chargement de la classe
- $file = $dir."/".$modulename.".modules.php";
- $classname = "mailing_".$modulename;
+ require_once($file);
- if (file_exists($file))
- {
- require_once($file);
+ // We fill $filtersarray. Using this variable is now deprecated.
+ // Kept for backward compatibility.
+ $filtersarray=array();
+ if (isset($_POST["filter"])) $filtersarray[0]=$_POST["filter"];
- // We fill $filtersarray. Using this variable is now deprecated.
- // Kept for backward compatibility.
- $filtersarray=array();
- if (isset($_POST["filter"])) $filtersarray[0]=$_POST["filter"];
-
- // Add targets into database
- $obj = new $classname($db);
- $result=$obj->add_to_target($_GET["rowid"],$filtersarray);
- }
+ // Add targets into database
+ $obj = new $classname($db);
+ $result=$obj->add_to_target($id,$filtersarray);
}
}
if ($result > 0)
{
- Header("Location: cibles.php?id=".$_GET["rowid"]);
+ Header("Location: cibles.php?id=".$id);
exit;
}
if ($result == 0)
@@ -104,12 +127,11 @@ if ($_GET["action"] == 'add')
}
if ($result < 0)
{
- $mesg='
'.$obj->error.'
';
+ $mesg=''.$langs->trans("Error").($obj->error?' '.$obj->error:'').'
';
}
- $_REQUEST["id"]=$_GET["rowid"];
}
-if ($_GET["action"] == 'clear')
+if ($action == 'clear')
{
// Chargement de la classe
$file = $dirmod."/modules_mailings.php";
@@ -117,16 +139,16 @@ if ($_GET["action"] == 'clear')
require_once($file);
$obj = new $classname($db);
- $obj->clear_target($_GET["rowid"]);
+ $obj->clear_target($id);
- Header("Location: cibles.php?id=".$_GET["rowid"]);
+ Header("Location: cibles.php?id=".$id);
exit;
}
-if ($_GET["action"] == 'delete')
+if ($action == 'delete')
{
// Ici, rowid indique le destinataire et id le mailing
- $sql="DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles where rowid=".$_GET["rowid"];
+ $sql="DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles where rowid=".$id;
$resql=$db->query($sql);
if ($resql)
{
@@ -135,7 +157,7 @@ if ($_GET["action"] == 'delete')
require_once($file);
$obj = new $classname($db);
- $obj->update_nb($_REQUEST["id"]);
+ $obj->update_nb($id);
}
else
{
@@ -162,7 +184,7 @@ $form = new Form($db);
$mil = new Mailing($db);
-if ($mil->fetch($_REQUEST["id"]) >= 0)
+if ($mil->fetch($id) >= 0)
{
$head = emailing_prepare_head($mil);
@@ -207,7 +229,7 @@ if ($mil->fetch($_REQUEST["id"]) >= 0)
print "";
- if ($mesg) print "$mesg
\n";
+ dol_htmloutput_mesg($mesg);
$var=!$var;
@@ -227,102 +249,110 @@ if ($mil->fetch($_REQUEST["id"]) >= 0)
clearstatcache();
$var=true;
- foreach ($conf->file->dol_document_root as $dirroot)
+
+ foreach ($modulesdir as $dir)
{
- $dir=$dirroot."/core/modules/mailings/";
+ $modulenames=array();
- if (is_dir($dir))
+ // Load modules attributes in arrays (name, numero, orders) from dir directory
+ //print $dir."\n
";
+ dol_syslog("Scan directory ".$dir." for modules");
+ $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 (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS')
{
- if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS')
+ if (preg_match("/(.*)\.modules\.php$/i",$file,$reg))
{
- if (preg_match("/(.*)\.modules\.php$/i",$file,$reg))
- {
- $modulename=$reg[1];
- if ($modulename == 'example') continue;
-
- // Chargement de la classe
- $file = $dir.$modulename.".modules.php";
- $classname = "mailing_".$modulename;
- require_once($file);
-
- $obj = new $classname($db);
-
- $qualified=1;
- foreach ($obj->require_module as $key)
- {
- if (! $conf->$key->enabled || (! $user->admin && $obj->require_admin))
- {
- $qualified=0;
- //print "Les prerequis d'activation du module mailing ne sont pas respectes. Il ne sera pas actif";
- break;
- }
- }
-
- // Si le module mailing est qualifie
- if ($qualified)
- {
- $var = !$var;
- print '';
-
- if ($mil->statut == 0)
- {
- print '';
-
- print "
\n";
- }
- }
+ if ($reg[1] == 'example') continue;
+ $modulenames[]=$reg[1];
}
}
- closedir($handle);
+ }
+ closedir($handle);
+ }
+
+ // Sort $modulenames
+ // TODO
+
+ // Loop on each submodule
+ foreach($modulenames as $modulename)
+ {
+ // Chargement de la classe
+ $file = $dir.$modulename.".modules.php";
+ $classname = "mailing_".$modulename;
+ require_once($file);
+
+ $obj = new $classname($db);
+
+ $qualified=1;
+ foreach ($obj->require_module as $key)
+ {
+ if (! $conf->$key->enabled || (! $user->admin && $obj->require_admin))
+ {
+ $qualified=0;
+ //print "Les prerequis d'activation du module mailing ne sont pas respectes. Il ne sera pas actif";
+ break;
+ }
+ }
+
+ // Si le module mailing est qualifie
+ if ($qualified)
+ {
+ $var = !$var;
+ print '';
+
+ if ($mil->statut == 0)
+ {
+ print '';
+
+ print "
\n";
}
}
} // End foreach dir
@@ -511,7 +541,7 @@ if ($mil->fetch($_REQUEST["id"]) >= 0)
}
-$db->close();
-
llxFooter();
+
+$db->close();
?>
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 1b0fcd09ddf..b2d1782a7b2 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4021,7 +4021,7 @@ function get_htmloutput_errors($mesgstring='', $mesgarray='', $keepembedded=0)
*
* @param string $mesgstring Message
* @param array $mesgarray Messages array
- * @param string $style Which style to use ('ok', 'error')
+ * @param string $style Which style to use ('ok', 'warning', 'error')
* @param int $keepembedded Set to 1 if message must be kept embedded into its html place (this disable jnotify)
* @return void
*
@@ -4033,21 +4033,25 @@ function dol_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepemb
if (empty($mesgstring) && (! is_array($mesgarray) || count($mesgarray) == 0)) return;
$iserror=0;
+ $iswarning=0;
if (is_array($mesgarray))
{
foreach($mesgarray as $val)
{
if ($val && preg_match('/class="error"/i',$val)) { $iserror++; break; }
+ if ($val && preg_match('/class="warning"/i',$val)) { $iswarning++; break; }
}
}
else if ($mesgstring && preg_match('/class="error"/i',$mesgstring)) $iserror++;
+ else if ($mesgstring && preg_match('/class="warning"/i',$mesgstring)) $iswarning++;
if ($style=='error') $iserror++;
+ if ($style=='warning') $iswarning++;
- if ($iserror)
+ if ($iserror || $iswarning)
{
// Remove div from texts
- $mesgstring=preg_replace('/<\/div>/','
',$mesgstring);
- $mesgstring=preg_replace('/
/','',$mesgstring);
+ $mesgstring=preg_replace('/<\/div>
/','
',$mesgstring);
+ $mesgstring=preg_replace('/
/','',$mesgstring);
$mesgstring=preg_replace('/<\/div>/','',$mesgstring);
// Remove div from texts array
if (is_array($mesgarray))
@@ -4055,14 +4059,14 @@ function dol_htmloutput_mesg($mesgstring='',$mesgarray='', $style='ok', $keepemb
$newmesgarray=array();
foreach($mesgarray as $val)
{
- $tmpmesgstring=preg_replace('/<\/div>
/','
',$val);
- $tmpmesgstring=preg_replace('/
/','',$tmpmesgstring);
+ $tmpmesgstring=preg_replace('/<\/div>
/','
',$val);
+ $tmpmesgstring=preg_replace('/
/','',$tmpmesgstring);
$tmpmesgstring=preg_replace('/<\/div>/','',$tmpmesgstring);
$newmesgarray[]=$tmpmesgstring;
}
$mesgarray=$newmesgarray;
}
- print get_htmloutput_mesg($mesgstring,$mesgarray,'error',$keepembedded);
+ print get_htmloutput_mesg($mesgstring,$mesgarray,($iserror?'error':'warning'),$keepembedded);
}
else print get_htmloutput_mesg($mesgstring,$mesgarray,'ok',$keepembedded);
}