This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).
wget 'https://lists2.roe3.org/pmnl3/include/about.php'
<div class="jumbotron">
<h1><img src="https://www.phpmynewsletter.com/css/images/phpmynewsletter_v2.gif" /> Le mailing, comme un pro ! </h1>
<p class="lead">PhpMyNewsLetter réunit tous les éléments techniques des professionnels pour vous permettre de réaliser des campagnes emailing simplement.</p>
</div>
<div class="row marketing">
<div class="col-lg-12">
<h4>Historique</h4>
<p>PhpMyNewsletter a été créé en 2000 (première relase publique le 5 juin 2000) par <a href="http://gregory.kokanosky.free.fr/v4/phpmynewsletter/" target="_blank" title="le 1er portail PhpMyNewsLetter">Grégory Kokanosky</a>.
PhpMyNewsletter est un logiciel libre disponible sous les termes de la <a href="http://www.gnu.org/copyleft/gpl.html" target="_blank">Licence Publique Générale</a> du projet <a href="http://www.gnu.org" target="_blank">GNU</a> (Gnu GPL).
<br>Avec l'accord de Gregory Kokanosky, j'ai repris le projet PhpMyNewsLetter alors qu'il était à la version 0.8 beta 5, j'ai donc pris le nom de domaine, et pour rester dans le courant du web, j'ai décidé de repartir de la base en réécrivant complètement l'outil en version 2.0.
</p>
<b>Concernant les choix du développement</b> :<br>
PhpMyNewsletter a été développé en PHP, et restera développé en PHP. Il n'intègre pas de <a href="https://www.youtube.com/watch?v=DuB6UjEsY_Y" target="_blank">framework</a> et est donc écrit en simple langage procédural que chacun peut suivre assez facilement s'il veut l'améliorer.<br>
Du fait de l'appartenance de MySql à Oracle, j'ai également choisi MariaDB pour développer le projet. L'interface PhpMyNewsletter fait appel à des bibliothèques accessibles via des "cdn", c'est un choix personnel que de ne pas alourdir inutilement le package complet.
</p>
<h4>Fonctionnalités</h4>
<p>La version 2.0.5 est riche en fonctionnalités et améliorée en présentation.<br>
<b>Un bel outil doit être fonctionnel et agréable à utiliser</b>.
Ainsi, pour l'ergonomie j'ai choisi <a href="https://jquery.com/" target="_blank">jQuery</a> pour tout ce qui JavaScript et le framework <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a> pour la mise en page.</p>
<p>
<b>Concernant les fonctionnalités</b> :<br>
Rédiger un mail, l'envoyer, traiter les retours en erreur (les "bounces") et avoir un compte rendu d'ouverture, voilà la ligne directrice de ce que je voulais pour cette refonte, pour cet outil.
</p>
<h4>Rédiger un mail</h4>
<p>PhpMyNewsLetter vous propose 2 solutions pour rédiger un mail :<br>
<ul>
<li>Rédaction traditionnelle avec la mise en page via <a href="https://www.tinymce.com/" target="_blank">TinyMCE</a>. L'usage est simple, la composition est facile, et les barres d'outils vous proposent les fonctionnalités ordinaires de mise en page.
<li>Dans cette nouvelle version de PhpMyNewsLetter, vous découvrirez un module de mise en page WysIsWyG ([oui-zi-wyg]) qui vous permet de glisser des objets sur une page et permet d'obtenir des mails dits "responsives" ou si vous préférez adaptifs aux supports de lecture (mobiles, tablettes ou PC).
</ul>
Dans chaque mail est inséré un traceur qui permet d'obtenir des informations générales sur le contexte d'ouvertures des mails. Ce traceur peut être désactivé.
</p>
<h4>Envoyer une campagne</h4>
<p>PhpMyNewsLetter vous permet d'envoyer vos campagnes en direct (envoi en Ajax), ou en planifié (crontab sen environnement Linux, sur serveur dédié, ou chez certains hébergeurs en mutualisé).</p>
<h4>Traiter les retours</h4>
<p>La grande difficulté de la gestion d'une liste de mails est le traitement des retours, opération nécessaire pour garder une liste saine. Ce traitement est confié à la classe de gestion des bounces écrite par <a href="http://www.crazyws.fr/dev/classes-php/classe-de-gestion-des-bounces-en-php-C72TG.html" target="_blank">crazyws</a>.<br>
La classe a été très largement adaptée à PhpMyNewsLetter pour permettre une intégration complète à l'environnement.</p>
<h4>Les statistiques</h4>
<p>Les professionnels du mailing peuvent se vanter d'avoir de superbes statistiques. Et c'est vrai que c'est superbe, je le reconnais !<br>
J'ai fait le choix de vous proposer les statistiques les plus pertinentes pour vous aider à mieux gérer vos campagnes :
<ul>
<li>Nombre de mails envoyés
<li>Nombre de lectures
<li>Nombre d'ouvertures
<li>Nombre de clics
<li>Calcul du taux d'ouverture sur nombre de mails envoyés
<li>Calcul du taux de clics sur nombre de mails envoyés (CTR)
<li>Calcul du taux de clics sur nombre de mails ouverts (ACTR)
<li>Les environnements : navigateurs, clients mails, système d'exploitation, clics par domaines, domaines présents dans les listes, support d'ouverture (mobile, tablette, PC)
<li>Les clics par tranches horaires
<li>Géolocalisation des ouvertures (par pays et par villes)
<li>Statistiques globales toutes listes confondues et statistiques par liste.
</ul>
Et croyez moi, c'est déjà bien suffisant ;-)
</p>
<h4>Mon environnement de développement</h4>
<p>Pour vous aider à bien installer PhpMyNewsLetter, et si vous souhaitez être au plus proche de mon environnement :
<ul>
<li>Serveur dédié <a href="https://www.debian.org/index.fr.html" target="_blank">debian 8.9</a>
<li>serveur intégrant SSL <a href="https://letsencrypt.org/" target="_blank">Let's Encrypt</a>
<li>Serveur web <a href="http://nginx.org/" target="_blank">Nginx</a>
<li><a href="http://php.net/" target="_blank">PHP 7.1</a> (modules curl, imap et openssl)
<li>Base de données <a href="https://mariadb.org/" target="_blank">MariaDB 10.x</a>
<li><a href="http://www.postfix.org/" target="_blank">Postfix 2.11</a>
<li>Un compte utilisateur spécifique (pmnl) avec connexion en ssh possible et accès à crontab
<li>un environnement sudoers pour appeler les commandes de traitement des bounces :
<ul><li>/usr/sbin/postsuper
<li>/usr/sbin/postqueue
</ul>
</ul>
</p>
<h4>Les projets de développement</h4>
<p>Il y en a beaucoup, mais ce qui m'intéresse le plus, c'est votre retour d'expérience. Au cas particulier, j'accepte volontiers les mails où vous me présentez vos demandes, ou suggérez des idées.<br>
Mon objectif est clair : faire au mieux !
</p>
<h4>Vous avez trouvé un bug ?</h4>
<p>Je reçois chaque jour des demandes de correction de bugs qui ne sont en fait qu'un mauvais usage de l'outil PhpMyNewsLetter. Je vous invite donc à ne passer que par le portail pour poser vos questions. Je suis très souvent connecté, je suis informé des nouveaux messages et je réponds au plus vite.<br>
De plus, vos questions permettent d'enrichir la connaissance générale et permettent le cas échéant d'améliorer PhpMyNewsLetter.
</p>
<h4>Confidentialité de mes interventions.</h4>
<p>Il m'arrive fréquemment d'intervenir sur les installations que vous faites. Je le fais avec plaisir. Mais je découvre bien souvent des environnements non sécurisés, mal calibrés, ou encore des installations sans listes de tests.<br>
Après intervention, je vous fais un compte rendu de ce que j'ai pu observer et je vous donnerai volontiers quelques conseils.<br>
Je m'engage lors de ces interventions à ne pas aller dans vos statistiques, archives, et gestion de vos abonnés. Je crée une liste personnelle, avec mes emails et je ne travaille que sur cette liste.</p>
</div>
</div>
<footer class="footer">
<p>© 2017 <a href="https://www.phpmynewsletter.com" target="_blank">PhpMyNewsLetter.com</a>.</p>
</footer>
wget 'https://lists2.roe3.org/pmnl3/include/archives.php'
<?php
$msg_id = (empty($_GET['msg_id']) ? "" : $_GET['msg_id']);
$msg_id = (empty($_POST['msg_id']) ? $msg_id : $_POST['msg_id']);
$token=(empty($_POST['token'])?"":$_POST['token']);
if(!isset($token) || $token=="")$token=(empty($_GET['token'])?"":$_GET['token']);
if(!tok_val($token)){
header("Location:login.php?error=2");
exit;
}
echo "<header><h4>".tr("ARCHIVE_TITLE") . " : $list_name</h4></header>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' name='archive_form'>";
$newsletter=getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
if (!empty($msg_id) && $action == "delete"){
$deleted = deleteArchive($cnx, $row_config_globale['table_archives'], $msg_id);
}
if ($archives = getArchivesselectList($cnx, $row_config_globale['table_archives'], $msg_id,'archive_form',$list_id) != -1) {
echo " <input type='submit' value='" . tr("ARCHIVE_DISPLAY") . "' class='btn btn-primary' />
<input type='button' value='" . tr("ARCHIVE_DELETE") . "' onclick='deleteArchive();' class='btn btn-primary' />
<input type='hidden' name='page' value='archives' />
<input type='hidden' name='action' value='' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='token' value='$token' />";
} else {
echo '<div class="module_content">'.tr("NO_ARCHIVE").'<h4 class="alert alert-info">...</h4></div>';
}
echo "</form>";
if (!empty($msg_id) && empty($action)) {
$TOSEND=$cnx->SqlRow("SELECT COUNT(email) AS cpt_to_send FROM
".$row_config_globale['table_email']."
WHERE list_id = '".$list_id."'
AND error = 'N'");
$REALLYSENDED=$cnx->SqlRow("SELECT cpt AS cp_really_sended FROM
".$row_config_globale['table_send']."
WHERE id_list = '".$list_id."'
AND id_mail = '".$msg_id."'");
$to_send = (int)$TOSEND['cpt_to_send']-(int)$REALLYSENDED['cp_really_sended'];
$js = false;
if($to_send==1){
echo '<br><div id="messInfo"><h4 class="alert alert-warning pointer" id="SendIt">'.tr("SUBSCRIBER_DIDNT_RECEIVE", $to_send).'<h4></div><br>';
$js = true;
}elseif($to_send>1){
echo '<br><div id="messInfo"><h4 class="alert alert-warning pointer" id="SendIt">'.tr("SUBSCRIBERS_DIDNT_RECEIVE", $to_send).'<h4></div><br>';
$js = true;
}
if($js){ ?>
<script type="text/javascript">
$("#SendIt").click(function(){
$('#msg').show();
$('#messInfo').hide('slow');
$(function(){
var begin = 0;
var sn = <?php echo (int)$to_send;?>;
var step = 'send';
var pct = 0;
var list_id = <?php echo (int)$list_id;?>;
var token = '<?php echo $token;?>';
var msg_id = <?php echo (int)$msg_id;?>;
var tts = 0;
var force = 'true';
function progresspump(){
$.ajax({
url:"send.php",
type: "GET",
dataType:"json",
data:'force=' + force +'&list_id=' + list_id +'&token=' + token + '&step=' + step +'&msg_id=' + msg_id + '&begin=' + begin + '&sn=' + sn,
success:function(rj){
begin = rj.begin;
sn = rj.sn;
step = rj.step;
pct = (rj.pct!=''?rj.pct:0);
msg_id= rj.msg_id;
tts = (typeof rj.TTS!='undefined'?rj.TTS:0);
vlsm = rj.view_last_send_mails;
force = rj.force;
$("#pct").css('width',pct+'%');
$(".done").html(pct+'%');
$("#view_last_send_mails").html(vlsm);
$('.progress-bar').css('width', pct+'%').attr('aria-valuenow', pct);
$("#total_to_send").html(sn);
$("#ch_last").html(tts);
if(pct > 99.999) {
clearInterval(progresspump);
$('.record').hide('slow');
$("#send_title").text("<?php echo tr("SEND_ENDED");?>");
setTimeout(function() {
$("#send_title").text("<?php echo tr("REDIRECT_NOW");?>");
},3000);
setTimeout(function() {
window.location.href='?page=tracking&list_id=<?php echo $list_id;?>&token=<?php echo $token;?>&date=ch';
},<?php echo ($timer_ajax*1000);?>);
}
}
});
setTimeout(progresspump,<?php echo ($timer_ajax*1000);?>);
}progresspump();});
});
</script>
<div id='msg' style='display:none'>
<div class='row'>
<div class="col-md-10">
<div class='row'>
<div class='col-md-8'>
<h4 id='send_title' class='alert alert-info'><?php echo tr("PROGRESSION_OF_CURRENT_SEND"); ?></h4>
<div class="progress">
<div class="progress-bar progress-bar-striped active done"
role="progressbar" aria-valuenow="0" aria-valuemin="0"
aria-valuemax="100" style="width:0%">
</div>
</div>
<h4 id='all_done'></h4>
</div>
<div class='col-md-4'>
<h4 id='last_send_mails' class='alert alert-info'><?php echo tr("LAST_SEND_MAILS"); ?></h4>
<div id='view_last_send_mails'>
</div>
</div>
</div>
</div>
<div class='col-md-2'>
<div class="stats_overview">
<div class="overview_today">
<p class="overview_day"><div class='alert alert-success'><?php echo tr("COMPOSE_SENDING"); ?></div></p>
<p class="overview_count"><span class='done'>0,00%</span> <?php echo tr("SENDED"); ?></p>
<p class="overview_type"><?php echo tr("TOTAL_TO_SEND"); ?> : <span id='total_to_send'></span></p>
</div>
<div class="overview_previous">
<p class="overview_day"><b><?php echo tr("CHRONO"); ?></b></p>
<p class="overview_type"><?php echo tr("LAST_TIME_SEND"); ?> : <span id='ch_last'></span></p>
</div>
</div>
</div>
<div id='if' style="height:0;"></div>
</div>
</div>
<?php
}
getArchiveMsg($cnx, $row_config_globale['table_archives'], $msg_id, $token, $list,($_SESSION['dr_is_admin']==true?true:false),$_SESSION['dr_liste']);
}
if (!empty($msg_id) && $action == "delete") {
if ($deleted){
echo "<h4 class='alert alert-success'>" . tr("ARCHIVE_DELETED") . "</h4>";
}else{
echo "<h4 class='alert alert alert-danger'>" . tr("ERROR_DELETING_ARCHIVE") . "</h4>";
}
}
wget 'https://lists2.roe3.org/pmnl3/include/backup.php'
<script>
$(document).ready(function() {
$('#pmnl_back_up_db').click(function () {
var token = $('#token').val();
$.ajax({
type:'POST',
cache:false,
dataType: 'json',
url: 'include/ajax/backup_db.php',
data: {'token':token},
cache: false,
beforeSend: function() {
$('#resultbackupdatabase').html('<img src="css/processing.gif" width="20px" />');
},
success:function(msg ) {
if ( msg.status == 'success' ) {
$('#resultbackupdatabase').html('<br /><div class="alert alert-success">Sauvegarde terminée avec succès<br /><a href="include/ajax/pmnl_backup_dl.php?t=' + msg.successmsg + '&token=' + token + '">Télécharger la sauvegarde</a></div>');
$.growl.notice({
title: '',
size: 'large',
message: 'Sauvegarde terminée avec succès',
});
}else if ( msg.status == 'error' ) {
$('#resultbackupdatabase').html('<div class="alert alert-danger">Sauvegarde en erreur : ' + msg.successmsg + '</div>');
$.growl.error({
title:'',
size: 'large',
message: 'Sauvegarde en erreur',
});
}
},
error: function(x,e) {
var descerror;
if (x.status==0) { descerror = 'You are offline!! Please Check Your Network.';
} else if ( x.status==404) { descerror = 'Requested URL not found : code 404.';
} else if ( x.status==500) { descerror = 'Internal Server Error : code 500.';
} else if ( e=='parsererror') { descerror = 'Error. Parsing JSON Request failed.';
} else if ( e=='timeout' ) { descerror = 'Time out.';
} else { descerror = 'Unknow Error : '+ x.responseText;
}
$.growl.error({
title:'',
size: 'large',
message: 'Erreur de sauvegarde : '+descerror,
});
$('#resultbackupdatabase').html('<div class="alert alert-danger">Erreur de sauvegarde <br />' + descerror + '</div>');
}
});
});
});
</script>
<?php
$backup_dir = "include/backup_db";
$files = array_slice ( scandir ( $backup_dir ), 2 );
?>
<div class="row">
<div class="col-lg-12">
<header><h4><?php echo count($files); ?> sauvegarde(s) de la base de données PhpMyNewsLetter</h4></header>
<div class="col-mg-12">
<?php
if(count($files)>0){
foreach ($files as $file ) {
$splfile = preg_split ("/[-]+/", $file);
echo '<i class="glyphicon glyphicon-compressed""></i> <a href="include/ajax/pmnl_backup_dl.php?token='
. $token . '&t=' . $file . '">Sauvegarde du ' . date("d-m-Y", strtotime($splfile[1])) . ' à '. date("H:i:s", strtotime($splfile[2])) . '</a><br>';
}
} else {
echo 'Pas de sauvegarde disponible';
}
?>
</div>
<div class="col-mg-12 text-center">
<input class="btn btn-success" type="button" id="pmnl_back_up_db" value=" Démarrer la sauvegarde " /><br /><br />
<input type="hidden" id="token" value="<?php echo $token; ?>" />
</div>
</div>
<div class="panel col-lg-12">
<div class="col-mg-12 text-center" id="resultbackupdatabase"></div>
</div>
</div>
wget 'https://lists2.roe3.org/pmnl3/include/compose.php'
<?php
echo "<header><h4>";
switch($op){
case 'preview':
echo tr("SCREEN_PREVIEW");
break;
case 'send_preview':
echo tr("SENDING_TEST_MAIL") ;
break;
default:
case 'init':
echo tr("INITIAL_WORDING");
break;
}
echo " : $list_name</h4> <span id='smail'></span></header>";
$subject = (!empty($_POST['subject'])) ? $_POST['subject'] : '';
$message = (!empty($_POST['message'])) ? $_POST['message'] : '';
$format = (!empty($_POST['format'])) ? $_POST['format'] : '';
$encode = (!empty($_POST['encode'])) ? 'base64' : '8bit';
$tPath = ($row_config_globale['path'] == '' ? '/' : '/'.$row_config_globale['path']);
$tPath = str_replace('//','/',$tPath);
switch ($op) {
case 'init':
$newsletter = getConfig($cnx, $list_id, $row_config_globale['table_listsconfig']);
$newsletter_autosave = getConfig($cnx, $list_id, $row_config_globale['table_sauvegarde']);
if (!empty($_POST['import_id'])) {
$import_id = $_POST['import_id'];
}
$reset = (!empty($_GET['reset']) && $_GET['reset'] == 'true') ? 'true' : 'false';
$ft = (!empty($_GET['ft'])) ? $_GET['ft'] : '';
if (getSubscribersNumbers($cnx, $row_config_globale['table_email'], $list_id)) {
if (isset($import_id) && is_numeric($import_id)) {
$row = $cnx->query("SELECT date, type, subject, message, list_id, preheader FROM " . $row_config_globale['table_archives'] . " WHERE id='$import_id'")->fetch(PDO::FETCH_ASSOC);
$textarea = addslashes(@htmlspecialchars($row['message']));
$subject = addslashes(@htmlspecialchars($row['subject']));
$preheader = addslashes(@htmlspecialchars($row['preheader']));
$type = $row['type'];
$cnx->query("DELETE FROM " . $row_config_globale['table_sauvegarde'] . " WHERE list_id='$list_id'");
$cnx->query("INSERT INTO " . $row_config_globale['table_sauvegarde'] . "(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
$sender = '';
if($_SESSION['dr_log']=='Y') {
loggit($_SESSION['dr_id_user'].'.log', $_SESSION['dr_id_user'] . ' a importé le message "'.$subject.'" pour rédaction');
}
} elseif (isset($newsletter_autosave['textarea']) && trim($newsletter_autosave['textarea']) != '' && $reset == 'false') {
$textarea = $newsletter_autosave['textarea'];
$type = 'html';
$subject = @htmlspecialchars($newsletter_autosave['subject']);
$sender = $newsletter_autosave['sender_email'];
$preheader = $newsletter_autosave['preheader'];
} else {
$textarea = addslashes($newsletter['header'] . "\n\n\n" . $newsletter['footer']);
$subject = @addslashes(htmlspecialchars($newsletter['subject']));
$type = 'html';
$cnx->query("INSERT INTO " . $row_config_globale['table_sauvegarde'] . "(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
$sender = '';
$preheader = '';
if($_SESSION['dr_log']=='Y') {
echo loggit($_SESSION['dr_id_user'].'.log', $_SESSION['dr_id_user'] . ' a créé un nouveau message');
}
}
echo '<div class="row"><div class="col-md-10">';
echo '<form id="mailform" name="mailform" method="post" action="" class="post_message">';
echo '<div class="alert alert-info">' . tr("COMPOSE_AND_PREVIEW") . '.</div>';
echo '<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-3">
'.tr("COMPOSE_SUBJECT") . ' : ' . tr("RFC_2822") . '
</div>
<div class="col-md-8">
<input type="text" name="subject" value="' . stripslashes($subject) . '" size="50" maxlength="255" id="subject" class="form-control" />
</div>
<div class="col-md-1">
<button class="clearbtn btn btn-primary btn-sm" id="chars">78</button>
</div>
</div><br />
<div class="row">
<div class="col-md-3">
PreHeader (40 à 70c environ) (<b><a href="https://www.campaignmonitor.com/blog/email-marketing/2015/08/improve-email-open-rates-with-preheader-text/" target="_blank">?</a></b>)
</div>
<div class="col-md-8">
<input type="text" name="preheader" value="' . stripslashes($preheader) . '" size="50" maxlength="255" id="preheader" class="form-control" />
</div>
<div class="col-md-1">
<button class="clearbtn btn btn-primary btn-sm" id="charsph">0</button>
</div>
</div>';
$senders = getSenders($cnx,$row_config_globale['table_senders'],$sender);
if($senders!=-1) {
echo '<br />
<div class="row">
<div class="col-md-3">
Choix de l\'expéditeur.<br />
Par défaut : <b>'. htmlspecialchars($row_config_globale['admin_email']) .'</b>, ou choisir :
</div>
<div class="col-md-8">
' . $senders . '
</div>
</div>';
}
echo '
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="rsvl"></div>
</div>
</div>
<hr>
' . tr("COMPOSE_MSG_BODY") . ' :';
echo "<textarea name='message' id='redac' rows='20' cols='70'>" . stripslashes($textarea) . "</textarea>";
echo '</div>';
echo '<div class="col-md-2">';
echo "<div class='content-box fixed' style='min-width:172px;max-width:175px'>";
echo "<h4>" . tr("ACTIONS") . " :</h4>";
echo "<input type='button' value='" . tr("SAVE_THIS_MESSAGE") . "' id='rec' class='form-control btn btn-success btn-sm' />";
echo "<hr>";
echo "<input type='button' value='" . tr("COMPOSE_PREVIEW") . " >>' onclick='Soumettre()' disabled id='send_preview' class='form-control btn btn-success btn-sm' />";
echo "<hr>";
echo "<input type='button' value='Vérifier les liens' id='veriflinks' disabled class='form-control btn btn-success btn-sm' />";
echo "<hr>";
echo "<h4>" . tr("ATTACHMENTS") . " :</h4>";
echo "<div id='pjs'></div>";
echo "<a href='#modalPmnl' data-toggle='modal'>" . tr("ADD_ONE_OR_MORE_ATTACHMENT") . "</a>";
echo "</div>";
echo '</div>';
echo '</div>';
echo "<input type='hidden' id='type' name='format' value='html' />
<input type='hidden' name='op' value='preview' />
<input type='hidden' name='action' value='compose' />
<input type='hidden' name='page' value='compose' />
<input type='hidden' id='list_id' name='list_id' value='$list_id' />
<input type='hidden' id='token' name='token' value='$token' />
</form>
<div id='notifications'></div>";
echo "<script>
$('a[rel=modal]').on('click', function(evt) {
evt.preventDefault();
var modal = $('#modal').modal();
modal.find('.modal-body').load($(this).attr('href'), function (responseText, textStatus) {
if ( textStatus === 'success' || textStatus === 'notmodified') {
modal.show();
}
});
})
$(function(){
function pjs(){
$.ajax({
type:'POST',
url:'include/ajax/pjq.php',
data:'token=$token&list_id=$list_id',
success:function(data){
$('#pjs').html(data);
}
});
setTimeout(pjs,10000);
}pjs();
});
(function($){
$.fn.extend({
limiter: function(limit, elem){
$(this).on('keyup focus', function(){
setCount(this, elem);
});
function setCount(src, elem){
var chars = src.value.length;
if (chars > limit){
src.value = src.value.substr(0, limit);
chars = limit;
}
elem.html( limit - chars );
}
setCount($(this)[0], elem);
}
});
})(jQuery);
(function($){
$.fn.extend({
counter: function(limit, elem){
$(this).on('keyup focus', function(){
setCount(this, elem);
});
function setCount(src, elem){
var chars = src.value.length;
elem.html( limit + chars );
}
setCount($(this)[0], elem);
}
});
})(jQuery);
tinymce.init({
setup: function (editor) {
editor.on('ExecCommand', function (e) {
if(e.command == 'mceNewDocument') {
console.log('New Document was run...');
for(i=0; i<tinymce.editors.length; i++){
tinymce.editors[i].setContent('');
$('[name=\'' + tinymce.editors[i].targetElm.name + '\']').val('');
}
}
});
},
selector : 'textarea#redac',
skin : 'pmnl',
plugins : [
'fullscreen visualblocks, preview searchreplace print insertdatetime hr',
'charmap anchor code link image paste pagebreak table contextmenu',
'filemanager table code media autoresize textcolor emoticons template'
],
toolbar1 : 'newdocument,template,print,bold,italic,underline,alignleft, aligncenter, alignright, alignjustify,strikethrough,superscript,subscript,forecolor,backcolor,bullist,numlist,outdent,indent,visualchars,visualblocks,charmap,hr,',
toolbar2 : 'table,cut,copy,paste,searchreplace,blockquote,undo,redo,link,unlink,anchor,image,emoticons,media,inserttime,preview,fullscreen,code,',
toolbar3 : 'styleselect,formatselect,fontselect,fontsizeselect,',
style_formats: [
{title: 'Open Sans', inline: 'span', styles: { 'font-family':'Open Sans'}},
{title: 'Arial', inline: 'span', styles: { 'font-family':'arial'}},
{title: 'Book Antiqua', inline: 'span', styles: { 'font-family':'book antiqua'}},
{title: 'Comic Sans MS', inline: 'span', styles: { 'font-family':'comic sans ms,sans-serif'}},
{title: 'Courier New', inline: 'span', styles: { 'font-family':'courier new,courier'}},
{title: 'Georgia', inline: 'span', styles: { 'font-family':'georgia,palatino'}},
{title: 'Helvetica', inline: 'span', styles: { 'font-family':'helvetica'}},
{title: 'Impact', inline: 'span', styles: { 'font-family':'impact,chicago'}},
{title: 'Symbol', inline: 'span', styles: { 'font-family':'symbol'}},
{title: 'Tahoma', inline: 'span', styles: { 'font-family':'tahoma'}},
{title: 'Terminal', inline: 'span', styles: { 'font-family':'terminal,monaco'}},
{title: 'Times New Roman', inline: 'span', styles: { 'font-family':'times new roman,times'}},
{title: 'Verdana', inline: 'span', styles: { 'font-family':'Verdana'}}
],
templates : [
{title: 'Simple Responsive Theme PhpMyNewsLetter',url: 'js/tinymce/templates/pmnl/simple.html',description: 'A very simple and responsive theme'},
{title: 'Cerberus Template Fluid',url: 'js/tinymce/templates/cerberus/cerberus-fluid.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#fluid'},
{title: 'Cerberus Template Responsive',url: 'js/tinymce/templates/cerberus/cerberus-responsive.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#responsive'},
{title: 'Cerberus Template Hybrid',url: 'js/tinymce/templates/cerberus/cerberus-hybrid.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#hybrid'},
{title: 'Antwort Single-column',url: 'js/tinymce/templates/antwort/single-column.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Antwort Two Cols Simple',url: 'js/tinymce/templates/antwort/two-cols-simple.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Antwort Three Cols Image',url: 'js/tinymce/templates/antwort/three-cols-images.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Lee Munroe Simple Email',url: 'js/tinymce/templates/leemunroe/really-simple-responsive-email-template.html', description: 'Really Simple Responsive HTML Email Template : https://github.com/leemunroe'},
],
cleanup : true,
cleanup_on_startup : true,
convert_urls : true,
custom_undo_redo_levels : 20,
doctype : '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',
entity_encoding : 'named',
external_filemanager_path:'" . $row_config_globale['base_url'] . $tPath . "js/tinymce/plugins/filemanager/',
external_plugins: { 'filemanager' : '" . $row_config_globale['base_url'] . $tPath . "js/tinymce/plugins/filemanager/plugin.min.js'},
extended_valid_elements: '*[*]',
filemanager_title:'Responsive Filemanager' ,
fontsize_formats : '8px 9px 10px 11px 12px 13px 14px 16px 18px 20px 22px 24px',
forced_root_block : false,
force_br_newlines : true,
force_p_newlines : false,
height : '350',
autoresize_max_height: 800,
image_advtab: true ,
inline_styles : true,
language : '" . tr("TINYMCE_LANGUAGE") . "',
relative_urls: false,
remove_script_host : false,
theme: 'modern',
valid_children : '+html[head|body],+head[style|title|meta],+body[style|section|title|meta],pre[section|div|p|br|span|img|style|h1|h2|h3|h4|h5],+*[*]',
valid_elements : '+*[*]',
verify_html : false,
menu: {
edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
insert: {title: 'Insert', items: 'media image link | pagebreak'},
view: {title: 'View', items: 'visualaid'},
format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
tools: {title: 'Tools', items: 'code'}
}
});
var elem=$('#chars');$('#subject').limiter(78,elem);
var elem=$('#charsph');$('#preheader').counter(0,elem);
$(document).ready(function(){Si=setInterval(save,10000);});
function save(){
tinyMCE.triggerSave();
var ds=$('#mailform').serialize();
$.ajax({
type: 'POST',
url: 'include/ajax/autosave.php',
data: ds,
cache: false,
success: function(msg) {
$('#notifications').addClass('saving');
setTimeout(function(){
$('#notifications.saving').find('.note').fadeOut(function(){
$('#notifications.saving').find('.note').remove();
});
}, 4000);
$('#veriflinks').removeAttr('disabled');
},
error: function() {
$('#notifications').empty();
$('#notifications').append('<div class=\"note\"><div class=\"note_red\"></div><div class=\"note_msg\">Erreur !!!</div></div>');
}
});
}
function veriflinks(){
var ds=$('#mailform').serialize();
$.ajax({
type: 'POST',
url: 'include/ajax/veriflinks.php',
data: ds,
dataType:'html',
cache: false,
success: function(msg) {
$('#notifications').addClass('saving');
$('#rsvl').html(msg);
$('#notifications.saving').find('.note').remove();
$('#send_preview').removeAttr('disabled');
},
error: function() {
$('#notifications').empty();
$('#notifications').append('<div class=\"note\"><div class=\"note_red\"></div><div class=\"note_msg\">Erreur !!!</div></div>');
}
});
}
$('#rec').click(function(event){
$('#notifications').empty();
$('#notifications').append('<div class=\"note\"><div class=\"note_green\"></div><div class=\"note_msg\">Enregistrement</div></div>');
save();
});
$('#veriflinks').click(function(event){
$('#notifications').empty();
$('#notifications').append('<div class=\"note\"><div class=\"note_green\"></div><div class=\"note_msg\">En cours</div></div>');
veriflinks();
});
</script>";
echo "<script>
function Soumettre(){
if ( (document.mailform.subject.value=='') || (document.mailform.message.value=='') ) {
alert('" . tr("ERROR_ALL_FIELDS_REQUIRED") . "');
} else {
document.mailform.submit();
}
}
</script>";
} else {
echo "<h4 class='alert alert-danger'>" . tr("ERROR_UNABLE_TO_SEND") . "</h4>";
}
break;
case "preview":
$up = @($_GET['up'] == 'false' ? false : true);
if ($up) {
$cnx->query("UPDATE " . $row_config_globale['table_sauvegarde'] . "
SET textarea = '" . addslashes($message) . "',
subject='" . addslashes($subject) . "',
type='$format'
WHERE list_id='$list_id'");
}
$newsletter = getConfig($cnx, $list_id, $row_config_globale['table_listsconfig']);
$msg = getConfig($cnx, $list_id, $row_config_globale['table_sauvegarde']);
$format = $msg['type'];
if (empty($message)) {
$message = stripslashes($msg['textarea']);
}
if (empty($subject)) {
$subject = stripslashes($msg['subject']);
}
$subj = htmlspecialchars($subject);
if ($format == "html") {
$msg = $message;
} else {
$msg = htmlspecialchars($message);
}
echo '<div class="row">
<div class="col-md-10">';
echo "<form method='get' action='send_preview.php' id='mailform' name='mailform'>";
echo "<div class='alert alert-info'>" . tr("STEP_SEND_PREVIEW", $newsletter['preview_addr']) . ".</div>";
echo "Preview : <a href='' onClick='xx(320,480);return false;'>iPhone 4/5 (320x480),</a> " . "<a href='' onClick='xx(360,598);return false;'>Nexus 5 (360x598),</a> " . "<a href='' onClick='xx(375,667);return false;'>iPhone 6 (375x667),</a> " . "<a href='' onClick='xx(384,598);return false;'>Nexus 4 (384x598),</a> " . "<a href='' onClick='xx(414,736);return false;'>iPhone 6 Plus (414x736),</a> " . "<a href='' onClick='xx(600,960);return false;'>Nexus 7 2013 (600x960),</a> " . "<a href='' onClick='xx(750,1334);return false;'>iPhone 6S (750x1334),</a> " . "<a href='' onClick='xx(768,1024);return false;'>iPad 3 (768x1024),</a> " . "<a href='' onClick='xx(800,1280);return false;'>Nexus 10 (800x1280)</a> ";
//echo '<h4>' . tr("COMPOSE_PREVIEW_TITLE") . ' : ' . $subj . '</h4>';
echo "<div class='iframePreview'>
<iframe src='preview.php?list_id=$list_id&token=$token' width='100%' height='300px' min-height='300px' frameborder='0'
style='border:0;' scrolling='no' id='_preview' scrolling='no'><p>" . tr("ERROR_IFRAME") . "...</p>
</iframe></div>";
echo "<input type='hidden' name='list_id' value='$list_id'>
<input type='hidden' name='encode' value='$encode'>
<input type='hidden' name='op' value='send_preview'>
<input type='hidden' id='token' name='token' value='$token'>";
echo '</div>';
echo '<div class="col-md-2">';
echo "<div class='content-box fixed' style='min-width:172px;max-width:175px'>";
echo "<h4>" . tr("ACTIONS") . " :</h4>";
echo "<input type='button' onClick=\"window.location.href='" . $_SERVER['PHP_SELF'] . "?page=compose&token=$token&list_id=$list_id&op=init'\"
value=\"" . tr("COMPOSE_BACK") . "\" class='form-control btn btn-success btn-sm' /><hr>";
echo "<input type='submit' value='" . tr("COMPOSE_SEND") . "' class='form-control btn btn-success btn-sm'/><br><div align='center'>(Mode PREVIEW)</div><hr>";
echo "<h4>" . tr("ATTACHMENTS") . " :</h4>";
echo "<div id='pjs'></div>";
echo "<a href='#modalPmnl' data-toggle='modal'>" . tr("ADD_ONE_OR_MORE_ATTACHMENT") . "</a>";
echo '</div>
</div>';
echo "</form>";
echo "<script>
$(function(){function pjs(){
$.ajax({
type:'POST',
url:'include/ajax/pjq.php',
data:'token=$token&list_id=$list_id',
success:function(data){
$('#pjs').html(data);
}
});
setTimeout(pjs,10000);
}pjs();});
function Soumettre() {
document.mailform.submit();
}
</script>";
break;
case "send_preview":
$newsletter = getConfig($cnx, $list_id, $row_config_globale['table_listsconfig']);
$msg = getConfig($cnx, $list_id, $row_config_globale['table_sauvegarde']);
$format = $msg['type'];
if (empty($message)) {
$message = stripslashes($msg['textarea']);
}
if (empty($subject)) {
$subject = stripslashes($msg['subject']);
}
$subj = htmlspecialchars($subject);
if ($format == "html") {
$msg = $message;
} else {
$msg = htmlspecialchars($message);
}
$error = (empty($_GET['error']) ? "" : $_GET['error']);
$encode = (!empty($_GET['encode']) && $_GET['encode'] == 'base64') ? 'base64' : '8bit';
echo '<div class="row" style="min-height:300px;">';
echo '<div class="archmsg">';
echo '<div class="col-md-10">';
if ($error == "") {
echo "<div class='alert alert-success'>" . tr("PREVIEW_SEND_OK") . ".</div>";
if (isset($code_mailtester) && $code_mailtester != '') {
echo "<div class='advt alert alert-success'><a href='https://www.mail-tester.com/" . $code_mailtester . "' target='_blank'>" . tr("CHECK_SPAM_SCORE_MAIL_TESTER") . "</a></div>";
}
if($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) {
echo "<div class='advt alert alert-success' align='center'>" . tr("PREVIEW_OK") . " ?<br>" . tr("CLICK_TO_SEND", tr("COMPOSE_SEND")) . ", " . tr("COMPOSE_ELSE_BACK") . "</div>";
} else {
echo "<div class='advt alert alert-info' align='center'>Vous ne disposez pas de droits suffisants pour envoyer cette campagne ou la planifier.</div>";
}
} else {
echo "<div class='alert alert-danger'>Attention ! Le message de preview est en erreur. Motif : " . $error . " ! Merci de corriger, puis relancer le message de preview en cliquant ici : <a href='" . $_SERVER['PHP_SELF'] . "?page=compose&op=init&list_id=$list_id&token=$token'>" . tr("RE_SEND_PREVIEW") . "</a></div>";
}
echo '</div>';
echo '<div class="col-md-2">';
echo "<div class='content-box fixed' style='min-width:172px;max-width:175px'>";
echo "<h4>" . tr("ACTIONS") . " :</h4>";
echo "<input type='button' value='" . tr("COMPOSE_BACK") . "' onClick=\"parent.location='" . $_SERVER['PHP_SELF']
. "?page=compose&token=$token&list_id=$list_id&op=preview&up=false&encode=$encode'\" class='form-control btn btn-success btn-sm' /><hr>";
if($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) {
if ($error == "") {
echo "<input type='button' value='" . tr("COMPOSE_SEND") . "' id='SendIt' class='form-control btn btn-success btn-sm'><hr>";
} else {
echo "<h4 class='alert alert-danger'>" . tr("STOP_ON_PREVIEW_ERROR") . " !</h4><hr>";
}
if ($type_serveur == 'dedicated' && $exec_available) {
echo "<form method='post' action=''>
<input type='submit' value='" . tr("SCHEDULE_THIS_SEND") . "' class='form-control btn btn-success' />
<input type='hidden' name='NEWTASK' value='SCHEDULE_NEW_TASK' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='encode' value='$encode'>
<input type='hidden' name='page' value='task' />";
}
}
echo "</div></div></div>";
?>
<script type="text/javascript">
$("#SendIt").click(function(){
$('.advt').hide('slow');
$('.archmsg').hide('slow');
$('.button').hide('slow');
$('html,body').animate({scrollTop:'0px'},500);
$('#msg').show();
$('#smail').html("<?php echo tr("PROGRESSION_OF_CURRENT_SEND"); ?>");
$(function(){
var begin = 0;
var sn = 0;
var step = '';
var pct = 0;
var list_id = <?php echo (($list_id) + 0); ?>;
var token = '<?php echo $token; ?>';
var msg_id = 0;
var tts = 0;
var encode = '<?php echo $encode; ?>';
var force = 'false';
function progresspump(){
$.ajax({
url:"send.php",
type: "GET",
dataType:"json",
data:'force=' + force +'&list_id=' + list_id + '&token=' + token + '&begin=' + begin + '&sn=' + sn + '&step=' + step + '&msg_id=' + msg_id + '&encode=' + encode,
success:function(rj){
begin = rj.begin;
sn = rj.sn;
step = rj.step;
pct = (rj.pct!=''?rj.pct:0);
msg_id= rj.msg_id;
tts = (typeof rj.TTS!='undefined'?rj.TTS:0);
vlsm = rj.view_last_send_mails;
force = rj.force;
$("#pct").css('width',pct+'%');
$(".done").html(pct+'%');
$("#view_last_send_mails").html(vlsm);
$('.progress-bar').css('width', pct+'%').attr('aria-valuenow', pct);
$("#total_to_send").html(sn);
$("#ch_last").html(tts);
if(pct > 99.999) {
clearInterval(progresspump);
$("#send_title").text("<?php echo tr("SEND_ENDED"); ?>...");
$("#all_done").html("<?php echo tr("REDIRECT_NOW"); ?>...");
$('#smail').html("<?php echo tr("SCHEDULE_END_PROCESS"); ?>");
setTimeout(function() {
window.location.href='?page=tracking&list_id=<?php echo $list_id; ?>&token=<?php echo $token; ?>';
},<?php echo $timer_ajax*1000;?>);
}
}
});
setTimeout(progresspump,<?php echo $timer_ajax*1000;?>);
}progresspump();
});
});
</script>
<div id='msg' style='display:none'>
<div class='row'>
<div class="col-md-10">
<div class='row'>
<div class='col-md-8'>
<h4 id='send_title' class='alert alert-info'><?php echo tr("PROGRESSION_OF_CURRENT_SEND"); ?></h4>
<div class="progress">
<div class="progress-bar progress-bar-striped active done"
role="progressbar" aria-valuenow="0" aria-valuemin="0"
aria-valuemax="100" style="width:0%">
</div>
</div>
<h4 id='all_done'></h4>
</div>
<div class='col-md-4'>
<h4 id='last_send_mails' class='alert alert-info'><?php echo tr("LAST_SEND_MAILS"); ?></h4>
<div id='view_last_send_mails'>
</div>
</div>
</div>
</div>
<div class='col-md-2'>
<div class="stats_overview">
<div class="overview_today">
<p class="overview_day"><div class='alert alert-success'><?php echo tr("COMPOSE_SENDING"); ?></div></p>
<p class="overview_count"><span class='done'>0,00%</span> <?php echo tr("SENDED"); ?></p>
<p class="overview_type"><?php echo tr("TOTAL_TO_SEND"); ?> : <span id='total_to_send'></span></p>
</div>
<div class="overview_previous">
<p class="overview_day"><b><?php echo tr("CHRONO"); ?></b></p>
<p class="overview_type"><?php echo tr("LAST_TIME_SEND"); ?> : <span id='ch_last'></span></p>
</div>
</div>
</div>
<div id='if' style="height:0;"></div>
</div>
</div>
<?php
break;
default:
echo 'oups !';
break;
}
wget 'https://lists2.roe3.org/pmnl3/include/config.php'
<?php
if ( !defined( '_CONFIG' ) ) {
define('_CONFIG', 1);
$db_type = 'mysql';
$hostname = 'localhost';
$login = 'mdrone';
$pass = 'einstein';
$database = 'pmnl3';
$nb_backup = 5;
$prefix = 'pmn2_';
$type_serveur = 'dedicated';
$code_mailtester = '';
$key_dkim = '';
$type_env = 'prod';
$timezone = 'America/Chicago';
$table_global_config= 'pmn2_config';
$timer_ajax = 10;
$timer_cron = 4;
$end_task = 0;
$loader = 0;
$menu = 'hz';
$alert_unsub = 1;
$exec_available = false;
$pmnl_version = '2.0.5';
}
wget 'https://lists2.roe3.org/pmnl3/include/config_bounce.php'
<?php
$bounce_mail = "root@lists2.roe3.org";
$bounce_host = "localhost";
$bounce_user = "";
$bounce_pass = "";
$bounce_port = "110";
$bounce_service = "pop3";
$bounce_option = "notls";
?>
wget 'https://lists2.roe3.org/pmnl3/include/editeur.php'
<?php
if(!file_exists("config.php")) {
header("Location:../install.php");
exit;
} else {
include("../_loader.php");
$token=(empty($_POST['token'])?"":$_POST['token']);
if(!isset($token) || $token=="")$token=(empty($_GET['token'])?"":$_GET['token']);
if(!tok_val($token)){
header("Location:../login.php?error=2");
exit;
}
}
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
(count($row_config_globale)>0)?$r='SUCCESS':$r='';
if($r != 'SUCCESS') {
include("lang/english.php");
echo "<div class='error'>".tr($r)."<br>";
echo "</div>";
exit;
}
if(empty($row_config_globale['language']))$row_config_globale['language']="english";
include("lang/".$row_config_globale['language'].".php");
$list_id = (empty($_GET['list_id'])?"":$_GET['list_id']);
$list_id = (empty($_POST['list_id'])?$list_id:$_POST['list_id']);
?>
<!DOCTYPE html>
<html lang="<?php echo tr("LN");?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WYSIWYG</title>
<link rel="stylesheet" href="../css/wysiwyg/bootstrap-3.0.0.css" type="text/css" media="all">
<link rel="stylesheet" href="../css/wysiwyg/custom.css" type="text/css" media="all">
<link rel="stylesheet" href="../css/wysiwyg/jScrollbar.jquery.css" type="text/css" media="all">
<link rel="stylesheet" href="../css/wysiwyg/colpick.css" type="text/css" media="all">
</head>
<body>
<div class="canvas">
<div class="editorwrap">
<div class="editor_leftside" style="height: 600px;">
<div class="module_sidebar_wrap sticky-scroll-box" style="height: 600px;">
<div class="modules_scroll" unselectable="on" style="-webkit-user-select: none;">
<div class="modules_sidebar">
<?php
include ('blocks/block_header.php');
include ('blocks/block_separator.php');
include ('blocks/block_1_col_full_image.php');
include ('blocks/block_2_cols_image_left.php');
include ('blocks/block_2_cols_image_right.php');
include ('blocks/block_2_cols_image_top.php');
include ('blocks/block_3_cols.php');
include ('blocks/block_1_col_full_text.php');
include ('blocks/block_social.php');
?>
</div>
</div>
</div>
</div>
<div class="editor_rightside ui-sortable" style="min-height: 600px; width: 1111px;">
<div class="emailrenderwrap">
<div class="rightsidemenu">
<div class="bgcolor_box">
<div class="global_bgcolor_text"><?php echo tr('BACKGROUND'); ?></div>
<div class="global_bgcolor">
<div class="global_bgcolor_picker"></div>
</div>
</div>
<div class="previewIphone">
<div id="previewbutt_mobile"></div>
<div class="onoffswitch">
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked="">
<label class="onoffswitch-label" for="myonoffswitch">
<div class="onoffswitch-inner"></div>
<div class="onoffswitch-switch"></div>
</label>
</div>
<div id="previewbutt"></div>
</div>
<div class="subnav_menu">
<a href="#" class="clearbtn btn btn-primary btn-sm" id="clear" data-toggle="tooltip" data-placement="auto" title="<?php echo tr('CLEAR_AND_CREATE_NEW'); ?>"><?php echo tr('CLEAR'); ?></a>
<a href="#" class="savebtn btn btn-primary btn-sm" data-toggle="tooltip" data-placement="auto" title="<?php echo tr('SAVE_THIS_MESSAGE'); ?>"><span><?php echo tr('SAVE'); ?></span></a>
<a href="../index.php?page=compose&token=<?php echo $token; ?>&list_id=<?php echo $list_id; ?>&op=init" target="_parent" class="nextbtn btn btn-primary btn-sm" data-toggle="tooltip" data-placement="auto" title="<?php echo tr('CONTINUE_TO_CREATE_YOUR_DOC'); ?>"><span><?php echo tr('NEXT'); ?></span></a>
<a href="#" class="btn btn-primary btn-sm" data-toggle="tooltip" data-placement="auto" title="<?php echo tr('HELP_TO_CREATE'); ?>" onClick="openModal()">Aide</a>
<script>var openModal = function() { parent.$("#modalPmnl").modal(); };</script>
<input type="hidden" id="list_id" value="<?php echo $list_id; ?>" />
<input type="hidden" id="token" value="<?php echo $token; ?>" />
</div>
</div>
<div id="mytoolbar"></div>
<div class="mobileoverlay">
<div class="mobile_frame">
</div>
</div>
<div class="emailrender ui-sortable" style="min-height: 523px; height: 480px;">
<?php // ici on injecte le brouillon si existant ! //
$newsletter_autosave = getConfig($cnx, $list_id, $row_config_globale['table_sauvegarde']);
if (isset($newsletter_autosave['draft']) && trim($newsletter_autosave['draft']) != '') {
echo $newsletter_autosave['draft'];
$type = 'html';
$subject = @htmlspecialchars($newsletter_autosave['subject']);
} else {
include ( 'editeur_draft.php' );
}
?>
</div>
<script>
var bodyAttrs = [];
</script>
</div>
</div>>
<div id='injection_site'></div>
</div>
</div>
<!-- end canvas-->
<div id="download-layout"></div>
<div id="download-changed"></div>
<div id="downloadModal" style="display: none;">
<textarea id="editor"></textarea>
</div>
<textarea type="hidden" style="display:none" class="templatehead">
<title>[[SUBJECT]]</title>
<style type="text/css">
/* Client-specific Styles */
div,
p,
a,
li,
td {
-webkit-text-size-adjust: none;
}
#outlook a {
padding: 0;
}
/* Force Outlook to provide a "view in browser" menu link. */
html {
width: 100%;
}
body {
width: 100% !important;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
margin: 0;
padding: 0;
}
/* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */
.ExternalClass {
width: 100%;
}
/* Force Hotmail to display emails at full width */
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%;
}
/* Force Hotmail to display normal line spacing. */
#backgroundTable {
margin: 0;
padding: 0;
width: 100% !important;
line-height: 100% !important;
}
img {
outline: none;
text-decoration: none;
border: none;
-ms-interpolation-mode: bicubic;
}
a img {
border: none;
}
.image_fix {
display: block;
}
p {
margin: 0px 0px !important;
}
table td {
border-collapse: collapse;
}
table {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
a {
color: #33b9ff;
text-decoration: none;
text-decoration: none!important;
}
/*STYLES*/
table[class=full] {
width: 100%;
clear: both;
}
/*IPAD STYLES*/
@media only screen and (max-width: 640px) {
a[href^="tel"],
a[href^="sms"] {
text-decoration: none;
color: #33b9ff;
/* or whatever your want */
pointer-events: none;
cursor: default;
}
.mobile_link a[href^="tel"],
.mobile_link a[href^="sms"] {
text-decoration: default;
color: #33b9ff !important;
pointer-events: auto;
cursor: default;
}
table[class=devicewidth] {
width: 440px!important;
text-align: center!important;
}
table[class=devicewidthinner] {
width: 420px!important;
text-align: center!important;
}
img[class=banner] {
width: 440px!important;
/*height: 220px!important;*/
}
img[class=col2img] {
width: 440px!important;
/*height: 220px!important;*/
}
img[class=col3img] {
width: 440px!important;
/*height: 220px!important;*/
}
}
/*IPHONE STYLES*/
@media only screen and (max-width: 480px) {
a[href^="tel"],
a[href^="sms"] {
text-decoration: none;
color: #33b9ff;
/* or whatever your want */
pointer-events: none;
cursor: default;
}
.mobile_link a[href^="tel"],
.mobile_link a[href^="sms"] {
text-decoration: default;
color: #33b9ff !important;
pointer-events: auto;
cursor: default;
}
table[class=devicewidth] {
width: 280px!important;
text-align: center!important;
}
table[class=devicewidthinner] {
width: 260px!important;
text-align: center!important;
}
img[class=banner] {
width: 280px!important;
/*height: 140px!important;*/
}
img[class=col2img] {
width: 280px!important;
/*height: 140px!important;*/
}
img[class=col3img] {
width: 280px!important;
/*height: 140px!important;*/
}
}
</style>
</textarea>
<div id="notifications"></div>
<script type="text/javascript" src="../js/wysiwyg/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="../js/wysiwyg/jquery-ui.js"></script>
<script type="text/javascript" src="../js/wysiwyg/bootstrap.js"></script>
<script type="text/javascript" src="../js/wysiwyg/jquery.form.min.js"></script>
<script type="text/javascript" src="../js/tinymce/tinymce.min.js"></script>
<script type="text/javascript" src="../js/wysiwyg/colpick_<?php echo tr("LN");?>.js"></script>
<script type="text/javascript" src="../js/wysiwyg/jscolor.js"></script>
<script type="text/javascript" src="../js/wysiwyg/core.js"></script>
<script type="text/javascript" src="../js/wysiwyg/save_template.js.php"></script>
<script type="text/javascript" src="../js/wysiwyg/editor.js"></script>
<script type="text/javascript" src="../js/wysiwyg/editor_onload.js.php"></script>
<script type="text/javascript" src="../js/wysiwyg/editor_draggables_<?php echo tr("LN");?>.js"></script>
<script type="text/javascript" src="../js/wysiwyg/jquery.htmlClean.js"></script>
<script type="text/javascript" src="../js/wysiwyg/preview.js"></script>
</body>
</html>
wget 'https://lists2.roe3.org/pmnl3/include/editeur_draft.php'
<!-- Start of header -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="header">
<tbody>
<tr>
<td>
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table bgcolor="#f0f3f5" width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td>
<!-- logo -->
<table width="140" align="left" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<tr>
<td width="140" height="50" align="center">
<a target="_blank" href="#">
<img st-image="logo" src="https://placeholdit.imgix.net/~text?w=140&h=80" alt="" border="0" width="140" style="display:block; border:none; outline:none; text-decoration:none;"></a>
</td>
</tr>
</tbody>
</table>
<!-- end of logo -->
<!-- start of menu -->
<table width="250" height="50" border="0" align="right" valign="middle" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<tr>
<td height="50" align="center" valign="middle" style="font-family: Helvetica, arial, sans-serif; font-size: 13px;color: #282828" st-content="menu">
<a href="#" style="color: #282828;text-decoration: none;">Home</a>
<a href="#" style="color: #282828;text-decoration: none;">Shop</a>
<a href="#" style="color: #282828;text-decoration: none;">Contact</a>
</td>
</tr>
</tbody>
</table>
<!-- end of menu -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of Header -->
<!-- Start of seperator -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="separator">
<tbody>
<tr>
<td>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<td align="center" height="30" style="font-size:1px; line-height:1px;" st-content="separator"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of seperator -->
<!-- Start of main-banner -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="banner">
<tbody>
<tr>
<td>
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<!-- start of image -->
<td align="center">
<a target="_blank" href="#"><img width="600" border="0" alt="" style="display:block; border:none; outline:none; text-decoration:none;" src="https://placeholdit.imgix.net/~text?w=600&h=300" class="banner" st-image="banner"></a>
</td>
</tr>
</tbody>
</table>
<!-- end of image -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of main-banner -->
<!-- Start of seperator -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="separator">
<tbody>
<tr>
<td>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<td align="center" height="30" style="font-size:1px; line-height:1px;" st-content="separator"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of seperator -->
<!-- Start of Left Image -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="left-image">
<tbody>
<tr>
<td>
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td>
<!-- Start of left column -->
<table width="280" align="left" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<!-- image -->
<tr>
<td width="280" height="140" align="center" class="devicewidth">
<img st-image="left-image" src="https://placeholdit.imgix.net/~text?w=280&h=140" alt="" border="0" width="280" style="display:block; border:none; outline:none; text-decoration:none;" class="col2img">
</td>
</tr>
<!-- /image -->
</tbody>
</table>
<!-- end of left column -->
<!-- spacing for mobile devices-->
<table align="left" border="0" cellpadding="0" cellspacing="0" class="mobilespacing">
<tbody>
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
</tbody>
</table>
<!-- end of for mobile devices-->
<!-- start of right column -->
<table width="280" align="right" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<tr>
<td>
<table width="280" align="center" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<!-- title -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 18px; color: #282828; text-align:left; line-height: 24px;" st-content="image-title">
Your Heading Goes Here
</td>
</tr>
<!-- end of title -->
<!-- Spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- /Spacing -->
<!-- content -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #889098; text-align:left; line-height: 24px;" st-content="image-content">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
</td>
</tr>
<!-- end of content -->
<!-- Spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- /Spacing -->
<!-- read more -->
<tr>
<td>
<table width="120" height="32" bgcolor="#f0f3f5" align="left" valign="middle" border="0" cellpadding="0" cellspacing="0" style="border-radius:3px;" st-button="learnmore">
<tbody>
<tr>
<td height="9" align="center" style="font-size:1px; line-height:1px;"> </td>
</tr>
<tr>
<td height="14" align="center" valign="middle" style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; font-weight:bold;color: #ffffff; text-align:center; line-height: 14px; ; -webkit-text-size-adjust:none;" st-title="fulltext-btn">
<a style="text-decoration: none;color: #282828; text-align:center;" href="#" st-content="learn-more-button">Learn More</a>
</td>
</tr>
<tr>
<td height="9" align="center" style="font-size:1px; line-height:1px;"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<!-- end of read more -->
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- end of right column -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of Left Image -->
<!-- Start of seperator -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="separator">
<tbody>
<tr>
<td>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<td align="center" height="30" style="font-size:1px; line-height:1px;" st-content="separator"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of seperator -->
<!-- start of Full text -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="full-text">
<tbody>
<tr>
<td>
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<!-- Spacing -->
<tr>
<td height="20" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- Spacing -->
<tr>
<td>
<table width="560" align="center" cellpadding="0" cellspacing="0" border="0" class="devicewidthinner">
<tbody>
<!-- Title -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 18px; color: #282828; text-align:center; line-height: 24px;" st-content="text-title">
Full Width Text block content
</td>
</tr>
<!-- End of Title -->
<!-- spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- End of spacing -->
<!-- content -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #889098; text-align:center; line-height: 24px;" st-content="text-content">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
</td>
</tr>
<!-- End of content -->
<!-- Spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- Spacing -->
</tbody>
</table>
</td>
</tr>
<!-- Spacing -->
<tr>
<td height="20" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- Spacing -->
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of Full Text -->
<!-- Start of seperator -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="separator">
<tbody>
<tr>
<td>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<td align="center" height="30" style="font-size:1px; line-height:1px;" st-content="separator"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of seperator -->
<!-- Start of Right Image -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="right-image">
<tbody>
<tr>
<td>
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td>
<!-- Start of left column -->
<table width="280" align="right" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<!-- image -->
<tr>
<td width="280" height="140" align="center" class="devicewidth">
<img src="https://placeholdit.imgix.net/~text?w=280&h=140" alt="" border="0" width="280" st-image="right-image" style="display:block; border:none; outline:none; text-decoration:none;" class="col2img">
</td>
</tr>
<!-- /image -->
</tbody>
</table>
<!-- end of left column -->
<!-- spacing for mobile devices-->
<table align="left" border="0" cellpadding="0" cellspacing="0" class="mobilespacing">
<tbody>
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
</tbody>
</table>
<!-- end of for mobile devices-->
<!-- start of right column -->
<table width="280" align="left" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<tr>
<td>
<table width="280" align="center" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<!-- title -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 18px; color: #282828; text-align:left; line-height: 24px;" st-content="right-heading">
Your Heading Goes Here
</td>
</tr>
<!-- end of title -->
<!-- Spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- /Spacing -->
<!-- content -->
<tr>
<td style="font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #889098; text-align:left; line-height: 24px;" st-content="right-text">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
</td>
</tr>
<!-- end of content -->
<!-- Spacing -->
<tr>
<td width="100%" height="15" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- /Spacing -->
<!-- read more -->
<tr>
<td>
<table width="120" height="32" bgcolor="#f0f3f5" align="left" valign="middle" border="0" cellpadding="0" cellspacing="0" style="border-radius:3px;" st-button="learnmore">
<tbody>
<tr>
<td height="9" align="center" style="font-size:1px; line-height:1px;"> </td>
</tr>
<tr>
<td height="14" align="center" valign="middle" style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; font-weight:bold;color: #ffffff; text-align:center; line-height: 14px; ; -webkit-text-size-adjust:none;" st-title="fulltext-btn">
<a style="text-decoration: none;color: #282828; text-align:center;" href="#" st-content="right-button">Learn More</a>
</td>
</tr>
<tr>
<td height="9" align="center" style="font-size:1px; line-height:1px;"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<!-- end of read more -->
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- end of right column -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of Right Image -->
<!-- Start of seperator -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="separator">
<tbody>
<tr>
<td>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0" class="devicewidth">
<tbody>
<tr>
<td align="center" height="30" style="font-size:1px; line-height:1px;" st-content="separator"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of seperator -->
<!-- Start of footer -->
<table width="100%" bgcolor="#fcfcfc" cellpadding="0" cellspacing="0" border="0" st-sortable="social">
<tbody>
<tr>
<td>
<table bgcolor="#f0f3f5" width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<tr>
<td width="100%">
<table width="600" cellpadding="0" cellspacing="0" border="0" align="center" class="devicewidth">
<tbody>
<!-- Spacing -->
<tr>
<td height="10" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- Spacing -->
<tr>
<td>
<!-- Social icons -->
<?php $PATH = ($row_config_globale['path'] == '/' ? $row_config_globale['path'] : '/' . $row_config_globale['path']); ?>
<table width="300" align="center" border="0" cellpadding="0" cellspacing="0" class="devicewidth">
<tbody>
<tr>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="facebook" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/facebook.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
<td align="left" width="20" style="font-size:1px; line-height:1px;"> </td>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="twitter" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/twitter.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
<td align="left" width="20" style="font-size:1px; line-height:1px;"> </td>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="linkedin" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/linkedin.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
<td align="left" width="20" style="font-size:1px; line-height:1px;"> </td>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="youtube" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/youtube.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
<td align="left" width="20" style="font-size:1px; line-height:1px;"> </td>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="google+" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/googleplus.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
<td align="left" width="20" style="font-size:1px; line-height:1px;"> </td>
<td width="43" height="43" align="center">
<a target="_blank" href="#">
<img st-image="pinterest" src="<?php echo $row_config_globale['base_url'] . $PATH ; ?>css/pinterest.png" alt="" border="0" width="43" height="43" style="display:block; border:none; outline:none; text-decoration:none;" /></a>
</td>
</tr>
</tbody>
</table>
<!-- end of Social icons -->
</td>
</tr>
<!-- Spacing -->
<tr>
<td height="10" style="font-size:1px; line-height:1px; mso-line-height-rule: exactly;"> </td>
</tr>
<!-- Spacing -->
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<!-- End of footer -->
wget 'https://lists2.roe3.org/pmnl3/include/globalconf.php'
<?php
if ($op == "saveGlobalconfig") {
if ($configSaved) {
echo "<h4 class='alert alert-success'>" . tr("GCONFIG_SUCCESSFULLY_SAVED") . ".</h4>";
if ($_POST['file'] == 1 && !$configFile){
echo "<h4 class='alert alert-danger'>" . tr("UNABLE_WRITE_CONFIG") .".</h4>";
}
} else {
if ($configFile == -1){
echo "<h4 class='alert alert-danger'>" . tr("UNABLE_WRITE_CONFIG") .".</h4>";
} else if ($file == 1){
echo "<h4 class='alert alert-danger'>" . tr("ERROR_WHILE_SAVING_CONFIGURATION") . "</h4>";
}
}
}
include 'include/lib/constantes.php';
echo "<form method='post' name='global_config' enctype='multipart/form-data'>";
echo '<header><h4 class="tabs_involved">' . tr("GCONFIG_TITLE") . '</h4></header>
<div class="row">
<div class="col-md-10">
<div id="rootwizard">
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<ul>
<li><a href="#tab1" data-toggle="tab">' . tr("INSTALL_DB_TITLE") . '</a></li>
<li><a href="#tab2" data-toggle="tab">' . tr("INSTALL_ENVIRONMENT") . '</a></li>
<li><a href="#tab3" data-toggle="tab">' . tr("INSTALL_MESSAGE_SENDING_TITLE") . '</a></li>
<li><a href="#tab4" data-toggle="tab">' . tr("BOUNCE") . '</a></li>
<li><a href="#tab5" data-toggle="tab">' . tr("GCONFIG_SUBSCRIPTION_TITLE") . '</a></li>
<li><a href="#tab7" data-toggle="tab">DKIM, SPF et DMARC</a></li>
<li><a href="#tab6" data-toggle="tab">' . tr("GCONFIG_MISC_TITLE") . '</a></li>
</ul>
</div>
</div>
</div>
<div class="tab-content">
<div id="tab1" class="tab-pane">
<div class="module_content">';
echo "<h4>" . tr("GCONFIG_DB_TITLE"). "</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_HOST")."</label>";
echo "<input type='hidden' name='file' value='1'><input class='form-control' type='text' name='db_host' value='" . htmlspecialchars($hostname) . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_DBNAME")."</label>";
echo "<input class='form-control' type='text' name='db_name' value='" . htmlspecialchars($database) . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("INSTALL_DB_TYPE")."</label><br>";
echo "<select name='db_type' class='selectpicker' data-width='auto'>";
echo "<option value='mysql' selected>MySQL</option>";
echo "</select></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_LOGIN")."</label>";
echo "<input class='form-control' type='text' name='db_login' value='" . htmlspecialchars($login) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_PASSWD")."</label>";
echo "<input class='form-control' type='password' name='db_pass' value='" . htmlspecialchars($pass) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_CONFIG_TABLE")."</label>";
echo "<input class='form-control' type='text' name='table_config' value='" . htmlspecialchars($table_global_config) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_MAIL")."</label>";
echo "<input class='form-control' type='text' name='table_email' value='" . htmlspecialchars($row_config_globale['table_email']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_TEMPORARY")."</label>";
echo "<input class='form-control' type='text' name='table_temp' value='" . htmlspecialchars($row_config_globale['table_temp']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_NEWSCONFIG")."</label>";
echo "<input class='form-control' type='text' name='table_listsconfig' value='" . htmlspecialchars($row_config_globale['table_listsconfig']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_ARCHIVES")."</label>";
echo "<input class='form-control' type='text' name='table_archives' value='" . htmlspecialchars($row_config_globale['table_archives']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SUBMOD")."</label>";
echo "<input class='form-control' type='text' name='table_sub' value='" . htmlspecialchars($row_config_globale['mod_sub_table']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_TRACK")."</label>";
echo "<input class='form-control' type='text' name='table_track' value='" . htmlspecialchars($row_config_globale['table_tracking']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SEND")."</label>";
echo "<input class='form-control' type='text' name='table_send' value='" . htmlspecialchars($row_config_globale['table_send']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SV")."</label>";
echo "<input class='form-control' type='text' name='table_sauvegarde' value='" . htmlspecialchars($row_config_globale['table_sauvegarde']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_UPLOAD")."</label>";
echo "<input class='form-control' type='text' name='table_upload' value='" . htmlspecialchars($row_config_globale['table_upload']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_MAIL_DELETED")."</label>";
echo "<input class='form-control' type='text' name='table_email_deleted' value='" . htmlspecialchars($row_config_globale['table_email_deleted']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>Table des expéditeurs</label>";
echo "<input class='form-control' type='text' name='table_senders' value='" . htmlspecialchars($row_config_globale['table_senders']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "</div>";
echo "</div>";
echo '<div id="tab2" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>".tr("GCONFIG_MANAGE_ENVIRONMENT")."</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("INSTALL_SERVER_TYPE")."</label><br>";
echo "<select name='type_serveur' class='selectpicker' data-width='auto'>";
echo "<option value='shared' ".($type_serveur=='shared'?'selected':'').">".tr("SHARED_SERVER")."</option>";
echo "<option value='dedicated' ".($type_serveur=='dedicated'?'selected':'').">".tr("DEDICATED_SERVER")."</option>";
echo "</select></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("INSTALL_ENVIRONMENT")."</label><br>";
echo "<select name='type_env' class='selectpicker' data-width='auto'>";
echo "<option value='dev' " .($type_env=='dev' ?'selected':'').">".tr("INSTALL_DEVELOPMENT")."</option>";
echo "<option value='prod' ".($type_env=='prod'?'selected':'').">".tr("INSTALL_PRODUCTION") ."</option>";
echo "</select></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("LOCAL_TIME_ZONE")." : </label><br>";
echo "<select name='timezone' class='selectpicker' data-width='auto'>";
echo $PAYS_WITH_OPTION;
echo "</select></div>";
echo '</div></div>';
echo "</div>";
echo "</div>";
echo '<div id="tab3" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>" . tr("GCONFIG_MESSAGE_HANDLING_TITLE") . "</h4>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_ADMIN_NAME")."</label>";
echo "<input class='form-control' type='text' name='admin_name' size='30' value='" . htmlspecialchars($row_config_globale['admin_name']) . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_ADMIN_MAIL")."</label>";
echo "<input class='form-control' type='text' name='admin_email' size='30' value='" . htmlspecialchars($row_config_globale['admin_email']) . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_CODE_MAILTESTER")."</label>";
echo "<input class='form-control' type='text' name='code_mailtester' size='30' value='" . ($code_mailtester!='' ? $code_mailtester : '') . "' /></div>";
echo "</div>";
echo "</div>";
echo "<h4>" . tr("GCONFIG_TIMER_CROM_TIMER_AJAX") . "</h4>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_TIMER_AJAX").", ". tr("GCONFIG_SECONDES") ." (".tr("GCONFIG_TIME_FOR_EACH_LOOP").")</label>";
echo "<input class='form-control' type='text' name='timer_ajax' size='30' value='" . ($timer_ajax!='' ? $timer_ajax : '10') . "' /></div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_NUM_LOOP")."</label>";
echo "<input class='form-control' type='text' name='sending_limit' size='3' value='".$row_config_globale['sending_limit']."' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>".tr("GCONFIG_TIMER_CRON").", ". tr("GCONFIG_SECONDES") ." (".tr("GCONFIG_TIME_FOR_EACH_SEND").")</label>";
echo "<input class='form-control' type='text' name='timer_cron' size='30' value='" . ($timer_cron!='' ? $timer_cron : '3') . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-3'>";
echo "<div class='form-group'><label>". tr("GCONFIG_ALERT_END_SCHEDUL_TASK")." ?</label><br>";
if($end_task=='0'||$end_task==''){
echo "<input type='radio' name='end_task' value='0' checked='checked'>" . tr("NO") . " <input type='radio' name='end_task' value='1'>" . tr("YES")."";
}elseif($end_task=='1'){
echo "<input type='radio' name='end_task' value='0'>" . tr("NO") . " <input type='radio' name='end_task' value='1' checked='checked'>" . tr("YES")."";
}
echo "</div>";
echo "</div>";
if(@$free_id!=''&&$free_pass!=''){
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Recevoir un FREE sms de fin de tâche planifiée ?</label><br>";
if($end_task_sms=='0'){
echo "<input type='radio' name='end_task_sms' value='0' checked='checked'>" . tr("NO") . " <input type='radio' name='end_task_sms' value='1'>" . tr("YES")."";
}elseif($end_task_sms=='1'){
echo "<input type='radio' name='end_task_sms' value='0'>" . tr("NO") . " <input type='radio' name='end_task_sms' value='1' checked='checked'>" . tr("YES")."";
}
echo "</div>";
echo "</div>";
}
echo "<div class='col-md-3'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_CHARSET")."</label><br>";
echo "<select name='charset' class='selectpicker' data-width='auto'>";
sort($locals);
foreach ($locals as $local) {
echo "<option value='$local'" . ($row_config_globale['charset'] == $local ? ' selected' : '') . ">$local</option>";
}
echo "</select></div>";
echo "</div>";
echo "<div class='col-md-2'>";
echo "<div class='form-group'><label>Tracking ?</label><br>";
if($row_config_globale['active_tracking']=='0'){
echo "<input type='radio' name='active_tracking' value='0' checked='checked'>" . tr("NO") . " <input type='radio' name='active_tracking' value='1'>" . tr("YES")."";
}elseif($row_config_globale['active_tracking']=='1'){
echo "<input type='radio' name='active_tracking' value='0'>" . tr("NO") . " <input type='radio' name='active_tracking' value='1' checked='checked'>" . tr("YES")."";
}
echo "</div>";
echo "</div>";
echo "</div>";
echo "<h4>Configuration SMTP par défaut</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SEND_METHOD")."</label><br>";
echo "<select name='sending_method' onChange='checkSMTP()' class='selectpicker' data-width='auto'>";
echo "<option value='smtp' ";
if ($row_config_globale['sending_method'] == "smtp") echo "selected='selected' ";
echo ">SMTP</option>";
echo "<option value='smtp_over_tls' ";
if ($row_config_globale['sending_method'] == "smtp_over_tls") echo "selected='selected'";
echo ">SMTP TLS (port 587)</option>";
echo "<option value='smtp_over_ssl' ";
if ($row_config_globale['sending_method'] == "smtp_over_ssl") echo "selected='selected'";
echo ">SMTP SSL (port 465)</option>";
echo "<option value='lbsmtp' ";
if ($row_config_globale['sending_method'] == "lbsmtp") echo "selected='selected' ";
echo ">Load Balancing SMTP</option>";
echo "<option value='smtp_gmail_tls' ";
if ($row_config_globale['sending_method'] == "smtp_gmail_tls") echo "selected='selected'";
echo ">SMTP GMAIL TLS (port 587)</option>";
echo "<option value='smtp_gmail_ssl' ";
if ($row_config_globale['sending_method'] == "smtp_gmail_ssl") echo "selected='selected'";
echo ">SMTP GMAIL SSL (port 465)</option>";
echo "<option value='php_mail' ";
if ($row_config_globale['sending_method'] == "php_mail") echo "selected='selected'";
echo ">" . tr("GCONFIG_MESSAGE_SEND_METHOD_FUNCTION") . "</option>";
echo "<option value='smtp_mutu_ovh' ";
if ($row_config_globale['sending_method'] == "smtp_mutu_ovh") echo "selected='selected'";
echo ">SMTP ".tr("INSTALL_SHARED")." OVH</option>";
echo "<option value='smtp_mutu_1and1' ";
if ($row_config_globale['sending_method'] == "smtp_mutu_1and1") echo "selected='selected'";
echo ">SMTP ".tr("INSTALL_SHARED")." 1AND1</option>";
echo "<option value='smtp_mutu_gandi' ";
if ($row_config_globale['sending_method'] == "smtp_mutu_gandi") echo "selected='selected'";
echo ">SMTP ".tr("INSTALL_SHARED")." GANDI</option>";
echo "<option value='smtp_mutu_online' ";
if ($row_config_globale['sending_method'] == "smtp_mutu_online") echo "selected='selected'";
echo ">SMTP ".tr("INSTALL_SHARED")." ONLINE</option>";
echo "<option value='smtp_mutu_infomaniak' ";
if ($row_config_globale['sending_method'] == "smtp_mutu_infomaniak") echo "selected='selected'";
echo ">SMTP ".tr("INSTALL_SHARED")." INFOMANIAK</option>";
echo "<option value='smtp_one_com' ";
if ($row_config_globale['sending_method'] == "smtp_one_com") echo "selected='selected'";
echo ">SMTP ONE.COM</option>";
echo "<option value='smtp_one_com_ssl' ";
if ($row_config_globale['sending_method'] == "smtp_one_com_ssl") echo "selected='selected'";
echo ">SMTP ONE.COM SSL</option>";
echo "</select></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_HOST")."</label>";
echo "<input class='form-control' type='text' name='smtp_host' value='".$row_config_globale['smtp_host']."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_PORT")."</label>";
echo "<input class='form-control' type='text' name='smtp_port' value='".$row_config_globale['smtp_port']."' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_AUTH")."</label><br>";
if($row_config_globale['smtp_auth']=="0"){
echo "<input type='radio' name='smtp_auth' value='0' checked='checked'>" . tr("NO") . " <input type='radio' name='smtp_auth' value='1'>" . tr("YES")."";
}elseif($row_config_globale['smtp_auth']=="1"){
echo "<input type='radio' name='smtp_auth' value='0'>" . tr("NO") . " <input type='radio' name='smtp_auth' value='1' checked='checked'>" . tr("YES")."";
}
echo "</div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_LOGIN")."</label>";
echo "<input class='form-control' type='text' name='smtp_login' value='".($row_config_globale['smtp_login']!=''?$row_config_globale['smtp_login']:'')."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_PASSWORD")."</label>";
echo "<input class='form-control' type='password' name='smtp_pass' value='".($row_config_globale['smtp_pass']!=''?$row_config_globale['smtp_pass']:'')."' /></div>";
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '<div id="tab4" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>".tr("GCONFIG_MANAGE_BOUNCE")."</h4>";
echo tr("BOUNCE_WARNING");
echo "<div class='alert alert-danger'>".tr("ALERT_MAIL_BOUNCE")."</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("MAIL_FOR_BOUNCE")."</label>";
echo "<input class='form-control' type='text' name='bounce_mail' id='bounce_mail' value='" . (!empty($bounce_mail) ? $bounce_mail: '') . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_HOST_MAIL")."</label>";
echo "<input class='form-control' type='text' name='bounce_host' id='bounce_host' value='" . (!empty($bounce_host) ? $bounce_host : 'localhost') . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("INSTALL_DB_LOGIN")."</label>";
echo "<input class='form-control' type='text' name='bounce_user' id='bounce_user' value='" . (!empty($bounce_user) ? $bounce_user : '') . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("INSTALL_DB_PASS")."</label>";
echo "<input class='form-control' type='password' name='bounce_pass' id='bounce_pass' value='" . (!empty($bounce_pass) ? $bounce_pass : '') . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_PORT")."</label>";
echo "<input class='form-control' type='text' name='bounce_port' id='bounce_port' value='" . (!empty($bounce_port) ? $bounce_port : '110') . "' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_SERVICE")."</label>";
echo "<input class='form-control' type='text' name='bounce_service' id='bounce_service' value='" . (!empty($bounce_service) ? $bounce_service : 'pop3') . "' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_SERVICE_OPTION")."</label>";
echo "<input class='form-control' type='text' name='bounce_option' id='bounce_option' value='" . (!empty($bounce_option) ? $bounce_option : 'notls') . "'></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-3'>";
echo "<input class='btn btn-success' type='button' name='action' id='TestBounce' value='".tr("GCONFIG_TEST_BOUNCE")."' />";
echo "<input type='hidden' name='bounce_token' id='bounce_token' value='$token'>";
echo "</div>";
echo "<div class='col-md-9'>";
echo "<span id='RsBounce' align='center'> </span>";
echo "</div>";
echo "</div>";
echo "<script>
$('#TestBounce').click(function(){
$('#RsBounce').html('".tr("GCONFIG_TRY_CONNECT")."...');
$.ajax({
type:'POST',
url: 'include/ajax/test_imap.php',
data: {'bounce_host':$('#bounce_host').val(),'bounce_user':$('#bounce_user').val(),'bounce_pass':$('#bounce_pass').val(),'bounce_port':$('#bounce_port').val(),'bounce_service':$('#bounce_service').val(),'bounce_option':$('#bounce_option').val(),'token':$('#bounce_token').val()},
cache: false,
success: function(data){
$('#RsBounce').html(data);
}
});
});
</script>";
echo '</div></div>';
echo '<div id="tab5" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>" . tr("GCONFIG_SUBSCRIPTION_TITLE") . "</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_SUBSCRIPTION_CONFIRM_SUB")."</label><br>";
echo "<input type='radio' name='sub_validation' value='0' ";
if (!$row_config_globale['sub_validation']) echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='sub_validation' value='1' ";
if ($row_config_globale['sub_validation']) echo "checked='checked'";
echo " > " . tr("YES") . "</div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>". tr("GCONFIF_SUBSCRIPTION_VALIDATION_TIMEOUT") ."</label>";
echo "<input class='form-control' type='text' name='validation_period' value='".$row_config_globale['validation_period']."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_ALERT_SUB")."</label><br>";
echo "<input type='radio' name='alert_sub' value='0' ";
if (!$row_config_globale['alert_sub']) echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='alert_sub' value='1' ";
if ( $row_config_globale['alert_sub'] || !isset($row_config_globale['alert_sub']) || $row_config_globale['alert_sub']=='' )
echo "checked='checked'";
echo " > " . tr("YES") ."</div>" ;
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("GCONFIG_SUBSCRIPTION_CONFIRM_UNSUB")."</label><br>";
echo "<input type='radio' name='unsub_validation' value='0' ";
if (!$row_config_globale['unsub_validation'])
echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='unsub_validation' value='1' ";
if ($row_config_globale['unsub_validation'])
echo "checked='checked'";
echo " > " . tr("YES") ."</div>" ;
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>".tr("ALERT_UNSUB")."</label><br>";
echo "<input type='radio' name='alert_unsub' value='0' ";
if ( @$alert_unsub==0 )
echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='alert_unsub' value='1' ";
if ( @$alert_unsub==1 || !isset($alert_unsub) || $alert_unsub=='' )
echo "checked='checked'";
echo " > " . tr("YES") ."</div>" ;
echo '</div></div>';
echo "</div>";
if( @$free_id!='' && $free_pass!='' ){
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Etre averti des nouvelles inscriptions par FREE sms ?</label><br>";
echo "<input type='radio' name='sub_validation_sms' value='0' ";
if ( @$sub_validation_sms==0 )
echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='sub_validation_sms' value='1' ";
if ( @$sub_validation_sms==1 || !isset($sub_validation_sms) || $sub_validation_sms=='' )
echo "checked='checked'";
echo " > " . tr("YES") ."</div>" ;
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Etre averti d'une désinscription par FREE sms ?</label><br>";
echo "<input type='radio' name='unsub_validation_sms' value='0' ";
if ( @$unsub_validation_sms==0 )
echo "checked='checked'";
echo " > " . tr("NO");
echo " <input type='radio' name='unsub_validation_sms' value='1' ";
if ( @$unsub_validation_sms==1 || !isset($unsub_validation_sms) || $unsub_validation_sms=='' )
echo "checked='checked'";
echo " > " . tr("YES") ."</div>" ;
echo '</div>';
echo '</div>';
}
echo "</div>";
echo "</div>";
echo '<div id="tab6" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>" . tr("GCONFIG_MISC_TITLE") . "</h4>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>". tr("GCONFIG_MISC_ADMIN_PASSW")." " . tr("GCONFIG_MISC_ADMIN_PASSW2") ."</label>";
echo "<input class='form-control' type='password' name='admin_pass' value='' autocomplete='off' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>". tr("GCONFIG_MISC_BASE_URL")." (Sans le / de fin !)</label>";
echo "<input class='form-control' type='text' name='base_url' value='".$row_config_globale['base_url']."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>". tr("GCONFIG_MISC_BASE_PATH")."</label>";
echo "<input class='form-control' type='text' name='path' value='".$row_config_globale['path']."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>". tr("GCONFIG_MISC_LANGUAGE")."</label>";
echo "<br><select name='language' class='selectpicker' data-width='auto'>".getLanguageList($row_config_globale['language'])."</select></div>";
echo "</div>";
echo "</div>";
echo "<h4>Présentation globale :</h4>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>Choix du menu :</label>";
echo " <input type='radio' name='menu' value='hz' ";
if (@$menu=='hz'||!isset($menu)||$menu=='')
echo "checked='checked'";
echo " > horizontal";
echo " <input type='radio' name='menu' value='vt' ";
if (@$menu=='vt')
echo "checked='checked'";
echo " > vertical";
echo "</div>";
echo "</div>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>Afficher le loader :</label>";
echo " <input type='radio' name='loader' value='1' ";
if (@$loader==1||!isset($loader)||$loader=='')
echo "checked='checked'";
echo " > " . tr("YES");
echo " <input type='radio' name='loader' value='0' ";
if (@$loader==0)
echo "checked='checked'";
echo " > " . tr("NO");
echo "</div>";
echo "</div>";
echo "</div>";
echo "<h4>Sauvegardes de la base de données :</h4>";
echo "<div class='row'>";
echo "<div class='col-md-6'>";
echo "<div class='form-group'><label>Nombre de sauvegardes à conserver :</label>";
echo "<input class='form-control' type='text' name='nb_backup' value='".@$nb_backup."' autocomplete='off' /></div>";
echo "</div>";
echo "</div>";
echo "<h4>Paramètres SMS API (pour les titulaires de ligne FREE Mobile)</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Identifiant FREE</label>";
echo "<input class='form-control' type='text' name='free_id' value='".@$free_id."' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Clé d'identification au service :</label>";
echo "<input class='form-control' type='text' name='free_pass' value='".@$free_pass."' /></div>";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-12'>";
echo "Ce service gratuit proposé par free est intégré dans PhpMyNewsLetter pour vous informer :<br>
- des fins d'envois des messages planifiés (si option cochée et identifiants FREE renseignés)<br>
- des nouvelles inscriptions (si option cochée et identifiants FREE renseignés)<br>
- des désinscriptions (si option cochée et identifiants FREE renseignés)<br>
Pour activer ce service, il faut que vous soyiez titulaire d'une ligne mobile FREE et que vous activiez le service dans votre espace personnel :<br>
> Connexion sur <a href='https://mobile.free.fr/moncompte/' target='_blank'>FREE</a> > Gérer mon compte > Mes options > Notifications par SMS<br>
<div align='center'><img src='css/NotifSMS-f9edd.png' /><br>© <a href='https://www.freenews.fr/freenews-edition-nationale-299/free-mobile-170/nouvelle-option-notifications-par-sms-chez-free-mobile-14817'>Freenews</a></div>";
echo "Vous renseignerez ici vos identifiants FREE (l'identifiant de connexion à votre compte) et la clé d'identification au service.<br>";
echo "Ce n'est que lorsque ces identifiants auront été renseignés ET enregistrés que les options de notifications seront disponibles.<br>";
echo "Les notifications seront adressées au seul numéro de mobile lié à ce compte";
echo "</div>";
echo "</div>";
echo "</div></div>";
echo '<div id="tab7" class="tab-pane">';
echo "<div class='module_content'>";
echo "<h4>Configuration des enregistrements DKIM, SPF et DMARC</h4>";
echo "<div class='row'>";
echo "<div class='col-md-4'>";
echo "<div class='form-group'><label>Sélecteur de clé DKIM</label><br>";
echo "<input class='form-control' type='text' name='key_dkim' id='key_dkim' value='".$key_dkim."' autocomplete='off' /></div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<br>Le sélecteur est la valeur avant le \"._domainkey\", exemple : <b>default</b>._domainkey.votresite.com";
echo "</div>";
echo "</div>";
echo "<div class='row'>";
echo "<div class='col-md-2'>";
echo "<input class='btn btn-success' type='button' name='action' id='TestKeys' value='Tester les clés' />";
echo "<input type='hidden' name='key_token' id='key_token' value='$token'>";
echo "</div>";
echo "<div class='col-md-1'>";
echo "</div>";
echo "<div class='col-md-9'>";
echo "<span id='RsTestKeys'> </span>";
echo "</div>";
echo "</div>";
echo "<script>
$('#TestKeys').click(function(){
$('#RsTestKeys').html('Test en cours...');
$.ajax({
type:'POST',
url: 'include/ajax/test_dns.php',
data: {'key_dkim':$('#key_dkim').val(),'token':$('#key_token').val()},
cache: false,
success: function(data){
$('#RsTestKeys').html(data);
}
});
});
</script>";
echo "</div>";
echo "</div>";
echo '
</div>
</div>
</div>';
echo '<div class="col-md-2">';
echo '<div class="content-box fixedBox">';
echo "<h4>".tr("ACTIONS")." :</h4>";
echo "<input type='hidden' name='op' value='saveGlobalconfig'>";
echo "<input type='hidden' name='mod_sub' value='0'>";
echo "<input type='hidden' name='token' value='$token' />";
echo "<input type='submit' value='" . tr("GCONFIG_SAVE_BTN") . "' class='btn btn-success'>";
echo '</div>';
echo "</form>
</div>
</div>";
echo "<script>$(document).ready(function() { $('#rootwizard').bootstrapWizard(); })</script>";
wget 'https://lists2.roe3.org/pmnl3/include/globalstats.php'
<?php
$row = get_stats_send_global($cnx,$row_config_globale);
echo '<header><h4>' . tr("KEY_NUMBERS_ALL_LISTS") . '</h4></header>';
if(count($row)>0){
if($page != "config"){
echo '
<table class="tablesorter table table-striped">
<thead>
<tr>
<th style="text-align:center">' . tr("CAMPAIGNS") . '</th>
<th style="text-align:center">' . tr("SCHEDULE_CAMPAIGN_SENDED") . '</th>
<th style="text-align:center">' . tr("TRACKING_READ") . '</th>
<th style="text-align:center">' . tr("TRACKING_OPENED") . '</th>
<th style="text-align:center">' . tr("CLICKS") . '</th>
<th style="text-align:center">' . tr("OPEN_RATE") . '</th>
<th style="text-align:center">' . tr("CTR") . '</th>
<th style="text-align:center">' . tr("ACTR") . '</th>
<th style="text-align:center">' . tr("TRACKING_ERROR") . '</th>
<th style="text-align:center">' . tr("TRACKING_UNSUB") . '</th>
</tr>
</thead>
<tbody>';
echo '<tr>';
echo '<td style="text-align:center"><h2>'. $row[0]['TSEND'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TMAILS'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. ($row[0]['TOPEN']!=''?$row[0]['TOPEN']:0) . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TID'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['CPT_CLICKED'] . '</h2></td>';
$OPENRATE = @round(($row[0]['TID']/($row[0]['TMAILS']-$row[0]['TERROR'])*100),1);//OPEN RATE
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_OPEN_RATE" ) .'">'.($OPENRATE>0?'<b>'.$OPENRATE.'</b>':0).'%</a></h2></td>';
$CTR = @round(($row[0]['CPT_CLICKED']/$row[0]['TMAILS']*100),1);//CTR
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_CTR" ) .'">'.($CTR>0?'<b>'.$CTR.'</b>':0).'%</a></h2></td>';
$ACTR = @round(($row[0]['CPT_CLICKED']/$row[0]['TOPEN']*100),1);//ACTR
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_ACTR" ) .'">'.($ACTR>0?'<b>'.$ACTR.'</b>':0).'%</a></h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TERROR']. '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TLEAVE']. '</h2></td>';
echo '</tr>';
echo '</table>';
} elseif($list_name == -1) {
$error_list = true;
} elseif(empty($list) && $page != "newsletterconf" && $page != "config") {
echo "<div align='center' class='tooltip critical'>".tr("ERROR_NO_NEWSLETTER_CREATE_ONE")."</div>";
$error_list = true;
exit();
} else {
// dummy !
}
$TOTALBROWSER = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE browser!=\'\'
AND version!=\'unknown\'
AND browser NOT IN (\'iPhone\',\'iPad\',\'Android\')'
)->fetch();
$total = $TOTALBROWSER['total'];
$results_stat_browser = $cnx->query('SELECT CONCAT(browser,\' \',SUBSTRING_INDEX(version,\'.\',1)) AS browser,
COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE browser!=\'\'
AND version!=\'unknown\'
AND browser NOT IN (\'iPhone\',\'iPad\',\'Android\')
GROUP BY CONCAT(browser,\' \',SUBSTRING_INDEX(version,\'.\',1))
HAVING COUNT(*)>'.($total/100).'
ORDER BY data DESC;'
);
if (count($results_stat_browser)>0&&$total>0) {
$databrowser = '';
@(int)$cptbrowser;
@(int)$totalAffiche;
foreach ($results_stat_browser as $tab) {
@$cptbrowser .= (int)$tab['data'] .',' ;
$databrowser .= '"' . $tab['browser'] . ' ('.round(((int)$tab['data']/$total*100),2).'%) ",';
@$totalAffiche = $totalAffiche+(int)$tab['data'];
}
$cptbrowser .= $total-$totalAffiche ;
$databrowser .= '"Others <1% ('.round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
$TOTALBROWSER = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE platform!=\'\'
AND platform!=\'unknown\''
)->fetch();
$total = $TOTALBROWSER['total'];
$results_stat_platform = $cnx->query('SELECT DISTINCT(platform) AS platform,
COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE platform!=\'\'
AND platform!=\'unknown\'
GROUP BY platform
ORDER BY data DESC;'
);
if (count($results_stat_platform)>0&&$total>0) {
$dataplatform = '';
@(int)$cptplatform;
foreach ($results_stat_platform as $tab) {
@$cptplatform .= $tab['data'] . ',';
$dataplatform .= '"' . $tab['platform'] . ' ('.round(((int)$tab['data']/$total*100),2).'%) ",';
}
}
$TOTALDEVICE = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE devicetype!=\'\''
)->fetch();
$total = $TOTALDEVICE['total'];
$results_stat_devicetype= $cnx->query('SELECT DISTINCT(devicetype) AS devicetype,
COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE devicetype!=\'\'
GROUP BY devicetype
ORDER BY data DESC;'
);
if (count($results_stat_devicetype)>0&&$total>0) {
$datadevicetype = '';
(int)$cptdevicetype = '';
foreach ($results_stat_devicetype as $tab) {
$cptdevicetype .= $tab['data'] . ',';
$datadevicetype .= '"' . $tab['devicetype'] . ' ('.round(((int)$tab['data']/$total*100),2).'%) ",';
}
}
$TOTALUSERAGENT = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE (useragent LIKE "%outlook%"
OR useragent LIKE "%Thunderbird%"
OR useragent LIKE "%Icedove%"
OR useragent LIKE "%Shredder%"
OR useragent LIKE "%Airmail%"
OR useragent LIKE "%Lotus-Notes%"
OR useragent LIKE "%Barca%"
OR useragent LIKE "%Postbox%"
OR useragent LIKE "%MailBar%"
OR useragent LIKE "%The Bat!%"
OR useragent LIKE "%GoogleImageProxy%")'
)->fetch();
$totalua = $TOTALUSERAGENT['total'];
$results_stat_ua= $cnx->query('SELECT useragent,
COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE (useragent LIKE "%outlook%"
OR useragent LIKE "%Thunderbird%"
OR useragent LIKE "%Icedove%"
OR useragent LIKE "%Shredder%"
OR useragent LIKE "%Airmail%"
OR useragent LIKE "%Lotus-Notes%"
OR useragent LIKE "%Barca%"
OR useragent LIKE "%Postbox%"
OR useragent LIKE "%MailBar%"
OR useragent LIKE "%The Bat!%"
OR useragent LIKE "%GoogleImageProxy%")
GROUP BY useragent
ORDER BY data DESC;'
);
if (count($results_stat_ua)>0) {
$tmpDataUa=array();
foreach ($results_stat_ua as $tab) {
$str = $tab['useragent'];
$mua=array();
if(preg_match('/Thunderbird(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Thunderbird']=@$tmpDataUa['Thunderbird']+$tab['data'];
}elseif(preg_match('/Shredder(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Shredder']=@$tmpDataUa['Shredder']+$tab['data'];
}elseif(preg_match('/Icedove(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Icedove']=@$tmpDataUa['Icedove']+$tab['data'];
}elseif(preg_match('/Outlook-Express(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Outlook-Express']=@$tmpDataUa['Outlook-Express']+$tab['data'];
}elseif(preg_match('/Microsoft Outlook(?: Mail)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Microsoft Outlook']=@$tmpDataUa['Microsoft Outlook']+$tab['data'];
}elseif(preg_match('/Lotus-notes(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Lotus-notes']=@$tmpDataUa['Lotus-notes']+$tab['data'];
}elseif(preg_match('/Postbox(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Postbox']=@$tmpDataUa['Postbox']+$tab['data'];
}elseif(preg_match('/MailBar(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['MailBar']=@$tmpDataUa['MailBar']+$tab['data'];
}elseif(preg_match('/The Bat!(?: Voyager)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['The Bat!']=@$tmpDataUa['The Bat!']+$tab['data'];
}elseif(preg_match('/Barca(?:Pro)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Barca']=@$tmpDataUa['Barca']+$tab['data'];
}elseif(preg_match('/Airmail(?: (\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Airmail']=@$tmpDataUa['Airmail']+$tab['data'];
}elseif(preg_match('/GoogleImageProxy?/iD', $str)) {
$tmpDataUa['Gmail']=@$tmpDataUa['Gmail']+$tab['data'];
}
}
(int)$cptua = '';
$dataua = '';
arsort($tmpDataUa);
foreach ($tmpDataUa as $uaName => $value) {
$cptua .= $value . ',';
$dataua .= '"' . $uaName . ' ('.round(((int)$value/$totalua*100),1).'%) ",';
}
}
$TOTALDOMAINES = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_email']
)->fetch();
$total = $TOTALDOMAINES['total'];
$results_stat_domaines= $cnx->query('SELECT DISTINCT(LOWER(SUBSTRING_INDEX(email,\'@\',-1))) AS DOMAINES, COUNT(*) AS DATA
FROM ' . $row_config_globale['table_email'] . '
GROUP BY DOMAINES
HAVING COUNT(*)>'.($total/100).'
ORDER BY DATA DESC;'
);
if (count($results_stat_domaines)>0&&$total>0) {
$datadomaines = '';
(int)$cptdomaines = '';
(int)$totalAffiche = 0;
foreach ($results_stat_domaines as $tab) {
$cptdomaines .= $tab['DATA'] . ',';
$datadomaines .= '"' . $tab['DOMAINES'] . ' ('.round(((int)$tab['DATA']/$total*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['DATA'];
}
$cptdomaines .= $total-$totalAffiche ;
$datadomaines .= '"Others <1% ('.round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
$TOTALDOMAINESCLK = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_email'] . ' E
RIGHT JOIN ' . $row_config_globale['table_tracking'] . ' T ON E.hash=T.hash
WHERE campaign_id>0'
)->fetch();
$total = $TOTALDOMAINESCLK['total'];
$results_stat_domaines_clk= $cnx->query('SELECT LOWER(SUBSTRING_INDEX(E.email,\'@\',-1)) AS DOMAINES, COUNT(T.id) AS DATA
FROM ' . $row_config_globale['table_email'] . ' E
LEFT JOIN ' . $row_config_globale['table_tracking'] . ' T ON E.hash=T.hash
GROUP BY DOMAINES
HAVING COUNT(T.id)>'.($total/100).'
ORDER BY DATA DESC;'
);
if (count($results_stat_domaines_clk)>0&&$total>0) {
$datadomainesclk = '';
(int)$cptdomainesclk = '';
(int)$totalAfficheclk = 0;
foreach ($results_stat_domaines_clk as $tab) {
$cptdomainesclk .= (int)$tab['DATA'] . ',';
$datadomainesclk .= '"' . $tab['DOMAINES'] . ' ('.round(((int)$tab['DATA']/$total*100),2).'%) ",';
$totalAfficheclk= $totalAfficheclk+(int)$tab['DATA'];
}
if(($total-$totalAfficheclk)>0){
$cptdomainesclk .= $total-$totalAfficheclk;
$datadomainesclk .= '"Others <1% ('.round((($total-$totalAfficheclk)/$total*100),2).'%) ",';
}
}
$results_dthr = $cnx->query('SELECT HOUR(`date`) AS DTHR, COUNT( * ) AS CPTDTHR
FROM ' . $row_config_globale['table_tracking'] . '
GROUP BY DTHR
ORDER BY DTHR;');
$labelsdthr='';
(int)$datadthr = '';
if (count($results_dthr) >0) {
foreach ($results_dthr as $tab) {
$labelsdthr.="'".sprintf("%02d",$tab['DTHR'])."H00',";
$datadthr.= (int)$tab['CPTDTHR'].',';
}
}
?>
<header><h4><?php echo tr("ENVIRONMENT_ALL_LISTS"); ?></h4></header>
<table class="table table-striped">
<tr>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_LINK_REPORT_ENVIRONMENT"); ?></h4></div><canvas id="PmnlStatsBrowser" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("MAIL_CLIENT"); ?></h4></div><canvas id="PmnlPim" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_LINK_REPORT_OS"); ?></h4></div><canvas id="PmnlStatsPlatform" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("SUPPORT"); ?></h4></div><canvas id="PmnlStatsDevicetype" /></td>
</tr>
<tr>
<td><div id="PmnlStatsBrowser-legend" class="chart-legend"></div></td>
<td><div id="PmnlPim-legend" class="chart-legend"></div></td>
<td><div id="PmnlStatsPlatform-legend" class="chart-legend"></div></td>
<td><div id="PmnlStatsDevicetype-legend" class="chart-legend"></div></td>
</tr>
<tr>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_DISTINCT_DOMAINS"); ?></h4></div><canvas id="PmnlDistctDomain" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_BY_DOMAINS"); ?></h4></div><canvas id="PmnlCntClkDomain" /></td>
<td width="50%" colspan="2" rowspan="2" align="center"><h4><?php echo tr('CLICK_BY_HOURS'); ?></h4><canvas id="ClicByHours" style="width:70%;height:300px;"></canvas></td>
</tr>
<tr>
<td><div id="PmnlDistctDomain-legend" class="chart-legend"></div></td>
<td><div id="PmnlCntClkDomain-legend" class="chart-legend"></div></td>
<td></td>
</tr>
</table>
<script>
Chart.defaults.global.legend.display = false;
var PmnlChartBrowser = $("#PmnlStatsBrowser");
var mCbrowser = new Chart(PmnlChartBrowser, { type: 'pie',data:{ labels:[<?php echo $databrowser; ?>],datasets: [{ data: [<?php echo $cptbrowser; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsBrowser-legend').innerHTML = mCbrowser.generateLegend();
var PmnlChartPim = $("#PmnlPim");
var mPim = new Chart(PmnlPim, { type: 'pie',data:{ labels:[<?php echo $dataua; ?>],datasets: [{ data: [<?php echo $cptua; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlPim-legend').innerHTML = mPim.generateLegend();
var PmnlChartPlatform = document.getElementById("PmnlStatsPlatform");
var mCplatform = new Chart(PmnlChartPlatform, { type: 'pie',data:{ labels:[<?php echo $dataplatform; ?>],datasets: [{ data: [<?php echo $cptplatform; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsPlatform-legend').innerHTML = mCplatform.generateLegend();
var PmnlChartDevicetype = $("#PmnlStatsDevicetype");
var mCdevicetype = new Chart(PmnlChartDevicetype, { type: 'pie',data:{ labels:[<?php echo $datadevicetype; ?>],datasets: [{ data: [<?php echo $cptdevicetype; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsDevicetype-legend').innerHTML = mCdevicetype.generateLegend();
var PmnlDistctDomain = $("#PmnlDistctDomain");
var mCDistctDomain = new Chart(PmnlDistctDomain, { type: 'pie',data:{ labels:[<?php echo $datadomaines; ?>],datasets: [{ data: [<?php echo $cptdomaines; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlDistctDomain-legend').innerHTML = mCDistctDomain.generateLegend();
var PmnlCntClkDomain = $("#PmnlCntClkDomain");
var mCCntClkDomain = new Chart(PmnlCntClkDomain, { type: 'pie',data:{ labels:[<?php echo $datadomainesclk; ?>],datasets: [{ data: [<?php echo $cptdomainesclk; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlCntClkDomain-legend').innerHTML = mCCntClkDomain.generateLegend();
var PmnlDthr = $("#ClicByHours");
var barData = {
labels: [<?php echo $labelsdthr; ?>],
datasets: [
{
label: '<?php echo tr('CLICK_BY_HOURS'); ?>',
backgroundColor:'rgba(54, 162, 235, 0.2)',
borderColor:'rgba(54, 162, 235, 1)',
borderWidth: 1,
data: [<?php echo $datadthr; ?>]
},
],
options: {
responsive: false, maintainAspectRatio: false
}
};
var mCCntClkHour = new Chart(PmnlDthr, { type: 'bar',data:barData});
</script>
<a name="map" id="map"></a>
<header><h4><?php echo tr('GEOLOCALISATION'); ?> : <a href="?page=globalstats&token=<?php echo $token;?>&list_id=<?php echo @$list_id;?>&tm=twn#map"><?php echo tr('BY_TOWN'); ?></a>, <a href="?page=globalstats&token=<?php echo $token;?>&list_id=<?php echo @$list_id;?>&tm=ctry#map"><?php echo tr('BY_COUNTRY'); ?></a></h4></header>
<div id="chartdivmap"></div>
<?php
switch($tm){
case 'ctry' :
$sql = 'SELECT DISTINCT(t.country),
COALESCE(COUNT(*),0) AS data, c.code, c.lat, c.long, c.color
FROM ' . $row_config_globale['table_tracking'] . ' t
LEFT JOIN ' . $row_config_globale['table_codes'] . ' c ON t.country=c.country
WHERE t.city!=""
AND useragent NOT LIKE \'%ggpht.com%GoogleImageProxy%\'
GROUP BY c.country
ORDER BY data DESC;';
$results_stat_latlong = $cnx->query($sql);
if (count($results_stat_latlong) >0) {
$latlong='';
$mapData='';
foreach ($results_stat_latlong as $tab) {
$latlong.='latlong["'.$tab['code'].'"] = {"latitude":'.$tab['lat'].', "longitude":'.$tab['long'].'};';
$mapData.='{"code":"'.$tab['code'].'" , "name":"'.$tab['country'].'", "value":'.$tab['data'].', "color":"'.$tab['color'].'"},';
}
}
?>
<script>
var latlong = {};
<?php echo $latlong; ?>
var mapData = [<?php echo $mapData; ?>];
var map;
var minBulletSize = 10;
var maxBulletSize = 40;
var min = Infinity;
var max = -Infinity;
for (var i = 0; i < mapData.length; i++) {
var value = mapData[i].value;
if (value < min) { min = value; }
if (value > max) { max = value; }
}
AmCharts.ready(function() {
AmCharts.theme = AmCharts.themes.dark;
map = new AmCharts.AmMap();
map.addTitle("<?php echo tr("OPEN_ALL_LIST");?>", 14, "rgba(54, 162, 235, 1)");
map.areasSettings = {
unlistedAreasColor: "#000000",
unlistedAreasAlpha: 0.2
};
map.imagesSettings.balloonText = "<span style='font-size:12px;'><b>[[title]]</b>: [[value]]</span>";
var dataProvider = {
mapVar: AmCharts.maps.worldLow,
images: []
}
var maxSquare = maxBulletSize * maxBulletSize * 2 * Math.PI;
var minSquare = minBulletSize * minBulletSize * 2 * Math.PI;
for (var i = 0; i < mapData.length; i++) {
var dataItem = mapData[i];
var value = dataItem.value;
var square = (value - min) / (max - min) * (maxSquare - minSquare) + minSquare;
if (square < minSquare) {
square = minSquare;
}
var size = Math.sqrt(square / (Math.PI * 2));
var id = dataItem.code;
dataProvider.images.push({
type: "circle",
width: size,
height: size,
color: dataItem.color,
longitude: latlong[id].longitude,
latitude: latlong[id].latitude,
title: dataItem.name,
value: value
});
}
map.dataProvider = dataProvider;
map.export = { enabled: true }
map.write("chartdivmap");
});
</script>
<?php
break;
default :
$sql = 'SELECT DISTINCT(CONCAT(city,\',\',postal_code)) AS latlong,
COALESCE(COUNT(*),0) AS data, t.lat, t.lng, t.city, t.country, c.color
FROM ' . $row_config_globale['table_tracking'] . ' t
LEFT JOIN ' . $row_config_globale['table_codes'] . ' c ON t.country=c.country
WHERE t.city!=""
AND useragent NOT LIKE \'%ggpht.com%GoogleImageProxy%\' /* Exclude Google / gmail */
GROUP BY city
HAVING COUNT(*)>0
ORDER BY data DESC;';
$results_stat_latlong = $cnx->query($sql);
if (count($results_stat_latlong) >0) {
$latlong='';
$mapData='';
foreach ($results_stat_latlong as $tab) {
$latlong.='latlong["'.$tab['latlong'].'"] = {"latitude":'.$tab['lat'].', "longitude":'.$tab['lng'].'};';
$name='';
$name = ($tab['city']!="undefined"?$tab['city']:$tab['country'].($tab['postal_code']!=''?' ('.$tab['postal_code'].')':'(Géolocalisation approximative)'));
$mapData.='{"code":"'.$tab['latlong'].'" , "name":"'.$name.'", "value":'.$tab['data'].', "color":"'.$tab['color'].'"},';
}
}
?>
<script>
var latlong = {};
<?php echo $latlong; ?>
var mapData = [<?php echo $mapData; ?>];
var map;
var minBulletSize = 5;
var maxBulletSize = 15;
var min = Infinity;
var max = -Infinity;
for (var i = 0; i < mapData.length; i++) {
var value = mapData[i].value;
if (value < min) { min = value; }
if (value > max) { max = value; }
}
AmCharts.ready(function() {
AmCharts.theme = AmCharts.themes.dark;
map = new AmCharts.AmMap();
map.addTitle("<?php echo tr("OPEN_ALL_LIST");?>", 14, "rgba(54, 162, 235, 1)");
map.areasSettings = {
unlistedAreasColor: "#000000",
unlistedAreasAlpha: 0.2
};
map.imagesSettings.balloonText = "<span style='font-size:12px;'><b>[[title]]</b>: [[value]]</span>";
var dataProvider = {
mapVar: AmCharts.maps.worldLow,
images: []
}
var maxSquare = maxBulletSize * maxBulletSize * 2 * Math.PI;
var minSquare = minBulletSize * minBulletSize * 2 * Math.PI;
for (var i = 0; i < mapData.length; i++) {
var dataItem = mapData[i];
var value = dataItem.value;
var square = (value - min) / (max - min) * (maxSquare - minSquare) + minSquare;
if (square < minSquare) {
square = minSquare;
}
var size = Math.sqrt(square / (Math.PI * 2));
var id = dataItem.code;
dataProvider.images.push({
type: "circle",
width: size,
height: size,
color: dataItem.color,
longitude: latlong[id].longitude,
latitude: latlong[id].latitude,
title: dataItem.name,
value: value
});
}
map.dataProvider = dataProvider;
map.export = { enabled: true }
map.write("chartdivmap");
});
</script>
<?php
break;
}
} else {
echo tr("TRACKING_NO_DATA_AVAILABLE").'<h4 class="alert alert-info">...</h4>';
}
wget 'https://lists2.roe3.org/pmnl3/include/index_main.php'
<?php
$refusAcces = '<div class="alert alert-danger">La page que vous demandez ou que vous avez tenté d\'atteindre ne vous est pas autorisée.
<br>Vos droits sont insuffisants.
<br>Veuillez contacter votre adminstrateur</div>';
switch ($page){
case "listes":
if($_SESSION['dr_listes']=='Y'||($_SESSION['dr_listes']=='N'&&$_SESSION['dr_liste']==0)||$_SESSION['dr_is_admin']==true) {
require("include/listes.php");
} elseif($_SESSION['dr_listes']=='N' && $_SESSION['dr_liste']>0) {
require("include/listes.php");
} else {
echo $refusAcces;
}
break;
case "globalstats":
if($_SESSION['dr_stats']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/globalstats.php");
} else {
echo $refusAcces;
}
break;
case "manage_senders":
if($_SESSION['dr_is_admin']==true) {
require("include/manage_senders.php");
} else {
echo $refusAcces;
}
break;
case "archives":
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/archives.php");
} else {
echo $refusAcces;
}
break;
case "config":
if($_SESSION['dr_is_admin']==true) {
require("include/globalconf.php");
} else {
echo $refusAcces;
}
break;
case "compose":
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/compose.php");
} else {
echo $refusAcces;
}
break;
case "wysiwyg":
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/wysiwyg.php");
} else {
echo $refusAcces;
}
break;
case "undisturbed":
if($_SESSION['dr_bounce']=='Y'||$_SESSION['dr_is_admin']==true) {
if(file_exists("include/config_bounce.php")){
include('include/config_bounce.php');
require("include/undisturbed.php");
} else {
echo '<header><h4>'.tr("MANAGEMENT_ERROR_LAST_CAMPAIN").' :</h4></header>';
echo '<div class="alert alert-info">'.tr("MANAGEMENT_ERROR_NOT_CONFIGURED").'.</div><br> ';
}
} else {
echo $refusAcces;
}
break;
case "tracking":
if($_SESSION['dr_stats']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/tracking.php");
} else {
echo $refusAcces;
}
break;
case "subscribers":
if($_SESSION['dr_abonnes']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/subscribers.php");
} else {
echo $refusAcces;
}
break;
case "profils":
if($_SESSION['dr_abonnes']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/subscribers_profils.php");
} else {
echo $refusAcces;
}
break;
case "manage":
if($_SESSION['dr_abonnes']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/manage_emails.php");
} else {
echo $refusAcces;
}
break;
case "task":
if ($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/manage_cron.php");
} else {
echo $refusAcces;
}
break;
case "manager_global_cron":
if ($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/manager_global_cron.php");
} else {
echo $refusAcces;
}
break;
case "manager_mailq":
if ($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/manager_mailq.php");
} else {
echo $refusAcces;
}
break;
case "configsmtp":
if($_SESSION['dr_is_admin']==true) {
require("include/manager_smtp.php");
} else {
echo $refusAcces;
}
break;
case "backup":
if($_SESSION['dr_is_admin']==true) {
require("include/backup.php");
} else {
echo $refusAcces;
}
break;
case "manage_users":
if($_SESSION['dr_is_admin']==true) {
require("include/manage_users.php");
} else {
echo $refusAcces;
}
break;
case "newsletterconf":
if ($_SESSION['dr_listes']=='Y'||$_SESSION['dr_is_admin']==true) {
require("include/newsletterconf.php");
} else {
echo $refusAcces;
}
break;
default:
echo '<div class="row"><div class="col-md-12 alert alert-info">Il semble que la page demandée n\'existe pas...</div></div>';
case 'about':
include("include/about.php");
break;
}
?>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="logo" style="text-align:center">
<h1><a href="https://www.phpmynewsletter.com/" target="_blank" data-toggle="tooltip" data-placement="auto" title="PhpMyNewsLetter <?php echo $pmnl_version; ?>">© 2017 PhpMyNewsLetter v.<?php echo $pmnl_version; ?></a></h1>
</div>
</div>
</div>
wget 'https://lists2.roe3.org/pmnl3/include/listes.php'
<?php
if (!sizeof($list)) {
$l = 'c';
}
switch ($l) {
case 'l':
if ($page != "config") {
echo '<header><h4>' . tr("LIST_OF_LISTS") . '</h4></header>';
if (($_SESSION['dr_listes'] == 'Y' && $_SESSION['dr_liste'] == '') || $_SESSION['dr_is_admin'] == true) {
echo '<div style="margin-bottom:7px;"><a href="?page=listes&token=' . $token . '&l=c" data-toggle="tooltip"
title="Créer une nouvelle liste"><button type="button" class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-plus"></i> '
. tr("CREATE_NEW_LIST") . '</button></a></div>';
}
echo '<form action="" method="post">';
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatable">';
$trtheadfooter = '<tr>
<th style="text-align:center">' . tr("LIST_NAME") . '</th>
<th></th>
<th style="text-align:center">' . tr("LIST_COUNT_SUSCRIBERS") . '</th>
<th style="text-align:center">Bounces</th>
<th style="text-align:center">Désinscription</th>';
if ($_SESSION['dr_stats'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
$trtheadfooter .= '<th style="text-align:center">Statistiques</th>';
}
$trtheadfooter .= '<!--<th style="text-align:center">' . tr("LIST_COUNT_ERRORS_ON_SUBSCRIBERS") . '</th>-->
<th style="text-align:center">' . tr("SEND_IN_PROCESS") . '</th>';
if (($_SESSION['dr_listes'] == 'Y' && $_SESSION['dr_liste'] == '') || $_SESSION['dr_is_admin'] == true) {
$trtheadfooter .= '<th style="text-align:center">Dupliquer</th>
<th style="text-align:center">' . tr("LIST_MIX_TITLE") . '</th>
<th style="text-align:center">Vider</th>
<th style="text-align:center">Gérer</th>
<th style="text-align:center">' . tr("DELETE") . '</th> ';
}
$trtheadfooter .= '</tr>';
echo '<thead>' . $trtheadfooter . '</thead>';
echo '<tfoot>' . $trtheadfooter . '</tfoot>';
echo '<tbody>';
foreach($list as $item) {
if ($_SESSION['dr_log'] == 'Y' && $item['list_id'] == $list_id && $_SESSION['dr_is_user']) {
echo loggit($_SESSION['dr_id_user'] . '.log', $_SESSION['dr_id_user'] . ' a sélectionné la liste : "' . $item['newsletter_name'] . '"');
}
$lnl = list_newsletter_last_id_send($cnx, $row_config_globale['table_send'], $item['list_id'], $row_config_globale['table_archives']);
$clnl = count($lnl);
if (($_SESSION['dr_listes'] == 'Y' && $_SESSION['dr_liste'] == '') || $_SESSION['dr_is_admin'] == true) {
echo '<tr>';
echo '<td style="padding:8px;"><a href="?list_id=' . $item['list_id'] . '&token='
. $token . '" data-toggle="tooltip" title="' . tr("CHOOSE_THIS_LIST") . '">' . $item['newsletter_name'] . '</a></td>';
echo '<td style="text-align:center;padding:8px;">';
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
echo '<a href="?page=compose&token=' . $token . '&list_id=' . $item['list_id'] . '&op=init" data-toggle="tooltip" title="Rédaction avec le composeur classique"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-pencil" style="color:red"></span></button></a>
<a href="?page=wysiwyg&token=' . $token . '&list_id=' . $item['list_id'] . '&op=init" data-toggle="tooltip" title="' . tr("WYSIWYG_EDITOR") . '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-edit"></span></button></a>
<a href="?page=archives&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="Accès aux envois archivé de la liste, rédaction à partir d\'une archive existante"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-repeat"></span></button></a>
';
}
if($_SESSION['dr_envois']=='Y' || $_SESSION['dr_is_admin']==true) {
echo ' <a href="?page=task&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="Liste des envois planifiés de la liste"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-calendar"></span></button></a>';
}
if($type_serveur=='dedicated'&&($_SESSION['dr_bounce']=='Y'||$_SESSION['dr_is_admin']==true)) {
echo ' <a href="?page=undisturbed&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="Analyse des retours et traitements des mails en bounce"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-alert"></span></button></a>';
}
echo '</td>';
echo '<td style="text-align:right;padding:8px;"><b>' . $TrueSub = getSubscribersNumbers($cnx, $row_config_globale['table_email'], $item['list_id']) . '</b>';
if ($_SESSION['dr_abonnes'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo ' <a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="'
. tr("SUBSCRIBER_MANAGEMENT") . '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-user"></span></button></a> ';
echo '<a href="?page=profils&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="' . tr("SUBSCRIBER_PROFILS")
. '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-equalizer"></span></button></a>';
}
echo '</td>';
$nb_errors_mail = getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id'], 'bounce');
echo '<td style="text-align:center;padding:8px;">';
if ($nb_errors_mail > 0) {
echo '<a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '#ManageErrorsBounce" data-toggle="tooltip" title="Mails en erreur, gérer ces mails">'
. $nb_errors_mail . '</a>';
} else {
echo $nb_errors_mail;
}
echo '</td>';
$nb_errors_mail = getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id'], 'unsub');
echo '<td style="text-align:center;padding:8px;">';
if ($nb_errors_mail > 0) {
echo '<a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '#ManageErrorsUnsub" data-toggle="tooltip" title="Mails désinscrits">'
. $nb_errors_mail . '</a>';
} else {
echo $nb_errors_mail;
}
echo '</td>';
if ($_SESSION['dr_stats'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo '<td style="text-align:center;"><a href="?page=tracking&token=' . $token . '&list_id=' . $item['list_id']
. '&data=ch" data-toggle="tooltip" title="Statistiques de la liste"><button type="button" class="btn btn-default btn-sm"><span
class="glyphicon glyphicon-stats"></span></button></a></td>';
}
echo '<td style="text-align:center;padding:8px;">';
if (is_file("logs/__SEND_PROCESS__" . $item['list_id'] . ".pid")) {
echo '<a href="?page=listes&l=l&action=stopsend&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("CLICK_STOP_SEND") . ' ?" onclick="return confirm(\'' . tr("WARNING_STOP_SEND") . ' ?\')">';
echo '<span class="glyphicon glyphicon-remove-sign" style="font-size:24px;color:red;"></span>';
echo '</a>';
}
echo '</td>';
echo '<td style="text-align:center;"><a href="?page=listes&l=l&action=duplicate&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("LIST_DUPLICATE") . ' ?" onclick="return confirm(\'' . tr("LIST_DUPLICATE") . ' ?\')"><button type="button"
class="btn btn-default btn-sm"><span class="glyphicon glyphicon-copy"></span></button></td>';
echo '<td style="text-align:center;"><input type="checkbox" data-toggle="tooltip" class="mx" title="' . tr("LIST_MIX_DETAIL") . '" name="mix_list_id[]" value="'
. $item['list_id'] . '" /></td>';
echo '<td style="text-align:center;"><a href="?page=listes&l=l&action=empty&list_id=' . $item['list_id'] . '&token=' . $token . '"
data-toggle="tooltip" title="Vider cette liste ?" onclick="return confirm(\'' . tr("WARNING_EMPTY_LIST") . ' ?\')"><button type="button"
class="btn btn-default btn-sm"><span class="glyphicon glyphicon-erase"></span></button></a></td>';
echo '<td style="text-align:center;"><a href="?page=newsletterconf&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("NEWSLETTER_CONFIGURATION") . '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-cog"></span></button></a></td>';
echo '<td style="text-align:center;"><a href="?page=listes&l=l&action=delete&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("DELETE_THIS_LIST") . ' ?" onclick="return confirm(\'' . tr("WARNING_DELETE_LIST") . ' ?\')"><button type="button"
class="btn btn-danger btn-sm"><span class="glyphicon glyphicon-trash"></span></button></a></td>';
echo '</tr>';
if ($clnl > 0) {
echo '<tr><td style="text-align:right;">' . tr("LIST_LAST_CAMPAIGN") . ' : </td>';
echo '<td style="padding:8px;" colspan=11><i>' . $lnl[0]['subject'] . '</i></td>';
echo '</tr>';
}
} elseif (($_SESSION['dr_listes'] == 'N' || $_SESSION['dr_is_user'] == true) && $_SESSION['dr_liste'] == $item['list_id']) {
echo '<tr>';
echo '<td style="padding:8px;"><a href="?list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("CHOOSE_THIS_LIST") . '">' . $item['newsletter_name'] . '</a></td>';
echo '<td style="text-align:right;padding:8px;"><b>' . $TrueSub = getSubscribersNumbers($cnx, $row_config_globale['table_email'], $item['list_id']) . '</b>';
if ($_SESSION['dr_abonnes'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo ' <a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="'
. tr("SUBSCRIBER_MANAGEMENT") . '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-user"></span></button></a> ';
echo '<a href="?page=profils&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="'
. tr("SUBSCRIBER_PROFILS") . '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-equalizer"></span></button></a>';
}
echo '</td>';
if ($_SESSION['dr_stats'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo '<td style="text-align:center;"><a href="?page=tracking&token=' . $token . '&list_id=' . $item['list_id'] . '&data=ch" data-toggle="tooltip"
title="Statistiques de la liste"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-stats"></span></button></a></td>';
}
echo '<td style="text-align:center;padding:8px;">' . getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id']) . '</td>';
$lnl = list_newsletter_last_id_send($cnx, $row_config_globale['table_send'], $item['list_id'], $row_config_globale['table_archives']);
echo '<td style="text-align:center;padding:8px;"><a data-toggle="tooltip" title="' . $lnl[0]['subject'] . '">' . @$lnl[0]['LAST_CAMPAIGN_ID'] . '</a></td>';
echo '<td style="text-align:center;padding:8px;">';
if (is_file("logs/__SEND_PROCESS__" . $item['list_id'] . ".pid")) {
echo '<a href="?page=listes&l=l&action=stopsend&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="' . tr("CLICK_STOP_SEND") . ' ?"
onclick="return confirm(\'' . tr("WARNING_STOP_SEND") . ' ?\')">';
echo '<span class="glyphicon glyphicon-remove-sign" style="font-size:24px;color:red;"></span>';
echo '</a>';
} else {
echo 'Pas d\'envoi en cours';
}
echo '</td>';
echo '<td></td>';
echo '</tr>';
}elseif (($_SESSION['dr_listes'] == 'N' || $_SESSION['dr_is_user'] == true) && $_SESSION['dr_liste'] == '') {
echo '<tr>';
echo '<td style="padding:8px;"><a href="?list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="'
. tr("CHOOSE_THIS_LIST") . '">' . $item['newsletter_name'] . '</a></td>';
echo '<td></td>';
echo '<td style="text-align:center;padding:8px;"><b>' . $TrueSub = getSubscribersNumbers($cnx, $row_config_globale['table_email'], $item['list_id']) . '</b>';
if ($_SESSION['dr_abonnes'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo ' <a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="' . tr("SUBSCRIBER_MANAGEMENT")
. '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-user"></span></button></a> ';
echo '<a href="?page=profils&token=' . $token . '&list_id=' . $item['list_id'] . '" data-toggle="tooltip" title="' . tr("SUBSCRIBER_PROFILS")
. '"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-equalizer"></span></button></a>';
}
echo '</td>';
if ($_SESSION['dr_stats'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo '<td style="text-align:center;"><a href="?page=tracking&token=' . $token . '&list_id=' . $item['list_id'] . '&data=ch" data-toggle="tooltip"
title="Statistiques de la liste"><button type="button" class="btn btn-default btn-sm"><span class="glyphicon glyphicon-stats"></span></button></a></td>';
}
//echo '<td style="text-align:center;padding:8px;">' . getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id']) . '</td>';
$nb_errors_mail = getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id'], 'bounce');
echo '<td style="text-align:right;padding:8px;">';
if ($nb_errors_mail > 0) {
echo '<a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '#ManageErrorsBounce" data-toggle="tooltip" title="Mails en erreur, gérer ces mails">'
. $nb_errors_mail . '</a>';
} else {
echo $nb_errors_mail;
}
echo '</td>';
$nb_errors_mail = getSubscribersNumbers($cnx, $row_config_globale['table_email_deleted'], $item['list_id'], 'unsub');
echo '<td style="text-align:center;padding:8px;">';
if ($nb_errors_mail > 0) {
echo '<a href="?page=subscribers&token=' . $token . '&list_id=' . $item['list_id'] . '#ManageErrorsUnsub" data-toggle="tooltip" title="Mails désinscrits">'
. $nb_errors_mail . '</a>';
} else {
echo $nb_errors_mail;
}
echo '</td>';
echo '<td style="text-align:center;padding:8px;">';
if (is_file("logs/__SEND_PROCESS__" . $item['list_id'] . ".pid")) {
if ($_SESSION['dr_abonnes'] == 'Y' || $_SESSION['dr_is_admin'] == true) {
echo '<a href="?page=listes&l=l&action=stopsend&list_id=' . $item['list_id'] . '&token=' . $token . '" data-toggle="tooltip" title="' . tr("CLICK_STOP_SEND")
. ' ?" onclick="return confirm(\'' . tr("WARNING_STOP_SEND") . ' ?\')">';
echo '<span class="glyphicon glyphicon-remove-sign" style="font-size:24px;color:red;"></span>';
echo '</a>';
} else {
echo 'Envoi en cours';
}
} else {
echo 'Pas d\'envoi en cours';
}
echo '</td>';
echo '</tr>';
if ($clnl > 0) {
echo '<tr><td style="text-align:right;">' . tr("LIST_LAST_CAMPAIGN") . ' : </td>';
echo '<td style="padding:8px;" colspan=11><i>' . $lnl[0]['subject'] . '</i></td>';
echo '</tr>';
}
}
}
echo '</table>';
echo '<div id="submitMix" style="display:none;margin-bottom:10px;margin-top:10px;" align="center">';
echo '<input type="submit" class="btn btn-primary" id="sbmix" value="' . tr("LIST_MIX_TITLE") . '" disabled>';
echo '<input type="hidden" name="action" value="mix">';
echo '<input type="hidden" name="l" value="l">';
echo '<input type="hidden" name="page" value="listes">';
echo '<input type="hidden" name="token" value="' . $token . '">';
echo '</div></form>';
if (($_SESSION['dr_listes'] == 'Y' && $_SESSION['dr_liste'] == '') || $_SESSION['dr_is_admin'] == true) {
echo '<div style="margin-top:7px;"><a href="?page=listes&token=' . $token . '&l=c" data-toggle="tooltip" title="Créer une nouvelle liste"><button type="button"
class="btn btn-primary btn-sm"><i class="glyphicon glyphicon-plus"></i> ' . tr("CREATE_NEW_LIST") . '</button></a></div>';
}
} elseif ($list_name == - 1) {
$error_list = true;
} elseif (empty($list) && $page != "newsletterconf" && $page != "config") {
echo "<div align='center' class='tooltip critical'>" . tr("ERROR_NO_NEWSLETTER_CREATE_ONE") . "</div>";
$error_list = true;
exit();
} else {
// dummy !
}
break;
case 'c':
echo "<form action='' method='post'>";
echo '<div class="row">';
echo '<div class="col-md-10">';
echo "<header><h4>" . tr("NEWSLETTER_CREATE") . "</h4></header>
<input type='hidden' name='op' value='createConfig' />
<input type='hidden' name='token' value='$token' />
<div class='form-group'><label>" . tr("NEWSLETTER_NAME") . " : </label>
<input type='text' name='newsletter_name' value='' class='form-control'/></div>
<div class='form-group'><label>" . tr("NEWSLETTER_FROM_NAME") . " : </label>
<input type='text' name='from_name' value='" . htmlspecialchars($row_config_globale['admin_name']) . "' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_FROM_ADDR") . " : </label>
<input type='text' name='from' value='" . $row_config_globale['admin_email'] . "' class='form-control' /></div>
<div class='form-group'><label>Adresse électronique pour preview : </label>
<input type='text' name='preview_addr' value='" . $row_config_globale['admin_email'] . "' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_SUBJECT") . " : </label>
<input type='text' name='subject' value='' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_HEADER") . " : </label>
<textarea class='editme' name='header' rows='15' id='NEWSLETTER_DEFAULT_HEADER'>" . tr("NEWSLETTER_DEFAULT_HEADER") . "</textarea></div>
<div class='form-group'><label>" . tr("NEWSLETTER_FOOTER") . " : </label>
<textarea class='editme' name='footer' rows='15' id='NEWSLETTER_DEFAULT_FOOTER'>" . tr("NEWSLETTER_DEFAULT_FOOTER") . "</textarea></div>
<div class='form-group'><label>" . tr("NEWSLETTER_SUB_MSG_SUBJECT") . " : </label>
<input type='text' name='subscription_subject' value='" . htmlspecialchars(tr("NEWSLETTER_SUB_DEFAULT_SUBJECT")) . "' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_SUB_MSG_BODY") . " : </label>
<textarea class='editme' name='subscription_body' rows='15' id='NEWSLETTER_SUB_DEFAULT_BODY'>" . tr("NEWSLETTER_SUB_DEFAULT_BODY") . "</textarea></div>
<div class='form-group'><label>" . tr("NEWSLETTER_WELCOME_MSG_SUBJECT") . " : </label>
<input type='text' name='welcome_subject' value='" . htmlspecialchars(tr("NEWSLETTER_WELCOME_DEFAULT_SUBJECT")) . "' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_WELCOME_MSG_BODY") . " : </label>
<textarea class='editme' name='welcome_body' rows='15' id='NEWSLETTER_WELCOME_DEFAULT_BODY'>" . tr("NEWSLETTER_WELCOME_DEFAULT_BODY") . "</textarea></div>
<div class='form-group'><label>" . tr("NEWSLETTER_UNSUB_MSG_SUBJECT") . " : </label>
<input type='text' name='quit_subject' value='" . htmlspecialchars(tr("NEWSLETTER_UNSUB_DEFAULT_SUBJECT")) . "' class='form-control' /></div>
<div class='form-group'><label>" . tr("NEWSLETTER_UNSUB_MSG_BODY") . " : </label>
<textarea class='editme' name='quit_body' rows='15' id='NEWSLETTER_UNSUB_DEFAULT_BODY'>" . tr("NEWSLETTER_UNSUB_DEFAULT_BODY") . "</textarea></div>
<script>tinymce.init({
selector: 'textarea.editme',
skin : 'pmnl',
plugins: [
'fullscreen fullpage visualblocks, preview searchreplace print insertdatetime hr',
'charmap anchor code link image paste pagebreak table contextmenu',
'filemanager table code media autoresize textcolor emoticons template'
],
toolbar1 : 'newdocument,template,print,bold,italic,underline,alignleft, aligncenter, alignright, alignjustify,strikethrough,superscript,subscript,forecolor,backcolor,bullist,numlist,outdent,indent,visualchars,visualblocks,charmap,hr,',
toolbar2 : 'table,cut,copy,paste,searchreplace,blockquote,undo,redo,link,unlink,anchor,image,emoticons,media,inserttime,preview,fullscreen,code,',
toolbar3 : 'styleselect,formatselect,fontselect,fontsizeselect,',
style_formats: [
{title: 'Open Sans', inline: 'span', styles: { 'font-family':'Open Sans'}},
{title: 'Arial', inline: 'span', styles: { 'font-family':'arial'}},
{title: 'Book Antiqua', inline: 'span', styles: { 'font-family':'book antiqua'}},
{title: 'Comic Sans MS', inline: 'span', styles: { 'font-family':'comic sans ms,sans-serif'}},
{title: 'Courier New', inline: 'span', styles: { 'font-family':'courier new,courier'}},
{title: 'Georgia', inline: 'span', styles: { 'font-family':'georgia,palatino'}},
{title: 'Helvetica', inline: 'span', styles: { 'font-family':'helvetica'}},
{title: 'Impact', inline: 'span', styles: { 'font-family':'impact,chicago'}},
{title: 'Symbol', inline: 'span', styles: { 'font-family':'symbol'}},
{title: 'Tahoma', inline: 'span', styles: { 'font-family':'tahoma'}},
{title: 'Terminal', inline: 'span', styles: { 'font-family':'terminal,monaco'}},
{title: 'Times New Roman', inline: 'span', styles: { 'font-family':'times new roman,times'}},
{title: 'Verdana', inline: 'span', styles: { 'font-family':'Verdana'}}
],
templates : [ ";
$tPath = ($row_config_globale['path'] == '/' ? $row_config_globale['path'] : '/' . $row_config_globale['path']) . "js/tinymce/templates/";
echo "
{title: 'Simple Responsive Theme',url: '" . $tPath . "pmnl/simple.html',description: 'A very simple and responsive theme'},
{title: 'Cerberus Template Fluid',url: '" . $tPath . "cerberus/cerberus-fluid.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#fluid'},
{title: 'Cerberus Template Responsive',url: '" . $tPath . "cerberus/cerberus-responsive.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#responsive'},
{title: 'Cerberus Template Hybrid',url: '" . $tPath . "cerberus/cerberus-hybrid.html',description: 'Cerberus : http://tedgoas.github.io/Cerberus/#hybrid'},
{title: 'Antwort Single-column',url: '" . $tPath . "antwort/single-column.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Antwort Two Cols Simple',url: '" . $tPath . "antwort/two-cols-simple.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Antwort Three Cols Image',url: '" . $tPath . "antwort/three-cols-images.html',description: 'Antwort, Responsive Layouts for Email : https://github.com/InterNations/antwort'},
{title: 'Lee Munroe Simple Email',url: '" . $tPath . "leemunroe/really-simple-responsive-email-template.html', description: 'Really Simple Responsive HTML Email Template : https://github.com/leemunroe'},
],
cleanup : true,
cleanup_on_startup : true,
convert_urls : true,
custom_undo_redo_levels : 20,
doctype : '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',
entity_encoding : 'named',
external_filemanager_path:'" . ($row_config_globale['path'] == '/' ? $row_config_globale['path'] : '/' . $row_config_globale['path']) . "js/tinymce/plugins/filemanager/',
external_plugins: { 'filemanager' : '" . ($row_config_globale['path'] == '/' ? $row_config_globale['path'] : '/' . $row_config_globale['path']) . "js/tinymce/plugins/filemanager/plugin.min.js'},
extended_valid_elements: 'pre[*],style[*]',
filemanager_title:'Responsive Filemanager' ,
fontsize_formats : '8px 9px 10px 11px 12px 13px 14px 18px 24px',
forced_root_block : false,
force_br_newlines : true,
force_p_newlines : false,
height : '350',
autoresize_max_height: 800,
image_advtab: true ,
inline_styles : true,
language : '" . tr("TINYMCE_LANGUAGE") . "',
relative_urls: false,
remove_script_host : false,
theme: 'modern',
valid_children : '+body[style|section|title],pre[section|div|p|br|span|img|style|h1|h2|h3|h4|h5],+*[*]',
valid_elements : '+*[*]',
verify_html : false,
menu: {
edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
insert: {title: 'Insert', items: 'media image link | pagebreak'},
view: {title: 'View', items: 'visualaid'},
format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
tools: {title: 'Tools', items: 'code'}
}
});
</script>";
echo '</div>';
echo '<div class="col-md-2">';
echo '<div class="content-box fixed">';
echo '<header><h4>Actions :</h4></header>';
echo "<input type='submit' value=\"" . tr("NEWSLETTER_SAVE_NEW") . "\" class='btn btn-success' />";
echo "<input type='hidden' name='page' value='listes' />";
echo "<input type='hidden' name='token' value='$token' />";
echo '</form>';
echo '</div>';
echo '</div>';
break;
}
wget 'https://lists2.roe3.org/pmnl3/include/manage_backup.php'
<?php
echo '<article class="module width_full fd_jaune">';
$cpt_suscribers = getSubscribersNumbers($cnx,$row_config_globale['table_email'],$list_id);
echo "<h4>".tr("SUBSCRIBER_EXPORT_TITLE")."</h4>
<div class='module_content'>";
if($cpt_suscribers>0){
echo "<div class='alert alert-info'>".tr("SUBSCRIBER_BACKUP")." !</div>
<form action='export.php' method='post'><input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='token' value='$token' />
<br><div align='center'>
<input type='submit' name='Submit' value='".tr("SUBSCRIBER_EXPORT_BTN")."' />
</div></form>";
}else{
echo "<div class='alert alert-info'>".tr("NO_SUBSCRIBER")."</div>";
}
echo "</div>";
echo "</article>";
wget 'https://lists2.roe3.org/pmnl3/include/manage_cron.php'
<?php
if(isset($_POST['NEWTASK'])&&$_POST['NEWTASK']=='SCHEDULE_NEW_TASK'&&$list_id==$_POST['list_id']){
$msg = getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
$subject = stripslashes($msg['subject']);
?>
<div id="planifjob">
<header>
<h4><?php echo tr("SCHEDULE_A_SEND") . ' : ' . $list_name; ?></h4>
</header>
<?php echo tr("SCHEDULE_EXPLAIN", $subject);?>
<form id="cf">
<div align="center">
<table class="tablesorter table table-striped" cellspacing="0" style="max-width:60%">
<tr>
<?php echo tr("SCHEDULE_DATE_HEAD");?>
</tr>
<tr>
<td>
<select name="days" id="days" class='selectpicker' data-width='auto'>
<?php for($days=1;$days<32;$days++){echo "<option value=\"$days\">$days</option>";} ?>
</select>
</td>
<td>
<select name="months" id="months" class='selectpicker' data-width='auto'>
<?php echo tr("SCHEDULE_MONTHS_OPTION");?>
</select>
</td>
<td>
<select name="hours" id="hours" class='selectpicker' data-width='auto'>
<?php for($hours=0;$hours<24;$hours++){echo "<option value=\"$hours\">$hours</option>";} ?>
</select>
</td>
<td>
<select name="mins" id="mins" class='selectpicker' data-width='auto'>
<?php for($min=0;$min<60;$min++){echo "<option value=\"$min\">$min</option>";} ?>
</select>
</td>
</tr>
</table>
</div>
</form>
<div align="center"><?php echo tr("SCHEDULE_RESULT", $subject);?></div>
<div align="center">
<input type="button" value="<?php echo tr("SUBMIT");?>" id="subcronjob" class="btn btn-primary">
</div>
</footer>
<script>
var months=["",<?php echo tr("SCHEDULE_JS_LIST_MONTH");?>],month,hour,minute,day;
function n(n){return n>9?""+n:"0"+n;}
$("#mins").on("change",function(){$("#dmi").html(n($(this).val()))});
$("#hours").on("change",function(){$("#dh").html(n($(this).val()))});
$("#days").on("change",function(){$("#dd").html(n($(this).val()))});
$("#months").on("change",function(){$("#dmo").html(months[$(this).val()])});
$("#subcronjob").click(function(){
var ds='min='+$("#mins").val()+'&hour='+$("#hours").val()+'&day='+$("#days").val()+'&months='+$("#months").val()+'&token=<?php echo $token;?>&action=new&list_id=<?php echo $list_id;?>';
$.ajax({
type:'POST',
url:'include/manager_cron.php',
data:ds,
cache:false,
success:function(data) {
$('#planifjob').hide('slow');
$('#jobcronlist').html(data);
}
});
});
</script>
</div>
<hr>
<?php
}
?>
<div id="jobcronlist">
<?php
$list_crontab = $cnx->query('SELECT job_id,list_id,msg_id,mail_subject,min,hour,day,month,etat
FROM '.$row_config_globale['table_crontab'] .'
WHERE list_id='.$list_id.'
ORDER BY date DESC')->fetchAll(PDO::FETCH_ASSOC);
echo '<header><h4>'.tr("SCHEDULE_SEND_SCHEDULED").' : ' . $list_name . '</h4></header>';
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
'.tr("SCHEDULE_REPORT_HEAD").'
</tr>
</thead>
<tfoot>
<tr>
'.tr("SCHEDULE_REPORT_HEAD").'
</tr>
</tfoot>
<tbody>';
$month_tab=tr("MONTH_TAB");
$step_tab=tr("SCHEDULE_STATE");
if(count($list_crontab)>0){
foreach($list_crontab as $x){
echo '<tr class="'.$x['job_id'].'">';
echo ' <td style="padding-top:14px;">'.$x['job_id'].'</td>';
echo ' <td style="padding-top:14px;">'.$x['list_id'].'</td>';
echo ' <td style="padding-top:14px;">'.stripslashes($x['mail_subject']).'</td>';
echo ' <td style="padding-top:14px;">'.sprintf("%02d",$x['day']).' '.$month_tab[$x['month']].' à '.sprintf("%02d",$x['hour']).'h'.sprintf("%02d",$x['min']).'</td>';
echo ' <td style="padding-top:14px;">'.$step_tab[$x['etat']].'</td>';
if(is_file("logs/list".$x['list_id']."-msg".$x['msg_id'].".txt")){
echo '<td><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?list_id='
.$x['list_id'].'&id_mail='.$x['msg_id'].'&t=l&token='
.$token.'" title="'. tr( "TRACKING_VIEW_LOG_SEND" ) .'">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-search"></i></button></a></td>';
} else {
echo '<td style="padding-top:14px;">'.tr("SCHEDULE_NO_LOG").'.</td>';
}
echo '<td><form id="'.$x['job_id'].'" method="post">';
if($x['etat']=='scheduled'){
echo '<a title="'.tr("SCHEDULE_DELETE_TASK").'" data-toggle="tooltip">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-trash"></i></button></a>
<input type="hidden" value="'.$x['job_id'].'" id="deltask">
<input type="hidden" value="'.$token.'" id="token">
<input type="hidden" value="'.$list_id.'" name="list_id">';
}
echo '</form></td>';
echo '</tr>';
}
echo '</table>';
?>
<script>
$(".deltask").click(function() {
var task=$(this).closest("form").attr("id");
var dt='.'+task;
var ds="deltask="+task+"&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>&action=delete";
$.ajax({type:"POST",
url:"include/manager_cron.php",
data:ds,
success: function(){
$(dt).hide("slow");
}
});
});
</script>
<?php
} else {
echo '<tr>';
echo '<td colspan="5" align="center">'.tr("SCHEDULE_NO_SEND_SCHEDULED").'</td>';
echo '</tr>';
echo '</table>';
}
?>
</div>
wget 'https://lists2.roe3.org/pmnl3/include/manage_senders.php'
<?php
echo "<header><h4>".tr("SENDERS_MANAGEMENT")."</h4></header>";
switch($viewms){
case 'manage':
if(empty($account)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur le choix du compte à modifier.</div>';
echo '</div></div>';
} else {
if(!$row=getOneSenderFull($cnx,$row_config_globale['table_senders'],$account)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur recherche du compte à modifier : <b>'.$account.'</b></div>';
echo '</div></div>';
} else {
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<ul class="nav navbar-nav navbar-left"><li>';
echo '<button class="btn btn-primary">';
echo '<a href="?page=manage_senders&token=' . $token . '&list_id=' . $list_id
.'&viewms=list" data-toggle="tooltip" title="Afficher la liste des comptes émetteurs de mails"><i class="glyphicon glyphicon-list"></i> Liste des émetteurs</a>';
echo '</button>';
echo '</li><li>';
echo ' <button class="btn btn-primary">';
echo '<a href="?page=manage_senders&token=' . $token . '&list_id=' . $list_id
.'&viewms=add" data-toggle="tooltip" title="Ajouter et paramétrer un compte émetteur de mails"><i class="glyphicon glyphicon-pencil"></i> Ajouter un compte émetteur</a>';
echo '</button>';
echo '</li></ul>';
echo '</div></div>';
echo '<div class="row">';
echo '<div class="col-md-12">';
echo '<h3>Modification d\'un compte émetteur</h3>';
echo '</div>';
echo '<form method="post" name="global_senders" action="" enctype="multipart/form-data">';
echo '<div class="col-md-12">';
echo '<div class="module_content">';
echo '<h4>Paramètres généraux</h4>';
echo '</div>';
echo '<div class="form-group"><label>Nom du compte email</label>';
echo '<input type="text" name="msname" class="form-control" value="'.$row[0]['id_sender'].'" readonly></div>';
echo '<div class="form-group"><label>Nom / société / organisation</label>';
echo '<input type="text" name="msorg" class="form-control" value="'.$row[0]['name_organisation'].'"></div>';
echo '<div class="form-group"><label>Adresse email</label>';
echo '<input type="text" name="msmail" class="form-control" value="'.$row[0]['email'].'"></div>';
echo '<div class="form-group"><label>Adresse mail de réponse</label>';
echo '<input type="text" name="msreply" class="form-control" value="'.$row[0]['email_reply'].'"></div>';
echo '<h4>Paramètres du serveur SMTP</h4>';
echo '<div class="form-group"><label>Serveur de messagerie sortant</label>';
echo '<input type="text" name="mssmtp" class="form-control" value="'.$row[0]['smtp'].'"></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Port de connexion</label>';
echo '<input type="text" name="mssmtpport" class="form-control" value="'.$row[0]['smtp_port'].'"></div></div>';
echo '<div class="col-md-6"><div class="form-group"><label>Option du service : none, tls, notls, ssl, ssl/novalidate-cert. (Défaut : notls) :</label>';
echo '<input type="text" name="mssmtpoption" class="form-control" value="'.$row[0]['smtp_option'].'"></div></div></div>';
echo '<div class="form-group"><label>Le serveur SMTP requiert une authentification</label><br>';
if($row[0]['smtp_auth']=='N'){
echo "<input type='radio' name='mssmtpauth' value='N' id='sano' checked='checked'>" . tr("NO") . "
<input type='radio' name='mssmtpauth' value='Y' id='sayes'>" . tr("YES");
}elseif($row[0]['smtp_auth']=='Y'){
echo "<input type='radio' name='mssmtpauth' value='N' id='sano'>" . tr("NO") . "
<input type='radio' name='mssmtpauth' value='Y' id='sayes' checked='checked'>" . tr("YES");
}
echo '</div>';
echo '<div id="msauthform">';
echo '<h5>Informations de connexion</h5>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Identifiant</label>';
echo '<input type="text" name="mssmtpidentifiant" class="form-control idmsauth" value="'.$row[0]['smtp_user'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Mot de passe</label>';
echo '<input type="text" name="mssmtppassword" class="form-control idmsauth" value="'.$row[0]['smtp_password'].'"></div></div>';
echo '</div>';
?>
<script>
$(document).ready(function () {
$('#sano').click(function () {
$('.idmsauth').val('');
$('#msauthform').hide('');
});
$('#sayes').click(function () {
$('#msauthform').show('');
});
});
</script>
<?php
echo '<h4>Paramètres de traitements des mails en bounce (retours mails non délivrés)</h4>';
echo '<div id="msauthform">';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Adresse mail de bounce</label>';
echo '<input type="text" name="msbouncemail" class="form-control" value="'.$row[0]['bounce_email'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Adresse du serveur de bounce</label>';
echo '<input type="text" name="msbounceserveur" class="form-control" value="'.$row[0]['bounce_server'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Identifiant de connexion</label>';
echo '<input type="text" name="msbounceid" class="form-control" value="'.$row[0]['bounce_user'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Mot de passe de connexion</label>';
echo '<input type="text" name="msbouncepass" class="form-control" value="'.$row[0]['bounce_password'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-5"><div class="form-group"><label>Service (POP3 ou IMAP)</label>';
echo '<input type="text" name="msbounceservice" class="form-control" value="'.$row[0]['bounce_service'].'"></div></div>';
echo '<div class="col-md-5"><div class="form-group"><label>Port de connexion</label>';
echo '<input type="text" name="msbounceport" class="form-control" value="'.$row[0]['bounce_port'].'"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Option du service : none, tls, notls, ssl, ssl/novalidate-cert. (Défaut : notls) :</label>';
echo '<input type="text" name="msbounceoption" class="form-control" value="'.$row[0]['bounce_option'].'"></div></div>';
echo '</div>';
echo '</div>';
echo '<div class="row"><div class="col-md-4"></div>';
echo '<div class="col-md-4"><input type="submit" value="Modifier ce compte" class="form-control btn btn-success" /></div>';
echo '<input type="hidden" name="page" value="manage_senders">';
echo '<input type="hidden" name="viewms" value="list">';
echo '<input type="hidden" name="op" value="modifySender">';
echo '<input type="hidden" name="list_id" value="'.$list_id.'">';
echo '<input type="hidden" name="token" value="'.$token.'">';
echo '<div class="col-md-4"></div></div>';
echo '</form>';
}
}
break;
case 'add':
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<ul class="nav navbar-nav navbar-left"><li>';
echo '<button class="btn btn-primary">';
echo '<a href="?page=manage_senders&token=' . $token . '&list_id=' . $list_id
.'&viewms=list" data-toggle="tooltip" title="Afficher la liste des comptes émetteurs de mails"><i class="glyphicon glyphicon-list"></i> Liste des émetteurs</a>';
echo '</button>';
echo '</li></ul>';
echo '</div></div>';
echo '<div class="row">';
echo '<div class="col-md-12">';
echo '<h3>Ajout et paramètrage d\'un compte émetteur</h3>';
echo '</div>';
echo '<form method="post" name="global_senders" enctype="multipart/form-data">';
echo '<div class="col-md-12">';
echo '<div class="module_content">';
echo '<h4>Paramètres généraux</h4>';
echo '</div>';
echo '<div class="form-group"><label>Nom du compte email</label>';
echo '<input type="text" name="msname" class="form-control"></div>';
echo '<div class="form-group"><label>Nom / société / organisation</label>';
echo '<input type="text" name="msorg" class="form-control"></div>';
echo '<div class="form-group"><label>Adresse email</label>';
echo '<input type="text" name="msmail" class="form-control"></div>';
echo '<div class="form-group"><label>Adresse mail de réponse</label>';
echo '<input type="text" name="msreply" class="form-control"></div>';
echo '<h4>Paramètres du serveur SMTP</h4>';
echo '<div class="form-group"><label>Serveur de messagerie sortant</label>';
echo '<input type="text" name="mssmtp" class="form-control"></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Port de connexion</label>';
echo '<input type="text" name="mssmtpport" class="form-control"></div></div>';
echo '<div class="col-md-6"><div class="form-group"><label>Option du service : none, tls, notls, ssl, ssl/novalidate-cert. (Défaut : notls) :</label>';
echo '<input type="text" name="mssmtpoption" class="form-control"></div></div></div>';
echo '<div class="form-group"><label>Le serveur SMTP requiert une authentification</label><br>';
if($row_config_globale['smtp_auth']=='0'){
echo "<input type='radio' name='mssmtpauth' value='N' id='sano' checked='checked'>" . tr("NO") . "
<input type='radio' name='mssmtpauth' value='Y' id='sayes'>" . tr("YES");
}elseif($row_config_globale['end_task']=='1'){
echo "<input type='radio' name='mssmtpauth' value='N' id='sano'>" . tr("NO") . "
<input type='radio' name='mssmtpauth' value='Y' id='sayes' checked='checked'>" . tr("YES");
}
echo '</div>';
echo '<div id="msauthform">';
echo '<h5>Informations de connexion</h5>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Identifiant</label>';
echo '<input type="text" name="mssmtpidentifiant" class="form-control" id="idmsauth"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Mot de passe</label>';
echo '<input type="text" name="mssmtppassword" class="form-control"></div></div>';
echo '</div>';
?>
<script>
$(document).ready(function () {
$('#sano').click(function () {
$('#msauthform').hide('slow');
$('#idmspass').val('');
$('#idmsauth').val('');
});
$('#sayes').click(function () {
$('#msauthform').show('slow');
});
});
</script>
<?php
echo '<h4>Paramètres de traitements des mails en bounce (retours mails non délivrés)</h4>';
echo '<div id="msauthform">';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Adresse mail de bounce</label>';
echo '<input type="text" name="msbouncemail" class="form-control" id="idmsauth"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Adresse du serveur de bounce</label>';
echo '<input type="text" name="msbounceserveur" class="form-control"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Identifiant de connexion</label>';
echo '<input type="text" name="msbounceid" class="form-control"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Mot de passe de connexion</label>';
echo '<input type="text" name="msbouncepass" class="form-control"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-5"><div class="form-group"><label>Service (POP3 ou IMAP)</label>';
echo '<input type="text" name="msbounceservice" class="form-control"></div></div>';
echo '<div class="col-md-5"><div class="form-group"><label>Port de connexion</label>';
echo '<input type="text" name="msbounceport" class="form-control"></div></div>';
echo '<div class="col-md-2"></div>';
echo '<div class="col-md-10"><div class="form-group"><label>Option du service : none, tls, notls, ssl, ssl/novalidate-cert. (Défaut : notls) :</label>';
echo '<input type="text" name="msbounceoption" class="form-control"></div></div>';
echo '</div>';
echo '</div>';
echo '<div class="row"><div class="col-md-4"></div>';
echo '<div class="col-md-4"><input type="submit" value="Ajouter ce compte" class="form-control btn btn-success" /></div>';
echo '<input type="hidden" name="page" value="manage_senders">';
echo '<input type="hidden" name="viewms" value="list">';
echo '<input type="hidden" name="op" value="addSender">';
echo '<input type="hidden" name="list_id" value="'.$list_id.'">';
echo '<input type="hidden" name="token" value="'.$token.'">';
echo '<div class="col-md-4"></div></div>';
echo '</form>';
break;
default:
case 'list':
if($op=='modifySender'){
$sqlModifySender = 'UPDATE '.$row_config_globale['table_senders'].' SET
name_organisation = '.escape_string($cnx , $cnx->CleanInput($_POST['msorg'])).',
email = '.escape_string($cnx , $cnx->CleanInput($_POST['msmail'])).',
email_reply = '.escape_string($cnx , $cnx->CleanInput($_POST['msreply'])).',
smtp = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtp'])).',
smtp_port = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpport'])).',
smtp_option = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpoption'])).',
smtp_auth = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpauth'])).',
smtp_user = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpidentifiant'])).',
smtp_password = '.escape_string($cnx , $cnx->CleanInput($_POST['mssmtppassword'])).',
bounce_email = '.escape_string($cnx , $cnx->CleanInput($_POST['msbouncemail'])).',
bounce_server = '.escape_string($cnx , $cnx->CleanInput($_POST['msbounceserveur'])).',
bounce_user = '.escape_string($cnx , $cnx->CleanInput($_POST['msbounceid'])).',
bounce_password = '.escape_string($cnx , $cnx->CleanInput($_POST['msbouncepass'])).',
bounce_service = '.escape_string($cnx , $cnx->CleanInput($_POST['msbounceservice'])).',
bounce_port = '.escape_string($cnx , $cnx->CleanInput($_POST['msbounceport'])).',
bounce_option = '.escape_string($cnx , $cnx->CleanInput($_POST['msbounceoption'])).'
WHERE id_sender = '.escape_string($cnx , $cnx->CleanInput($_POST['msname']));
if (!$cnx->query($sqlModifySender)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur modification du compte : <b>'.$cnx->CleanInput($_POST['msname']).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Compte <b>'.$cnx->CleanInput($_POST['msname']).'</b> mis à jour correctement.</b></div>';
echo '</div></div>';
}
}
if($op=='addSender'){
$sqlAddSender = 'INSERT INTO '.$row_config_globale['table_senders'].'
(id_sender, name_organisation, email, email_reply, smtp, smtp_port, smtp_option,
smtp_auth, smtp_user, smtp_password, bounce_email, bounce_server, bounce_user,
bounce_password, bounce_service,bounce_port, bounce_option)
VALUES ('.escape_string($cnx , $cnx->CleanInput($_POST['msname'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msorg'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msmail'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msreply'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtp'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpport'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpoption'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpauth'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtpidentifiant'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['mssmtppassword'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbouncemail'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbounceserveur'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbounceid'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbouncepass'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbounceservice'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbounceport'])).',
'.escape_string($cnx , $cnx->CleanInput($_POST['msbounceoption'])).'
)';
if (!$cnx->query($sqlAddSender)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur création du compte : <b>'.$cnx->CleanInput($_POST['msname']).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Création du compte <b>'.$cnx->CleanInput($_POST['msname']).'</b> correcte.</b></div>';
echo '</div></div>';
}
}
if($op=='delSender'){
$sqlDelSender = 'DELETE FROM '.$row_config_globale['table_senders'].'
WHERE id_sender = '.escape_string($cnx , $cnx->CleanInput($account));
if (!$cnx->query($sqlDelSender)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur suppression du compte : <b>'.$cnx->CleanInput($account).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Compte <b>'.$cnx->CleanInput($account).'</b> supprimé correctement</b></div>';
echo '</div></div>';
}
}
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<ul class="nav navbar-nav navbar-left"><li>';
echo '<button class="btn btn-primary">';
echo '<a href="?page=manage_senders&token=' . $token . '&list_id=' . $list_id
.'&viewms=add" data-toggle="tooltip" title="Ajouter et paramétrer un compte émetteur de mails"><i class="glyphicon glyphicon-pencil"></i> Ajouter un compte émetteur</a>';
echo '</button>';
echo '</li></ul>';
echo '</div></div>';
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatable">
<thead>
<tr>
<th style="text-align:left">Compte</th>
<th style="text-align:center">Adresse Email</th>
<th style="text-align:center">Serveur SMTP</th>
<th style="text-align:center">Dernière campagne</th>
<th style="text-align:center">Gérer</th>
</tr>
</thead>
<tfoot>
<tr>
<th style="text-align:left">Compte</th>
<th style="text-align:center">Adresse Email</th>
<th style="text-align:center">Serveur SMTP</th>
<th style="text-align:center">Dernière campagne</th>
<th style="text-align:center">Gérer</th>
</tr>
</tfoot>
<tbody>';
$row=getSendersFull($cnx,$row_config_globale['table_senders'],$row_config_globale['table_archives']);
foreach ($row as $item){
echo '<tr>
<td style="text-align:left">'.$item['id_sender'].($item['name_organisation']!=''?' ('.$item['name_organisation'].')':'').'</td>
<td style="text-align:center">'.$item['email'].'</td>
<td style="text-align:center">'.$item['smtp'].'</td>
<td style="text-align:center">'.
($item['subject']!=''?
'<a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="tracklinks.php?id_mail='.$item['id'].'&list_id='.$list_id.'&token='
.$token.'" title="'. tr( "TRACKING_DETAILLED_CLICKED_LINKS" ) .'">'.$item['subject'].'</a>':'En attente de campagne')
.'</td>
<td style="text-align:center">
<a href="?page=manage_senders&token=' . $token
. '&list_id=' . $list_id . '&account='.$item['email'].'&viewms=manage"
data-toggle="tooltip" title="Modifier ce compte">
<button type="button" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-pencil"></span></button></a>';
if(count($row>1)) {
echo '<a href="?page=manage_senders&token=' . $token
. '&list_id=' . $list_id . '&account='.$item['id_sender'].'&viewms=list&op=delSender"
data-toggle="tooltip" title="Supprimer cet expéditeur ?" onclick="return confirm(\'Supprimer cet expéditeur ?\')">
<button type="button" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-remove"></span></button></a>';
}
echo '</td>
</tr> ';
}
echo '</tbody></table>';
break;
}
wget 'https://lists2.roe3.org/pmnl3/include/manage_users.php'
<?php
echo "<header><h4>".tr("USERS_RIGHTS_MANAGEMENT")."</h4></header>";
switch($viewms){
case 'manage':
if(empty($account)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur le choix du compte à modifier.</div>';
echo '</div></div>';
} else {
if(!$row=getOneUserFull($cnx,$row_config_globale['table_users'],$account)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur recherche du compte à modifier : <b>'.$account.'</b></div>';
echo '</div></div>';
} else {
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<div class="subnav_menu">';
echo '<a href="?page=manage_users&token=' . $token . '&list_id=' . $list_id
.'&viewms=list" data-toggle="tooltip" title="Afficher la liste des comptes utilisateurs" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-list"></i> Liste des utilisateurs</a>';
echo ' <a href="?page=manage_users&token=' . $token . '&list_id=' . $list_id
.'&viewms=add" data-toggle="tooltip" title="Ajouter et paramétrer un compte utilisateur" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-pencil"></i> Ajouter un compte utilisateur</a>';
echo '</div>';
echo '</div></div>';
echo '<div class="row">';
echo '<div class="col-md-12">';
echo '<h3>Modification d\'un compte utilisateur</h3>';
echo '</div>';
echo '<form method="post" name="global_users" action="" enctype="multipart/form-data">';
echo '<div class="col-md-12">';
echo '<div class="module_content">';
echo '<h4>Paramètres et droits du compte '.$row[0]['id_user'].' </h4>';
echo '</div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Nom du compte</label>';
echo '<input type="text" name="usname" class="form-control" value="'.$row[0]['id_user'].'" readonly></div>';
echo '</div>';
echo '<div class="col-md-6"><div class="form-group"><label>Adresse email</label>';
echo '<input type="text" name="usmail" class="form-control" value="'.$row[0]['email'].'"></div>';
echo '</div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Mot de passe</label> (saisir un nouveau mot de passe ou laisser à blanc pour ne pas le modifier)';
echo '<input type="text" name="uspass" class="form-control" value=""></div>';
echo '</div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les listes</label>';
echo '<div>Ce droit permet de gérer les listes des abonnés : créer une liste, fusionner des listes, supprimer une liste, ainsi que paramètrer la liste<br>
<b>Vous devez sélectionner une liste au minimum pour si vous laissez ce droit à \'Off\' !</b></div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['listes']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="listes"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les abonnés</label>';
echo '<div>Ce droit permet de gérer les listes des abonnés : ajouter un abonné, supprimer un abonné, importer une liste, corriger les abonnés en erreur</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['abonnes']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="abonnes"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit de rédaction</label>';
echo '<div>Ce droit permet de rédiger un nouveau message, créer des templates, accéder aux archives des messages et d\'envoyer des mails de prévisualisation</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['redaction']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="redaction"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les envois</label>';
echo '<div>Ce droit permet d\'envoyer les messages de previsualisation, d\'envoyer une campagne en direct, de planifier une campagne.<br>
<b>Ce droit nécessite le droit de rédaction pour pouvoir être utilisé !</b></div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['envois']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="envois"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les retours</label>';
echo '<div>Ce droit permet d\'accéder aux traitements des mails en retour après envoi des campagnes</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['bounce']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="bounce"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit d\'accès aux statistiques</label>';
echo '<div>Ce droit permet de visualiser les statistiques globales ainsi que les statistiques des listes</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['stats']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="stats"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Enregsitrer les actions</label>';
echo '<div>Les actions de cet utilisateur peuvent être enregistrées pour être visualisées ultérieurement</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" '
.($row[0]['log']=='Y'?'checked':'').' data-toggle="toggle" data-size="small" name="log"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Choix de la liste ou des listes pour action :</label>';
echo '<div>Les actions définies de cet utilisateur peuvent porter sur toutes les listes ou sur une liste particulière à sélectionner</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<label>';
echo '<select name="liste" class="selectpicker" data-width="auto">';
$list=list_newsletter($cnx,$row_config_globale['table_listsconfig']);
echo '<option value="0">Toutes les listes</option>';
foreach ($list as $item) {
echo '<option value="'.$item['list_id'].'" '.($item['list_id']==$row[0]['liste']?' selected ':'').'>'.$item['newsletter_name'].'</option>';
}
echo '</select>';
echo '</label></div></div></div>';
echo '<div class="row"><div class="col-md-4"></div>';
echo '<div class="col-md-4"><input type="submit" value="Modifier ce compte" class="form-control btn btn-success" /></div>';
echo '<input type="hidden" name="page" value="manage_users">';
echo '<input type="hidden" name="viewms" value="list">';
echo '<input type="hidden" name="op" value="modifyUser">';
echo '<input type="hidden" name="list_id" value="'.$list_id.'">';
echo '<input type="hidden" name="token" value="'.$token.'">';
echo '<div class="col-md-4"></div></div>';
echo '</form>';
}
}
break;
case 'add':
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<div class="subnav_menu">';
echo '<a href="?page=manage_users&token=' . $token . '&list_id=' . $list_id
.'&viewms=list" data-toggle="tooltip" title="Afficher la liste des utilisateurs et leurs droits" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-list"></i> Liste des utilisateurs</a>';
echo '</div>';
echo '</div></div>';
echo '<div class="row">';
echo '<div class="col-md-12">';
echo '<h3>Ajout et paramètrage d\'un compte utilisateur</h3>';
echo '</div>';
echo '<form method="post" name="global_users" action="" enctype="multipart/form-data">';
echo '<div class="col-md-12">';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Nom du compte</label>';
echo '<input type="text" name="usname" class="form-control" required autofocus></div>';
echo '</div>';
echo '<div class="col-md-6"><div class="form-group"><label>Adresse email</label>';
echo '<input type="text" name="usmail" class="form-control" autocomplete="nope" required></div>';
echo '</div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Mot de passe</label>';
echo '<input type="text" name="uspass" class="form-control" value="" autocomplete="nope" required></div>';
echo '</div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les listes</label>';
echo '<div>Ce droit permet de gérer les listes des abonnés : créer une liste, fusionner des listes, supprimer une liste, ainsi que paramètrer la liste<br>
<b>Vous devez sélectionner une liste au minimum pour si vous laissez ce droit à \'Off\' !</b></div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="listes"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les abonnés</label>';
echo '<div>Ce droit permet de gérer les abonnés : ajouter un abonné, supprimer un abonné, importer une liste, corriger les abonnés en erreur</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="abonnes"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit de rédaction</label>';
echo '<div>Ce droit permet de rédiger un nouveau message, créer des templates, accéder aux archives des messages et d\'envoyer des mails de prévisualisation</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="redaction"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les envois</label>';
echo '<div>Ce droit permet d\'envoyer les messages de previsualisation, d\'envoyer une campagne en direct, de planifier une campagne<br>
<b>Ce droit nécessite le droit de rédaction pour pouvoir être utilisé !</b></div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="envois"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit sur les retours</label>';
echo '<div>Ce droit permet d\'accéder aux traitements des mails en retour après envoi des campagnes</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="bounce"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Droit d\'accès aux statistiques</label>';
echo '<div>Ce droit permet de visualiser les statistiques globales ainsi que les statistiques des listes</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="stats"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Enregistrer les actions</label>';
echo '<div>Les actions de cet utilisateur peuvent être enregistrées pour être visualisées ultérieurement</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<div class="checkbox"><label><input type="checkbox" data-toggle="toggle" data-size="small" name="log"></label></div></div></div></div>';
echo '<div class="row"><div class="col-md-6"><div class="form-group"><label>Choix de la liste ou des listes pour action :</label>';
echo '<div>Les actions définies de cet utilisateur peuvent porter sur toutes les listes ou sur une liste particulière à sélectionner</div>';
echo '</div></div>';
echo '<div class="col-md-6"><div class="form-group"><div style="padding:5px"></div>';
echo '<label>';
echo '<select name="liste" class="selectpicker" data-width="auto">';
$list=list_newsletter($cnx,$row_config_globale['table_listsconfig']);
echo '<option value="0">Toutes les listes</option>';
foreach ($list as $item) {
echo '<option value="'.$item['list_id'].'">'.$item['newsletter_name'].'</option>';
}
echo '</select>';
echo '</label></div></div></div>';
echo '<div class="row"><div class="col-md-4"></div>';
echo '<div class="col-md-4"><input type="submit" value="Ajouter ce compte" class="form-control btn btn-success" /></div>';
echo '<input type="hidden" name="page" value="manage_users">';
echo '<input type="hidden" name="viewms" value="list">';
echo '<input type="hidden" name="op" value="addUser">';
echo '<input type="hidden" name="list_id" value="'.$list_id.'">';
echo '<input type="hidden" name="token" value="'.$token.'">';
echo '<div class="col-md-4"></div></div>';
echo '</form>';
break;
default:
case 'list':
if($op=='modifyUser'){
if(isset($_POST['listes'])&&($_POST['listes']=='on')) { $listes='Y'; } else { $listes='N'; }
if(isset($_POST['abonnes'])&&($_POST['abonnes']=='on')) { $abonnes='Y'; } else { $abonnes='N'; }
if(isset($_POST['redaction'])&&($_POST['redaction']=='on')) { $redaction='Y'; } else { $redaction='N'; }
if(isset($_POST['envois'])&&($_POST['envois']=='on')) { $envois='Y'; } else { $envois='N'; }
if(isset($_POST['bounce'])&&($_POST['bounce']=='on')) { $bounce='Y'; } else { $bounce='N'; }
if(isset($_POST['stats'])&&($_POST['stats']=='on')) { $stats='Y'; } else { $stats='N'; }
if(isset($_POST['log'])&&($_POST['log']=='on')) { $log='Y'; } else { $log='N'; }
if(isset($_POST['liste'])&&($_POST['liste']!='')) { $liste=$_POST['liste']; } else { $liste=''; }
if(isset($_POST['uspass'])&&(trim($_POST['uspass'])!='')){
$password = 'password = '.escape_string($cnx, md5($cnx->CleanInput($_POST['uspass']))).',';
} else {
$password = '';
}
$sqlmodifyUser = 'UPDATE '.$row_config_globale['table_users'].' SET
email = '.escape_string($cnx , $cnx->CleanInput($_POST['usmail'])).',
'.$password.'
listes = '.escape_string($cnx , $cnx->CleanInput($listes)).',
abonnes = '.escape_string($cnx , $cnx->CleanInput($abonnes)).',
redaction = '.escape_string($cnx , $cnx->CleanInput($redaction)).',
envois = '.escape_string($cnx , $cnx->CleanInput($envois)).',
bounce = '.escape_string($cnx , $cnx->CleanInput($bounce)).',
stats = '.escape_string($cnx , $cnx->CleanInput($stats)).',
liste = '.escape_string($cnx , $cnx->CleanInput($liste)).',
log = '.escape_string($cnx , $cnx->CleanInput($log)).'
WHERE id_user = '.escape_string($cnx , $cnx->CleanInput($_POST['usname']));
if (!$cnx->query($sqlmodifyUser)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur modification du compte : <b>'.$cnx->CleanInput($_POST['usname']).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Compte <b>'.$cnx->CleanInput($_POST['usname']).'</b> mis à jour correctement.</b></div>';
echo '</div></div>';
}
}
if($op=='addUser'){
if(isset($_POST['usname'])&&($_POST['usname']!='')) { $id_user=$_POST['usname']; }
if(isset($_POST['usmail'])&&($_POST['usmail']!='')) { $email=$_POST['usmail']; }
if(isset($_POST['listes'])&&($_POST['listes']=='on')) { $listes='Y'; } else { $listes='N'; }
if(isset($_POST['abonnes'])&&($_POST['abonnes']=='on')) { $abonnes='Y'; } else { $abonnes='N'; }
if(isset($_POST['redaction'])&&($_POST['redaction']=='on')) { $redaction='Y'; } else { $redaction='N'; }
if(isset($_POST['envois'])&&($_POST['envois']=='on')) { $envois='Y'; } else { $envois='N'; }
if(isset($_POST['bounce'])&&($_POST['bounce']=='on')) { $bounce='Y'; } else { $bounce='N'; }
if(isset($_POST['stats'])&&($_POST['stats']=='on')) { $stats='Y'; } else { $stats='N'; }
if(isset($_POST['log'])&&($_POST['log']=='on')) { $log='Y'; } else { $log='N'; }
if(isset($_POST['liste'])&&($_POST['liste']!='')) { $liste=$_POST['liste']; } else { $liste=''; }
if(isset($_POST['uspass'])&&(trim($_POST['uspass'])!='')){ $password=$_POST['uspass']; }
$sqladdUser = 'INSERT INTO '.$row_config_globale['table_users'].'
(id_user, email, password, listes, abonnes, redaction, envois, bounce,
stats, liste ,log)
VALUES ('.escape_string($cnx , $cnx->CleanInput($id_user)).',
'.escape_string($cnx , $cnx->CleanInput($email)).',
'.escape_string($cnx, md5($cnx->CleanInput($_POST['uspass']))).',
'.escape_string($cnx , $cnx->CleanInput($listes)).',
'.escape_string($cnx , $cnx->CleanInput($abonnes)).',
'.escape_string($cnx , $cnx->CleanInput($redaction)).',
'.escape_string($cnx , $cnx->CleanInput($envois)).',
'.escape_string($cnx , $cnx->CleanInput($bounce)).',
'.escape_string($cnx , $cnx->CleanInput($stats)).',
'.escape_string($cnx , $cnx->CleanInput($liste)).',
'.escape_string($cnx , $cnx->CleanInput($log)).'
)';
if (!$cnx->query($sqladdUser)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur création du compte : <b>'.$cnx->CleanInput($id_user).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Création du compte <b>'.$cnx->CleanInput($id_user).'</b> correcte.</b></div>';
echo '</div></div>';
}
}
if($op=='delUser'){
$sqldelUser = 'DELETE FROM '.$row_config_globale['table_users'].'
WHERE id_user = '.escape_string($cnx , $cnx->CleanInput($account));
if (!$cnx->query($sqldelUser)) {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-danger">Erreur sur suppression du compte : <b>'.$cnx->CleanInput($account).'</b>.</div>';
echo '</div></div>';
} else {
echo '<div class="row"><div class="col-md-12">';
echo '<div class="alert alert-success">Compte <b>'.$cnx->CleanInput($account).'</b> supprimé correctement</b></div>';
echo '</div></div>';
}
}
echo '<div class="row" style="margin-bottom:9px;"><div class="col-md-12">';
echo '<div class="subnav_menu">';
echo '<a href="?page=manage_users&token=' . $token . '&list_id=' . $list_id
.'&viewms=add" data-toggle="tooltip" title="Ajouter un utilisateur et paramétrer ses droits" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-pencil"></i> Ajouter un utilisateur</a>';
echo '</div>';
echo '</div></div>';
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatable">
<thead>
<tr>
<th style="text-align:left">Compte</th>
<th style="text-align:center">Droits : </th>
<th style="text-align:center">Listes</th>
<th style="text-align:center">Abonnés</th>
<th style="text-align:center">Rédaction</th>
<th style="text-align:center">Envois</th>
<th style="text-align:center">Stats</th>
<th style="text-align:center">Bounce</th>
<th style="text-align:center">Sur liste :</th>
<th></th>
<th style="text-align:center">Gérer</th>
</tr>
</thead>
<tfoot>
<tr>
<th style="text-align:left">Compte</th>
<th style="text-align:center">Droits : </th>
<th style="text-align:center">Listes</th>
<th style="text-align:center">Abonnés</th>
<th style="text-align:center">Rédaction</th>
<th style="text-align:center">Envois</th>
<th style="text-align:center">Stats</th>
<th style="text-align:center">Bounce</th>
<th style="text-align:center">Sur liste :</th>
<th></th>
<th style="text-align:center">Gérer</th>
</tr>
</tfoot>
<tbody>';
$row=getUsersFull($cnx,$row_config_globale['table_users'],$row_config_globale['table_listsconfig']);
foreach ($row as $item){
echo '<tr>
<td style="text-align:left">'.$item['id_user'].'</td>
<td></td>
<td style="text-align:center">'.($item['listes']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['abonnes']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['redaction']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['envois']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['stats']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['bounce']=='Y'?'<i class="glyphicon glyphicon-ok" style="color:green" />':'<i class="glyphicon glyphicon-remove" style="color:red"/>').'</td>
<td style="text-align:center">'.($item['liste']>0?'('.$item['liste'].') '.$item['newsletter_name']:'Toutes listes').'</td>';
if(is_file("logs/".$item['id_user'].".log")){
echo '<td style="text-align:center"><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?token='
.$token.'&u='.$item['id_user'].'&t=u&" title="Voir le log des action du compte '.$item['id_user'].'"><i class="glyphicon glyphicon-search"></i></a></td>';
} else {
echo '<td style="text-align:center">Pas de log</td>';
}
echo '<td style="text-align:center">
<a href="?page=manage_users&token=' . $token
. '&list_id=' . $list_id . '&account='.$item['email'].'&viewms=manage"
data-toggle="tooltip" title="Modifier cet utilisateur">
<button type="button" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-pencil"></span></button></a>';
if(count($row>1)) {
echo '<a href="?page=manage_users&token=' . $token
. '&list_id=' . $list_id . '&account='.$item['id_user'].'&viewms=list&op=delUser"
data-toggle="tooltip" title="Supprimer cet utilisateur ?" onclick="return confirm(\'Supprimer le compte utilisateur '.str_replace("'",' ',$item['id_user']).' ?\')">
<button type="button" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-remove"></span></button></a>';
}
echo '</td>
</tr> ';
}
echo '</tbody></table>';
break;
}
wget 'https://lists2.roe3.org/pmnl3/include/manager_cron.php'
<?php
session_start();
if ( !file_exists( "config.php" ) ) {
header( "Location:../install.php" );
exit;
} else {
include( "../_loader.php" );
$token = ( empty( $_POST[ 'token' ] ) ? "" : $_POST[ 'token' ] );
if ( !isset( $token ) || $token == "" )
$token = ( empty( $_GET[ 'token' ] ) ? "" : $_GET[ 'token' ] );
if ( !tok_val( $token ) ) {
header( "Location:../login.php?error=2" );
exit;
}
}
$row_config_globale = $cnx->SqlRow( "SELECT * FROM $table_global_config" );
( count( $row_config_globale ) > 0 ) ? $r = 'SUCCESS' : $r = '';
if ( $r != 'SUCCESS' ) {
include( "lang/english.php" );
echo "<div class='error'>" . tr( $r ) . "<br>";
echo "</div>";
exit;
}
if ( empty( $row_config_globale[ 'language' ] ) )
$row_config_globale[ 'language' ] = "english";
include( "lang/" . $row_config_globale[ 'language' ] . ".php" );
$actions_possibles = array(
'update',
'delete',
'new',
'manage'
);
if ( isset( $_POST[ 'action' ] ) && in_array( $_POST[ 'action' ], $actions_possibles ) ) {
$action = $_POST[ 'action' ];
} else {
header( "Location:../login.php?error=2" );
exit;
}
$list_id = ( empty( $_POST[ 'list_id' ] ) ? ( empty( $_GET[ 'list_id' ] ) ? die( 'Demande de transaction impossible' ) : $_GET[ 'list_id' ] ) : $_POST[ 'list_id' ] );
$continue = true;
if ( $continue ) {
$cronID = cronID();
$cnx->query( "SET NAMES UTF8" );
exec( "crontab -l > " . __DIR__ . "/backup_crontab/$cronID" );
switch ( $action ) {
case 'new':
$pmin = intval( $_POST[ 'min' ] );
$phour = intval( $_POST[ 'hour' ] );
$pday = intval( $_POST[ 'day' ] );
$pmonths = intval( $_POST[ 'months' ] );
$min = ( is_numeric( $pmin ) && $pmin < 60 && $pmin >= 0 ? $pmin : die( 'min vide :' . $pmin ) );
$hour = ( is_numeric( $phour ) && $phour < 24 && $phour >= 0 ? $phour : die( 'hour vide :' . $phour ) );
$day = ( is_numeric( $pday ) && $pday < 32 && $pday > 0 ? $pday : die( 'day vide :' . $pday ) );
$month = ( is_numeric( $pmonths ) && $pmonths < 13 && $pmonths > 0 ? $pmonths : die( 'months vide : ' . $pmonths ) );
$id = $cnx->query( 'SELECT id FROM ' . $row_config_globale[ 'table_archives' ] . ' ORDER BY id DESC' )->fetch( PDO::FETCH_ASSOC );
$msg_id = $id[ 'id' ] + 1;
$new_task = "$min $hour $day $month * " . exec( "command -v php" ) . " " . __DIR__ . "/task.php $cronID >/dev/null # JOB : $cronID list_id : $list_id msg_id : $msg_id date : " . date( "Y-m-d H:i:s" ) . "###";
append_cronjob( $new_task . PHP_EOL );
$cnx->query( 'INSERT INTO ' . $row_config_globale[ 'table_crontab' ] . ' VALUES
("","' . $cronID . '","' . $list_id . '","' . $msg_id . '","' . $min . '","' . $hour . '",
"' . $day . '","' . $month . '","scheduled","' . addslashes( $new_task ) . '",
(SELECT textarea FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '"),
(SELECT subject FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '"),"html",CURTIME())' );
$cnx->query( 'UPDATE ' . $row_config_globale[ 'table_upload' ] . ' SET msg_id=' . $msg_id . ' WHERE list_id=' . $list_id . ' AND msg_id=0' );
$cnx->query( 'INSERT INTO ' . $row_config_globale['table_archives'] . ' (id , date , type , subject , message , list_id)
SELECT "' . $msg_id . '","' . date( "Y-m-d H:i:s" ) . '" , type , mail_subject , mail_body , list_id
FROM ' . $row_config_globale['table_crontab'] . '
WHERE list_id = "' . $list_id . '"
AND job_id = "' . $cronID . '"');
$cnx->query( 'UPDATE ' . $row_config_globale['table_archives'] . ' SET
sender_email = (SELECT sender_email FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '"),
draft = (SELECT draft FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '"),
preheader = (SELECT preheader FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '" )' );
$cnx->query( 'DELETE FROM ' . $row_config_globale[ 'table_sauvegarde' ] . ' WHERE list_id = "' . $list_id . '"' );
$continue_transaction = true;
break;
case 'update':
$continue_transaction = false;
break;
case 'delete':
$min = ( isset( $_POST[ 'deltask' ] ) && $_POST[ 'deltask' ] != '' ? $_POST[ 'deltask' ] : die( ) );
$detail_crontab = $cnx->query( 'SELECT job_id,list_id,msg_id,mail_subject,min,hour,day,month,etat,command
FROM ' . $row_config_globale[ 'table_crontab' ] . '
WHERE list_id=' . $list_id . '
AND job_id="' . $_POST[ 'deltask' ] . '"' )->fetchAll( PDO::FETCH_ASSOC );
if ( count( $detail_crontab ) == 1 && $detail_crontab[ 0 ][ 'etat' ] == 'done' ) {
$cnx->query( 'DELETE FROM ' . $row_config_globale[ 'table_crontab' ] . '
WHERE list_id=' . $list_id . '
AND job_id="' . $_POST[ 'deltask' ] . '"' );
return true;
} elseif ( count( $detail_crontab ) == 1 && $detail_crontab[ 0 ][ 'etat' ] != 'done' ) {
$output = shell_exec( 'crontab -l' );
if ( stristr( $output, $detail_crontab[ 0 ][ 'command' ] ) ) {
$newcron = str_replace( $detail_crontab[ 0 ][ 'command' ], '', $output );
file_put_contents( 'backup_crontab/' . $detail_crontab[ 0 ][ 'job_id' ] . '_delete', $newcron . PHP_EOL );
exec( 'crontab ' . __DIR__ . '/backup_crontab/' . $detail_crontab[ 0 ][ 'job_id' ] . '_delete' );
} else {
// echo tr("SCHEDULE_TASK_NOT_FOUND");
}
$cnx->query( 'DELETE FROM ' . $row_config_globale[ 'table_crontab' ] . '
WHERE list_id=' . $list_id . '
AND job_id="' . $_POST[ 'deltask' ] . '"' );
return true;
exit( 0 );
} elseif ( count( $detail_crontab ) != 1 ) {
return false;
exit( );
}
$continue_transaction = false;
break;
}
if ( $continue_transaction ) {
$list_crontab = $cnx->query( 'SELECT job_id,list_id,mail_subject,min,hour,day,month,etat
FROM ' . $row_config_globale[ 'table_crontab' ] . '
WHERE list_id=' . $list_id . '
ORDER BY date DESC' )->fetchAll( PDO::FETCH_ASSOC );
echo '<header><h4>' . tr( "SCHEDULE_SEND_SCHEDULED" ) . ' : </h4></header>';
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
' . tr( "SCHEDULE_REPORT_HEAD" ) . '
</tr>
</thead>
<tfoot>
<tr>
' . tr( "SCHEDULE_REPORT_HEAD" ) . '
</tr>
</tfoot>
<tbody>';
$month_tab = tr( "MONTH_TAB" );
$step_tab = tr( "SCHEDULE_STATE" );
if ( count( $list_crontab ) > 0 ) {
foreach ( $list_crontab as $x ) {
echo '<tr';
if ( $x[ 'job_id' ] == $cronID ) {
echo ' style="background:#B5E5EF"';
}
echo ' class="'.$x['job_id'].'"';
echo '>';
echo ' <td style="padding-top:14px;">' . $x[ 'job_id' ] . '</td>';
echo ' <td style="padding-top:14px;">' . $x[ 'list_id' ] . '</td>';
echo ' <td style="padding-top:14px;">' . stripslashes( $x[ 'mail_subject' ] ) . '</td>';
echo ' <td style="padding-top:14px;">' . sprintf( "%02d", $x[ 'day' ] ) . ' ' . $month_tab[ $x[ 'month' ] ] . ' à ' . sprintf( "%02d", $x[ 'hour' ] ) . 'h' . sprintf( "%02d", $x[ 'min' ] ) . '</td>';
echo ' <td style="padding-top:14px;">' . $x[ 'etat' ] . '</td>';
if(is_file("logs/list".$x['list_id']."-msg".$x['msg_id'].".txt")){
echo '<td><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?list_id='
.$x['list_id'].'&id_mail='.$x['msg_id'].'&t=l&token='
.$token.'" title="'. tr( "TRACKING_VIEW_LOG_SEND" ) .'">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-search"></i></button></a></td>';
} else {
echo '<td style="padding-top:14px;">'.tr("SCHEDULE_NO_LOG").'.</td>';
}
echo '<td><form id="'.$x['job_id'].'" method="post">';
if($x['etat']=='scheduled'){
echo '<a title="'.tr("SCHEDULE_DELETE_TASK").'" data-toggle="tooltip">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-trash"></i></button></a>
<input type="hidden" value="'.$x['job_id'].'" id="deltask">
<input type="hidden" value="'.$token.'" id="token">
<input type="hidden" value="'.$list_id.'" name="list_id">';
}
echo '</form></td>';
echo '</tr>';
}
echo '</table>';
?>
<script>
$(".deltask").click(function() {
var task=$(this).closest("form").attr("id");
var dt='.'+task;
var ds="deltask="+task+"&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>&action=delete";
$.ajax({type:"POST",
url:"include/manager_cron.php",
data:ds,
success: function(){
$(dt).hide("slow");
}
});
});
</script>
<?php
} else {
echo '<tr>';
echo '<td colspan="5" align="center">' . tr( "SCHEDULE_NO_SEND_SCHEDULED" ) . '</td>';
echo '</tr>';
echo '</table>';
}
}
}
wget 'https://lists2.roe3.org/pmnl3/include/manager_global_cron.php'
<?php
$list_crontab = $cnx->query( 'SELECT c.*, l.newsletter_name
FROM ' . $row_config_globale[ 'table_crontab' ] . ' c
LEFT JOIN ' . $row_config_globale[ 'table_listsconfig' ] . ' l ON c.list_id=l.list_id
ORDER BY c.date DESC' )->fetchAll( PDO::FETCH_ASSOC );
echo '<header><h4>' . tr( "SCHEDULE_SEND_SCHEDULED" ) . ' : </h4></header>';
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
' . tr( "SCHEDULE_REPORT_HEAD" ) . '
</tr>
</thead>
<tfoot>
<tr>
' . tr( "SCHEDULE_REPORT_HEAD" ) . '
</tr>
</tfoot>
<tbody>';
$month_tab = tr( "MONTH_TAB" );
$step_tab = tr( "SCHEDULE_STATE" );
if ( count( $list_crontab ) > 0 ) {
foreach ( $list_crontab as $x ) {
echo '<tr';
if ( $x[ 'job_id' ] == @$cronID ) {
echo ' style="background:#B5E5EF"';
}
echo ' class="'.$x['job_id'].'"';
echo '>';
echo ' <td style="padding-top:14px;">' . $x[ 'job_id' ] . '</td>';
echo ' <td style="padding-top:14px;">' . $x[ 'list_id' ] . '</td>';
echo ' <td style="padding-top:14px;">' . stripslashes( $x[ 'mail_subject' ] ) . '</td>';
echo ' <td style="padding-top:14px;">' . sprintf( "%02d", $x[ 'day' ] ) . ' ' . $month_tab[ $x[ 'month' ] ] . ' à ' . sprintf( "%02d", $x[ 'hour' ] ) . 'h' . sprintf( "%02d", $x[ 'min' ] ) . '</td>';
echo ' <td style="padding-top:14px;">' . $x[ 'etat' ] . '</td>';
if(is_file("logs/list".$x['list_id']."-msg".$x['msg_id'].".txt")){
echo '<td><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?list_id='
.$x['list_id'].'&id_mail='.$x['msg_id'].'&t=l&token='
.$token.'" title="'. tr( "TRACKING_VIEW_LOG_SEND" ) .'">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-search"></i></button></a></td>';
} else {
echo '<td style="padding-top:14px;">'.tr("SCHEDULE_NO_LOG").'.</td>';
}
echo '<td><form id="'.$x['job_id'].'" method="post">';
if($x['etat']=='scheduled'){
echo '<a title="'.tr("SCHEDULE_DELETE_TASK").'" data-toggle="tooltip">
<button type="button" class="deltask btn btn-default btn-sm"><i class="glyphicon glyphicon-trash"></i></button></a>
<input type="hidden" value="'.$x['job_id'].'" id="deltask">
<input type="hidden" value="'.$token.'" id="token">
<input type="hidden" value="'.$x['list_id'].'" name="list_id">';
}
echo '</form></td>';
echo '</tr>';
}
echo '</table>';
?>
<script>
$(".deltask").click(function() {
var task=$(this).closest("form").attr("id");
var dt='.'+task;
var ds="deltask="+task+"&token=<?php echo $token;?>&list_id=<?php echo $x['list_id'];?>&action=delete";
$.ajax({type:"POST",
url:"include/manager_cron.php",
data:ds,
success: function(){
$(dt).hide("slow");
}
});
});
</script>
<?php
} else {
echo '<tr>';
echo '<td colspan="5" align="center">' . tr( "SCHEDULE_NO_SEND_SCHEDULED" ) . '</td>';
echo '</tr>';
echo '</table>';
}
wget 'https://lists2.roe3.org/pmnl3/include/manager_mailq.php'
<?php
if($type_serveur=='dedicated'&&$exec_available){
$results = array();
$newsletter = getConfig($cnx, $list_id, $row_config_globale['table_listsconfig']);
$sender = $newsletter['from_addr'];
$old_locale = getlocale(LC_ALL);
setlocale(LC_ALL, 'C');
$mailq_path = exec('command -v mailq');
$current_object = array();
$pipe = popen($mailq_path, 'r');
$path_postsuper=exec('locate postsuper | grep bin');
while($pipe) {
$line = @fgets($pipe);
if(trim($line)=='Mail queue is empty'){
echo "<div class='alert alert-success'><b>".tr("NO_MAIL_IN_PROCESS")."</b></div>";
pclose($pipe);
setlocale(LC_ALL, $old_locale);
//exit(1);
} else {
if ($line === false)
break;
if (strncmp($line, '-', 1) === 0)
continue;
$line = trim($line);
$IsDeleted = false;
$item = array();
$matches = array();
$res = preg_match('/(\w+)\*{0,1}\s+(\d+)\s+(\w+\s+\w+\s+\d+\s+\d+:\d+:\d+)\s+([^ ]+)/', $line, $matches);
if ($res) {
if($matches[4]==$sender||$matches[4]==$bounce_mail){
$tab_failed = trim(fgets($pipe));
$tab_recipient = trim(fgets($pipe));
}
if(
(
stripos($tab_failed,'No route to host') ||
stripos($tab_failed,'Connection timed out') ||
stripos($tab_failed,'Connection refused') ||
stripos($tab_failed,'refused to talk to me:') ||
stripos($tab_failed,'Network is unreachable') ||
stripos($tab_failed,'timed out while receiving the initial server greeting') ||
stripos($tab_failed,'Recipient address rejected: unverified address') ||
stripos($tab_failed,'431 Syntax error (in reply to end of DATA command)') ||
stripos($tab_failed,'Recipient address rejected') || // 450 4.1.1, 450 4.2.0, 450 4.3.2
stripos($tab_failed,'Host or domain name not found') ||
stripos($tab_failed,'451 domain not found') ||
stripos($tab_failed,'451 Could not load DRD') ||
stripos($tab_failed,'451 Open relay not allowed') ||
stripos($tab_failed,'451 unable to verify user') ||
stripos($tab_failed,'4.1.0 Recipient unknown') ||
stripos($tab_failed,'451 4.1.0 Recipient unknown') ||
stripos($tab_failed,'451 4.2.1 mailbox temporarily disabled') ||
stripos($tab_failed,'451 4.2.2 user over quota') ||
stripos($tab_failed,'over quota') ||
stripos($tab_failed,'451 4.3.2 Please try again later') ||
stripos($tab_failed,'451 4.3.5 Server configuration problem') ||
stripos($tab_failed,'451 4.4.5 Mail queue for this domain is overloaded') ||
stripos($tab_failed,'Recipient address rejected: MailBox quota excedeed') || //* 450 4.7.1
stripos($tab_failed,'451 4.5.1 Mailbox full') ||
stripos($tab_failed,'Mailbox full') ||
stripos($tab_failed,'451 4.7.1 Service unavailable') ||
stripos($tab_failed,'4.2.2 mailbox full') ||
stripos($tab_failed,'452-4.2.2 The email account that you tried to reach is over quota') ||
stripos($tab_failed,': Relay access denied')
)
&&
(
!stripos($tab_failed,'Greylisted')
)
)
{
if(trim($path_postsuper)!=''&&substr($path_postsuper,0,1)=='/'){
exec('sudo '.$path_postsuper.' -d '.$matches[1]);
if($cnx->query("INSERT IGNORE INTO ".$row_config_globale['table_email_deleted']." (id,email,list_id,hash,error,status,type)
SELECT id,email,list_id,hash,'Y','".($cnx->CleanInput($tab_failed))."','hard'
FROM ".$row_config_globale['table_email']."
WHERE email = '".($cnx->CleanInput($tab_recipient))."'")) {
$cnx->query("DELETE FROM ".$row_config_globale['table_email']."
WHERE email='".($cnx->CleanInput($tab_recipient))."'");
$IsDeleted = true;
}
}
}
if($matches[4]==$sender||$matches[4]==$bounce_mail){
$current_object[] = array(
'id' => $matches[1],
'size' => intval($matches[2]),
'date' => strftime($matches[3]),
'sender' => $matches[4],
'failed' => $tab_failed,
'recipients' => $tab_recipient,
'IsDeleted' => $IsDeleted
);
}
}
}
}
@pclose($pipe);
setlocale(LC_ALL, $old_locale);
$mails_en_cours = count($current_object);
if($mails_en_cours>0){
if(isset($alerte_purge_mailq)&&$alerte_purge_mailq!=''){
echo $alerte_purge_mailq;
}
echo '<div class="row" style="min-height:300px;">';
echo '<div class="col-md-10">';
echo '<header><h4>'.tr("PENDING_MAILS").' :</h4></header>
<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
'.tr("MAILS_REPORT_HEAD").'
</tr>
<tr>
<th colspan="6">'.tr("MAIL_FULL_MSG_ERROR").'</th>
</tr>
</thead>
<tbody id="full_tab_mailq">';
foreach($current_object as $item){
echo '
<tr>
<td>'.$item['id'].'</td>
<td>'.$item['size'].'</td>
<td>'.$item['date'].'</td>
<td>'.$item['sender'].'</td>
<td>'.$item['recipients'].'</td>
<td>';
if($item['IsDeleted']) {
echo tr("DELETED");
} else {
echo '<a href="?page=manager_mailq&action=delete_id_from_mailq&token='
. $token . '&id_mailq=' . $item['id'] . '&mail=' . urlencode($item['recipients'])
. '&status=' . urlencode($item['failed']) . '" data-toggle="tooltip" title="'
. tr("MAIL_DELETE_THIS") . ', ID : ' . $item['id'] . '" onclick="return confirm(\''
.tr("MAIL_REMOVE_FROM_QUEUE") . ' ?\')"><span class="glyphicon glyphicon-trash"></span></a>';
}
echo ' </td>
</tr>
<tr>
<td colspan="6">'.$item['failed'].'</td>
</tr>';
}
echo '</tbody>
</table></div>';
echo '<div class="col-md-2">';
echo '<div class="content-box fixed" id="ssb" style="min-width:184px;">';
echo '<header><h4>'.tr("ACTION").' :</h3></header><div align="center">';
echo "<br><form method='post' action=''>
<input type='submit' value='".tr("MAIL_PURGE_QUEUE")."' class='form-control btn btn-success btn-sm' />
<input type='hidden' name='action' value='purge_mailq' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='page' value='manager_mailq' />
<input type='hidden' name='token' value='$token' />
<div class='spacer'></div>";
echo '</div></div>';
echo '</div>';
}
}
?>
<script>setTimeout(function(){location.reload();},30000);</script>
wget 'https://lists2.roe3.org/pmnl3/include/manager_smtp.php'
<div class="row">
<div class="col-md-12">
<div class='alert alert-danger'>Attention, les limites d'envoi sont exprimées en <b>limites quotidiennes</b>.
<br> Lors de l'ajout d'un serveur, il vous appartient de calculer la limite quotidienne, arrondie au nombre entier inférieur.
<br>Exemple : pour un calcul de 10000 mails par mois on obtient : 10000/30= 333,33, renseignez 330 pour valider 330 envois quotidiens !
<br>Un serveur renseigné à 0 de quota en limite est considéré comme illimité (exemple : pour votre localhost ou autre serveur non limité).
<br>Dépasser les limites des fournisseurs vous expose à un rejet de vos emails !
<br>N'oubliez pas votre localhost !!
</div>
<div id="smtplist">
<?php
echo $smtp_manage_msg;
$list_smtp = $cnx->query('SELECT * FROM '.$row_config_globale['table_smtp'] .' ORDER BY smtp_id DESC')->fetchAll(PDO::FETCH_ASSOC);
echo '<article class="module width_full"><header><h4>Serveurs SMTP déclarés : </h4></header>';
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
<th>Nom</th>
<th>Adresse serveur</th>
<th>Identifiant</th>
<th>Mot de passe</th>
<th>Port</th>
<th>Secure</th>
<th>Limite</th>
<th>En cours</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tfoot>
<tr>
<th>Nom</th>
<th>Adresse serveur</th>
<th>Identifiant</th>
<th>Mot de passe</th>
<th>Port</th>
<th>Secure</th>
<th>Limite</th>
<th>En cours</th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
<tbody>';
if(count($list_smtp)>0){
foreach($list_smtp as $x){
if (($op=='smtp_mod' && $smtp_id!=$x['smtp_id'])||($op!='smtp_mod')) {
echo '<tr>';
echo ' <td>'.$x['smtp_name'].'</td>';
echo ' <td>'.$x['smtp_url'].'</td>';
echo ' <td>'.$x['smtp_user'].'</td>';
echo ' <td>*******************</td>';
echo ' <td>'.$x['smtp_port'].'</td>';
echo ' <td>'.$x['smtp_secure'].'</td>';
echo ' <td>'.$x['smtp_limite'].'</td>';
echo ' <td>'.$x['smtp_used'].'</td>';
if(is_file("logs/smtp-".$x['smtp_id'].".txt")){
echo '<td><a href="dl.php?log=logs/smtp-' . $x['smtp_id'] . '.txt&token='
. $token . '" title="Telecharger le fichier log de ce serveur smtp"
data-toggle="tooltip"><span class="glyphicon glyphicon-download"></span></a></td>';
} else {
echo '<td>'.tr("SCHEDULE_NO_LOG").'.</td>';
}
echo ' <td><a href="' . $_SERVER['PHP_SELF'] . '?page=configsmtp&op=smtp_mod&token=' . $token . '&list_id='
. $list_id . '&smtp_id=' . $x['smtp_id'] . '" title="éditer ce serveur smtp" data-toggle="tooltip"><span class="glyphicon glyphicon-cog"></span></a></td>';
echo ' <td><a href="' . $_SERVER['PHP_SELF'] . '?page=configsmtp&op=smtp_del&token=' . $token . '&list_id='
. $list_id . '&smtp_id=' . $x['smtp_id'] . '" title="supprimer ce serveur smtp" data-toggle="tooltip"><span class="glyphicon glyphicon-trash"></span></a></td>';
echo '</tr>';
} elseif ($op=='smtp_mod' && $smtp_id==$x['smtp_id']) {
echo '<tr><form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo ' <td><input type="text" name="smtp_name" size="12" class="input form-control" value="'.$x['smtp_name'].'" disabled /></td>';
echo ' <td><input type="text" name="smtp_url" class="input form-control" value="'.$x['smtp_url'].'" /></td>';
echo ' <td><input type="text" name="smtp_user" class="input form-control" value="'.$x['smtp_user'].'" /></td>';
echo ' <td><input type="text" name="smtp_pass" class="input form-control" value="'.$x['smtp_pass'].'" /></td>';
echo ' <td><input type="text" name="smtp_port" class="input form-control" value="'.$x['smtp_port'].'" maxlength="5" size="5"/></td>';
//echo ' <td>'.$x['smtp_secure'].'</td>';
echo ' <td>';
echo ' <select name="smtp_secure" class="form-control">
<option value=""'.($x['smtp_secure']==''?' selected':'').'></option>
<option value="ssl"'.($x['smtp_secure']=='ssl'?' selected':'ssl').'>ssl</option>
<option value="tls"'.($x['smtp_secure']=='tls'?' selected':'tls').'>tls</option>
</select>';
echo ' </td>';
echo ' <td><input type="text" name="smtp_limite" maxlength="4" size="4" class="input form-control" value="'.$x['smtp_limite'].'" /></td>';
echo ' <td colspan="4" align="center"><input type="submit" value="Mettre à jour" class="btn btn-success" /></td>';
echo ' <input type="hidden" name="token" value="'.$token.'" />
<input type="hidden" name="op" value="smtp_maj" />
<input type="hidden" name="page" value="configsmtp" />
<input type="hidden" name="list_id" value="'.$list_id.'" />
<input type="hidden" name="smtp_id" value="'.$x['smtp_id'].'" />';
echo '</form></tr>';
}
}
echo '</table>';
} else {
echo '<tr>';
echo ' <td colspan="9" align="center">Pas de serveur SMTP déclaré</td>';
echo '</tr>';
echo '</table>';
}
?>
</div>
<?php
if ($op!='smtp_mod') {
?>
<div id="addsmtp">
<header><h4>Déclarer un nouveau serveur SMTP : </h4></header>
<form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'>
<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
<th>Nom</th>
<th>Adresse serveur</th>
<th>Identifiant</th>
<th>Mot de passe</th>
<th>Port</th>
<th>Secure</th>
<th>Limite envois par jour</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="smtp_name" size="12" class="input form-control" /></td>
<td><input type="text" name="smtp_url" class="input form-control" /></td>
<td><input type="text" name="smtp_user" class="input form-control" /></td>
<td><input type="text" name="smtp_pass" class="input form-control" /></td>
<td><input type="text" name="smtp_port" maxlength="5" size="5" class="input form-control" /></td>
<td>
<select name="smtp_secure" class="form-control">
<option value="" selected></option>
<option value="ssl">ssl</option>
<option value="tls">tls</option>
</select>
</td>
<td><input type="text" name="smtp_limite" maxlength="4" size="4" class="input form-control" /></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="8" align="center"><input type="submit" value="Ajouter ce nouveau serveur SMTP" class="btn btn-success" /></td>
</tr>
</tbody>
</table>
<input type='hidden' name='token' value='<?php echo $token;?>' />
<input type='hidden' name='op' value='smtp_add' />
<input type='hidden' name='page' value='configsmtp' />
<input type='hidden' name='list_id' value='<?php echo $list_id;?>' />
</form>
</div>
<?php
}
?>
wget 'https://lists2.roe3.org/pmnl3/include/menu_hz.php'
<?php
echo '<li><a href="?page=listes&token=' . $token . '&l=l&list_id=' . @$list_id . '"><i class="glyphicon glyphicon-home"></i> Accueil</a></li>';
if($_SESSION['dr_stats']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li><a href="?page=globalstats&token=<?php echo $token;?>&l=l&list_id=<?php echo @$list_id;?>" data-toggle="tooltip" data-placement="auto"
title="Statistiques générales, toutes listes confondues"><i class="glyphicon glyphicon-stats"></i> Statistiques globales</a></li>
<?php
}
if($_SESSION['dr_is_admin']==true) {
?>
<li class="dropdown" title="Les gestions de l'administrateur" data-placement="right">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-cog"></i> Gestions <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="?page=config&token=<?php echo $token;?>&l=l&list_id=<?php echo @$list_id;?>" data-toggle="tooltip" data-placement="right"
title="Configuration globale des paramètres du système PhpMyNewsLetter"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("GCONFIG_TITLE");?></a></li>
<li><a href="?page=manage_users&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="right"
title="Gestion des utilisateurs du système PhpMyNewsLetter et de leurs droits"><i class="glyphicon glyphicon-user"></i> <?php echo tr("USERS_RIGHTS_MANAGEMENT");?></a></li>
<li><a href="?page=manage_senders&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="right"
title="Gestion des comptes expéditeurs de newsletter"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("SENDERS_MANAGEMENT");?></a></li>
<?php if($row_config_globale['sending_method']=='lbsmtp'){ ?>
<li><a href="?page=configsmtp&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="right"
title="Gestion des serveurs SMTP utilisés en load balancing SMTP"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("GCONFIG_SMTP_LB_TITLE"); ?></a></li>
<?php } ?>
<li><a href="?page=backup&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="right"
title="Gestion des sauvegardes de la base de données PhpMyNewsLetter"><i class="glyphicon glyphicon-compressed"></i> <?php echo tr("MENU_BACKUP");?></a></li>
<?php if($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li><a href="?page=manager_global_cron&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="right"
title="Gestion de toutes les tâches planifiées"><i class="glyphicon glyphicon-calendar"></i> Tâches planifiées</a></li>
<?php } ?>
</ul>
</li>
<?php
}
?>
<li><a href="//www.phpmynewsletter.com/forum/" target="_blank" data-toggle="tooltip" data-placement="auto"
title="Forum de support PhpMyNewsLetter"><i class="glyphicon glyphicon-plus-sign"></i> <?php echo tr("SUPPORT");?></a></li>
<li><a href="?page=about&token=<?php echo $token;?>&list_id=<?php echo @$list_id;?>" data-toggle="tooltip" data-placement="auto"
title="Un peu plus à propos de PhpMyNewsLetter"><i class="glyphicon glyphicon-info-sign"></i> <?php echo tr("ABOUT");?></a></li>
<li><a href="logout.php" data-toggle="tooltip" data-placement="auto"
title="quitter l'application"><i class="glyphicon glyphicon-log-out"></i><?php echo tr("MENU_LOGOUT");?></a></li>
<li><a data-toggle="tooltip" data-placement="auto"
title="Connecté en tant que <?php echo $_SESSION['user_on_line']; ?>"><?php echo ' <i>('.$_SESSION['user_on_line'].')</i>'; ?></a></li>
</ul>
<div class="nav navbar-nav navbar-right">
<?php
if($type_serveur=='dedicated'&&$exec_available&&($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true)){
echo '<span id="mailq"><button type="button" class="btn btn-primary btn-sm"">'.tr("LOOKING_PROGRESS_MAILS").'...</button></span>';
}
if($_SESSION['dr_is_admin']==true)
checkVersion();
if ($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
echo ($nbDraft['NB']==0 ?
' <button class="btn btn-primary btn-sm">' . tr("NO_CURRENT_DRAFT") . '</button>'
:
' <a href="?page=compose&token='.$token.'&list_id='.$list_id.'&op=init" title="'
.tr("ACCESS_DRAFT_CONTINUE_WRITING").'" data-toggle="tooltip" data-placement="auto" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-pencil"></i> 1 '
.tr("CURRENT_DRAFT").'</a>'
);
}
?>
<button type="button" class="btn btn-default btn-sm" id="ts">--:--:--</button>
</div>
</div>
</nav>
<div class="page-content">
<div class="row">
<div class="col-md-12">
wget 'https://lists2.roe3.org/pmnl3/include/menu_vt.php'
<?php
if($_SESSION['dr_stats']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li><a href="?page=globalstats&token=<?php echo $token;?>&l=l&list_id=<?php echo @$list_id;?>" data-toggle="tooltip" data-placement="auto" title="Statistiques générales, toutes listes confondues"><i class="glyphicon glyphicon-stats"></i> <?php echo tr("GLOBAL_STATISTICS");?></a></li>
<?php }
if($_SESSION['dr_is_admin']==true) { ?>
<li><a href="?page=config&token=<?php echo $token;?>&l=l&list_id=<?php echo @$list_id;?>" data-toggle="tooltip" data-placement="auto" title="Configuration globale des paramètres du système PhpMyNewsLetter"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("GCONFIG_TITLE");?></a></li>
<li><a href="?page=manage_users&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>" data-toggle="tooltip" data-placement="auto" title="Gestion des utilisateurs du système PhpMyNewsLetter et de leurs droits"><i class="glyphicon glyphicon-user"></i> <?php echo tr("USERS_RIGHTS_MANAGEMENT");?></a></li>
<?php } ?>
<li><a href="//www.phpmynewsletter.com/forum/" target="_blank" data-toggle="tooltip" data-placement="auto" title="Forum de support PhpMyNewsLetter"><i class="glyphicon glyphicon-plus-sign"></i> <?php echo tr("SUPPORT");?></a></li>
<li><a href="?page=about&token=<?php echo $token;?>&list_id=<?php echo @$list_id;?>"><i class="glyphicon glyphicon-info-sign"></i> <?php echo tr("ABOUT");?></a></li>
</ul>
<div class="nav navbar-nav navbar-right">
<?php
if($type_serveur=='dedicated'&&$exec_available&&($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true)){
echo '<span id="mailq"><button type="button" class="btn btn-primary btn-sm"">'.tr("LOOKING_PROGRESS_MAILS").'...</button></span>';
}
if($_SESSION['dr_is_admin']==true)
checkVersion();
if ($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) {
echo ($nbDraft['NB']==0 ?
' <button class="btn btn-primary btn-sm">' . tr("NO_CURRENT_DRAFT") . '</button>'
:
' <a href="?page=compose&token='.$token.'&list_id='.$list_id.'&op=init" title="'
.tr("ACCESS_DRAFT_CONTINUE_WRITING").'" data-toggle="tooltip" data-placement="auto" class="clearbtn btn btn-primary btn-sm"><i class="glyphicon glyphicon-pencil"></i> 1 '
.tr("CURRENT_DRAFT").'</a>'
);
}
?>
<button type="button" class="btn btn-default btn-sm" id="ts">--:--:--</button>
</div>
</div>
</nav>
<div class="page-content">
<div class="row">
<div class="col-md-2">
<div class="sidebar content-box fixed" style="display: block;">
<ul class="nav">
<?php
if($_SESSION['dr_is_admin']==true) { ?>
<li <?php echo ($page=='manage_senders'?'class="current"':"");?>><a href="?page=manage_senders&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("SENDERS_MANAGEMENT");?></a></li>
<?php }
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li <?php echo ($page=='compose'?'class="current"':"");?>><a href="?page=compose&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>&op=init"><i class="glyphicon glyphicon-pencil" style="color:red"></i> <?php echo tr("WRITE_AND_SEND_A_MAIL");?></a></li>
<li <?php echo ($page=='wysiwyg'?'class="current"':"");?>><a href="?page=wysiwyg&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>&op=init"><i class="glyphicon glyphicon-edit"></i> <?php echo tr("WYSIWYG_EDITOR");?></a></li>
<?php }
if($type_serveur=='dedicated'&&($_SESSION['dr_bounce']=='Y'||$_SESSION['dr_is_admin']==true)) { ?>
<li <?php echo ($page=='undisturbed'?'class="current"':"");?>><a href="?page=undisturbed&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-alert"></i> <?php echo tr("ANALYSIS_OF_RETURNS");?></a></li>
<?php }
if($_SESSION['dr_redaction']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li <?php echo ($page=='archives'?'class="current"':"");?>><a href="?page=archives&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-repeat"></i> <?php echo tr("MENU_ARCHIVES");?></a></li>
<?php }
if($_SESSION['dr_envois']=='Y'||$_SESSION['dr_is_admin']==true) { ?>
<li <?php echo ($page=='task'?'class="current"':"");?>><a href="?page=task&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-calendar"></i> <?php echo tr("MANAGEMENT_SCHEDULED_TASKS");?></a></li>
<?php }
if($_SESSION['dr_is_admin']==true) { ?>
<li <?php echo ($page=='backup'?'class="current"':"");?>><a href="?page=backup&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-record"></i> <?php echo tr("MENU_BACKUP");?></a></li>
<?php
if($row_config_globale['sending_method']=='lbsmtp'){ ?>
<li <?php echo ($page=='configsmtp'?'class="current"':"");?>><a href="?page=configsmtp&token=<?php echo $token;?>&list_id=<?php echo $list_id;?>"><i class="glyphicon glyphicon-cog"></i> <?php echo tr("GCONFIG_SMTP_LB_TITLE"); ?></a></li>
<?php
}
} ?>
<li><a href="logout.php"><i class="glyphicon glyphicon-log-out"></i><?php echo tr("MENU_LOGOUT");?></a></li>
</ul>
</div>
</div>
<div class="col-md-10">
wget 'https://lists2.roe3.org/pmnl3/include/newsletterconf.php'
<?php
$PATH = ($row_config_globale['path'] == '/' ? $row_config_globale['path'] : '/' . $row_config_globale['path']);
echo '<header><h4>'.tr("NEWSLETTER_SETTINGS").' : <i>'.$list_name.'</i>, <a href="#codeHtml">'.tr("CODE_TITLE").'</a></h4></header>';
echo '<div class="row">';
echo '<div class="col-md-10">';
echo "<form action='' method='post'>";
if(isset($list_id)&&!empty($list_id)) {
$newsletter=getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
if($action=="delete") {
if($deleted) {
echo "<div class='alert alert-success'>".tr("NEWSLETTER_DELETED").".</div>";
} else {
echo "<div class='alert alert-danger'>".tr("ERROR_DELETING_NEWSLETTER").".</div>";
}
}
if(empty($action)) {
if($op=="SaveConfig") {
if($save)
echo "<div class='alert alert-success'>".tr("NEWSLETTER_SETTINGS_SAVED")."</div>";
else
echo "<div class='alert alert-danger'>".tr("ERROR_SAVING_SETTINGS")."</div>";
}
if($op=="createConfig") {
if($new_id) {
echo "<div class='alert alert-success'>".tr("NEWSLETTER_SETTINGS_CREATED").".</div>";
} else {
echo "<div class='alert alert-danger'>".tr("ERROR_SAVING_SETTINGS",":<br />".DbError())."</div>";
}
}
echo "<input type='hidden' name='op' value='SaveConfig' /><input type='hidden' name='token' value='$token' />";
echo "<input type='hidden' name='list_id' value='$list_id' />
<div class='form-group'><label>".tr("NEWSLETTER_NAME")." : </label>
<input type='text' class='form-control' name='newsletter_name' value=\"".htmlspecialchars(@$newsletter['newsletter_name'])."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_FROM_NAME")." : </label>
<input type='text' class='form-control' name='from_name' value=\"".htmlspecialchars($newsletter['from_name'])."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_FROM_ADDR")." : </label>
<input type='text' class='form-control' name='from' value=\"".$newsletter['from_addr']."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_MAIL_PREVIEW")." : </label>
<input type='text' class='form-control' name='preview_addr' value=\"".$newsletter['preview_addr']."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_SUBJECT")." : </label>
<input type='text' class='form-control' name='subject' value=\"".htmlspecialchars($newsletter['subject'])."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_HEADER")." : </label>
<br><textarea class='editme' name='header' rows='15' id='NEWSLETTER_DEFAULT_HEADER'>".$newsletter['header']."</textarea></div>
<div class='form-group'><label>".tr("NEWSLETTER_FOOTER")." : </label>
<br><textarea class='editme' name='footer' rows='15' id='NEWSLETTER_DEFAULT_FOOTER'>".$newsletter['footer']."</textarea></div>
<div class='form-group'><label>".tr("NEWSLETTER_SUB_MSG_SUBJECT")." : </label>
<input type='text' class='form-control' name='subscription_subject' value=\"".htmlspecialchars($newsletter['subscription_subject'])."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_SUB_MSG_BODY")." : </label>
<br><textarea class='editme' name='subscription_body' rows='15' id='NEWSLETTER_SUB_DEFAULT_BODY'>".$newsletter['subscription_body']."</textarea></div>
<div class='form-group'><label>".tr("NEWSLETTER_WELCOME_MSG_SUBJECT")." : </label>
<input type='text' class='form-control' name='welcome_subject' value=\"".htmlspecialchars($newsletter['welcome_subject']) ."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_WELCOME_MSG_BODY")." : </label>
<br><textarea class='editme' name='welcome_body' rows='15' id='NEWSLETTER_WELCOME_DEFAULT_BODY'>".$newsletter['welcome_body']."</textarea></div>
<div class='form-group'><label>".tr("NEWSLETTER_UNSUB_MSG_SUBJECT")." : </label>
<input type='text' class='form-control' name=' quit_subject' value=\"".htmlspecialchars($newsletter['quit_subject'])."\" /></div>
<div class='form-group'><label>".tr("NEWSLETTER_UNSUB_MSG_BODY")." : </label>
<br><textarea class='editme' name='quit_body' rows='15' id='NEWSLETTER_UNSUB_DEFAULT_BODY'>".$newsletter['quit_body']."</textarea></div>";
echo '<header><h4 id="codeHtml">'.tr("CODE_TITLE").'</h4></header>
<div class="module_content">';
if(isset($list_id)&&!empty($list_id)) {
$newsletter=getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
echo "<div class='alert alert-info'>".tr("PASTE_CODE").".</div>
<div class='form-group'><fieldset>
<label class='form-control'>".tr("WITH_POP_UP")." :</label>
<textarea cols='70%' rows='8' class='form-control'><form action='".$PATH."subscription.php' method='post' target='pmnlwindow' onsubmit=\"window.open('".$PATH."subscription.php', 'pmnlwindow', 'scrollbars=yes,width=700,height=210');return true\">
<input type='text' name='email_addr' value='' size='30'>
<input type='hidden' name='list_id' value='$list_id'>
<input type='hidden' name='op' value='join'>
<input type='submit' value='".tr("SUSCRIBE")."'></form>
</textarea>
</fieldset>
</div><div class='form-group'>
<fieldset>
<label class='form-control'>".tr("FULL_PAGE")." :</label>
<textarea cols='70%' rows='8' class='form-control'><form action='".$PATH."subscription.php' method='post' target='_blank'>
<input type='text' name='email_addr' value='' size='30'>
<input type='hidden' name='list_id' value='$list_id'>
<input type='hidden' name='op' value='join'>
<input type='submit' value='".tr("SUSCRIBE")."'>
</form></textarea>
</fieldset></div>
<div class='alert alert-info'>".tr("MODIFY_IT").".</div>
";
}
echo "</div>";
echo "<script src='".$PATH."js/tinymce/tinymce.min.js'></script>";
echo "
<script>
tinymce.init({
selector: 'textarea.editme',
skin : 'pmnl',
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen textcolor emoticons',
'insertdatetime media table contextmenu paste filemanager colorpicker'
],
toolbar1 : 'newdocument,template,print,bold,italic,underline,alignleft, aligncenter, alignright, alignjustify,strikethrough,superscript,subscript,forecolor,backcolor,bullist,numlist,outdent,indent,visualchars,visualblocks,charmap,hr,',
toolbar2 : 'table,cut,copy,paste,searchreplace,blockquote,undo,redo,link,unlink,anchor,image,emoticons,media,inserttime,preview,fullscreen,code,',
toolbar3 : 'styleselect,formatselect,fontselect,fontsizeselect,',
style_formats: [
{title: 'Open Sans', inline: 'span', styles: { 'font-family':'Open Sans'}},
{title: 'Arial', inline: 'span', styles: { 'font-family':'arial'}},
{title: 'Book Antiqua', inline: 'span', styles: { 'font-family':'book antiqua'}},
{title: 'Comic Sans MS', inline: 'span', styles: { 'font-family':'comic sans ms,sans-serif'}},
{title: 'Courier New', inline: 'span', styles: { 'font-family':'courier new,courier'}},
{title: 'Georgia', inline: 'span', styles: { 'font-family':'georgia,palatino'}},
{title: 'Helvetica', inline: 'span', styles: { 'font-family':'helvetica'}},
{title: 'Impact', inline: 'span', styles: { 'font-family':'impact,chicago'}},
{title: 'Symbol', inline: 'span', styles: { 'font-family':'symbol'}},
{title: 'Tahoma', inline: 'span', styles: { 'font-family':'tahoma'}},
{title: 'Terminal', inline: 'span', styles: { 'font-family':'terminal,monaco'}},
{title: 'Times New Roman', inline: 'span', styles: { 'font-family':'times new roman,times'}},
{title: 'Verdana', inline: 'span', styles: { 'font-family':'Verdana'}}
],
cleanup : true,
cleanup_on_startup : true,
convert_urls : true,
custom_undo_redo_levels : 20,
doctype : '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',
entity_encoding : 'named',
external_filemanager_path:'".$PATH."js/tinymce/plugins/filemanager/',
external_plugins: { 'filemanager' : '".$PATH."js/tinymce/plugins/filemanager/plugin.min.js'},
extended_valid_elements: 'pre[*],style[*]',
filemanager_title:'Responsive Filemanager' ,
fontsize_formats : '8px 9px 10px 11px 12px 13px 14px 18px 24px',
forced_root_block : false,
force_br_newlines : true,
force_p_newlines : false,
height : '350',
image_advtab: true ,
inline_styles : true,
language : '".tr("TINYMCE_LANGUAGE")."',
relative_urls: false,
remove_script_host : false,
theme: 'modern',
valid_children : '+body[style|section|title],pre[section|div|p|br|span|img|style|h1|h2|h3|h4|h5],+*[*]',
valid_elements : '+*[*]',
verify_html : false,
menu: {
edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
insert: {title: 'Insert', items: 'media image link | pagebreak'},
view: {title: 'View', items: 'visualaid'},
format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
tools: {title: 'Tools', items: 'code'}
}
});
</script>";
}
}
echo '</div>';
echo '<div class="col-md-2">';
echo '<div class="content-box fixedBox">';
echo '<header><h4>'.tr("ACTION").' :</h4></header>';
echo "<input type='submit' value='".tr("NEWSLETTER_SAVE_SETTINGS")."' class='btn btn-success' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='page' value='newsletterconf' />
<input type='hidden' name='token' value='$token' />";
echo '</div>';
echo '</div>';
echo '</div>';
wget 'https://lists2.roe3.org/pmnl3/include/preloader.php'
<style>.dropdown-menu>li>a{font-size: 12px;}#preloader{background:#fff;top:0;right:0;bottom:0;width:100%;height:100%;left:0;position:fixed;z-index:9999}#preloader .battery{position:absolute;top:50%;left:50%;width:40px;height:20px;margin:-10px 0 0 -20px;border:1px solid #00aeff;border-radius:3px}#preloader .battery:after{display:block;content:"";position:absolute;right:-4px;top:6px;height:6px;width:2px;background:#00aeff;border-radius:0 2px 20x 0}#preloader .battery .load-line{position:absolute;z-index:100;height:16px;width:36px;top:1px;left:1px;background:#00aeff;border-radius:1px;-webkit-animation:battery-load 1s linear 0s infinite;-moz-animation:battery-load 1s linear 0s infinite;animation:battery-load 1s linear 0s infinite}@-webkit-keyframes battery-load{0%{width:0}100%{width:36px}}@keyframes battery-load{0%{width:0}100%{width:36px}}#preloader .radius{position:absolute;top:50%;left:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border:1px solid #ddd;border-radius:50%}#preloader .radius .load-line{position:absolute;z-index:100;height:20px;width:4px;top:50%;left:50%;margin:-20px 0 0 -2px;border-top:4px solid #00aeff;-webkit-animation:rotation 1s linear 0s infinite;-moz-animation:rotation 1s linear 0s infinite;animation:rotation 1s linear 0s infinite;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}</style><script>$(window).load(function(){"use strict";$('#preloader').delay(400).fadeOut('slow');$('#preloader .inner').fadeOut();});</script>
wget 'https://lists2.roe3.org/pmnl3/include/process_big_list.php'
<?php
session_start();
$time_start = microtime(true);
if(!file_exists("config.php")) {
header("Location:../install.php");
exit;
} else {
include("../_loader.php");
$token=(empty($_POST['token'])?"":$_POST['token']);
if(!isset($token) || $token=="")$token=(empty($_GET['token'])?"":$_GET['token']);
if(!tok_val($token)){
header("Location:../login.php?error=2");
exit;
}
}
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
(count($row_config_globale)>0)?$r='SUCCESS':$r='';
if($r != 'SUCCESS') {
include("lang/english.php");
echo "<div class='error'>".tr($r)."<br>";
echo "</div>";
exit;
}
if(empty($row_config_globale['language']))$row_config_globale['language']="english";
include("lang/".$row_config_globale['language'].".php");
@set_time_limit(300);
$import_big_file = (!empty($_FILES['import_big_file']) ? $_FILES['import_big_file'] : "");
if (!empty($import_big_file) && $import_big_file != "none" && $import_big_file['size'] > 0 && is_uploaded_file($import_big_file['tmp_name'])){
$tmp_subdir_writable = true;
$open_basedir = @ini_get('open_basedir');
if (!empty($open_basedir)){
$tmp_subdir="./upload/";
$local_filename = $tmp_subdir.basename($import_big_file['tmp_name']);
move_uploaded_file($import_big_file['tmp_name'], $local_filename);
$liste = fopen($local_filename, 'r');
} else{
$liste = fopen($import_big_file['tmp_name'], 'r');
}
if($tmp_subdir_writable){
$tx_import = 0;
$tx_error = 0;
$tx_error_sql = 0;
$tx_error_deleted = 0;
$tx_error_invalid = 0;
$cnx->query("CREATE TEMPORARY TABLE `TMP_MAIL` ( `mail` VARCHAR(255) NOT NULL, UNIQUE KEY (`mail`) )");
$cnx->query("DESCRIBE `TMP_MAIL`");
$list_id = $_POST['list_id'] ;
while (!feof($liste)){
$mail_importe = fgets($liste, 4096);
preg_match_all('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/i', $mail_importe, $found_mails);
$cpt_found_mails = count($found_mails);
foreach ($found_mails[0] as $mail_importe){
if(strlen($mail_importe)==2){
// dummy and pretty function ;-) yeah !
}else{
$mail_importe = str_replace("'","",$mail_importe);
$mail_importe = str_replace('"',"",$mail_importe);
$mail_importe = strtolower(trim($mail_importe));
if(!empty($mail_importe)){
if($cnx->query("INSERT IGNORE INTO TMP_MAIL (`mail`) VALUES ('".($cnx->CleanInput($mail_importe))."')")){
$tx_import++;
}
} else {
$tx_error_sql++;
}
}
}
}
$result = $cnx->query("DELETE FROM `TMP_MAIL` WHERE `MAIL` IN ( SELECT email FROM " . $row_config_globale['table_email_deleted'] . " )");
$tx_error_deleted = $result->rowCount();
$result = $cnx->query("DELETE FROM `TMP_MAIL` WHERE `MAIL` IN ( SELECT email FROM " . $row_config_globale['table_email'] . " )");
$tx_error = $result->rowCount();
$x = $cnx->query("SELECT `MAIL` FROM `TMP_MAIL`")->fetchAll(PDO::FETCH_ASSOC);
foreach ($x as $item) {
if($cnx->query("INSERT IGNORE INTO " . $row_config_globale['table_email']
. " (`email`, `list_id`, `hash`) VALUES ('" . $item['MAIL'] . "', '" . $list_id . "', '" . unique_id($item['MAIL']) . "')")){
$tx_final++;
}
}
echo "<h4 class='alert_success'><b>Total : $tx_import ".tr("MAIL_IMPORTED")."</b></h4>";
echo "<h4 class='alert_error'><b>".tr("MAIL_ADDED_ERROR") ." :<br>
- " . tr("ERROR_ALREADY_SUBSCRIBER",$tx_error) ."<br>
- $tx_error_sql " . tr("ERROR_SQL","") ."<br>
- $tx_error_deleted " . tr("EMAIL_ON_DELETED_LIST","") ."<br>
- $tx_error_invalid " . tr("INVALID_MAIL") ."<br>
- $tx_final ".tr("MAIL_ADDED")."</b></h4>";
/*
suppression de la table temporaire
*/
$cnx->query("DROP TEMPORARY TABLE TMP_MAIL;");
} else{
echo "<h4 class='alert_error'>".tr("ERROR_IMPORT_TMPDIR_NOT_WRITABLE")." !</h4>";
}
}else{
echo "<h4 class='alert_error'>".tr("ERROR_IMPORT_FILE_MISSING")." !</h4>";
}
$time_end = microtime(true);
echo '<br>$execution_time = '.($time_end - $time_start);
wget 'https://lists2.roe3.org/pmnl3/include/subscribers.php'
<?php
$cpt_suscribers = getSubscribersNumbers($cnx,$row_config_globale['table_email'],$list_id);
echo "<header><h4>".tr("SUBSCRIBER_MANAGEMENT")." : $list_name</h4></header>";
echo '<div class="row"><div class="col-md-4">';
if($cpt_suscribers>0){
echo "<h4>".tr("SUBSCRIBER_BACKUP")." !</h4>
<form action='export.php' method='post'><input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='token' value='$token' />
<br><div align='center'>
<input type='submit' name='Submit' value='".tr("SUBSCRIBER_EXPORT_BTN")."' class='btn btn-success' />
</div></form>";
}
echo '</div></div><hr>';
echo '<div class="row "><div class="col-md-4">';
echo "<h4>".tr("SUBSCRIBER_ADD_TITLE")."</h4>
<div class='alert alert-success'>".tr("SUBSCRIBER_ADD_MAIL_FORMAT")."</div>
<div align='center'>
<form method='post' name='sub' action=''>
<input type='hidden' name='op' value='subscriber_add' />
<input type='hidden' name='action' value='manage' />
<input type='hidden' name='page' value='subscribers' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='token' value='$token' />
<input type='text' class='input form-control' placeholder='".tr("SUBSCRIBER_ADD_TITLE")."' name='add_addr' value='' maxlength='255' size='30' /><br>
<input type='button' value='".tr("SUBSCRIBER_ADD_BTN")."' onclick='Submitform()' class='btn btn-success form-control' />
</form>";
echo "</div></div>";
echo '<div class="col-md-4">';
echo "<h4>".tr("SUBSCRIBER_IMPORT_TITLE")."</h4>
<div class='alert alert-success'>".tr("SUBSCRIBER_IMPORT_HELP")."</div>
<div align='center'>
<form action='' method='post' enctype='multipart/form-data' name='importform'>
<input type='hidden' name='op' value='subscriber_import' />
<input type='hidden' name='page' value='subscribers' />
<input type='hidden' name='token' value='$token' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='file' name='import_file' class='input form-control' /><br>
<input type='submit' value='".tr("SUBSCRIBER_IMPORT_BTN")."' class='btn btn-success form-control' />
</form>
</div></div>";
echo '
<div class="col-md-4">';
echo "<h4>".tr("SUBSCRIBER_IMPORT_BIG_LIST")."</h4>
<div class='alert alert-success'>".tr("SUBSCRIBER_IMPORT_HELP_BIG_LIST")."</div>
<div align='center'>
<form action='include/process_big_list.php' method='post' enctype='multipart/form-data' name='bigimportform' id='bigimportform'>
<input type='file' name='import_big_file' class='input form-control' /><br>
<input type='submit' value='".tr("SUBSCRIBER_IMPORT_BTN")."' class='btn btn-success form-control' id='submit-btn-biglist' />
<input type='hidden' name='op' value='subscriber_import_big_list' />
<input type='hidden' name='page' value='subscribers' />
<input type='hidden' name='token' value='$token' />
<input type='hidden' name='list_id' value='$list_id' />
<img src='css/processing.gif' id='loading-img' style='display:none;' alt='".tr("IMPORT_IN_PROGRESS")."' />
</form>
</div>
<div id='output'></div>";
echo "</div>";
echo '</div>';
echo '<div class="row "><div class="col-md-12">'.@$subscriber_op_msg_a.@$subscriber_op_msg_i.@$subscriber_op_msg_bl.'</div></div>';
echo '<hr>';
echo '<div class="row "><div class="col-md-6">';
echo "<h4>".tr("SUBSCRIBER_MASS_DELETE")."</h4>
<div class='alert alert-danger'>".tr("SUBSCRIBER_MASS_DELETE_HELP")."</div>
<div align='center'>
<form action='' method='post' enctype='multipart/form-data' name='importform'>
<input type='file' name='import_file' class='input form-control' /><br>
<input type='submit' value='".tr("SUBSCRIBER_MASS_DELETE_BTN")."' class='btn btn-success form-control' />
<input type='hidden' name='op' value='subscriber_mass_delete' />
<input type='hidden' name='page' value='subscribers' />
<input type='hidden' name='token' value='$token' />
<input type='hidden' name='list_id' value='$list_id' />
</form>
</div>";
echo "</div>";
echo '<div class="col-md-6" id="das">';
echo "<h4>".tr("SUBSCRIBER_DELETE_TITLE")."</h4>
<div class='module_content'>";
if($cpt_suscribers==0){
echo "<div class='alert alert-info'>".tr("NO_SUBSCRIBER")."</div>";
}elseif($cpt_suscribers<501&&$cpt_suscribers>0){
$subscribers=get_subscribers($cnx,$row_config_globale['table_email'],$list_id);
if(sizeof($subscribers)){
echo "<div class='alert alert-danger'>".tr("SUBSCRIBER_FIND_AND_DELETE")."</div>
<div class='row'>
<form action='".$_SERVER['PHP_SELF']."#das' method='post'>
<div class='col-md-6'>
<input type='hidden' name='op' value='subscriber_del' />
<input type='hidden' name='action' value='manage' />
<input type='hidden' name='page' value='subscribers' />
<input type='hidden' name='list_id' value='$list_id' />
<input type='hidden' name='token' value='$token' />
<input type='hidden' name='t' value='s' />
<select name='del_addr' class='form-control'>";
foreach ($subscribers as $row) {
echo "<option value='".$row['email']."' >".$row['email']."</option>";
}
echo "</select> </div>
<div class='col-md-6'>
<input type='submit' value='".tr("SUBSCRIBER_DELETE_BTN")."' class='btn btn-success form-control' />
</div>
</form>";
echo "</div>";
}
} elseif($cpt_suscribers>500) {
echo "<div class='alert alert-danger'>".tr("SUBSCRIBER_FIND_AND_DELETE")."</div>
<div class='row'>
<form>
<div class='col-md-6'>
<input type='input' id='searchid' placeholder='".tr("SUBSCRIBER_FIND")."' size='30' maxlength='255' style='width:300px' class='form-control' />
</div>
<div class='col-md-6'>
<input type='button' name='action' class='actionMailFaD btn btn-success' value='".tr("SUBSCRIBER_DELETE_BTN")."' id='delete' />
</div>
</form>
</div>
<div class='row'>
<div class='col-md-12'>
<span id='resultdel'></span>
<div id='result'></div>
</div>
</div>";
}
echo "</div>";
echo '</div></div>';
echo '<div class="row "><div class="col-md-12">'.@$subscriber_op_msg_md.@$subscriber_op_msg_d.'</div></div>';
echo '<hr>';
echo '<div class="row">';
echo '<div class="col-md-12" id="ManageSubTemp">';
$tmp_subscribers=get_subscribers($cnx,$row_config_globale['table_temp'],$list_id);
if(sizeof($tmp_subscribers)){
echo "<h4>".tr("SUBSCRIBER_TEMP_TITLE")."</h4>";
echo "<div class='alert alert-warning'>".count($tmp_subscribers)." ".tr("KNOWN_USERS")."</div>";
echo "<form action='".$_SERVER['PHP_SELF']."#ManageSubTemp' method='post' name='ManageSubTemp'>";
echo "<input type='hidden' name='op' value=''>";
echo "<input type='hidden' name='action' value='manage'>";
echo "<input type='hidden' name='page' value='subscribers'>";
echo "<input type='hidden' name='t' value='t'>";
echo "<input type='hidden' name='list_id' value='$list_id'>";
echo "<input type='hidden' name='token' value='$token' />";
echo "<select name='TmpUserAdress'>";
foreach ($tmp_subscribers as $row) {
echo "<option value='".$row['email']."' >".$row['email']."</option>";
}
echo "</select>";
echo " <input type='button' value='".tr("FORCE_CONFIRMATION")."' class='btn btn-success' onclick='ForceTempSub();'>";
echo " <input type='button' value='".tr("SUBSCRIBER_DELETE_BTN")."' class='btn btn-success' onclick='DelTempSub();'>";
echo "</form>";
echo "<div class='alert alert-info'>".tr("SUBSCRIBER_NOT_CONFIRMED_WAITING")."</div>";
echo @$subscriber_op_msg_dt;
} else {
echo "<h4>".tr("SUBSCRIBER_TEMP_TITLE")."</h4>";
echo "<div class='alert alert-warning'>".tr("SUBSCRIBER_EMPTY_LIST")."</div>";
}
echo '</div></div><hr>';
$mails_errors = $cnx->query("SELECT ed.email,ed.list_id,ed.hash,ed.error,ed.status,ed.type,
ed.categorie,ed.short_desc,ed.long_desc,ed.campaign_id,
li.newsletter_name,
nws.subject,nws.id,nws.`date`
FROM ".$row_config_globale['table_email_deleted']." ed
LEFT JOIN ".$row_config_globale['table_listsconfig']." li
ON li.list_id=ed.list_id
LEFT JOIN ".$row_config_globale['table_archives']." nws
ON nws.id=ed.campaign_id
WHERE ed.list_id=$list_id
AND ed.type!='unsub'
ORDER BY ed.email ASC")->fetchAll(PDO::FETCH_ASSOC);
echo '<div class="row">';
echo '<div class="col-md-12" id="ManageErrorsBounce">';
echo "<h4>".tr("SUBSCRIBER_ERROR_MANAGE_TITLE")."</h4>";
if (count($mails_errors)>0){
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatable">';
echo '<thead>
<tr>
<th align="center" class="alert alert-warning">'.tr("MAIL_IN_ERROR").' ('.tr("ACTION").')</th>
<th>'.tr("DESCRIPTION_ERROR").'</th>
<th align="right">'.tr("LIST_NUMBER").'</th>
<th>'.tr("ERROR_ON_CAMPAIGN").' :</th>
</tr>
</thead>';
echo '<tfoot>
<tr>
<th class="alert alert-warning">'.tr("MAIL_IN_ERROR").' ('.tr("ACTION").')</th>
<th>'.tr("DESCRIPTION_ERROR").'</th>
<th>'.tr("LIST_NUMBER").'</th>
<th>'.tr("ERROR_ON_CAMPAIGN").' :</th>
</tr>
</tfoot>';
echo '<tbody>';
foreach($mails_errors as $row){
echo '<tr>';
echo '<td>';
echo '<form id="'.unique_id($row['email']).'">';
switch($row['type']){
case 'by_admin':
case 'hard':
case 'unsub':
echo '<input type="text" class="input" value="'.$row['email'].'" name="this_mail" id="this_mail" size="25" readonly />';
echo '<input type="hidden" name="this_mail" id="this_mail" value="'.$row['email'].'" />';
echo ' <input type="button" name="action" class="actionMail btn btn-success btn-xs" value="'.tr("RESTORE").'" id="restore" />';
break;
case 'autoreply':
case 'blocked':
case 'generic':
case 'soft':
case 'temporary':
case '':
echo '<input type="text" class="input" value="'.$row['email'].'" name="this_mail" id="this_mail" size="25" />';
echo ' <input type="button" name="action" class="actionMail btn btn-success btn-xs" value="'.tr("UPDATE").'" id="update" />';
break;
}
echo '<input type="hidden" name="list_id" value="'.$row['list_id'].'" />';
echo '<input type="hidden" name="hash" value="'.$row['hash'].'" />';
echo "<input type='hidden' name='token' value='$token' />";
echo '</form>';
echo '</td><td width="30%"><b>';
switch($row['type']){
case 'unsub': echo tr("NEWSLETTER_UNSUBSCRIPTION");break;
case 'by_admin': echo tr("SUBSCRIBER_DELETE_BY_ADMIN");break;
case 'autoreply': echo 'autoreply ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;;
case 'blocked': echo 'blocked ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
case 'generic': echo 'generic ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
case 'soft': echo 'soft ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
case 'hard': echo 'hard ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
case 'temporary': echo 'temporary ';if($row['long_desc']!='') {echo ' : '.$row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
default :
case '':if($row['long_desc']!=''){echo $row['long_desc'];}elseif($row['status']!=''){echo $row['status'];}else{echo tr("ERROR_UNKNOWN");};break;
}
echo '</b>';
echo '</td><td align="center"><a data-toggle="tooltip" title="'.$row['newsletter_name'].'">'.$row['list_id'].'</a>';
echo '</td><td>';
if((int)$row['id']>0) {
echo ' ('.$row['id'].') ';
echo '<a data-toggle="tooltip" title="'.$row['date'].'">'.$row['subject'].'</a>';
}
}
echo '</tbody></table>';
} else {
echo '<div class="alert alert-success">' . tr("SUBSCRIBER_NO_ERRORS")
. '. Good job ! <img src="js/tinymce/plugins/emoticons/img/smiley-cool.gif"
alt="Yeah ! You did it !" title="Yeah ! You did it !" width="18" heigh="18" /></div>';
}
echo '</div></div>';
echo '<hr>';
$mails_errors = $cnx->query("SELECT ed.email,ed.list_id,ed.hash,ed.error,ed.status,ed.type,
ed.categorie,ed.short_desc,ed.long_desc,ed.campaign_id,
li.newsletter_name,
nws.subject,nws.id,nws.`date`
FROM ".$row_config_globale['table_email_deleted']." ed
LEFT JOIN ".$row_config_globale['table_listsconfig']." li
ON li.list_id=ed.list_id
LEFT JOIN ".$row_config_globale['table_archives']." nws
ON nws.id=ed.campaign_id
WHERE ed.list_id=$list_id
AND ed.type='unsub'
ORDER BY ed.email ASC")->fetchAll(PDO::FETCH_ASSOC);
echo '<div class="row">';
echo '<div class="col-md-12" id="ManageErrorsUnsub">';
echo "<h4>Gestion des abonnés désinscrits</h4>";
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatableU">';
if (count($mails_errors)>0){
echo '<thead>
<tr>
<th class="alert alert-warning">'.tr("MAIL_IN_ERROR").' ('.tr("ACTION").')</th>
<th>'.tr("DESCRIPTION_ERROR").'</th>
<th>'.tr("LIST_NUMBER").'</th>
<th>Désinscrit à la campagne :</th>
</tr>
</thead>';
echo '<tfoot>
<tr>
<th align="center" class="alert alert-warning">'.tr("MAIL_IN_ERROR").' ('.tr("ACTION").')</th>
<th>'.tr("DESCRIPTION_ERROR").'</th>
<th>'.tr("LIST_NUMBER").'</th>
<th>Désinscrit à la campagne :</th>
</tr>
</tfoot>';
echo '<tbody>';
foreach($mails_errors as $row){
echo '<tr>';
echo '<td>';
echo '<form id="'.unique_id($row['email']).'">';
switch($row['type']){
case 'by_admin':
case 'hard':
case 'unsub':
echo '<input type="text" class="input" value="'.$row['email'].'" name="this_mail" id="this_mail" size="25" readonly />';
echo '<input type="hidden" name="this_mail" id="this_mail" value="'.$row['email'].'" />';
echo ' <input type="button" name="action" class="actionMail btn btn-success btn-xs" value="'.tr("RESTORE").'" id="restore" />';
break;
case 'autoreply':
case 'blocked':
case 'generic':
case 'soft':
case 'temporary':
case '':
echo '<input type="text" class="input" value="'.$row['email'].'" name="this_mail" id="this_mail" size="25" />';
echo ' <input type="button" name="action" class="actionMail btn btn-success btn-xs" value="'.tr("UPDATE").'" id="update" />';
break;
}
echo '<input type="hidden" name="list_id" value="'.$row['list_id'].'" />';
echo '<input type="hidden" name="hash" value="'.$row['hash'].'" />';
echo "<input type='hidden' name='token' value='$token' />";
echo '</form>';
echo '</td><td width="30%"><b>';
echo tr("NEWSLETTER_UNSUBSCRIPTION");
echo '</b>';
echo '</td><td align="center"><a data-toggle="tooltip" title="'.$row['newsletter_name'].'">'.$row['list_id'].'</a>';
echo '</td><td>';
if((int)$row['id']>0) {
echo ' ('.$row['id'].') ';
echo '<a data-toggle="tooltip" title="'.$row['date'].'">'.$row['subject'].'</a>';
}
}
echo '</tbody></table>';
} else {
echo '<div class="alert alert-success">' . tr("SUBSCRIBER_NO_ERRORS")
. '. Good job ! <img src="js/tinymce/plugins/emoticons/img/smiley-cool.gif"
alt="Yeah ! You did it !" title="Yeah ! You did it !" width="18" heigh="18" /></div>';
}
echo '</div></div>';
echo "<script src='js/jquery.form.min.js'></script>
<script>
function Submitform(){
if (document.sub.add_addr.value=='') {
alert(\"".tr("EMAIL_ADDRESS_NOT_VALID").".\");
}else{
if(((document.sub.add_addr.value.indexOf('@',1))==-1)||(document.sub.add_addr.value.indexOf('.',1))==-1 ){
alert(\"".tr("EMAIL_ADDRESS_NOT_VALID")."\");
}else{
document.sub.submit();
}
}
}
$(document).ready(function() {
var options = {
target:'#output',
beforeSubmit:beforeSubmit,
success:afterSuccess,
resetForm:true
};
$('#bigimportform').submit(function() {
$(this).ajaxSubmit(options);
return false;
});
});
function afterSuccess(){
$('#submit-btn-biglist').show();
$('#loading-img').hide();
}
function beforeSubmit(){
$('#submit-btn-biglist').hide();
$('#loading-img').show();
$('#output').html('<h4 class=\'alert_info\'><b>".tr("IMPORT_IN_PROGRESS")."</b></div>');
}
$(function(){
$('input#searchid').keyup(function(){
var searchid = $(this).val();
var token = '$token';
var dataString = 'search='+ searchid +'&token='+token+'&list_id=$list_id';
if(searchid!=''){
$.ajax({
type: 'POST',
url: 'include/ajax/search.php',
data: dataString,
cache: false,
success: function(html){
$('#result').html(html).show();
}
});
}return false;
});
$('#result').click(function(event){
$('#searchid').val($('<div/>').html(event.target).text());
$('#result').hide();
});
});
$('input.actionMailFaD').click(function(){
var searchid = $('#searchid').val();
var token = '$token';
var list_id = '$list_id';
var dataString = 'search='+ searchid +'&token='+token+'&list_id='+list_id;
$.ajax({type:'POST',
url: 'include/ajax/del_mails.php',
data: dataString,
success: function(data){
$('#resultdel').html(data).show();
$('#resultdel').delay(3000).fadeOut('slow');
$('#searchid').val('');
}
});
});
$('input.actionMail').click(function(){
var hideItem=$(this).parents('form').attr('id');
$.ajax({type: 'POST',
url: 'include/ajax/manager_mails.php',
data: $(this).parents('form').serialize()+'&'+ encodeURI($(this).attr('name'))+'='+ encodeURI($(this).attr('id')),
success: function(data){
$('#'+hideItem).html(data).show();
}
});
});
function Soumettre(){document.importform.import_file.value = document.importform.insert_file.value;document.importform.submit();}
function ForceTempSub(){document.ManageSubTemp.elements['op'].value = 'val_subscriber_temp';document.ManageSubTemp.submit();}
function DelTempSub(){document.ManageSubTemp.elements['op'].value = 'subscriber_del_temp';document.ManageSubTemp.submit();}
</script>
<style>.show{margin-left:12px;margin-top:5px;font-size:14px;cursor:pointer;}</style>";
wget 'https://lists2.roe3.org/pmnl3/include/subscribers_profils.php'
<?php
if(is_int($ta)&&$ta!='all'){
$p_where = " WHERE e.list_id=".$list_id." AND (SELECT count(distinct(subject)) FROM ". $row_config_globale['table_tracking'] ." dt WHERE dt.hash = e.hash)>0" ;
$totalsubscribers = getSubscribersNumbers($cnx , $row_config_globale['table_email'] , $list_id);
$headerProfil = '<header><h4>' . tr("SUBSCRIBER_PROFILS") . ', liste ' . $list_id . ' : ' . $list_name . ' (' . $totalsubscribers . ' ' . tr("MENU_SUBSCRIBERS") . ')</h4></header>';
}else{
$p_where = " WHERE (SELECT count(distinct(subject)) FROM ". $row_config_globale['table_tracking'] ." dt WHERE dt.hash = e.hash)>0";
$totalsubscribers = getSubscribersTotal($cnx , $row_config_globale['table_email']);
$headerProfil = '<header><h4>' . tr("SUBSCRIBER_PROFILS") .', '. tr("ALL_LISTS") .' (' . $totalsubscribers . ' ' . tr("MENU_SUBSCRIBERS") . ')</h4></header>';
}
if(($_SESSION['dr_abonnes']=='Y'&&$_SESSION['dr_liste']==0)||$_SESSION['dr_is_admin']==true) {
echo strtolower('<div align="center">' . tr("DISPLAY") . ' : ' . tr("LIST") . ' :
<a href="?page=profils&token='.$token.'&list_id='.$list_id.'&st=1&ta=list&itemp=30">'. tr("DEFAULT") .'</a>,
<a href="?page=profils&token='.$token.'&list_id='.$list_id.'&st=1&ta=all&itemp='.$itemp.'">'. tr("ALL_LISTS") .'</a></div>');
}
echo $headerProfil;
$p_select = " SELECT e.id,e.email,e.hash,e.campaign_id,a.subject,
(SELECT SUM(l.cpt)FROM ". $row_config_globale['table_track_links'] ." l WHERE l.hash = e.hash GROUP BY l.hash) AS SUMCPT,
(SELECT count(distinct(subject)) FROM ". $row_config_globale['table_tracking'] ." dt WHERE dt.hash = e.hash) AS CPTCP,
(SELECT min(subject) FROM ". $row_config_globale['table_tracking'] ." mis WHERE mis.hash = e.hash) AS MINCP,
(SELECT max(subject) FROM ". $row_config_globale['table_tracking'] ." mas WHERE mas.hash = e.hash) AS MAXCP " ;
$p_from = " FROM " . $row_config_globale['table_email'] . " e
LEFT JOIN ". $row_config_globale['table_archives'] ." a ON a.id=e.campaign_id " ;
$p_group = " GROUP BY e.hash ";
$p_order = " ORDER BY email ASC ";
$query = $p_select.$p_from.$p_where.$p_group.$p_order.@$p_limit;
$tab_users=$cnx->query($query)->fetchAll(PDO::FETCH_ASSOC);
echo '<table cellpadding="0" cellspacing="0" border="0" class="display" id="datatable">
<thead>
<tr>
<th style="text-align:left">' .tr("EMAIL") .'</th>
<th style="text-align:center">'.tr("LAST_CAMPAIGN_SEND") .'</th>
<th style="text-align:center">'.tr("FIRST_CAMPAIGN_SEND") .'</th>
<th style="text-align:center">'.tr("LAST_CAMPAIGN_OPEN") .'</th>
<th style="text-align:center">'.tr("COUNT_CAMPAIGNS_TOTAL").'</th>
<th style="text-align:center">'.tr("COUNT_CAMPAIGNS_OPEN") .'</th>
<th style="text-align:right">' .tr("RATIO_READER") .'</th>
<th style="text-align:center">'.tr("PROFIL") .'</th>
<th style="text-align:center">'.tr("COUNT_CLICK") .'</th>
<th style="text-align:right">' .tr("RATIO_CLICKER") .'</th>
</tr>
</thead>
<tfoot>
<tr>
<th style="text-align:left">' .tr("EMAIL") .'</th>
<th style="text-align:center">'.tr("LAST_CAMPAIGN_SEND") .'</th>
<th style="text-align:center">'.tr("FIRST_CAMPAIGN_SEND") .'</th>
<th style="text-align:center">'.tr("LAST_CAMPAIGN_OPEN") .'</th>
<th style="text-align:center">'.tr("COUNT_CAMPAIGNS_TOTAL").'</th>
<th style="text-align:center">'.tr("COUNT_CAMPAIGNS_OPEN") .'</th>
<th style="text-align:right">' .tr("RATIO_READER") .'</th>
<th style="text-align:center">'.tr("PROFIL") .'</th>
<th style="text-align:center">'.tr("COUNT_CLICK") .'</th>
<th style="text-align:right">' .tr("RATIO_CLICKER") .'</th>
</tr>
</tfoot>
<tbody>';
foreach ($tab_users as $item){
$nbcmpsend=0;
$profil = $bgcolor = $rgbcolor ='';
$statclk = $statread = '==';
if((int)$item['MINCP']>0&&(int)$item['campaign_id']>0) {
$nbcmpsend_where = " list_id=".$list_id." AND ";
$nbcmpsend=@current($cnx->query("
SELECT COUNT(id)
FROM ". $row_config_globale['table_archives'] ."
WHERE $nbcmpsend_where
id>=".$item['MINCP']." AND id<=".$item['campaign_id'].";")->fetch());
}
if($nbcmpsend<5){
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("WAITING_FOR_MORE_STATS").'</span>';
$bgcolor = '#d1cdc6';
$rgbcolor= 'rgb(0,0,0)';
$statread = '==';
}elseif($nbcmpsend>4){
if(($item['SUMCPT']/$nbcmpsend*100)>50) {
$profil = '<span style="padding:3px;font:12px arial,sans-serif;">'.tr("OPENER_CLICKER").'</span>';
$bgcolor = '#0cb21f';
$rgbcolor= 'rgb(255,255,255)';
} elseif(($item['CPTCP']/$nbcmpsend*100)>50) {
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("OPENER_READER").'</span>';
$bgcolor = '#0cb21f';
$rgbcolor= 'rgb(255,255,255)';
} elseif(($item['SUMCPT']/$nbcmpsend*100)>25) {
$profil = '<span style="padding:3px;font:12px arial,sans-serif;">'.tr("MIDDLE_CLICKER").'</span>';
$bgcolor = '#1b7be2';
$rgbcolor= 'rgb(255,255,255)';
} elseif(($item['CPTCP']/$nbcmpsend*100)>25) {
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("MIDDLE_READER").'</span>';
$bgcolor = '#1b7be2';
$rgbcolor= 'rgb(255,255,255)';
} elseif(($item['SUMCPT']/$nbcmpsend*100)>10) {
$profil = '<span style="padding:3px;font:12px arial,sans-serif;">'.tr("SOME_CLICKS").'</span>';
$bgcolor = '#ffe102';
$rgbcolor= 'rgb(0,0,0)';
} elseif(($item['CPTCP']/$nbcmpsend*100)>10) {
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("SOME_READ").'</span>';
$bgcolor = '#ffe102';
$rgbcolor= 'rgb(0,0,0)';
} elseif(($item['SUMCPT']/$nbcmpsend*100)>0) {
$profil = '<span style="padding:3px;font:12px arial,sans-serif;">'.tr("SMALL_CLICKS").'</span>';
$bgcolor = '#ff7700';
$rgbcolor= 'rgb(0,0,0)';
} elseif(($item['CPTCP']/$nbcmpsend*100)>0) {
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("SMALL_READ").'</span>';
$bgcolor = '#ff7700';
$rgbcolor= 'rgb(0,0,0)';
} elseif(($item['CPTCP']/$nbcmpsend*100)==0) {
$profil = '<span style="padding:3px;font: 12px arial,sans-serif;">'.tr("NO_OPEN").'</span>';
$bgcolor = '#e80707';
$rgbcolor= 'rgb(255,255,255)';
}
$statclk = sprintf("%01.2f",($item['SUMCPT']/$nbcmpsend*100)) . '% ';
$statread= sprintf("%01.2f",($item['CPTCP']/$nbcmpsend*100)) . '% ';
}
echo '<tr>';
echo '<td style="text-align:left">' . $item['email'] .'</td>'; // email
echo '<td style="text-align:center">'. ($item['campaign_id']!=0?$item['campaign_id']:'==') .'</td>'; // dernière campagne envoyée
echo '<td style="text-align:center">'. ($item['MINCP']!=''?$item['MINCP']:'==').'</td>'; // 1ère campagne envoyée
echo '<td style="text-align:center">'. ($item['MAXCP']!=''?$item['MAXCP']:'==') .'</td>'; // dernière campagne ouverte
echo '<td style="text-align:center">'. $nbcmpsend .'</td>'; // campagnes totales
echo '<td style="text-align:center">'. $item['CPTCP'] .'</td>'; // campagnes lues
echo '<td style="text-align:right">' . $statread . '</td>'; // ratio lecture
echo '<td style="text-align:center;background-color:'.$bgcolor.';color:'.$rgbcolor.';">'. $profil .'</td>'; // profil
echo '<td style="text-align:center">'. ($item['SUMCPT']!=''?$item['SUMCPT']:0) .'</td>'; // nombre de clics
echo '<td style="text-align:right">' . $statclk . '</td>'; // ratio cliqueur
echo '</tr>';
}
echo '<tbody>';
echo '</table>';
wget 'https://lists2.roe3.org/pmnl3/include/task.php'
<?php
unset($_GET);
unset($_POST);
$dataStart = getrusage();
define('DOCROOT',dirname(dirname(__FILE__)));
include(DOCROOT.'/include/config.php');
if(file_exists(DOCROOT.'/include/config_bounce.php')) {
include(DOCROOT.'/include/config_bounce.php');
}
date_default_timezone_set($timezone);
include(DOCROOT.'/include/db/db_connector.inc.php');
include(DOCROOT.'/include/lib/pmn_fonctions.php');
require(DOCROOT.'/include/lib/PHPMailerAutoload.php');
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
if(empty($row_config_globale['language']))$row_config_globale['language']="english";
include(DOCROOT.'/include/lang/'.$row_config_globale['language'].'.php');
if((count($_SERVER['argv'])>2)||(count($_SERVER['argv'])==1)){
die(tr("SCHEDULE_NOT_POSSIBLE_TRANSACTION"));
}
if(!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0))) {
// Let's continue !
} else {
if( $end_task_sms == 1 ) {
send_sms($free_id,$free_pass,"Envoi de la campagne $subject en erreur ".date('d/m/Y')." à ".date('H:i:s').". Bonne journée ;-)");
}
die(tr("SCHEDULE_NOT_POSSIBLE_TRANSACTION"));
}
$task_id = $_SERVER['argv'][1];
$detail_task = $cnx->query('SELECT *
FROM '.$row_config_globale['table_crontab'] .'
WHERE job_id="'.$task_id.'"
AND etat="scheduled"')->fetchAll(PDO::FETCH_ASSOC);
if(count($detail_task)==0){
echo tr("SCHEDULE_NO_SEND_SCHEDULED");
exit;
} else {
$start_task_date = date('d/m/Y H:i:s');
$total_send_errors = 0;
$motifs_send_errors = '';
$date = date("Y-m-d H:i:s");
$tPath = ($row_config_globale['path'] == '' ? '/' : '/'.$row_config_globale['path']);
$tPath = str_replace('//','/',$tPath);
touch( DOCROOT . '/logs/__SEND_PROCESS__' . $detail_task[0]['list_id'] . '.pid' );
$cnx->query('UPDATE ' . $row_config_globale['table_archives'] . '
SET date = "' . $date . '"
WHERE list_id = "' . $detail_task[0]['list_id'] . '"
AND id = "' . $detail_task[0]['msg_id'] . '"');
$daylog = @fopen(DOCROOT.'/logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
$daylogmsg=date("d M Y"). " : message sauvegardé sous Numéro d'envoi : " . $detail_task[0]['msg_id'] . "\n";
fwrite($daylog, $daylogmsg, strlen($daylogmsg));
$daylogmsg="\r\n**********************************************************\r\n"
. $date. " : initialisation envoi message " . $detail_task[0]['msg_id'] . " liste " . $detail_task[0]['list_id'] . "\n";
fwrite($daylog, $daylogmsg, strlen($daylogmsg));
$total_suscribers = get_newsletter_total_subscribers($cnx, $row_config_globale['table_email'],$detail_task[0]['list_id'],$detail_task[0]['msg_id']);
$daylogmsg="\r\n $total_suscribers destinataires.\n";
$cnx->query("INSERT into " . $row_config_globale['table_send'] . " (id_mail, id_list, cpt)
VALUES ('" . $detail_task[0]['msg_id'] . "','" . $detail_task[0]['list_id'] . "','0')");
$cnx->query("INSERT into " . $row_config_globale['table_send_suivi'] . " (list_id, msg_id, total_to_send)
VALUES ('" . $detail_task[0]['list_id'] . "','" . $detail_task[0]['msg_id'] . "','" . $total_suscribers."')");
$dontlog = 0;
if (!$handler = @fopen(DOCROOT.'/logs/list' . $detail_task[0]['list_id'] . '-msg' . $detail_task[0]['msg_id'] . '.txt', 'a+')){
$dontlog = 1;
}
$errstr = "=GLOBAL=ENVIRONNEMENT=======================================\r\n";
if (version_compare(PHP_VERSION, '5.3.0', '>')) {
$errstr .= "PHP : ".phpversion()." ".tr("OK_BTN")."\r\n";
} else {
$errstr .= "PHP : ".phpversion()." ".tr("INSTALL_OBSOLETE")."<\r\n";
}
if (extension_loaded('imap')) {
$errstr .= "imap ".tr("OK_BTN")."\r\n";
} else {
$errstr .= "imap ".tr("NOT_FOUND")."\r\n";
}
if (extension_loaded('curl')) {
$errstr .= "curl ".tr("OK_BTN")."\r\n";
} else {
$errstr .= "curl ".tr("NOT_FOUND")."\r\n";
}
if (is_exec_available()){
$errstr .= "exec ".tr("OK_BTN")."\r\n";
} else {
$errstr .= "exec ".tr("NOT_FOUND")."\r\n";
}
$errstr .= "============================================================\r\n";
$errstr .= date("d M Y") . "\r\n";
$errstr .= "Started at " . date("H:i:s") . "\r\n";
$errstr .= "N° \t Date \t\t Time \t\t Status \t\t Recipient \r\n";
$errstr .= "------------------------------------------------------------\r\n";
if (!$dontlog){
fwrite($handler, $errstr, strlen($errstr));
}
fwrite($daylog, $errstr, strlen($errstr));
$begin = 0;
$limit = $row_config_globale['sending_limit'];
$mail = new PHPMailer();
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->CharSet = $row_config_globale['charset'];
$mail->ContentType = "text/html";
$mail->Encoding = "quoted-printable";
$mail->PluginDir = DOCROOT.'/include/lib/';
$msg = get_message($cnx, $row_config_globale['table_archives'], $detail_task[0]['msg_id']);
$newsletter = getConfigSender($cnx, $row_config_globale['table_senders'], $msg['sender_email']);
$sender_email = $newsletter['email'];
$sender_name = $newsletter['name_organisation'];
$reply_email = $newsletter['email_reply'];
if (empty($sender_email)) {
$emptysender = getConfig($cnx, $detail_task[0]['list_id'], $row_config_globale['table_listsconfig']);
$sender_email = $emptysender['from_addr'];
$sender_name = $emptysender['from_name'];
$reply_email = $emptysender['from_addr'];
}
// recherche du mail de bounce (retour des non distribués), du particulier au général, sinon, par défaut : $bounce_mail
if (empty(trim($newsletter['bounce_email']))) { // from array $newsletter : particular desc
if (empty(trim($bounce_mail))) { // from config_bounce.php : global desc
$bounce_email = $emptysender['from_addr']; // from array $emptysender : default desc
} else {
$bounce_email = $bounce_mail;
}
} else {
$bounce_email = $newsletter['bounce_email'];
}
$mail->AddReplyTo($reply_email);
$mail->SetFrom($sender_email, $sender_name);
$mail->Sender = $bounce_email;
$format = $msg['type'];
$list_pj= $cnx->query('SELECT *
FROM '.$row_config_globale['table_upload'].'
WHERE list_id='.$detail_task[0]['list_id'].'
AND msg_id='.$detail_task[0]['msg_id'].'
ORDER BY id ASC')->fetchAll(PDO::FETCH_ASSOC);
if(count($list_pj)>0){
foreach ($list_pj as $item) {
$mail->AddAttachment(DOCROOT.'/upload/'.$item['name']);
}
}
$message = stripslashes($msg['message']);
$to_replace = array(" ","\t","\n","\r","\0","\x0B","\xA0");
$subject = stripslashes($msg['subject']);
$message = str_replace($to_replace, " ", $message);
if (strpos($message, '</style>') === false) {
$message = '<style type="text/css"></style>' . $message;
}
if (strpos($message, '</title>') === false) {
$message = '<title>[[SUBJECT]]</title>' . $message;
} elseif (strpos($message, '<title>[[SUBJECT]]</title>') === false && strpos($message, '<title>') !== false) {
$message = preg_replace("/<title>(.*)<\/title>/","",$message,1);
$message = '<title>[[SUBJECT]]</title>' . $message;
}
$header = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--[if IE]>
<html xmlns="http://www.w3.org/1999/xhtml">
<![endif]-->
<!--[if !IE]>
<!-->
<html style="margin: 0;padding: 0;" xmlns=3D"http://www.w3.org/1999/xhtml">
<!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!--<![endif]-->
<meta name="x-apple-disable-message-reformatting" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="' . $subject . '" />';
$message = str_replace('<title>[[SUBJECT]]</title>', $header.'<title>' . $subject . '</title>', $message);
$preHeaderDesc = stripslashes($msg['preheader']);
$preHeader = "<div class='preHeader' align='center' style='font-size:8px;font-family:arial,helvetica,sans-serif;padding-bottom:5px;color:#878e83;'>" . $preHeaderDesc . "</div>";
$message = str_replace('</style>', ' .preHeader {display:none!important;}</style></head><body>'.$preHeader, $message);
$messageSource = str_replace(" ", " ", $message);
if ($format == "html") {
$mail->IsHTML(true);
}
$mail->WordWrap = 76;
if (file_exists(DOCROOT.'/include/DKIM/DKIM_config.php')&&($row_config_globale['sending_method']=='smtp'||$row_config_globale['sending_method']=='php_mail')) {
include(DOCROOT.'/include/DKIM/DKIM_config.php');
$mail->DKIM_domain = $DKIM_domain;
$mail->DKIM_private = $DKIM_private;
$mail->DKIM_selector = $DKIM_selector;
$mail->DKIM_passphrase = $DKIM_passphrase;
$mail->DKIM_identity = $DKIM_identity;
}
while($begin<$total_suscribers){
$addr = getAddress($cnx, $row_config_globale['table_email'],$detail_task[0]['list_id'],$begin,$limit,$detail_task[0]['msg_id']);
$to_send = count($addr);
$start = microtime(true);
for ($i = 0; $i < $to_send; $i++) {
$time_info = '';
$begintimesend = microtime(true);
$unsubLink = "";
$headtrc = "";
$body = "";
$message = $messageSource;
$mail->ClearAllRecipients();
$mail->ClearCustomHeaders();
$mail->AddAddress(trim($addr[$i]['email']));
include(DOCROOT."/include/lib/switch_smtp.php");
$mail->XMailer = ' ';
$mail->addCustomHeader("List-Unsubscribe",'<'. $row_config_globale['base_url'] . $tPath . 'subscription.php?i=' . $detail_task[0]['msg_id'] . '&list_id='
. $detail_task[0]['list_id'] . '&op=leave&email_addr=' . $addr[$i]['email'] . '&h=' . $addr[$i]['hash'] . '>'
. ( $sender_email != '' ? ', <mailto:' . $sender_email . '?subject=unsubscribe>' : '' )
);
$body = "";
if ( $row_config_globale['active_tracking'] == '1' ) {
$trac = "<img style='border:0' src='" . $row_config_globale['base_url'] . $tPath . "trc.php?i=" .$detail_task[0]['msg_id']. "&h="
. $addr[$i]['hash'] . "' width='1' height='1' alt='" .$detail_task[0]['list_id']. "' />";
} else {
$trac = "";
}
if ($format == "html"){
if ( $row_config_globale['active_tracking'] == '1' ) {
$new_url = 'href="' . $row_config_globale['base_url'] . $tPath .'r.php?m='.$detail_task[0]['msg_id'].'&h='.$addr[$i]['hash'].'&l='.$detail_task[0]['list_id'].'&r=';
$message = preg_replace_callback('/href="(http[s]?:\/\/)([^"]+)"/', function($matches) {
global $new_url;
return $new_url . (urlencode(@$matches[1] . $matches[2])) . '"';
}, $message);
}
if (strpos($message, '</body>') !== false) {
$message = str_replace('</body>', '', $message);
$message = str_replace('</html>', '', $message);
}
$headtrc = "<hr noshade='' color='#D4D4D4' width='90%' size='1'>"
. "<div align='center' style='font-size:12px;font-family:arial,helvetica,sans-serif;padding-bottom:5px;color:#878e83;'>"
. tr("READ_ON_LINE", "<a href='" . $row_config_globale['base_url'] . $tPath . "online.php?i=" . $detail_task[0]['msg_id'] . "&list_id="
. $detail_task[0]['list_id'] . "&email_addr=" . $addr[$i]['email'] . "&h=" . $addr[$i]['hash'] . "'>") . "<br />"
. tr("ADD_ADRESS_BOOK", $sender_email) . "<br />";
$unsubLink = $headtrc . tr("UNSUBSCRIBE_LINK", "<a href='" . $row_config_globale['base_url'] . $tPath
. "subscription.php?i=" . $detail_task[0]['msg_id'] . "&list_id=". $detail_task[0]['list_id'] . "&op=leave&email_addr=" . $addr[$i]['email']
. "&h=" . $addr[$i]['hash'] . "' style='' target='_blank'>")
. $trac
. "</div></body></html>";
} else {
$body .= tr("READ_ON_LINE", "<a href='".$row_config_globale['base_url'].$tPath."online.php?i=" . $detail_task[0]['msg_id'] . "&list_id=".$detail_task[0]['list_id']."&email_addr=".$addr[$i]['email']."&h=".$addr[$i]['hash']."'>")."<br />";
$body .= tr("ADD_ADRESS_BOOK", $newsletter['from_addr'])."<br />";
$unsubLink = $row_config_globale['base_url'] . $tPath . 'subscription.php?i=' .$detail_task[0]['msg_id']. '&list_id=' . $detail_task[0]['list_id'] . '&op=leave&email_addr=' . urlencode($addr[$i]['email']).'&h=' . $addr[$i]['hash'];
}
$subject = (strtoupper($row_config_globale['charset']) == "UTF-8" ? $subject : iconv("UTF-8", $row_config_globale['charset'], $subject));
$body = $message . $unsubLink ;
$mail->Subject = $subject;
// https://github.com/PHPMailer/PHPMailer/issues/892
// dkim=fail (body hash did not verify)
$htmlMsg = "";
$lines = explode("\n", $body);
foreach ($lines as $line) $htmlMsg .= trim($line)."\n";
$mail->msgHTML($htmlMsg);
@set_time_limit(300);
$ms_err_info = '';
if (!$mail->Send()) {
$cnx->query("UPDATE ".$row_config_globale['table_send']."
SET error=error+1
WHERE id_mail='".$detail_task[0]['msg_id']."'
AND id_list='".$detail_task[0]['list_id']."'");
$ms_err_info = $mail->ErrorInfo;
$motifs_send_errors .= $addr[$i]['email'] . ' ---> '. $ms_err_info."\r\n";
$total_send_errors++;
$cnx->query("UPDATE ".$row_config_globale['table_email']."
SET error='Y',long_desc='".$cnx->CleanInput($ms_err_info)."',campaign_id='".$detail_task[0]['msg_id']."'
WHERE email='".$addr[$i]['email']."'
AND list_id='".$detail_task[0]['list_id']."'");
$cnx->query("INSERT INTO " . $row_config_globale['table_email_deleted']. "
(id,email,list_id,hash,error,status,type,categorie,short_desc,long_desc,campaign_id)
SELECT id,email,list_id,hash,'Y',NULL,'',NULL,'','" . $cnx->CleanInput($ms_err_info). "','" . $detail_task[0]['msg_id'] . "'
FROM " . $row_config_globale['table_email'] . "
WHERE email='" . $addr[$i]['email'] . "'
AND list_id='" . $detail_task[0]['list_id'] . "'" );
$cnx->query("DELETE FROM " . $row_config_globale['table_email'] . "
WHERE email='" . $addr[$i]['email'] . "'
AND list_id='" . $detail_task[0]['list_id'] . "'"
);
$daylogmsg=date("Y-m-d H:i:s") . " : envoi à ".$addr[$i]['email']." en erreur $ms_err_info\n";
fwrite($daylog, $daylogmsg, strlen($daylogmsg));
} else {
$cnx->query("UPDATE ".$row_config_globale['table_email']."
SET campaign_id='".$detail_task[0]['msg_id']."'
WHERE email='".$addr[$i]['email']."'
AND list_id='".$detail_task[0]['list_id']."'");
$cnx->query("UPDATE ".$row_config_globale['table_send']."
SET cpt=cpt+1
WHERE id_mail='".$detail_task[0]['msg_id']."'
AND id_list='".$detail_task[0]['list_id']."'");
$ms_err_info = 'OK';
$daylogmsg=date("Y-m-d H:i:s") . " : envoi à ".$addr[$i]['email']." OK\n";
fwrite($daylog, $daylogmsg, strlen($daylogmsg));
}
$cnx->query('UPDATE '.$row_config_globale['table_send_suivi'].'
SET nb_send=nb_send+1,last_id_send='.$addr[$i]['id'].'
WHERE msg_id='.$detail_task[0]['msg_id'].'
AND list_id='.$detail_task[0]['list_id']);
$endtimesend = microtime(true);
$time_info = substr(($endtimesend-$begintimesend),0,5);
$errstr = ($begin + $i + 1) . "\t" . date("H:i:s") . "\t " . $time_info . "\t\t " .$ms_err_info. " \t" . $addr[$i]['email'] . "\r\n";
if (!$dontlog){
fwrite($handler, $errstr, strlen($errstr));
}
$last_id_send = $addr[$i]['id'];
msleep($timer_cron);
}
$end = microtime(true);
$tts = substr(($end - $start),0,5);
if ($begin < $total_suscribers) {
$cnx->query('UPDATE '.$row_config_globale['table_send_suivi'].'
SET tts=tts+"'.$tts.'",last_id_send='.$last_id_send.',nb_send=nb_send+'.$to_send.'
WHERE list_id='.$detail_task[0]['list_id'].'
AND msg_id='.$detail_task[0]['msg_id']);
}
$begin += $to_send;
}
$errstr = "------------------------------------------------------------\r\n";
$errstr .= "Finished at " . date("H:i:s") . "\r\n";
$errstr .= "============================================================\r\n";
$errstr .= "Taille de la mémoire swap : " . $dataStart["ru_nswap"] . "\n";
$errstr .= "Nombre de pages mémoires utilisées : " . $dataStart["ru_majflt"] . "\n";
$errstr .= "Temps utilisateur (en secondes) : " . $dataStart["ru_utime.tv_sec"] . "\n";
$errstr .= "Temps utilisateur (en microsecondes): " . $dataStart["ru_utime.tv_usec"] . "\n";
if (!$dontlog){
fwrite($handler, $errstr, strlen($errstr));
fclose($handler);
}
fclose($daylog);
unlink( DOCROOT . '/logs/__SEND_PROCESS__' . $detail_task[0]['list_id'] . '.pid' );
$output = shell_exec('crontab -l');
$newcron = str_replace($detail_task[0]['command'],"",$output);
file_put_contents(DOCROOT."/include/backup_crontab/".$detail_task[0]['job_id']."_import", $newcron.PHP_EOL);
exec('crontab '.DOCROOT."/include/backup_crontab/".$detail_task[0]['job_id']."_import");
$cnx->query('UPDATE '.$row_config_globale['table_crontab'].'
SET etat="done"
WHERE list_id='.$detail_task[0]['list_id'].'
AND msg_id='.$detail_task[0]['msg_id'].'
AND job_id="'.$detail_task[0]['job_id'].'"');
if( $end_task == 1 ) {
$rapport_sujet = tr("SCHEDULE_REPORT_SUBJECT");
$subj = (strtoupper($row_config_globale['charset']) == "UTF-8" ?
$rapport_sujet :
iconv("UTF-8", $row_config_globale['charset'], $rapport_sujet))
. " : " .$subject;
$end_task_date = date('d/m/Y H:i:s');
$rapport = '<br /><br /><br /><br /><br />
<table style="height: 217px; margin-left: auto; margin-right: auto;" width="660">
<tbody>
<tr><td style="text-align: center;" colspan="2"><span style="color: #2446a2;font-size: 14pt;">
<img src="https://www.phpmynewsletter.com/css/images/phpmynewsletter_v2.png" alt="" width="123" height="72" /><br />'.tr("SCHEDULE_REPORT_TITLE").' !</td></tr>
<tr><td style="text-align: center;" colspan="2"><span style="color: #2446a2;">'.tr("SCHEDULE_REPORT_LONG_DESC").'</span></td></tr>
<tr><td><span style="color: #2446a2;">'.tr("SCHEDULE_CAMPAIGN_TITLE").' :</span></td>
<td><span style="color: #2446a2;">'.$subject.'</span></td></tr>
<tr><td><span style="color: #2446a2;">'.tr("SCHEDULE_CAMPAIGN_ID").' :</span></td>
<td><span style="color: #2446a2;">'.$detail_task[0]['msg_id'].' ('.$detail_task[0]['job_id'].')</td></tr>
<tr><td><span style="color: #2446a2;">'.tr("SCHEDULE_CAMPAIGN_DATE_DONE").'</span></td>
<td><span style="color: #2446a2;">'.tr("SCHEDULE_START_PROCESS").' : '.$start_task_date.'<br />'.tr("SCHEDULE_END_PROCESS").' : '.$end_task_date.'</td></tr>
<tr><td><span style="color: #2446a2;">'.tr("SCHEDULE_CAMPAIGN_SENDED").' :</span></td><td><span style="color: #2446a2;">'.$total_suscribers.'</span></td></tr>
<tr><td><span style="color: #2446a2;">'.tr("SCHEDULE_CAMPAIGN_ERROR").' :</span></td><td><span style="color: #2446a2;">'.$total_send_errors.'</span></td></tr>
<tr><td></td><td><span style="color: #2446a2;">'.@$motifs_send_errors.'</span></td></tr>
</tbody>
</table>';
sendEmail($row_config_globale['sending_method'],$row_config_globale['admin_email'], $row_config_globale['admin_email'],
$row_config_globale['admin_name'], $subj, $rapport, $row_config_globale['smtp_auth'], $row_config_globale['smtp_host'],
$row_config_globale['smtp_login'], $row_config_globale['smtp_pass'], $row_config_globale['charset']);
}
if( $end_task_sms == 1 )
send_sms($free_id,$free_pass,"L'envoi de la campagne $subject s'est terminé le ".date('d/m/Y')." à ".date('H:i:s').". Bonne journée ;-)");
}
exit(0);
wget 'https://lists2.roe3.org/pmnl3/include/tracking.php'
<?php
$row_cnt = get_id_send($cnx,$list_id,$row_config_globale['table_send']);
if($row_cnt['CPTID'] > 0){
$array_stats_tmp = get_stats_send($cnx,$list_id,$row_config_globale);
$array_stats=array_reverse($array_stats_tmp);
?>
<script type="text/javascript" src="js/amcharts/amcharts.js"></script>
<script type="text/javascript" src="js/amcharts/serial.js"></script>
<script type="text/javascript" src="js/amcharts/lang/fr.js"></script>
<link type="text/css" href="js/amcharts/plugins/export/export.css" rel="stylesheet">
<script type="text/javascript" src="js/amcharts/plugins/export/export.js"></script>
<script type="text/javascript" src="js/Chart.js/Chart.js"></script>
<script type="text/javascript">
AmCharts.makeChart("chartdiv",
{
"type": "serial",
"language": "fr",
"categoryField": "cp_id",
"dataDateFormat": "YYYY-MM-DD",
"categoryAxis": {
"parseDates": false
},
"export": {
"enabled": true
},
"chartCursor": {},
"trendLines": [],
"graphs": [
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "envois",
"title": "<?php echo tr("TRACKING_SEND");?>",
"valueField": "c1"
},
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "erreurs",
"title": "<?php echo tr("TRACKING_ERROR");?>",
"valueField": "c2"
},
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "ouvertures",
"title": "<?php echo tr("TRACKING_OPENED");?>",
"valueField": "c3"
},
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "lectures",
"title": "<?php echo tr("TRACKING_READ");?>",
"valueField": "c4"
},
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "abandons",
"title": "<?php echo tr("TRACKING_UNSUB");?>",
"valueField": "c5"
},
{
"balloonText": "[[title]] : [[value]]",
"bullet": "round",
"id": "clics",
"title": "<?php echo tr("CLICKS");?>",
"valueField": "c6"
},
],
"guides": [],
"valueAxes": [
{
"id": "ValueAxis-1",
"title": "<?php echo tr("TRACKING_COUNT");?>"
}
],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"useGraphSettings": true
},
"titles": [
{
"id": "Title-1",
"size": 15,
"text": "<?php echo tr("TRACKING_STATS_GRAPHICS_REPORT");?>"
}
],
"dataProvider":[<?php
foreach($array_stats as $row){
$global_open = $row['TID'] + $row['TIDUNSUB'];
echo '{"date":"'.$row['dt'].'","c1":'.($row['cpt']!=''?$row['cpt']:0).',"c2":'.($row['error']!=''?$row['error']:0).',"c3":'
.($global_open!=''?$global_open:0).',"c4":'.($row['TOPEN']!=''?$row['TOPEN']:0).',"c5":'.($row['leave']!=''?$row['leave']:0)
.',"c6":'.($row['CPT_CLICKED']!=''?$row['CPT_CLICKED']:0).',"cp_id":'.$row['id_mail'].'},';
}
?>],"export":{"enabled": true}});
</script>
<?php
$row = get_stats_send_global_by_list($cnx,$row_config_globale,$list_id);
echo '<div class="row">';
echo '<div class="col-md-12">';
echo '<header><h4>' . tr("KEY_NUMBERS_ALL_CAMPAIGNS") . ' : ' . $list_name . '</h4></header>
<table class="tablesorter table table-striped">
<thead>
<tr>
<th style="text-align:center">' . tr("CAMPAIGNS") . '</th>
<th style="text-align:center">' . tr("SCHEDULE_CAMPAIGN_SENDED") . '</th>
<th style="text-align:center">' . tr("TRACKING_READ") . '</th>
<th style="text-align:center">' . tr("TRACKING_OPENED") . '</th>
<th style="text-align:center">' . tr("CLICKS") . '</th>
<th style="text-align:center">' . tr("OPEN_RATE") . '</th>
<th style="text-align:center">' . tr("CTR") . '</th>
<th style="text-align:center">' . tr("ACTR") . '</th>
<th style="text-align:center">' . tr("TRACKING_ERROR") . '</th>
<th style="text-align:center">' . tr("TRACKING_UNSUB") . '</th>
</tr>
</thead>
<tbody>';
echo '<tr>';
echo '<td style="text-align:center"><h2>'. $row[0]['TSEND'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TMAILS'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. ($row[0]['TOPEN']!=''?$row[0]['TOPEN']:0) . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TID'] . '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['CPT_CLICKED'] . '</h2></td>';
$OPENRATE = @round(($row[0]['TID']/($row[0]['TMAILS']-$row[0]['TERROR'])*100),1);//OPEN RATE
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_OPEN_RATE" ) .'">'.($OPENRATE>0?'<b>'.$OPENRATE.'</b>':0).'%</a></h2></td>';
$CTR = @round(($row[0]['CPT_CLICKED']/$row[0]['TMAILS']*100),1);//CTR
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_CTR" ) .'">'.($CTR>0?'<b>'.$CTR.'</b>':0).'%</a></h2></td>';
$ACTR = @round(($row[0]['CPT_CLICKED']/$row[0]['TID']*100),1);//ACTR
echo '<td style="text-align:center"><h2><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_ACTR" ) .'">'.($ACTR>0?'<b>'.$ACTR.'</b>':0).'%</a></h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TERROR']. '</h2></td>';
echo '<td style="text-align:center"><h2>'. $row[0]['TLEAVE']. '</h2></td>';
echo '</tr>';
echo '</table>';
echo '<header><h4>' . tr("TRACKING_TITLE") . '</h4></header>';
echo '<div id="chartdiv" style="width: 100%; height: 500px; background-color: #FFFFFF;" ></div>';
echo "<div class='form-group'>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' name='selected_newsletter'><div align='center'>";
echo "<br>" .tr("TRACKING_GOTO_LIST"). " : <select name='list_id' class='selectpicker' data-width='auto'>";
$slList='';
foreach ($list as $item) {
$slList .= "<option value='" . $item['list_id'] . "' ";
if($list_id== $item['list_id']){
$slList .= "selected='selected' ";
}
$slList .= ">" . $item['newsletter_name'] . "</option>";
}
echo $slList;
echo "</select>";
echo "<input type='hidden' name='page' value='tracking' />";
echo "<input type='hidden' name='token' value='$token' />";
echo " <input type='submit' value=' O K ' class='btn btn-primary' /></div>";
echo "</form>";
echo '</div>';
$TOTALBROWSER = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id .' )'
)->fetch();
$total = $TOTALBROWSER['total'];
$results_stat_browser = $cnx->query('SELECT DISTINCT(CONCAT(browser,\' \',SUBSTRING_INDEX(version,\'.\',1))) AS browser,
COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE browser!=\'\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
AND browser!=\'\'
AND version!=\'unknown\'
AND browser NOT IN (\'iPhone\',\'iPad\',\'Android\')
GROUP BY CONCAT(browser,\' \',SUBSTRING_INDEX(version,\'.\',1))
HAVING COUNT(*)>'.($total/100).'
ORDER BY data DESC;'
);
if (count($results_stat_browser) >0) {
$databrowser = '';
@(int)$cptbrowser;
@(int)$totalAffiche;
foreach ($results_stat_browser as $tab) {
@$cptbrowser .= $tab['data'] . ',';
$databrowser .= '"' . $tab['browser'] . ' ('.@round(((int)$tab['data']/$total*100),2).'%) ",';
@$totalAffiche = $totalAffiche+(int)$tab['data'];
}
if (($total-@$totalAffiche)>0) {
$cptbrowser .= $total-$totalAffiche ;
$databrowser .= '"Others <1% ('.@round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
}
$results_stat_platform = $cnx->query('SELECT platform,COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE platform!=\'\'
AND platform!=\'unknown\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
GROUP BY platform
HAVING COUNT(*)>'.($total/100).'
ORDER BY data DESC;'
);
if (count($results_stat_platform) >0) {
$dataplatform = '';
@(int)$cptplatform;
@(int)$totalAffiche=0;
foreach ($results_stat_platform as $tab) {
@$cptplatform .= $tab['data'] . ',';
$dataplatform .= '"' . $tab['platform'] . ' ('.@round(((int)$tab['data']/$total*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['data'];
}
if (($total-$totalAffiche)>0) {
$cptplatform .= $total-$totalAffiche ;
$dataplatform .= '"Others <1% ('.@round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
}
$TOTALDEVICE = $cnx->query('SELECT COUNT(*) AS totalDevice
FROM ' . $row_config_globale['table_tracking'] . '
WHERE devicetype!=\'\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)'
)->fetch();
$totaldv = $TOTALDEVICE['totalDevice'];
$results_stat_devicetype= $cnx->query('SELECT DISTINCT(devicetype) AS devicetype,COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE devicetype!=\'\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
GROUP BY devicetype
HAVING COUNT(*)>'.($totaldv/100).'
ORDER BY data DESC;'
);
if (count($results_stat_devicetype) >0) {
$datadevicetype = '';
@(int)$cptdevicetype;
(int)$totalAffiche=0;
foreach ($results_stat_devicetype as $tab) {
@$cptdevicetype .= $tab['data'] . ',';
$datadevicetype .= '"' . $tab['devicetype'] . ' ('.@round(((int)$tab['data']/$totaldv*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['data'];
}
if (($totaldv-$totalAffiche)>0) {
$cptdevicetype .= $totaldv-$totalAffiche ;
$datadevicetype .= '"Others <1% ('.@round((($totaldv-$totalAffiche )/$totaldv*100),2).'%) ",';
}
}
$TOTALUSERAGENT = $cnx->query('SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_tracking'] . '
WHERE (
useragent like "%outlook%"
OR useragent like "%Thunderbird%"
OR useragent like "%Icedove%"
OR useragent like "%Shredder%"
OR useragent like "%Airmail%"
OR useragent like "%Lotus-Notes%"
OR useragent like "%Barca%"
OR useragent like "%Postbox%"
OR useragent like "%MailBar%"
OR useragent like "%The Bat!%"
OR useragent like "%GoogleImageProxy%"
)
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)'
)->fetch();
$totalua = $TOTALUSERAGENT['total'];
(int)$totalAffiche=0;
$results_stat_ua= $cnx->query('SELECT DISTINCT(useragent) AS useragent,COALESCE(COUNT(*),0) AS data
FROM ' . $row_config_globale['table_tracking'] . '
WHERE (
useragent like "%outlook%"
OR useragent like "%Thunderbird%"
OR useragent like "%Icedove%"
OR useragent like "%Shredder%"
OR useragent like "%Airmail%"
OR useragent like "%Lotus-Notes%"
OR useragent like "%Barca%"
OR useragent like "%Postbox%"
OR useragent like "%MailBar%"
OR useragent like "%The Bat!%"
OR useragent like "%GoogleImageProxy%"
)
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
GROUP BY useragent
HAVING COUNT(*)>'.($totalua/100).'
ORDER BY data DESC;'
);
if (count($results_stat_ua) >0) {
$tmpDataUa=array(
"Thunderbird"=>0,
"Shredder"=>0,
"Icedove"=>0,
"Outlook-Express"=>0,
"Microsoft Outlook"=>0,
"Lotus-notes"=>0,
"Postbox"=>0,
"MailBar"=>0,
"The Bat!"=>0,
"Barca"=>0,
"Airmail"=>0,
"Gmail"=>0
);
foreach ($results_stat_ua as $tab) {
$str = $tab['useragent'];
$mua=array();
if(preg_match('/Thunderbird(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Thunderbird']=$tmpDataUa['Thunderbird']+$tab['data'];
}elseif(preg_match('/Shredder(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Shredder']=$tmpDataUa['Shredder']+$tab['data'];
}elseif(preg_match('/Icedove(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Icedove']=$tmpDataUa['Icedove']+$tab['data'];
}elseif(preg_match('/Outlook-Express(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Outlook-Express']=$tmpDataUa['Outlook-Express']+$tab['data'];
}elseif(preg_match('/Microsoft Outlook(?: Mail)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Microsoft Outlook']=$tmpDataUa['Microsoft Outlook']+$tab['data'];
}elseif(preg_match('/Lotus-notes(?:\/(\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Lotus-notes']=$tmpDataUa['Lotus-notes']+$tab['data'];
}elseif(preg_match('/Postbox(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Postbox']=$tmpDataUa['Postbox']+$tab['data'];
}elseif(preg_match('/MailBar(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['MailBar']=$tmpDataUa['MailBar']+$tab['data'];
}elseif(preg_match('/The Bat!(?: Voyager)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['The Bat!']=$tmpDataUa['The Bat!']+$tab['data'];
}elseif(preg_match('/Barca(?:Pro)?(?:[\/ ](\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Barca']=$tmpDataUa['Barca']+$tab['data'];
}elseif(preg_match('/Airmail(?: (\d+[\.\d]+))?/iD', $str)) {
$tmpDataUa['Airmail']=$tmpDataUa['Airmail']+$tab['data'];
}elseif(preg_match('/GoogleImageProxy?/iD', $str)) {
$tmpDataUa['Gmail']=$tmpDataUa['Gmail']+$tab['data'];
}
}
@(int)$cptua;
$dataua='';
@(int)$totalAfficheUa;
arsort($tmpDataUa);
foreach ($tmpDataUa as $uaName => $value) {
if((int)$value>0){
@$cptua .= (int)$value . ',';
$dataua .= '"' . $uaName . ' ('.@round(((int)$value/$total*100),2).'%) ",';
@$totalAfficheUa = $totalAfficheUa+(int)$value;
}
}
if (($total-@$totalAfficheUa)>0) {
$cptua .= $total-$totalAfficheUa;
$dataua .= '"Autres ('.@round((($total-$totalAfficheUa)/$total*100),2).'%) ",';
}
}
$TOTALDOMAINES = $cnx->query(
'SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_email'] . '
WHERE list_id='.$list_id )->fetch();
$total = $TOTALDOMAINES['total'];
$results_stat_domaines= $cnx->query(
'SELECT DISTINCT(LOWER(SUBSTRING_INDEX(email,\'@\',-1))) AS DOMAINES, COUNT(*) AS DATA
FROM ' . $row_config_globale['table_email'] . '
WHERE list_id='.$list_id.'
GROUP BY DOMAINES
HAVING COUNT(*)>'.($total/100).'
ORDER BY DATA DESC;'
);
if (count($results_stat_domaines)>0&&$total>0) {
$datadomaines = '';
@(int)$cptdomaines;
(int)$totalAffiche=0;
foreach ($results_stat_domaines as $tab) {
@$cptdomaines .= $tab['DATA'] . ',';
$datadomaines .= '"' . $tab['DOMAINES'] . ' ('.@round(((int)$tab['DATA']/$total*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['DATA'];
}
if (($total-$totalAffiche)>0) {
$cptdomaines .= $total-$totalAffiche ;
$datadomaines .= '"Others <1% ('.@round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
}
$TOTALDOMAINESCLK = $cnx->query(
'SELECT COUNT(*) AS total
FROM ' . $row_config_globale['table_email'] . ' E
RIGHT JOIN ' . $row_config_globale['table_tracking'] . ' T ON E.hash=T.hash
WHERE campaign_id>0
AND list_id='.$list_id)->fetch();
$total = $TOTALDOMAINESCLK['total'];
$results_stat_domaines_clk= $cnx->query(
'SELECT DISTINCT(LOWER(SUBSTRING_INDEX(E.email,\'@\',-1))) AS DOMAINES, COUNT(T.id) AS DATA
FROM ' . $row_config_globale['table_email'] . ' E
LEFT JOIN ' . $row_config_globale['table_tracking'] . ' T ON E.hash=T.hash
WHERE list_id='.$list_id.'
GROUP BY DOMAINES
HAVING COUNT(T.id)>'.($total/100).'
ORDER BY DATA DESC;'
);
if (count($results_stat_domaines_clk)>0&&$total>0) {
$datadomainesclk = '';
$cptdomainesclk = '';
(int)$totalAffiche=0;
foreach ($results_stat_domaines_clk as $tab) {
$cptdomainesclk .= $tab['DATA'] . ',';
$datadomainesclk .= '"' . $tab['DOMAINES'] . ' ('.@round(((int)$tab['DATA']/$total*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['DATA'];
}
$cptdomainesclk .= $total-$totalAffiche ;
$datadomainesclk .= '"Others <1% ('.@round((($total-$totalAffiche )/$total*100),2).'%) ",';
}
$sql = 'SELECT HOUR(`date`) AS DTHR, COUNT( * ) AS CPTDTHR
FROM ' . $row_config_globale['table_tracking'] . '
WHERE subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
GROUP BY DTHR
ORDER BY DTHR;';
$results_dthr = $cnx->query($sql);
if (count($results_dthr) >0) {
$labelsdthr='';
@(int)$datadthr;
foreach ($results_dthr as $tab) {
$labelsdthr.="'".sprintf("%02d",$tab['DTHR'])."H00',";
@$datadthr.= (int)$tab['CPTDTHR'].',';
}
}
?>
<hr>
<header><h4><?php echo tr("ENVIRONMENT_ALL_CAMPAIGNS");?></h4></header>
<table class="table table-striped">
<tr>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_LINK_REPORT_ENVIRONMENT"); ?></h4></div><canvas id="PmnlStatsBrowser" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("MAIL_CLIENT"); ?></h4></div><canvas id="PmnlPim" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("CLICKED_LINK_REPORT_OS"); ?></h4></div><canvas id="PmnlStatsPlatform" /></td>
<td width="25%"><div align="center"><h4><?php echo tr("SUPPORT"); ?></h4></div><canvas id="PmnlStatsDevicetype" /></td>
</tr>
<tr>
<td><div id="PmnlStatsBrowser-legend" class="chart-legend"></div></td>
<td><div id="PmnlPim-legend" class="chart-legend"></div></td>
<td><div id="PmnlStatsPlatform-legend" class="chart-legend"></div></td>
<td><div id="PmnlStatsDevicetype-legend" class="chart-legend"></div></td>
</tr>
<tr>
<td><div align="center"><h4><?php echo tr("CLICKED_DISTINCT_DOMAINS"); ?></h4></div><canvas id="PmnlDistctDomain" /></td>
<td><div align="center"><h4><?php echo tr("OPENED_BY_DOMAINS"); ?></h4></div><canvas id="PmnlCntClkDomain" /></td>
<td width="50%" colspan="2" rowspan="2" align="center"><h4><?php echo tr('OPEN_BY_HOURS'); ?></h4><canvas id="ClicByHours" style="width:70%;height:300px;"></canvas> </td>
</tr>
<tr>
<td><div id="PmnlDistctDomain-legend" class="chart-legend"></div></td>
<td><div id="PmnlCntClkDomain-legend" class="chart-legend"></div></td>
<td></td>
</tr>
</table>
<script>
Chart.defaults.global.legend.display = false;
var PmnlChartBrowser = $("#PmnlStatsBrowser");
var mCbrowser = new Chart(PmnlChartBrowser, { type: 'pie',data:{ labels:[<?php echo $databrowser; ?>],datasets: [{ data: [<?php echo $cptbrowser; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsBrowser-legend').innerHTML = mCbrowser.generateLegend();
var PmnlChartPim = $("#PmnlPim");
var mPim = new Chart(PmnlPim, { type: 'pie',data:{ labels:[<?php echo $dataua; ?>],datasets: [{ data: [<?php echo $cptua; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlPim-legend').innerHTML = mPim.generateLegend();
var PmnlChartPlatform = document.getElementById("PmnlStatsPlatform");
var mCplatform = new Chart(PmnlChartPlatform, { type: 'pie',data:{ labels:[<?php echo $dataplatform; ?>],datasets: [{ data: [<?php echo $cptplatform; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsPlatform-legend').innerHTML = mCplatform.generateLegend();
var PmnlChartDevicetype = $("#PmnlStatsDevicetype");
var mCdevicetype = new Chart(PmnlChartDevicetype, { type: 'pie',data:{ labels:[<?php echo $datadevicetype; ?>],datasets: [{ data: [<?php echo $cptdevicetype; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlStatsDevicetype-legend').innerHTML = mCdevicetype.generateLegend();
var PmnlDistctDomain = $("#PmnlDistctDomain");
var mCDistctDomain = new Chart(PmnlDistctDomain, { type: 'pie',data:{ labels:[<?php echo $datadomaines; ?>],datasets: [{ data: [<?php echo $cptdomaines; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlDistctDomain-legend').innerHTML = mCDistctDomain.generateLegend();
var PmnlCntClkDomain = $("#PmnlCntClkDomain");
var mCCntClkDomain = new Chart(PmnlCntClkDomain, { type: 'pie',data:{ labels:[<?php echo $datadomainesclk; ?>],datasets: [{ data: [<?php echo $cptdomainesclk; ?>],backgroundColor:['#ff0000','#ff4000','#ff8000','#ffbf00','#ffff00','#bfff00','#80ff00','#40ff00','#00ff00','#00ff40','#00ff80','#00ffbf','#00ffff','#00bfff','#0080ff','#0040ff','#0000ff','#4000ff','#8000ff','#bf00ff','#ff00ff','#ff00bf','#ff0080','#ff0040','#ff0000','#946d70','#563957','#5e6370','#78bac2','#376182','#3a000f','#85888c','#cd7320','#7f9c95','#b4eeb4','#794044','#205c2e','#1c6d26','#ff0f3b','#4a4146','#a4a0a2','#0011a8','#000532','#d3f660','#546226','#ff4265','#292929','#8e561a','#ffe4e1','#ffc0cb','#000000','#ff0000','#1075bc','#07adeb','#acdfe8','#f5f5f5','#277ead','#eff3f9','#eff3f9','#511323','#ffe4e1','#141414','#ff4265','#54ff9f','#cbf3ad','#543544','#15315c'],}]},});
document.getElementById('PmnlCntClkDomain-legend').innerHTML = mCCntClkDomain.generateLegend();
var PmnlDthr = $("#ClicByHours");
var barData = {
labels: [<?php echo $labelsdthr; ?>],
datasets: [
{
label: '<?php echo tr('OPEN_BY_HOURS'); ?>',
backgroundColor:'rgba(54, 162, 235, 0.2)',
borderColor:'rgba(54, 162, 235, 1)',
borderWidth: 1,
data: [<?php echo $datadthr; ?>]
},
],
options: {
responsive: false, maintainAspectRatio: false
}
};
var mCCntClkHour = new Chart(PmnlDthr, { type: 'bar',data:barData});
</script>
<hr>
<header><h4>Chiffres clé des campagnes</h4></header>
<?php
reset($array_stats_tmp);
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
'. tr("TRACKING_REPORT_HEAD_TABLE") .'
</tr>
</thead>
<tfoot>
<tr>
'. tr("TRACKING_REPORT_HEAD_TABLE") .'
</tr>
</tfoot>
<tbody>';
foreach($array_stats_tmp as $row){
echo '<tr>';
if(is_file("logs/daylog-".$row['dt'].".txt")){
echo '<td><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?day='.$row['dt'].'&t=d&token='
.$token.'" title="'. tr( "TRACKING_VIEW_LOG_DAY" , $row['dt'] ) .'">'.$row['dt'].'</a></td>';
} else {
echo '<td>'. $row['dt']. '</td>';
}
if(is_file("logs/list$list_id-msg".$row['id_mail'].".txt")){
echo '<td><a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="include/view_log.php?list_id='.$list_id.'&id_mail='.$row['id_mail'].'&t=l&token='
.$token.'" title="'. tr( "TRACKING_VIEW_LOG_SEND" ) .'"><i class="glyphicon glyphicon-search"></i></a></td>';
} else {
echo '<td></td>';
}
echo '<td>'. $row['id_mail']. '</td>';
echo '<td>';
if($row_cnt['CPTID']>0){
echo '<a data-toggle="modal" data-target="#modalPmnl" data-tooltip="tooltip" href="tracklinks.php?id_mail='.$row['id_mail'].'&list_id='.$list_id.'&token='
.$token.'" title="'. tr( "TRACKING_DETAILLED_CLICKED_LINKS" ) .'">'.$row['subject'].'</a>';
} else {
echo $row['subject'];
}
echo '</td>';
echo '<td>'. $row['cpt'] . '</td>';
echo '<td>'. ($row['TOPEN']!=''?$row['TOPEN']:0) . '</td>';
$global_open = $row['TID'] + $row['TIDUNSUB'];
echo '<td>'. ($global_open!=''?$global_open:0) . '</td>';
echo '<td>'. ($row['CPT_CLICKED']!=''?$row['CPT_CLICKED']:0) . '</td>';
$OPENRATE = @round(($global_open/($row['cpt']-$row['error'])*100),1);//OPEN RATE
echo '<td><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_OPEN_RATE" ) .'">'.($OPENRATE>0?'<b>'.$OPENRATE.'</b>':0).'%</a></td>';
$CTR = @round(($row['CPT_CLICKED']/$row['cpt']*100),1);//CTR
echo '<td><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_CTR" ) .'">'.($CTR>0?'<b>'.$CTR.'</b>':0).'%</a></td>';
$ACTR = @round(($row['CPT_CLICKED']/$global_open*100),1);//ACTR
echo '<td><a data-toggle="tooltip" title="'. tr( "TRACKING_BULLE_ACTR" ) .'">'.($ACTR>0?'<b>'.$ACTR.'</b>':0).'%</a></td>';
echo '<td>'. $row['error']. '</td>';
echo '<td>'. $row['leave']. '</td>';
echo '</tr>';
}
echo '</table>';
?>
<script>
$('.modal-body').on('loaded.bs.modal', function (e) {
$('.modal-body').removeData();
});
$(document).ready(function(){
$('body').on('hidden.bs.modal', '.modal', function () {
$(this).removeData('bs.modal');
});
});
$(document).ready(function(){
$('body').on('hidden.bs.modal', '.modal', function () {
$(this).removeData('bs.modal');
$("#" + $(this).attr("id") + " .modal-body").empty();
$("#" + $(this).attr("id") + " .modal-body").append("Loading...");
});
});
</script>
<a name="map" id="map"></a>
<h4><?php echo tr('GEOLOCALISATION'); ?> <a href="?page=tracking&token=<?php
echo $token;?>&l=l&list_id=<?php echo @$list_id;?>&tm=twn#map"><?php
echo tr('BY_TOWN'); ?></a>, <a href="?page=tracking&token=<?php
echo $token;?>&l=l&list_id=<?php echo @$list_id;?>&tm=ctry#map"><?php
echo tr('BY_COUNTRY'); ?></a></h4>
<script src="//www.amcharts.com/lib/3/ammap.js"></script>
<script src="//www.amcharts.com/lib/3/maps/js/worldLow.js"></script>
<script src="//www.amcharts.com/lib/3/themes/dark.js"></script>
<div id="chartdivmap"></div>
<?php
switch($tm){
case 'ctry' :
$sql = 'SELECT DISTINCT(t.country),
COALESCE(COUNT(*),0) AS data, c.code, c.lat, c.long, c.color
FROM ' . $row_config_globale['table_tracking'] . ' t
LEFT JOIN ' . $row_config_globale['table_codes'] . ' c ON t.country=c.country
WHERE t.city!=""
AND useragent NOT LIKE \'%ggpht.com%GoogleImageProxy%\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
AND c.lat IS NOT NULL
GROUP BY c.country
ORDER BY data DESC;';
$results_stat_latlong = $cnx->query($sql);
if (count($results_stat_latlong) >0) {
$latlong='';
$mapData='';
foreach ($results_stat_latlong as $tab) {
$latlong.='latlong["'.$tab['code'].'"] = {"latitude":'.$tab['lat'].', "longitude":'.$tab['long'].'};';
$mapData.='{"code":"'.$tab['code'].'" , "name":"'.$tab['country'].'", "value":'.$tab['data'].', "color":"'.$tab['color'].'"},';
}
}
?>
<script>
var latlong = {};
<?php echo $latlong; ?>
var mapData = [<?php echo $mapData; ?>];
var map;
var minBulletSize = 10;
var maxBulletSize = 40;
var min = Infinity;
var max = -Infinity;
for (var i = 0; i < mapData.length; i++) {
var value = mapData[i].value;
if (value < min) { min = value; }
if (value > max) { max = value; }
}
AmCharts.ready(function() {
AmCharts.theme = AmCharts.themes.dark;
map = new AmCharts.AmMap();
map.addTitle("Localisations des ouvertures, toutes listes confondues", 14, "#000");
map.areasSettings = {
unlistedAreasColor: "#000000",
unlistedAreasAlpha: 0.2
};
map.imagesSettings.balloonText = "<span style='font-size:12px;'><b>[[title]]</b>: [[value]]</span>";
var dataProvider = {
mapVar: AmCharts.maps.worldLow,
images: []
}
var maxSquare = maxBulletSize * maxBulletSize * 2 * Math.PI;
var minSquare = minBulletSize * minBulletSize * 2 * Math.PI;
for (var i = 0; i < mapData.length; i++) {
var dataItem = mapData[i];
var value = dataItem.value;
var square = (value - min) / (max - min) * (maxSquare - minSquare) + minSquare;
if (square < minSquare) {
square = minSquare;
}
var size = Math.sqrt(square / (Math.PI * 2));
var id = dataItem.code;
dataProvider.images.push({
type: "circle",
width: size,
height: size,
color: dataItem.color,
longitude: latlong[id].longitude,
latitude: latlong[id].latitude,
title: dataItem.name,
value: value
});
}
map.dataProvider = dataProvider;
map.export = { enabled: true }
map.write("chartdivmap");
});
</script>
<?php
break;
default :
$sql = 'SELECT DISTINCT(CONCAT(city,\',\',postal_code)) AS latlong,
COALESCE(COUNT(*),0) AS data, t.lat, t.lng, t.city, t.country, c.color
FROM ' . $row_config_globale['table_tracking'] . ' t
LEFT JOIN ' . $row_config_globale['table_codes'] . ' c ON t.country=c.country
WHERE t.city!=""
AND useragent NOT LIKE \'%ggpht.com%GoogleImageProxy%\'
AND subject IN (
SELECT id_mail
FROM ' . $row_config_globale['table_send'] . '
WHERE id_list=' . $list_id . '
)
GROUP BY city
HAVING COUNT(*)>0
ORDER BY data DESC;';
$results_stat_latlong = $cnx->query($sql);
if (count($results_stat_latlong) >0) {
$latlong='';
$mapData='';
foreach ($results_stat_latlong as $tab) {
$latlong.='latlong["'.$tab['latlong'].'"] = {"latitude":'.$tab['lat'].', "longitude":'.$tab['lng'].'};';
$name='';
$name = ($tab['city']!="undefined"?$tab['city']:$tab['country'].($tab['postal_code']!=''?' ('.$tab['postal_code'].')':'(Géolocalisation approximative)'));
$mapData.='{"code":"'.$tab['latlong'].'" , "name":"'.$name.'", "value":'.$tab['data'].', "color":"'.$tab['color'].'"},';
}
}
?>
<script>
var latlong = {};
<?php echo $latlong; ?>
var mapData = [<?php echo $mapData; ?>];
var map;
var minBulletSize = 5;
var maxBulletSize = 15;
var min = Infinity;
var max = -Infinity;
for (var i = 0; i < mapData.length; i++) {
var value = mapData[i].value;
if (value < min) { min = value; }
if (value > max) { max = value; }
}
AmCharts.ready(function() {
AmCharts.theme = AmCharts.themes.dark;
map = new AmCharts.AmMap();
map.addTitle("Localisations des ouvertures, toutes listes confondues", 14, "rgba(54, 162, 235, 1)");
map.areasSettings = {
unlistedAreasColor: "#000000",
unlistedAreasAlpha: 0.2
};
map.imagesSettings.balloonText = "<span style='font-size:12px;'><b>[[title]]</b>: [[value]]</span>";
var dataProvider = {
mapVar: AmCharts.maps.worldLow,
images: []
}
var maxSquare = maxBulletSize * maxBulletSize * 2 * Math.PI;
var minSquare = minBulletSize * minBulletSize * 2 * Math.PI;
for (var i = 0; i < mapData.length; i++) {
var dataItem = mapData[i];
var value = dataItem.value;
var square = (value - min) / (max - min) * (maxSquare - minSquare) + minSquare;
if (square < minSquare) {
square = minSquare;
}
var size = Math.sqrt(square / (Math.PI * 2));
var id = dataItem.code;
dataProvider.images.push({
type: "circle",
width: size,
height: size,
color: dataItem.color,
longitude: latlong[id].longitude,
latitude: latlong[id].latitude,
title: dataItem.name,
value: value
});
}
map.dataProvider = dataProvider;
map.export = { enabled: true }
map.write("chartdivmap");
});
</script>
<?php
break;
}
} else {
echo '<header><h4>' . tr("KEY_NUMBERS_ALL_CAMPAIGNS") . '</h4></header>';
echo tr("TRACKING_NO_DATA_AVAILABLE").'<h4 class="alert alert-info">...</h4>';
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' name='selected_newsletter'><div align='center'>";
if(count($list)>1&&$_SESSION['dr_liste']==''){
echo "<br>" .tr("TRACKING_GOTO_LIST"). " : <select name='list_id' class='selectpicker' data-width='auto'>";
foreach ($list as $item) {
echo "<option value='" . $item['list_id'] . "' ";
if($list_id== $item['list_id']){
echo "selected='selected' ";
}
echo ">" . $item['newsletter_name'] . "</option>";
}
echo "</select>";
echo "<input type='hidden' name='page' value='tracking' />";
echo "<input type='hidden' name='token' value='$token' />";
echo " <input type='submit' value=' O K ' class='btn btn-primary' /></div>";
echo "</form>";
}
}
echo "<div class='form-group'>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='post' name='selected_newsletter'><div align='center'>";
echo "<br>" .tr("TRACKING_GOTO_LIST"). " : <select name='list_id' class='selectpicker' data-width='auto'>";
echo $slList;
echo "</select>";
echo "<input type='hidden' name='page' value='tracking' />";
echo "<input type='hidden' name='token' value='$token' />";
echo " <input type='submit' value=' O K ' class='btn btn-primary' /></div>";
echo "</form>";
echo '</div>';
?>
wget 'https://lists2.roe3.org/pmnl3/include/undisturbed.php'
<?php
if($type_serveur=='dedicated'){
echo '<div class="row" style="min-height:300px;">';
echo '<div class="col-md-10">';
echo '<header><h4>'.tr("UNDISTURBED_TITLE").' :</h4></header>';
$bounced = list_bounce_error($cnx,$row_config_globale['table_email_deleted'],$list_id);
if(count($bounced)>0){
echo '<table class="tablesorter table table-striped" cellspacing="0">
<thead>
<tr>
'.tr("UNDISTURBED_TABLE_HEAD").'
<th style="text-align: center;">'.tr("UNDISTURBED_MSG_EXPLAIN").'</th>
</tr>
</thead>
<tfoot>
<tr>
'.tr("UNDISTURBED_TABLE_HEAD").'
<th style="text-align: center;">'.tr("UNDISTURBED_MSG_EXPLAIN").'</th>
</tr>
</tfoot>
<tbody id="full_tab_bounce">';
foreach($bounced as $item){
echo '
<tr>
<td>'.$item['status'].'</td>
<td>'.$item['email'].'</td>
<td>'.$item['type'].'</td>
<td>'.$item['categorie'].'</td>
<td>'.$item['short_desc'].'</td>
<td>'.$item['long_desc'].'</td>
</tr>';
}
echo '</tbody>
</table>';
echo '<hr>';
} else {
echo '<h4 class="alert alert-info">'.tr("UNDISTURBED_NO_ERROR").'</h4>';
}
$chart_bounce = list_bounce_error_chart_data($cnx,$row_config_globale['table_email_deleted'],$list_id);
if(count($chart_bounce)>0){
$chart_data='';
foreach($chart_bounce as $row){
$chart_data.='{"data": "'.$row['status'].'", "value": '.$row['NB_ERROR'].'},';
}
$chart_bounce_type = list_bounce_error_chart_data_by_type($cnx,$row_config_globale['table_email_deleted'],$list_id);
$chart_bounce_data_type='{"type": "hard", "value": '.$chart_bounce_type[0]['hard'].'}, {"type": "soft", "value": '.$chart_bounce_type[0]['soft'].'},';
?>
<header>
<h4><?php echo tr("UNDISTURBED_TITLE_GRPH_AND_ERROR");?></h4>
</header>
<script type="text/javascript" src="//www.amcharts.com/lib/3/amcharts.js"></script>
<script type="text/javascript" src="//www.amcharts.com/lib/3/pie.js"></script>
<div class="row ">
<div class="col-md-6">
<label><?php echo tr("UNDISTURBED_LABEL_ERROR");?></label>
<div id="chartdiv"></div>
</div>
<div class="col-md-6">
<label><?php echo tr("UNDISTURBED_LABEL_CLASS");?></label>
<div id="chartdiv1"></div>
</div>
<script>
var chart = new AmCharts.makeChart("chartdiv", {"type": "pie","theme": "none","dataProvider": [<?php
echo $chart_data;?>],"valueField": "value","titleField": "data","outlineAlpha": 0.4,"depth3D": 15,"balloonText": "[[title]]<br><span style='font-size:14px'><b>[[value]]</b> ([[percents]]%)</span>","angle": 30 });
var chart1 = new AmCharts.makeChart("chartdiv1", {"type": "pie","theme": "none","dataProvider": [<?php
echo $chart_bounce_data_type;?>],"valueField": "value","titleField": "type","outlineAlpha": 0.4,"depth3D": 15,"balloonText": "[[title]]<br><span style='font-size:14px'><b>[[value]]</b> ([[percents]]%)</span>","angle": 30 });
</script>
</div>
<?php
}
echo '</div>';
echo '<div class="col-md-2">';
echo '<div class="content-box fixed" id="ssb" style="min-height:196px;min-width:184px;">';
echo '<header><h4>Bounce Live</h4></header>';
echo '<p id="jb"></p>';
echo '<div id="pbar_outerdiv"><div id="pbar_innerdiv" style="background-color: lightblue; z-index: 2; height: 5px; width: 0%;"></div>
<div id="pbar_innertext" style="z-index: 3; color: black; font-weight: bold; text-align: center;">0%</div></div>';
echo '</div></div>';
?>
<script type="text/javascript">
// <![CDATA[
var timer = 0;
var perc = 0;
function updateProgress(percentage) {
$('#pbar_innerdiv').css("width", percentage + "%");
$('#pbar_innertext').text(percentage + "%");
}
function animateUpdate() {
perc++;updateProgress(perc);
if(perc < 100) {
timer = setTimeout(animateUpdate, 1666);
}
}
function jb(){
$('#jb').html('<div align="center"><img src="css/processing.gif" width="102px" alt="Running bounce process" data-toggle="tooltip" data-placement="auto" title="Analyse des retours et traitements des mails en bounce en cours" /></div>');
$.ajax({
url:"include/ajax/bounce.php?list_id=<?php echo intval($list_id);?>&token=<?php echo $token;?>",
dataType: 'html',
success:function(data){
$('#jb').empty();
$('#jb').html(data);
}
});
perc = 0;
animateUpdate();
setTimeout(jb,60000);
}
jb();
// ]]>
</script>
<?php
} elseif($type_serveur=='shared') {
echo '<h4 class="alert alert-info">'.tr("UNDISTURBED_ERROR_SERVER").' !</h4>';
}
wget 'https://lists2.roe3.org/pmnl3/include/upload_files.php'
<?php
if(!file_exists("config.php")) {
header("Location:../install.php");
exit;
} else {
include("../_loader.php");
$token=(empty($_POST['token'])?"":$_POST['token']);
if(!isset($token) || $token=="")$token=(empty($_GET['token'])?"":$_GET['token']);
if(!tok_val($token)){
header("Location:../login.php?error=2");
exit;
}
}
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
(count($row_config_globale)>0)?$r='SUCCESS':$r='';
if($r != 'SUCCESS') {
include("lang/english.php");
echo "<div class='error'>".tr($r)."<br>";
echo "</div>";
exit;
}
if(empty($row_config_globale['language']))$row_config_globale['language']="english";
include("lang/".$row_config_globale['language'].".php");
$ds = DIRECTORY_SEPARATOR;
$storeFolder = '../upload';
if (!empty($_FILES)) {
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
$name = str_replace(' ','_',urldecode($_FILES['file']['name']));
$name = str_replace('"','_',$name);
$name = str_replace("'",'_',$name);
$name = $cnx->CleanInput($name);
$targetFile = $targetPath. $name;
move_uploaded_file($tempFile,$targetFile);
$list_id = (!empty($_POST['list_id'])) ? $_POST['list_id'] : '';
$cnx->query("INSERT INTO ".$row_config_globale['table_upload']."(id,list_id,name,date) VALUES ('','$list_id','".$name."',now())");
}
wget 'https://lists2.roe3.org/pmnl3/include/view_log.php'
<?php
session_start();
if(!file_exists("config.php")) {
header("Location:../install.php");
exit;
} else {
include("../_loader.php");
}
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
(count($row_config_globale)>0)?$r='SUCCESS':$r='';
if($r != 'SUCCESS') {
die("0");
}
$token=(empty($_GET['token'])?"":$_GET['token']);
if(!isset($token) || $token=="")$token=(empty($_GET['token'])?"":$_GET['token']);
if(tok_val($token)){
// /dev/null ...
} else {
die("3");
}
extract($_GET,EXTR_OVERWRITE);
echo '<style type="text/css">body,td,th{font-size:12px;font-family:Arial,Helvetica,sans-serif;}</style>';
echo '<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button></div><div class="modal-body">';
echo '<code>';
$temp_color='#FFFFFF';
switch($t){
case 'd':
$log="../logs/daylog-$day.txt";
if(is_file($log)){
$fp=fopen($log,'r');
while(!feof($fp)){
$ligne=fgets($fp,4096); // 4096 à modifier après confirmation MAX RECSIZE
echo '<div id="item_lu" style="background-color:'.$temp_color.';color:#000;">';
echo str_replace(' ',' ',trim($ligne)).'<br>';
if($temp_color=='#ECE9D8'){$temp_color='#FFFFFF';}else{$temp_color='#ECE9D8';}
echo '</div>'."\n";
}
}
break;
case 'l':
$log="../logs/list$list_id-msg$id_mail.txt";
if(is_file($log)){
$fp=fopen($log,'r');
while(!feof($fp)){
$ligne=fgets($fp,4096); // 4096 à modifier après confirmation MAX RECSIZE
echo '<div id="item_lu" style="background-color:'.$temp_color.';color:#000;">';
echo str_replace(' ',' ',trim($ligne)).'<br>';
if($temp_color=='#ECE9D8'){$temp_color='#FFFFFF';}else{$temp_color='#ECE9D8';}
echo '</div>'."\n";
}
}
break;
case 'u':
$log="../logs/$u.log";
if(is_file($log)){
$fp=fopen($log,'r');
while(!feof($fp)){
$ligne=fgets($fp,4096); // 4096 à modifier après confirmation MAX RECSIZE
echo '<div id="item_lu" style="background-color:'.$temp_color.';color:#000;">';
echo str_replace(' ',' ',trim($ligne)).'<br>';
if($temp_color=='#ECE9D8'){$temp_color='#FFFFFF';}else{$temp_color='#ECE9D8';}
echo '</div>'."\n";
}
}
break;
}
echo '</code>';
echo '</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div>';
wget 'https://lists2.roe3.org/pmnl3/include/wysiwyg.php'
<?php
echo "<header><h4>".tr("WYSIWYG_EDITOR")." : $list_name</h4></header>";
echo "<iframe src='include/editeur.php?token=".$token."&list_id=".$list_id."' width='98%' style='margin:0;padding:0;border:none;padding-left:8px;margin-bottom:30px;height:700px;'>".tr("IFRAME_NOT_SUPPORTED")."</iframe>";