You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2016-02-24 15:54:28

gildwen
Member
Registered: 2012-01-12
Posts: 23

Pièces jointes dans les suivis

Bonjour

Lors de l'édition d'un suivi avec ajout d'une pièce jointe, est-il possible que la notification par mail du suivi puisse contenir la pièce jointe ?
Si non, est-il alors possible d'ajouter un lien vers le document dans cette notification (seulement le document joint et pas les précédentes pièces jointes s'il y a en a) ?

Pour information :

  • L'option Ajouter des documents dans les notifications de ticket est valué sur Oui

  • Avec l'option ci-dessus, je n'ai rien de plus dans mes notificatins de suivi

  • Version de GLPI : 0.90.1

  • Version OS : Ubuntu 14.04.3

  • Ci-dessous un exemple de notification que je reçois :


[2016-02-24 12:18] Privé : Non
Rédacteur Gildwen
Description J'essaye encore

Document Document ticket 46 - Veuve-Noire.jpg ajouté
Date d'ouverture 2016-02-24 12:18
Source de la demande Helpdesk


Merci d'avance pour votre aide.

Cordialement

Offline

#2 2016-02-26 13:41:11

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Pièces jointes dans les suivis

Vous avez défini votre notification avec quelle balise pour les documents ?


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2016-03-18 16:47:27

sarsen
Member
Registered: 2015-03-03
Posts: 13

Re: Pièces jointes dans les suivis

J'ai le même problème.  Dans "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket à OUI " et dans le courriel ça m'indique qu'un document est ajouté et le nom du fichier, mais aucun fichier physiquement rattaché au courriel ni de lien pour le télécharger.  Alors j'ai pensé afin d'éviter la confusion pour les usagers qui receoivent ce courriel de simplement placer l'option "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket à NON", mais malheureusement le résultat est identique dans le courriel de notification, il indique quand même le nom du fichier???

Est-ce que quelqu'un connait une solution?  C'est le seul problème qui m'empêche de mettre à jours notre version 0.85.5 vers 0.90.1 :-(


GLPI 9.2.1 | Wampserver 3.1.0 | Apache 2.4.27 | PHP 7.1.9 | MySQL 5.7.19

Offline

#4 2016-05-27 12:48:06

hasop
Member
Registered: 2016-02-11
Posts: 82

Re: Pièces jointes dans les suivis

Bonjour,

Je constate le même (dys-)fonctionnement en 0.90.1, à savoir :
Avec l'option "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket" à OUI ou à NON, j'ai dans les 2 cas le même comportement : il y a "Document Document ticket XX - [nomdudoc] ajouté" systématiquement affiché.

Lorsque j'essaye d'ajouter le code suivant dans ma notification, que ce soit à l'intérieur d'une balise "##FOREACH last followups##" ou à l'extérieur, rien ne s'affiche :
##FOREACHdocuments##
<p>##document.weblink##</p>
##ENDFOREACHdocuments##

Il faudrait que le document soit joint au mail, ou à minima qu'il y ait un lien pour y accéder.


GLPI v9.5.1
FusionInventory 9.5

Offline

#5 2016-08-05 09:32:07

titan
Member
Registered: 2007-09-25
Posts: 30

Re: Pièces jointes dans les suivis

Bonjour,

Je suis exactement dans le même cas, en 0.90.1 et l'option Ajouter des documents dans les notifications de ticket est valué sur Oui.

J'ai placer toutes les balises disponible :

##FOREACHdocuments##
##document.filename##
##document.heading##
##document.id##
##document.name##
##document.url##
##document.weblink##
##ENDFOREACHdocuments##

Il faudrait que le document soit joint au mail et non pas sont URL, mon serveur n'est pas connecter sur l'exterieure.

Offline

#6 2016-08-05 16:45:00

titan
Member
Registered: 2007-09-25
Posts: 30

Re: Pièces jointes dans les suivis

Pour test, j'ai cloner ma machine de prod et appliqué la version 0.90.5 sur le clone.

Le problème persiste toujours.

Offline

#7 2016-08-08 10:10:46

titan
Member
Registered: 2007-09-25
Posts: 30

Re: Pièces jointes dans les suivis

Je ne m'en sors pas avec cette balise, est-ce un bug dans le système où cela n'est pas implémenté ?

Je n'ai malheureusement pas les compétences pour écrire un bout de code pour résoudre mon problème.

Je sais que vous êtes tous des bénévoles, mais j’ai vraiment besoin d’un petit coup de main.

Encore merci d’avance à tous,

Offline

#8 2016-08-08 15:02:01

titan
Member
Registered: 2007-09-25
Posts: 30

Re: Pièces jointes dans les suivis

