Support et annonces PhpMyNewsLetter.
Vous n'êtes pas identifié(e).
L'appel en ligne de commande est géré par une tâche cron, de manière automatique dans le portail.
Mais il doit être parmètré au préalable, et c'est automatique.
Au lieu d'envoyer, dernière étape de l'envoi normal, tu cliques sur planifer cet envoi.
(en mode serveur dédié, bien évdemment !)
Ce que tu fais :
1/ tu envoies un mail à une adresse kapout
2/ tu passes en mode developpement dans l'environnement
3/ tu fais un clic droit sur ta page phpmynewsletter et tu fais "inspecter" sur ta page, puis tu vas dans "network" (je suis sur chrome, ça marche comme ça)
4/ tu repères la ligne qui contient l'appel au script include/bounce.php qui est appelé en ajax, tu cliques droit dessus et ouvrir avec "open link in new tab"
5/ tu attends que le résultat s'affiche
6/ copier / Coller de l'ensemble, et mail à arnaud at phpmynewsletter.com
7/merci
Et ça marche très bien !
J'avoue ne pas comprendre, mais pour moi c'est une spec lws qui coince quelque part.
Je regarde mes lignes de programmes au cas où
La 2.0.5 est en cours.
Si tu est sous debian, linux, pourquoi ne pas utiliser la tâche cron tout simplement.
Avant d'envoyer le mail il t'est proposé de planifier l'envoi ! Planifie !
je fais un test en php_mail et je reviens
J'ai mis du temps et comme un bel idiot, je n'avais pas vu que tu parlais du fichier de fonctions !
Et je dis oui, bravo la classe
!
Je l'ai ajouté à la 2.0.4, et je mets 2.0.5 à jour également.
(Je chipotte, mais pour les tabulations, je préfère 4 espaces plutôt qu'une grosse tabulation de 8 espaces, mais chaque développeur fait comme il aime aussi !)
Concernant la mise à jour, à part, à ce jour télecharger la dernière version, je ne vois pas beaucoup de solutions...
Saut à faire un git sur du dépôt... Mais alors il faudra faire attention aux fichiers à exclure...
Et je ne le mets plus à jour, j'ai trop souvent des conflits... Longs à résoudre...
Re-
Tu peux me rappeler ton environnement stp ?
En fait ce serait super de mettre dans sa description de profil son hébergement, os et version de pmnl, comme moi
"dédié, debian, nginx, MySql Percona, hhvm + php 5.6 en fait over, PhpMyNewsLetter 2.0.5"
Oui, mais elle doit se faire avec des arguments.
Ton objectif, c'est quoi exactement ?
Bonjour,
Oui ça fonctionne, d'ailleurs la planification sur linux est un appel via un php-cgi !
Mais c'est une tâche enregistrée en base de données avec pas mal de contrôles.
Le fichier concerné est include/task.php, et envoie 1 mail toutes les 3 secondes (modulable en 2.0.5...)
Je vais tester sur un de mes noms de domaine qui n a pas de clé DKIM et je reviens pour dire.
Arnaud, Je n'ai pas vu la fin de ton message. Condoléances, j'espére que tout va bien pour toi.
Je gère...
Merci à totorigolo56 et à Arnaud car je viens en 2 minutes de mettre en place la clef DKIM. il me reste à tester avec bien évidemment la mailing list de test ;-)
Voilà ! Quand tu auras pu composer !!!
C'est bien gentil mais dans ton cas, ça ne marche pas !
est-ce que tu as une erreur de javascript ? As tu forcé les rafraichissement de la page ?
Je suis un peu surpris, et je me trouve à me poser des questions sur mxtoolbox....
Alors fais ton test final, en envoyant un mail sur une bal gmail que tu auras dans ta liste de tests, et regarde l'original du message de test sur gmail.com.
Si ça t'intéresse, je peux t'envoyer par message privé mon mail gmail et je te donnerai le résultat.
J'ai fait un test sur https://protodave.com/tools/dkim-key-checker/, et effectivement ça passe aussi.
Désolé de ne répondre qu'aujourd'hui, hier j'étais d'enterrement... 
En fait, il faut que tu aies :
external_filemanager_path:'js/tinymce/plugins/filemanager/',
external_plugins: { 'filemanager' : 'js/tinymce/plugins/filemanager/plugin.min.js'},Modifie dans la page include/compose.php
Fais le test ici, et tu verras :
http://mxtoolbox.com/dkim.aspx
Tu mets le domaine simple, et le sélecteur.
Tu copieras le résultat ici.
Je suis dessus, je te tiens au courant...
OK, à suivre, mais je suis confiant ! 
Bonjour Arnaud,
...
PS: Je ne sais pas comment on fait pour mettre résolu au topic.
Dans ton message initial, il y a un lien "Résolu", il suffit de cliquer... Sinon je le fais ! Et là, c'était fait 
Avec une réponse comme celle qu'a fait ton technicien, moi je fais une chose : JE ME BARRE ET VITE !
Recherche rapide :
http://webcache.googleusercontent.com/s … clnk&gl=fr
Tout en bas par Sylvain :
lun. déc. 08, 2014 3:53 pm
Bonjour,
pour ajouter un champ DKIM sur un nom de domaine, il faudra choisir comme type d'enregistrement : TXT.
Si vous avez des soucis lors de l'ajout de ce champ sur un domaine, je vous inviterai à ouvrir un ticket d'incidence en rapport avec votre domaine via votre espace client LWS.
Nos équipes effectueront cette mise en place.Ce lien pourrait vous aider à vérifier un champ DKIM :
http://wiki.linuxwall.info/doku.php/fr: ... :dkimproxy
Sylvain
Service technique LWS
http://www.lws.frRubrique d'aide LWS : http://aide.lws.fr
Les nouveautés : http://blog.lws-hosting.comNoms de domaine, hébergement web, serveurs dédiés, e-commerce, SMS par internet ...
Mon système ne gère pas de pose des clés privées telles que je peux en poser sur un dédié avec opendkim, mais la classe phpmailer l'intègre dans son fonctionnement, d'où l'intérêt de la poser directement dans include/DKIM/private.key
Sincèrement, je pense que tu es tombé sur un incompétent, ou alors la politique de LWS est de vous empêcher de faire quelconque campagne, ce qui est un comble...
LWS : Zéro pointé 
Tu as essayé avec tous les détails que j ai donné ?
OK, alors voila :
Le message en haut à gauche, tu es en mutu, tu n'as pas accès à "mailq" de linux.
Ensuite, la progression : pas de résultats, ça peut être aussi parce que l'hébergeur n'autorise pas certaines fonctionnalités du script. Ca, je ne peux pas le savoir.
Par contre, et ayant moi même pris ce mail dans une de mes listes de test, il est resté un bon moment dans la file d'attente des envois :
Avant de pouvoir être récupéré dans ces mails en erreur :
Et enfin apparaître en erreur :
Il apparait comme bien envoyé dans ma liste :
En gros, tout cela signifie que si la connexion est bien faite, ce qui a l'air d'être le cas, et que la collecte ne se fait pas, alors ça veut dire que ça ne marchera pas sur ton hébergement mutualisé.
Le mutualisé a ses limites dés que l'on pousse un peu sur les capacités ordinaires d'une machine pour des besoins spécifiques, comme la gestion globale du mailing...
Par contre, que tu n'aies pas le retour dans ta bal d'expéditeur, c'est effectivement assez bizarre...
Le fait que la barre soit montée à 102%, c'est parce que le multitâche (de javascript dans un navigateur ! Pas le multitâche de base !!) est mal géré sur windows, donc il affiche un peu n'importe quoi si on passe à autre chose, sur une autre fenêtre par exemple.
Voici la page tracking.php complète, faire une sauvegarde de l'ancienne, dans include/ :
<article class="module width_full">
<header><h3><?php echo tr("TRACKING_TITLE");?></h3></header>
<?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);
echo '<div class="module_content">';
$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){
echo '
{
"date":"' . $row['dt'] . '",
"c1":' .($row['cpt'] !=''?$row['cpt'] :0).',
"c2":' .($row['error'] !=''?$row['error'] :0).',
"c3":' .($row['TID'] !=''?$row['TID'] :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>
<div id="chartdiv" style="width: 100%; height: 500px; background-color: #FFFFFF;" ></div>
<?php
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='input'>";
foreach ($list as $item) {
echo "<option value='" . $item['list_id'] . "' ";
if($row['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='button' /></div>";
echo "</form>";
$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();
$totalbrowser = $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(*)>'.($totalbrowser/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']/$totalbrowser*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['data'];
}
if(($totalbrowser-$totalAffiche)>0){
$cptbrowser .= $totalbrowser-$totalAffiche ;
$databrowser .= '"Others <1% ('.round((($totalbrowser-$totalAffiche )/$totalbrowser*100),2).'%) ",';
}
}
$TOTALPLATFORM = $cnx->query('SELECT COUNT(*) AS total
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 .' )'
)->fetch();
$totalplatform = $TOTALPLATFORM['total'];
$results_stat_platform = $cnx->query('SELECT platform,COUNT(*) 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
ORDER BY data DESC;'
);
if (count($results_stat_platform) >0) {
$dataplatform = '';
(int)$cptplatform;
(int)$totalAffiche;
foreach ($results_stat_platform as $tab) {
$cptplatform .= (int)$tab['data'] . ',';
$dataplatform .= '"' . $tab['platform'] . ' ('.round(((int)$tab['data']/$totalplatform*100),2).'%) ",';
$totalAffiche = $totalAffiche+(int)$tab['data'];
}
if(($total-$totalAffiche)>0){
$cptplatform .= $total-$totalAffiche ;
$dataplatform .= '"Others <1% ('.round((($totalplatform-$totalAffiche )/$totalplatform*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 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
ORDER BY data DESC;'
);
if (count($results_stat_devicetype) >0&&$totaldv>0) {
$datadevicetype = '';
(int)$cptdevicetype;
(int)$totalAffiche;
foreach ($results_stat_devicetype as $tab) {
$cptdevicetype .= (int)$tab['data'] . ',';
$datadevicetype .= '"' . $tab['devicetype'] . ' ('.round(((int)$tab['data']/$totaldv*100),2).'%) ",';
$totalAffiche = (int)$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;
$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%"
)
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&&$totalua>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/$totalua*100),2).'%) ",';
$totalAfficheUa = $totalAfficheUa+(int)$value;
}
}
if(($totalua-$totalAfficheUa)>0){
$cptua .= $totalua-$totalAfficheUa;
$dataua .= '"Others <1% ('.round((($totalua-$totalAfficheUa)/$totalua*100),2).'%) ",';
}
}
?>
</article>
<article class="module width_full">
<header><h3>Environnements (toutes campagnes confondues)</h3></header>
<table>
<tr>
<td width="25%"><div align="center"><h4>Navigateurs</h4></div><canvas id="PmnlStatsBrowser" />
</td>
<td width="25%"><div align="center"><h4>Clients mails</h4></div><canvas id="PmnlPim" />
</td>
<td width="25%"><div align="center"><h4>Systèmes d'exploitation</h4></div><canvas id="PmnlStatsPlatform" />
</td>
<td width="25%"><div align="center"><h4>Supports</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>
</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();
</script>
</article>
<article class="module width_full">
<header><h3>Chiffres clé des campagnes</h3></header>
<?php
reset($array_stats_tmp);
echo '<table class="tablesorter" cellspacing="0">
<thead>
<tr>
'. tr("TRACKING_REPORT_HEAD_TABLE") .'
</tr>
</thead>
<tbody>';
foreach($array_stats_tmp as $row){
echo '<tr>';
if(is_file("logs/daylog-".$row['dt'].".txt")){
echo '<td><a class="iframe 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 class="iframe 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" ) .'"><img src="css/icn_search.png" /></a></td>';
}
echo '<td>'. $row['id_mail']. '</td>';
echo '<td>';
if($row_cnt['CPTID']>0){
echo '<a class="iframe 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>';
echo '<td>'. $row['TID']. '</td>';
echo '<td>'. $row['CPT_CLICKED']. '</td>';
$OPENRATE = @round(($row['TID']/($row['cpt']-$row['error'])*100),1);//OPEN RATE
echo '<td><a class="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 class="tooltip" title="'. tr( "TRACKING_BULLE_CTR" ) .'">'.($CTR>0?'<b>'.$CTR.'</b>':0).'%</a></td>';
$ACTR = @round(($row['CPT_CLICKED']/$row['TID']*100),1);//ACTR
echo '<td><a class="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>';
} else {
echo '<div class="module_content">'.tr("TRACKING_NO_DATA_AVAILABLE").'<h4 class="alert_info">...</h4></div>';
}
?>
<div class="spacer"></div>
<div class="clear"></div>
</article>Les chiffres sont effectivement erronés dans la page tracking, les initialisations sont en cause, j'ai pu tout reprendre sur un modèle live de dev, je mettrai tout au propre et il y aura une nouvelle page tracking disponible.
Je buggue ! Reprendre à tête reposée... Mais je suis dessus !