New: emailing submodules can be stored into the module directory.
This commit is contained in:
parent
30aeeee2fa
commit
0ab6cec007
@ -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
|
||||
|
||||
@ -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<br>";
|
||||
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='<div class="error">'.$obj->error.'</div>';
|
||||
$mesg='<div class="error">'.$langs->trans("Error").($obj->error?' '.$obj->error:'').'</div>';
|
||||
}
|
||||
$_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 "</div>";
|
||||
|
||||
if ($mesg) print "$mesg<br>\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<br>";
|
||||
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 '<tr '.$bc[$var].'>';
|
||||
|
||||
if ($mil->statut == 0)
|
||||
{
|
||||
print '<form name="'.$modulename.'" action="cibles.php?action=add&rowid='.$mil->id.'&module='.$modulename.'" method="POST" enctype="multipart/form-data">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
}
|
||||
|
||||
print '<td>';
|
||||
if (! $obj->picto) $obj->picto='generic';
|
||||
print img_object($langs->trans("Module").': '.get_class($obj),$obj->picto).' '.$obj->getDesc();
|
||||
print '</td>';
|
||||
|
||||
/*
|
||||
print '<td width=\"100\">';
|
||||
print $modulename;
|
||||
print "</td>";
|
||||
*/
|
||||
$nbofrecipient=$obj->getNbOfRecipients();
|
||||
print '<td align="center">';
|
||||
if ($nbofrecipient >= 0)
|
||||
{
|
||||
print $nbofrecipient;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error").' '.img_error($obj->error);
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print '<td align="left">';
|
||||
$filter=$obj->formFilter();
|
||||
if ($filter) print $filter;
|
||||
else print $langs->trans("None");
|
||||
print '</td>';
|
||||
|
||||
print '<td align="right">';
|
||||
if ($mil->statut == 0)
|
||||
{
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Add").'">';
|
||||
}
|
||||
else
|
||||
{
|
||||
//print $langs->trans("MailNoChangePossible");
|
||||
print " ";
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
if ($mil->statut == 0) print '</form>';
|
||||
|
||||
print "</tr>\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 '<tr '.$bc[$var].'>';
|
||||
|
||||
if ($mil->statut == 0)
|
||||
{
|
||||
print '<form name="'.$modulename.'" action="cibles.php?action=add&rowid='.$mil->id.'&module='.$modulename.'" method="POST" enctype="multipart/form-data">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
}
|
||||
|
||||
print '<td>';
|
||||
if (! $obj->picto) $obj->picto='generic';
|
||||
print img_object($langs->trans("Module").': '.get_class($obj),$obj->picto).' '.$obj->getDesc();
|
||||
print '</td>';
|
||||
|
||||
/*
|
||||
print '<td width=\"100\">';
|
||||
print $modulename;
|
||||
print "</td>";
|
||||
*/
|
||||
$nbofrecipient=$obj->getNbOfRecipients();
|
||||
print '<td align="center">';
|
||||
if ($nbofrecipient >= 0)
|
||||
{
|
||||
print $nbofrecipient;
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("Error").' '.img_error($obj->error);
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print '<td align="left">';
|
||||
$filter=$obj->formFilter();
|
||||
if ($filter) print $filter;
|
||||
else print $langs->trans("None");
|
||||
print '</td>';
|
||||
|
||||
print '<td align="right">';
|
||||
if ($mil->statut == 0)
|
||||
{
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Add").'">';
|
||||
}
|
||||
else
|
||||
{
|
||||
//print $langs->trans("MailNoChangePossible");
|
||||
print " ";
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
if ($mil->statut == 0) print '</form>';
|
||||
|
||||
print "</tr>\n";
|
||||
}
|
||||
}
|
||||
} // End foreach dir
|
||||
@ -511,7 +541,7 @@ if ($mil->fetch($_REQUEST["id"]) >= 0)
|
||||
}
|
||||
|
||||
|
||||
$db->close();
|
||||
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
|
||||
@ -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><div class="error">/','<br>',$mesgstring);
|
||||
$mesgstring=preg_replace('/<div class="error">/','',$mesgstring);
|
||||
$mesgstring=preg_replace('/<\/div><div class="(error|warning)">/','<br>',$mesgstring);
|
||||
$mesgstring=preg_replace('/<div class="(error|warning)">/','',$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><div class="error">/','<br>',$val);
|
||||
$tmpmesgstring=preg_replace('/<div class="error">/','',$tmpmesgstring);
|
||||
$tmpmesgstring=preg_replace('/<\/div><div class="(error|warning)">/','<br>',$val);
|
||||
$tmpmesgstring=preg_replace('/<div class="(error|warning)">/','',$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);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user