J'ai réussit ce dont je voulais grace à kiricou, il a poster un bout de code permettant ceci en 0.85.5

Je l'ai reprit pour la 0.90.1 et cela fonctionne ..!

Peut t'on envisager de la voire inclut dans une prochaine release ?


kiricou wrote:

bonjour,

tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)

merci

voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :

voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5

*** queuedmail.class.php        2015-09-15 18:10:47.000000000 +0200
--- queuedmail.class.phpV2      2015-11-30 17:52:40.722139496 +0100
*************** class QueuedMail extends CommonDBTM {
*** 333,339 ****
      * @return true if send false if not
     **/
     function sendMailById($ID) {
!       global $CFG_GLPI;
  
        if ($this->getFromDB($ID)) {
  
--- 333,339 ----
      * @return true if send false if not
     **/
     function sendMailById($ID) {
!       global $CFG_GLPI, $DB;
  
        if ($this->getFromDB($ID)) {
  
*************** class QueuedMail extends CommonDBTM {
*** 357,362 ****
--- 357,425 ----
           }
           $mmail->Subject  = $this->fields['name'];
  
+ $lastFollowupDocument = False;
+        if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 )
+        {
+       #on est dans le cas d'un ticket
+       $lastFollowupDocument = False;
+        $ticket = new Ticket();
+          // Check if ticket  exists 
+          if ($ticket->getFromDB($this->fields["items_id"]))
+               { 
+               # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation 
+                       // Get all attached documents of ticket
+                       $query = "SELECT `glpi_documents_items`.`id` AS id,
+                       `glpi_documents_items`.`documents_id` AS docId,
+                               `glpi_documents_items`.`date_mod` AS date_mod
+                 FROM `glpi_documents_items`
+                 WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."'
+                       AND `glpi_documents_items`.`itemtype` = 'Ticket' ";
+       
+                       $result = $DB->query($query);
+               $my_docs = array();
+               $dateMessage = '';
+               if ($DB->numrows($result)) {
+                       while ($data = $DB->fetch_assoc($result)) {
+                       if (!empty($data['id'])) {
+                       $my_docs[]=$data;
+                       }
+                       }
+               #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments
+               if (!empty($this->fields['messageid'])) {
+                       preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches);
+                       $messageid_timestamp = $matches[1];
+                       $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp));
+                       $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S"));
+               }
+ 
+               $link_doc = array();
+               if (is_array($my_docs) && count($my_docs)>0) {
+                               foreach ($my_docs as $the_doc) {
+                               $dateDoc = new DateTime($the_doc['date_mod']);
+                               if ($dateDoc > $dateMessage) {
+                                       $TheDoc = new Document();
+                                       $TheDoc->getFromDB($the_doc['docId']);
+                                       $lastFollowupDocument[] = $TheDoc;
+                                       }
+                               }
+                       }
+               }
+               }
+ 
+ 
+         if ($lastFollowupDocument != False )
+         {
+         foreach ($lastFollowupDocument as $doc2Send) {
+ 
+                 $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'],
+                                               $doc2Send->fields['filename'],
+                                               'base64',
+                                               $doc2Send->fields['mime']);
+                 }
+ 
+         }
+     }
+ 
           if (empty($this->fields['body_html'])) {
              $mmail->isHTML(false);
              $mmail->Body = $this->fields['body_text'];

Offline

#9 2016-08-12 12:36:09

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Pièces jointes dans les suivis

Les demandes de modification sont à poster ici : http://glpi.userecho.com/


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#10 2016-08-16 18:01:39

kanostrova
Member
Registered: 2015-07-27
Posts: 32

Re: Pièces jointes dans les suivis

titan wrote:

J'ai réussit ce dont je voulais grace à kiricou, il a poster un bout de code permettant ceci en 0.85.5

Je l'ai reprit pour la 0.90.1 et cela fonctionne ..!

Peut t'on envisager de la voire inclut dans une prochaine release ?


kiricou wrote:

bonjour,

tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)

merci

voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :

voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5

