Fix: Third party emails must not be visible into notification page

This commit is contained in:
Laurent Destailleur 2011-09-02 23:07:47 +00:00
parent 8b9ed46368
commit 45cdd92441
2 changed files with 256 additions and 260 deletions

View File

@ -630,6 +630,58 @@ class FormMail
return $out; return $out;
} }
/**
* \brief Affiche la partie de formulaire pour saisie d'un mail
* \param withtopic 1 pour proposer a la saisie le sujet
* \param withbody 1 pour proposer a la saisie le corps du message
* \param withfile 1 pour proposer a la saisie l'ajout d'un fichier joint
* \todo Fonction a virer quand fichier /comm/mailing.php vire (= quand ecran dans /comm/mailing prets)
*/
function mail_topicmessagefile($withtopic=1,$withbody=1,$withfile=1,$defaultbody)
{
global $langs;
$langs->load("other");
print "<table class=\"border\" width=\"100%\">";
// Topic
if ($withtopic)
{
print "<tr>";
print "<td width=\"180\">".$langs->trans("MailTopic")."</td>";
print "<td>";
print "<input type=\"text\" size=\"60\" name=\"subject\" value=\"\">";
print "</td></tr>";
}
// Message
if ($withbody)
{
print "<tr>";
print "<td width=\"180\" valign=\"top\">".$langs->trans("MailText")."</td>";
print "<td>";
print "<textarea rows=\"8\" cols=\"72\" name=\"message\">";
print $defaultbody;
print "</textarea>";
print "</td></tr>";
}
// Si fichier joint
if ($withfile)
{
print "<tr>";
print "<td width=\"180\">".$langs->trans("MailFile")."</td>";
print "<td>";
print "<input type=\"file\" name=\"addedfile\" value=\"".$langs->trans("Upload")."\"/>";
print "</td></tr>";
}
print "</table>";
}
} }
?> ?>

View File

