PhpMyNewsLetter 2.0

Support et annonces PhpMyNewsLetter.

Vous n'êtes pas identifié(e).

Annonce

Pour me permettre de mieux vous aider au mieux, merci d'être le plus précis possible en donnant :
- la version de phpmynewsletter utilisée
- votre hébergement : personnel, dédié, mutualisé
- votre hébergeur (OVH, free, Infomaniak, 1and1,...)
- votre OS : linux, windows
- version de PHP (5.3, 5.6, 7.0, hhvm...)
Toutes les réponses à mes questions qui sont sans retour de votre part seront considérées comme résolues !

#651 Re : Support général » [Résolu] Envoi newsletter en ligne de commande » 15-02-2017 17:06:01

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 !)

#652 Re : Support général » [Résolu] les adresses mails invalident restent dans la base » 13-07-2017 13:28:22

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

#653 Re : Support général » [Résolu] les adresses mails invalident restent dans la base » 13-07-2017 13:28:22

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ù

#654 Re : Support général » [Résolu] Envoi newsletter en ligne de commande » 15-02-2017 17:06:01

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 !

#656 Re : Support général » [Résolu] DKIM souscription et maj corrections de bugs » 16-02-2017 08:57:44

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 cool cool !
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...

#657 Re : Support général » [Résolu] Envoi newsletter en ligne de commande » 15-02-2017 17:06:01

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"

#658 Re : Support général » [Résolu] Envoi newsletter en ligne de commande » 15-02-2017 17:06:01

Oui, mais elle doit se faire avec des arguments.
Ton objectif, c'est quoi exactement ?

#659 Re : Support général » [Résolu] Envoi newsletter en ligne de commande » 15-02-2017 17:06:01

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...)

#660 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

Je vais tester sur un de mes noms de domaine qui n a pas de clé DKIM et je reviens pour dire.

#661 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

fsebbah a écrit :

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...

#662 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

fsebbah a écrit :

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 !!!

#663 Re : Support général » [Résolu] Des liens bizarres... » 10-02-2017 07:52:36

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 ?

#664 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

Je suis un peu surpris, et je me trouve à me poser des questions sur mxtoolbox.... yikes

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... cry

#665 Re : Support général » [Résolu] Des liens bizarres... » 10-02-2017 07:52:36

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

#666 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

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.

#669 Re : Support général » [Résolu] Les stats et autres » 07-02-2017 13:18:06

fsebbah a écrit :

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 cool

#670 Re : Authentification des mails » [Résolu] générer une clée DKIM ? » 18-03-2020 14:33:24

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 :

Sylvain de chez LWS a écrit :

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.fr

Rubrique d'aide LWS : http://aide.lws.fr
Les nouveautés : http://blog.lws-hosting.com

Noms 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é  mad

#672 Re : Support général » [Résolu] les adresses mails invalident restent dans la base » 13-07-2017 13:28:22

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 :
mailq
Avant de pouvoir être récupéré dans ces mails en erreur :
1486154329_error_bounce.png
Et enfin apparaître en erreur :
1486154476_reject.png
Il apparait comme bien envoyé dans ma liste :
1486154591_liste.png

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.

#673 Re : Support général » [Résolu] Les stats et autres » 07-02-2017 13:18:06

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 "&nbsp;<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>

#674 Re : Support général » [Résolu] Les stats et autres » 07-02-2017 13:18:06

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.

#675 Re : Support général » [Résolu] Les stats et autres » 07-02-2017 13:18:06

Je buggue ! Reprendre à tête reposée... Mais je suis dessus !

Pied de page des forums

Propulsé par FluxBB