*** queuedmail.class.php        2015-09-15 18:10:47.000000000 +0200
--- queuedmail.class.phpV2      2015-11-30 17:52:40.722139496 +0100
*************** class QueuedMail extends CommonDBTM {
*** 333,339 ****
      * @return true if send false if not
     **/
     function sendMailById($ID) {
!       global $CFG_GLPI;
  
        if ($this->getFromDB($ID)) {
  
--- 333,339 ----
      * @return true if send false if not
     **/
     function sendMailById($ID) {
!       global $CFG_GLPI, $DB;
  
        if ($this->getFromDB($ID)) {
  
*************** class QueuedMail extends CommonDBTM {
*** 357,362 ****
--- 357,425 ----
           }
           $mmail->Subject  = $this->fields['name'];
  
+ $lastFollowupDocument = False;
+        if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 )
+        {
+       #on est dans le cas d'un ticket
+       $lastFollowupDocument = False;
+        $ticket = new Ticket();
+          // Check if ticket  exists 
+          if ($ticket->getFromDB($this->fields["items_id"]))
+               { 
+               # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation 
+                       // Get all attached documents of ticket
+                       $query = "SELECT `glpi_documents_items`.`id` AS id,
+                       `glpi_documents_items`.`documents_id` AS docId,
+                               `glpi_documents_items`.`date_mod` AS date_mod
+                 FROM `glpi_documents_items`
+                 WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."'
+                       AND `glpi_documents_items`.`itemtype` = 'Ticket' ";
+       
+                       $result = $DB->query($query);
+               $my_docs = array();
+               $dateMessage = '';
+               if ($DB->numrows($result)) {
+                       while ($data = $DB->fetch_assoc($result)) {
+                       if (!empty($data['id'])) {
+                       $my_docs[]=$data;
+                       }
+                       }
+               #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments
+               if (!empty($this->fields['messageid'])) {
+                       preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches);
+                       $messageid_timestamp = $matches[1];
+                       $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp));
+                       $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S"));
+               }
+ 
+               $link_doc = array();
+               if (is_array($my_docs) && count($my_docs)>0) {
+                               foreach ($my_docs as $the_doc) {
+                               $dateDoc = new DateTime($the_doc['date_mod']);
+                               if ($dateDoc > $dateMessage) {
+                                       $TheDoc = new Document();
+                                       $TheDoc->getFromDB($the_doc['docId']);
+                                       $lastFollowupDocument[] = $TheDoc;
+                                       }
+                               }
+                       }
+               }
+               }
+ 
+ 
+         if ($lastFollowupDocument != False )
+         {
+         foreach ($lastFollowupDocument as $doc2Send) {
+ 
+                 $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'],
+                                               $doc2Send->fields['filename'],
+                                               'base64',
+                                               $doc2Send->fields['mime']);
+                 }
+ 
+         }
+     }
+ 
           if (empty($this->fields['body_html'])) {
              $mmail->isHTML(false);
              $mmail->Body = $this->fields['body_text'];

Question bête mais ce bout de code s'insère où ? Je suis très fortement intéressé car même souci smile

Offline

#11 2016-09-02 12:24:39

dicka.florent
Member
Registered: 2016-04-12
Posts: 93

Re: Pièces jointes dans les suivis

Bonjour à tous!
j'ai également ce soucis de pièces jointes.
j'aimerais savoir où s'insère ce code s'il vous plait.
merci!

Offline

#12 2016-09-02 17:31:56

Kyushin49
Member
Registered: 2016-08-09
Posts: 6

Re: Pièces jointes dans les suivis

Bonjour,

Cette solution a-t-elle été testée sur la V 0.90.5 ? Car quand j'intègre ce code dans mon fichier queuedmail.class.php l'action auto ne se lance pas et j'ai des message d'erreur concernant la fonction "query" ou "DB".

Edit : Ne pas tenir compte de ce post, Je n'avais pas ajouté la variable globale $DB dans la ligne "global $CFG_GLPI, $DB;". Désormais les envois des documents en PJ fonctionnent.

Last edited by Kyushin49 (2016-09-05 09:30:22)

Offline

#13 2016-09-07 16:36:42

dicka.florent
Member
Registered: 2016-04-12
Posts: 93

Re: Pièces jointes dans les suivis

Bonjour à tous;
excusez moi encore parce que je deviens lourd à cause de ce sujet.
je suis sur la version de glpi 0.90.3
s'il vous plait le code php écrit ici plus haut il doit remplace l'intégralité du fichier queuedmail.class.php? si oui est ce la seule action à effectuer pour régler ce problème de pièces jointes dans les suivis?

merci d'avance pour vos réponses.

Offline

#14 2016-09-08 17:17:37

titan
Member
Registered: 2007-09-25
Posts: 30

Re: Pièces jointes dans les suivis

Salut, il faut savoir lire dans la "matrice" ..

Dans le fichier queuedmail.class.php, tu cherche la ligne global $CFG_GLPI; (je ne connait pas le numéro de ligne, je suis en 0.90.1 et cela évolue avec les versions) et tu ajoute ,$DB

Tu obtient donc : global $CFG_GLPI, $DB;

Ensuite tu cherche la ligne qui contient  $mmail->Subject  = $this->fields['name'];

Tu insére le code php (sans les +)


Important, crée toi une copie de sauvegarde du fichier avant.

Bon courage,

Offline

#15 2016-09-09 08:38:39

dicka.florent
Member
Registered: 2016-04-12
Posts: 93

Re: Pièces jointes dans les suivis

Merci titan je teste tout de suite.
je suis pas très développement voilà pour suis un peu perdu.

Offline

#16 2016-09-09 10:41:41

dicka.florent
Member
Registered: 2016-04-12
Posts: 93

Re: Pièces jointes dans les suivis

Merci pour ton aide titan çà fonctionne.
on peut clôturer ce ticket.

Offline

#17 2016-09-09 19:35:31

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Pièces jointes dans les suivis

dicka.florent vous n'êtes par l'auteur initial du ticket. Donc ce n'est pas à vous d'indiquer si ce ticket peut être clos ou pas


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#18 2017-05-13 07:23:45

livier
Member
Registered: 2016-11-15
Posts: 172

Re: Pièces jointes dans les suivis

Bonjour,

Je suis en version 0.90.5, pourriez vous me dire si cette fonctionnalité a été intégrée dans les versions plus récentes ?
D'avance merci

Offline

#19 2017-11-24 16:30:53

Ra0h
Member
Registered: 2017-01-09
Posts: 18

Re: Pièces jointes dans les suivis

Bonjour, avec la restructuration des classes utilisées au passage de la 9.2, je n'arrive pas à réinsérer le code ou créer une fonction le remplaçant.

Quelqu'un ayant plus de competences aurait réussi ?

Cordialement

Offline

#20 2020-05-06 17:31:14

Thomas13003
Member
Registered: 2019-03-04
Posts: 20

Re: Pièces jointes dans les suivis

salut
je suis en 9.1.6 et j'ai scrupuleusement suivi les conseils de tout le monde :
- modif de queedmail.class.php
-->   global $CFG_GLPI, $DB;
-->  puis aprés          $mmail->Subject  = $this->fields['name'];

j'ai ajouté ça, sans les +
Pour autant, je n'ai pas les PJ dans mes suivis par mail.
Pourriez vous m'aider svp, ça fait des mois que je cherche.
Merci
 
+ $lastFollowupDocument = False;
+        if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 )
+        {
+       #on est dans le cas d'un ticket
+       $lastFollowupDocument = False;
+        $ticket = new Ticket();
+          // Check if ticket  exists
+          if ($ticket->getFromDB($this->fields["items_id"]))
+               {
+               # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation
+                       // Get all attached documents of ticket
+                       $query = "SELECT `glpi_documents_items`.`id` AS id,
+                       `glpi_documents_items`.`documents_id` AS docId,
+                               `glpi_documents_items`.`date_mod` AS date_mod
+                 FROM `glpi_documents_items`
+                 WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."'
+                       AND `glpi_documents_items`.`itemtype` = 'Ticket' ";
+       
+                       $result = $DB->query($query);
+               $my_docs = array();
+               $dateMessage = '';
+               if ($DB->numrows($result)) {
+                       while ($data = $DB->fetch_assoc($result)) {
+                       if (!empty($data['id'])) {
+                       $my_docs[]=$data;
+                       }
+                       }
+               #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments
+               if (!empty($this->fields['messageid'])) {
+                       preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches);
+                       $messageid_timestamp = $matches[1];
+                       $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp));
+                       $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S"));
+               }
+
+               $link_doc = array();
+               if (is_array($my_docs) && count($my_docs)>0) {
+                               foreach ($my_docs as $the_doc) {
+                               $dateDoc = new DateTime($the_doc['date_mod']);
+                               if ($dateDoc > $dateMessage) {
+                                       $TheDoc = new Document();
+                                       $TheDoc->getFromDB($the_doc['docId']);
+                                       $lastFollowupDocument[] = $TheDoc;
+                                       }
+                               }
+                       }
+               }
+               }
+
+
+         if ($lastFollowupDocument != False )
+         {
+         foreach ($lastFollowupDocument as $doc2Send) {
+
+                 $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'],
+                                               $doc2Send->fields['filename'],
+                                               'base64',
+                                               $doc2Send->fields['mime']);
+                 }
+
+         }
+     }

Offline

#21 2020-07-20 16:49:27

stdglpi
Member
Registered: 2020-02-19
Posts: 47

Re: Pièces jointes dans les suivis

Bonjour,

nous avons migrés en version 9.5.1 et depuis les pièces jointes ne s'envoi plus dans les notifications mails ?
J'ai fait le test sur la 9.5.0 et cela fonctionne.

Y a til eu un changement ?

Offline

Board footer

Powered by FluxBB