@ -52,8 +52,6 @@ $pagenext = $page + 1;
if (! $sortorder) $sortorder="ASC"; if (! $sortorder) $sortorder="ASC";
if (! $sortfield) $sortfield="c.name"; if (! $sortfield) $sortfield="c.name";
$now=dol_now();
/* /*
* Actions * Actions
@ -62,61 +60,33 @@ $now=dol_now();
// Add a notification // Add a notification
if ($action == 'add') if ($action == 'add')
{ {
$error=0; $sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def";
$sql .= " WHERE fk_soc=".$socid." AND fk_contact=".$_POST["contactid"]." AND fk_action=".$_POST["actionid"];
if ($db->query($sql))
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."notify_def (datec,fk_soc, fk_contact, fk_action)";
$sql .= " VALUES (".$db->idate(mktime()).",".$socid.",".$_POST["contactid"].",".$_POST["actionid"].")";
if (empty($contactid)) if ($db->query($sql))
{ {
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Contact")).'</div>';
$error++;
}
if ($actionid <= 0)
{
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Action")).'</div>';
$error++;
}
if (! $error) }
{ else
$db->begin(); {
dol_print_error($db);
$sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def"; }
$sql .= " WHERE fk_soc=".$socid." AND fk_contact=".$contactid." AND fk_action=".$actionid; }
if ($db->query($sql)) else
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."notify_def (datec,fk_soc, fk_contact, fk_action)"; dol_print_error($db);
$sql .= " VALUES ('".$db->idate($now)."',".$socid.",".$contactid.",".$actionid.")"; }
if ($db->query($sql))
{
}
else
{
$error++;
dol_print_error($db);
}
}
else
{
dol_print_error($db);
}
if (! $error)
{
$db->commit();
}
else
{
$db->rollback();
}
}
} }
// Remove a notification // Remove a notification
if ($action == 'delete') if ($action == 'delete')
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def where rowid=".$_GET["actid"].";"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def where rowid=".$_GET["actid"].";";
$db->query($sql); $db->query($sql);
} }
@ -129,106 +99,80 @@ $form = new Form($db);
llxHeader(); llxHeader();
$object = new Societe($db); $soc = new Societe($db);
$result=$object->fetch($socid); $result=$soc->fetch($socid);
if ($result > 0) if ($result > 0)
{ {
$html = new Form($db); $html = new Form($db);
$langs->load("other"); $langs->load("other");
$head = societe_prepare_head($object); $head = societe_prepare_head($soc);
dol_fiche_head($head, 'notify', $langs->trans("ThirdParty"),0,'company'); dol_fiche_head($head, 'notify', $langs->trans("ThirdParty"),0,'company');
print '<table class="border"width="100%">'; print '<table class="border"width="100%">';
print '<tr><td width="20%">'.$langs->trans("ThirdPartyName").'</td><td colspan="3">'; print '<tr><td width="20%">'.$langs->trans("ThirdPartyName").'</td><td colspan="3">';
print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom'); print $form->showrefnav($soc,'socid','',($user->societe_id?0:1),'rowid','nom');
print '</td></tr>'; print '</td></tr>';
// Prefix print '<tr><td width="30%">'.$langs->trans("NbOfActiveNotifications").'</td>';
if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field print '<td colspan="3">';
{ $sql = "SELECT COUNT(n.rowid) as nb";
print '<tr><td>'.$langs->trans('Prefix').'</td><td colspan="3">'.$object->prefix_comm.'</td></tr>'; $sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n";
} $sql.= " WHERE fk_soc = ".$soc->id;
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$nb=$obj->nb;
$i++;
}
}
else {
dol_print_error($db);
}
print $nb;
print '</td></tr>';
print '</table>';
if ($object->client) print '</div>';
{
print '<tr><td>';
print $langs->trans('CustomerCode').'</td><td colspan="3">';
print $object->code_client;
if ($object->check_codeclient() <> 0) print ' <font class="error">('.$langs->trans("WrongCustomerCode").')</font>';
print '</td></tr>';
}
if ($object->fournisseur)
{
print '<tr><td>';
print $langs->trans('SupplierCode').'</td><td colspan="3">';
print $object->code_fournisseur;
if ($object->check_codefournisseur() <> 0) print ' <font class="error">('.$langs->trans("WrongSupplierCode").')</font>';
print '</td></tr>';
}
print '<tr><td width="30%">'.$langs->trans("NbOfActiveNotifications").'</td>';
print '<td colspan="3">';
$sql = "SELECT COUNT(n.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n";
$sql.= " WHERE fk_soc = ".$object->id;
$resql=$db->query($sql);
if ($resql)
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$nb=$obj->nb;
$i++;
}
}
else {
dol_print_error($db);
}
print $nb;
print '</td></tr>';
print '</table>';
// Help
print '<br>'.$langs->trans("NotificationsDesc").'<br>';
dol_fiche_end(); // Help
print $langs->trans("NotificationsDesc").'<br><br>';
print "\n"; print "\n";
// Add notification form // Add notification form
print_fiche_titre($langs->trans("AddNewNotification"),'',''); print_fiche_titre($langs->trans("AddNewNotification"),'','');
print '<form action="fiche.php?socid='.$socid.'" method="post">'; print '<form action="fiche.php?socid='.$socid.'" method="post">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add">';
$param="&socid=".$socid; // Line with titles
print '<table width="100%" class="noborder">';
// Line with titles print '<tr class="liste_titre">';
print '<table width="100%" class="noborder">'; $param="&socid=".$socid;
print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',$param,'"width="45%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',$param,'"width="45%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',$param,'"width="35%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',$param,'"width="35%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Type"),"fiche.php","",'',$param,'"width="10%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Type"),"fiche.php","",'',$param,'"width="10%"',$sortfield,$sortorder);
print_liste_field_titre(''); print_liste_field_titre('');
print '</tr>'; print '</tr>';
$var=false; $var=false;
$listofemails=$object->thirdparty_and_contact_email_array(); $listofemails=$soc->thirdparty_and_contact_email_array();
if (count($listofemails) > 0) if (count($listofemails) > 0)
{ {
$actions=array(); $actions=array();
// Load array of available notifications // Load array of available notifications
$notificationtrigger=new InterfaceNotification($db); $notificationtrigger=new InterfaceNotification($db);
@ -239,172 +183,172 @@ if ($result > 0)
$label=$langs->trans("Notify_".$notifiedevent['code'])!=$langs->trans("Notify_".$notifiedevent['code'])?$langs->trans("Notify_".$notifiedevent['code']):$notifiedevent['label']; $label=$langs->trans("Notify_".$notifiedevent['code'])!=$langs->trans("Notify_".$notifiedevent['code'])?$langs->trans("Notify_".$notifiedevent['code']):$notifiedevent['label'];
$actions[$notifiedevent['rowid']]=$label; $actions[$notifiedevent['rowid']]=$label;
} }
print '<tr '.$bc[$var].'><td>'; print '<input type="hidden" name="action" value="add">';
print $html->selectarray("contactid",$listofemails); print '<tr '.$bc[$var].'><td>';
print '</td>'; print $html->selectarray("contactid",$listofemails);
print '<td>'; print '</td>';
print $html->selectarray("actionid",$actions,'',1); print '<td>';
print '</td>'; print $html->selectarray("actionid",$actions,'',1);
print '</td>';
print '<td>'; print '<td>';
$type=array('email'=>$langs->trans("EMail")); $type=array('email'=>$langs->trans("EMail"));
print $html->selectarray("typeid",$type); print $html->selectarray("typeid",$type);
print '</td>'; print '</td>';
print '<td align="right"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>'; print '<td align="right"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
print '</tr>'; print '</tr>';
} }
else else
{ {
print '<tr '.$bc[$var].'><td colspan="4">'; print '<tr '.$bc[$var].'><td colspan="4">';
print $langs->trans("YouMustCreateContactFirst"); print $langs->trans("YouMustCreateContactFirst");
print '</td></tr>'; print '</td></tr>';
} }
print '</table>'; print '</table>';
print '</form>'; print '</form>';
print '<br>'; print '<br>';
dol_htmloutput_mesg($mesg);
// List of active notifications // List of active notifications
print_fiche_titre($langs->trans("ListOfActiveNotifications"),'',''); print_fiche_titre($langs->trans("ListOfActiveNotifications"),'','');
$var=true; $var=true;
// Line with titles // Line with titles
print '<table width="100%" class="noborder">'; print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',$param,'"width="45%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',$param,'"width="45%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',$param,'"width="35%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',$param,'"width="35%"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Type"),"fiche.php","",'',$param,'"width="10%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Type"),"fiche.php","",'',$param,'"width="10%"',$sortfield,$sortorder);
print_liste_field_titre('','',''); print_liste_field_titre('','','');
print '</tr>'; print '</tr>';
// List of notifications for contacts // List of notifications for contacts
$sql = "SELECT n.rowid, n.type,"; $sql = "SELECT n.rowid, n.type,";
$sql.= " a.code, a.label,"; $sql.= " a.code, a.label,";
$sql.= " c.rowid as contactid, c.name, c.firstname, c.email"; $sql.= " c.rowid as contactid, c.name, c.firstname, c.email";
$sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,"; $sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,";
$sql.= " ".MAIN_DB_PREFIX."notify_def as n,"; $sql.= " ".MAIN_DB_PREFIX."notify_def as n,";
$sql.= " ".MAIN_DB_PREFIX."socpeople c"; $sql.= " ".MAIN_DB_PREFIX."socpeople c";
$sql.= " WHERE a.rowid = n.fk_action"; $sql.= " WHERE a.rowid = n.fk_action";
$sql.= " AND c.rowid = n.fk_contact"; $sql.= " AND c.rowid = n.fk_contact";
$sql.= " AND c.fk_soc = ".$object->id; $sql.= " AND c.fk_soc = ".$soc->id;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$i = 0; $i = 0;
$contactstatic=new Contact($db); $contactstatic=new Contact($db);
while ($i < $num) while ($i < $num)
{ {
$var = !$var; $var = !$var;
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
$contactstatic->id=$obj->contactid; $contactstatic->id=$obj->contactid;
$contactstatic->name=$obj->name; $contactstatic->name=$obj->name;
$contactstatic->firstname=$obj->firstname; $contactstatic->firstname=$obj->firstname;
print '<tr '.$bc[$var].'><td>'.$contactstatic->getNomUrl(1); print '<tr '.$bc[$var].'><td>'.$contactstatic->getNomUrl(1);
if ($obj->type == 'email') if ($obj->type == 'email')
{ {
if (isValidEmail($obj->email)) if (isValidEmail($obj->email))
{ {
print ' &lt;'.$obj->email.'&gt;'; print ' &lt;'.$obj->email.'&gt;';
} }
else else
{ {
$langs->load("errors"); $langs->load("errors");
print ' &nbsp; '.img_warning().' '.$langs->trans("ErrorBadEMail",$obj->email); print ' &nbsp; '.img_warning().' '.$langs->trans("ErrorBadEMail",$obj->email);
} }
} }
print '</td>'; print '</td>';
print '<td>'; print '<td>';
$label=($langs->trans("Notify_".$obj->code)!="Notify_".$obj->code?$langs->trans("Notify_".$obj->code):$obj->label); $label=($langs->trans("Notify_".$obj->code)!="Notify_".$obj->code?$langs->trans("Notify_".$obj->code):$obj->label);
print $label; print $label;
print '</td>'; print '</td>';
print '<td>'; print '<td>';
if ($obj->type == 'email') print $langs->trans("Email"); if ($obj->type == 'email') print $langs->trans("Email");
if ($obj->type == 'sms') print $langs->trans("SMS"); if ($obj->type == 'sms') print $langs->trans("SMS");
print '</td>'; print '</td>';
print '<td align="right"><a href="fiche.php?socid='.$socid.'&action=delete&actid='.$obj->rowid.'">'.img_delete().'</a></td>'; print '<td align="right"><a href="fiche.php?socid='.$socid.'&action=delete&actid='.$obj->rowid.'">'.img_delete().'</a></td>';
print '</tr>'; print '</tr>';
$i++; $i++;
} }
$db->free($resql); $db->free($resql);
} }
else else
{ {
dol_print_error($db); dol_print_error($db);
} }
print '</table>'; print '</table>';
print '<br>'; print '<br>';
// List of notifications done // List of notifications done
print_fiche_titre($langs->trans("ListOfNotificationsDone"),'',''); print_fiche_titre($langs->trans("ListOfNotificationsDone"),'','');
$var=true; $var=true;
// Line with titles // Line with titles
print '<table width="100%" class="noborder">'; print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Contact"),"fiche.php","c.name",'',"&socid=$socid",'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Action"),"fiche.php","a.titre",'',"&socid=$socid",'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Date"),"fiche.php","a.daten",'',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),"fiche.php","a.titre",'',"&socid=$socid",'align="right"',$sortfield,$sortorder);
print '</tr>'; print '</tr>';
// List // List
$sql = "SELECT n.rowid, n.daten, n.email, n.objet_type, n.objet_id,"; $sql = "SELECT n.rowid, n.daten, n.email, n.objet_type, n.objet_id,";
$sql.= " c.rowid as id, c.name, c.firstname, c.email,"; $sql.= " c.rowid as id, c.name, c.firstname, c.email,";
$sql.= " a.code, a.label"; $sql.= " a.code, a.label";
$sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,"; $sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,";
$sql.= " ".MAIN_DB_PREFIX."notify as n, "; $sql.= " ".MAIN_DB_PREFIX."notify as n, ";
$sql.= " ".MAIN_DB_PREFIX."socpeople as c"; $sql.= " ".MAIN_DB_PREFIX."socpeople as c";
$sql.= " WHERE a.rowid = n.fk_action"; $sql.= " WHERE a.rowid = n.fk_action";
$sql.= " AND c.rowid = n.fk_contact"; $sql.= " AND c.rowid = n.fk_contact";
$sql.= " AND c.fk_soc = ".$object->id; $sql.= " AND c.fk_soc = ".$soc->id;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$i = 0; $i = 0;
$contactstatic=new Contact($db); $contactstatic=new Contact($db);
while ($i < $num) while ($i < $num)
{ {
$var = !$var; $var = !$var;
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
$contactstatic->id=$obj->id; $contactstatic->id=$obj->id;
$contactstatic->name=$obj->name; $contactstatic->name=$obj->name;
$contactstatic->firstname=$obj->firstname; $contactstatic->firstname=$obj->firstname;
print '<tr '.$bc[$var].'><td>'.$contactstatic->getNomUrl(1); print '<tr '.$bc[$var].'><td>'.$contactstatic->getNomUrl(1);
print $obj->email?' &lt;'.$obj->email.'&gt;':$langs->trans("NoMail"); print $obj->email?' &lt;'.$obj->email.'&gt;':$langs->trans("NoMail");
print '</td>'; print '</td>';
print '<td>'; print '<td>';
$label=($langs->trans("Notify_".$obj->code)!="Notify_".$obj->code?$langs->trans("Notify_".$obj->code):$obj->label); $label=($langs->trans("Notify_".$obj->code)!="Notify_".$obj->code?$langs->trans("Notify_".$obj->code):$obj->label);
print $label; print $label;
print '</td>'; print '</td>';
// TODO Add link to object here // TODO Add link to object here
// print // print
print'<td align="right">'.dol_print_date($db->jdate($obj->daten), 'dayhour').'</td>'; print'<td align="right">'.dol_print_date($db->jdate($obj->daten), 'dayhour').'</td>';
print '</tr>'; print '</tr>';
$i++; $i++;
} }
$db->free($resql); $db->free($resql);
} }
else else
{ {
dol_print_error($db); dol_print_error($db);
} }
print '</table>'; print '</table>';
} }
else dol_print_error('','RecordNotFound'); else dol_print_error('','RecordNotFound');