1

Topic: Ajout d'un document lié à un ticket

Bonjour,

J'ouvre ce sujet de discussion car j'ai un problème lors de l'ajout de documents dans un ticket.
J'explique mon problème :
J'ai crée une fonction supplémentaire dans glpi qui permet d'envoyer un email lorsque l'on est sur un ticket. Lorsque l'email est envoyé, j'aimerai pouvoir stocker le mail dans les documents qui sont rattachés au ticket au format ".doc".
Avec les quelques compétences que j'ai en php/sql, j'ai réussi à enregistrer le mail en format .doc, et à le stocker dans la base de donné et plus précisément dans la table glpi_documents.
Seulement, lorsque je retourne sur le ticket, le document n'apparait pas. Je penses que l'enregistrement dans la base ne se fait pas dans "les règles de l'art".
Es-ce que quelqu'un pourrait me renseigner sur les procédures de stockage d'un document pour qu'il soit bien rattaché au ticket ?
Les informations que je renseigne dans la base sont les suivants :
- name : Document Ticket - email
- filename : nomDuFichier
- filepath : CheminAccesFichier
- mime: application/msword
- ticket_id : ticket_id
- users_id : id de mon identifiant (avec le profil super admin)

Configuration :

Version de GLPI : GLPI 0.80.61
PHP Version 5.2.8
Apache/2.2.11
MYSQL : 5.1.30


Je vous remercie d'avance pour vos réponses

Cordialement

2

Re: Ajout d'un document lié à un ticket

Comment faites-vous l'enregistrement dans la base ?

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

3

Re: Ajout d'un document lié à un ticket

Voici la partie du code php permettant l'enregistrement en base :

 $bdd->exec("INSERT INTO glpi_documents (name, filename, filepath, mime, tickets_id, users_id) VALUES 
    ('Document Ticket - email', '$nomDuFichier', '$cheminDuFichier', 'application/msword', '$ticket_id', 19)"); 

4

Re: Ajout d'un document lié à un ticket

Cela ne suffit pas. Il faut aussi le documentcategories_id

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

5

Re: Ajout d'un document lié à un ticket

Si je reprend de façon "algorithmique" mon code, on obtient :

- Récupération de données provenant d'un formulaire
- Création du fichier .doc contenant le contenu du mail
- écriture dans le fichier
- fermeture du fichier
- A ce niveau la je fais l'insert dans la base de donnée

Es-ce que ces informations vous sont suffisante ?

Merci de votre aide.

6

Re: Ajout d'un document lié à un ticket

En ce qui concerne le champs documentcategories_id, la valeur par défaut est zéro.
J'ai remarqué que les autres documents ajoutés "directement avec glpi" ont pour valeur 0 dans ce champs.

7

Re: Ajout d'un document lié à un ticket

Perso, je vous déconseille très fortement de ne pas passer pas les fonctions du Framework GLPI

Genre:

$document->add($input)

+

Dév. Fedora 19/20 - PHP 5.6.1 - MariaDB 5.5.39 - OCS 2.1 - GLPI SVN
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur http://blog.famillecollet.com/

8

Re: Ajout d'un document lié à un ticket

Bonjour remi,

Pouvez-vous êtes plus explicite dans votre réponse ? Vous déconseillez d'utiliser de ne pas passer par les fonctions du framwork GLPI mais je n'ai pas réussi à réutiliserles méthodes qui permettent l'enregistrement d'un document.
C'est pour cela que j'ai voulu faire l'ajout de documents a ce qu'on pourrait dire "à ma manière".
Ou pourrais-je obtenir une documentation complète de ce Framework ?
Ou, pourriez - vous m'aider à réutiliser les méthodes du Framework ?

Merci de vos réponses

9

Re: Ajout d'un document lié à un ticket

Là : https://forge.indepnet.net/embedded/glpi/hierarchy.html

Dév. Fedora 19/20 - PHP 5.6.1 - MariaDB 5.5.39 - OCS 2.1 - GLPI SVN
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur http://blog.famillecollet.com/

10

Re: Ajout d'un document lié à un ticket

$input = tableau contenant ce que vous voulez enregistrer)

$document = new Document();
$document->add($input)

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

11

Re: Ajout d'un document lié à un ticket

Lors de l'utilisation de la classe document.class.php, j'ai le message d'erreur qui survient :
"Sorry. You can't access directly to this file"
J'ai regardé de plus près, et j'ai trouvé que ce message venait du test suivant :

 
if (!defined('GLPI_ROOT')) {
   die("Sorry. You can't access directly to this file");
}

Je voudrais savoir comment définir dans mon programme cette valeur GLPI_ROOT pour pouvoir utiliser la classe Document.

12

Re: Ajout d'un document lié à un ticket

Dans votre premier post vous avez indiqué que vous aviez le ticket. Comment ? en changeant le core ou avec un plugin ?
Vous avez fait quoi exactement et où ?

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

13 (edited by anoel 2012-04-12 17:20:27)

Re: Ajout d'un document lié à un ticket

Pour récupérer l'id du ticket, j'ai simplement rajouté un lien dans le ticket.form.php

<a href="email/page2.php?id=<?php echo ($_GET["id"]);?>" title="envois email" > Envoyer un email </a>

14 (edited by anoel 2012-04-12 17:28:52)

Re: Ajout d'un document lié à un ticket

Je n'arrive toujours pas à utiliser la classe Document.
J'ai fait un include du fichier document.class.php mais, lorque le programme arrive à la déclaration de la classe, j'ai une erreur qui me dit que la classe CommonDBTM est introuvable ...

class Document extends CommonDBTM

Lorsque je fais un include directement dans la classe, c'est GLPI qui ne retrouve plus ses billes et ne fonctionne plus.
Es-ce que vous savez comment donner à la classe Document tous les includes necessaires ?

Merci d'avance de vos réponses.


(Je ne sais pas si cela pourra aider certain, mais j'ai la réponse au message n°11, il faut définir GLPI_ROOT de cette manière )

define('GLPI_ROOT', '/nom_du_repertoire/glpi');

15

Re: Ajout d'un document lié à un ticket

L'autoload se charge des class et si vous avez changé directement dans GLPI, je ne vois pas pourquoi la class Document ne serait pas connu.

Ce que j'ai besoin de connaitre c'est à quel endroit pour constituer les données à injecter et à quel endroit vous faites l'injection (nom du fichier GLPI et nom de la fonction)

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

16

Re: Ajout d'un document lié à un ticket

Bonjour,

Vous parlez de l'autoload, de quoi s'agit-t-il ? Lorsque je déclare un objet Document, j'ai une erreur qui me dis : Class Document not found.

Ce que j'ai besoin de connaitre c'est à quel endroit pour constituer les données à injecter et à quel endroit vous faites l'injection (nom du fichier GLPI et nom de la fonction)

Pouvez vous reformuler votre question ? j'ai un peu du mal à comprendre ...

17

Re: Ajout d'un document lié à un ticket

A quel endroit dans le code de GLPI constituez-vous les données à mettre en base et à quel endroit pour faites l'injection.

Prod : RHEL 4.6/5.4 - php 5.1.6/5.2.13 + APC + memcached - MySQL 5.0.45 - OCS 1.01 - GLPI 0.83.8 svn  (>130 000 PMF - 334 entités)
Dev : Fedora 14 - PHP 5.4.12 - .GLPI 0.84 SVN - GLPI 0.85 SVN
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

18

Re: Ajout d'un document lié à un ticket

Voilà le code que j'ai pour la sauvegarde en base de donnée du document .doc :

Variables :
$nomDuFichier = $_FILES['binFile']['name'];
$filepath = $_FILES['binFile']['tmp_name'];
$dateComplete = date("Y-m-d h:i:s");

$bdd->exec("INSERT INTO glpi_documents (entities_id, name, filename, filepath, mime, date_mod, users_id, tickets_id) VALUES 
    (5, 'Document Ticket - EMAIL', '$nomDuFichier', '$filepath', 'application/msword', '$dateComplete', 19, '$ticket_id')");

La sauvegarde en base de donnée est bonne puisque que je peux accéder aux valeurs dans la base. Seulement, lorsque je retourne sur le ticket, rien à faire, le document ne s'affiche pas.

Merci de votre aide

19

Re: Ajout d'un document lié à un ticket

Bonjour,

Je remet un post sur ce sujet car je n'ai pas encore résolu mon problème.
J'aimerai savoir dans quel champs de la base de donnée de glpi sont stockés les documents.
Le champs que je recherche est de type "blob" je penses.

j'ai déjà effectué des recherches sur beaucoup de table glpi_documents, glpi_tickets, glpi_documents_items, glpi_documenttypes ...
Ou alors, dans le meilleurs des cas, si quelqu'un pourrais m'expliquer la procédure, les tables qui sont affectés lors de l'ajout de nouveaux documents liés à un ticket.

Merci de votre aide smile

20 (edited by anoel 2012-04-16 15:57:56)

Re: Ajout d'un document lié à un ticket

J'ai encore des interrogations sur la manière dont glpi récupèrent les docuements :
Comment les documents liés aux tickets sont-ils affichés dans un ticket particulier ?
Quels sont les critères de sélections sur lesquels le tickets va récupérer ses documents qui lui sont rattachés ?
Quel fichier classe / fichier est appelé lors d'une insertion dans la base de donnée d'un document lié à un ticket ?

Je pose ces questions car les informations en base des documents que j'ajoute (sans passer par GLPI) sont identiques aux informations de documents ajoutés depuis GLPI pour un ticket.

21 (edited by anoel 2012-04-19 15:55:28)

Re: Ajout d'un document lié à un ticket

Problème résolu :
Lors d'ajout de documents liés aux tickets, l'enregistrement en base se fait sur deux tables :
- glppi_docuements
- glpi_documents_items

22

Re: Ajout d'un document lié à un ticket

Pbm résolu. Donc je ferme.

Dév. Fedora 19/20 - PHP 5.6.1 - MariaDB 5.5.39 - OCS 2.1 - GLPI SVN
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur http://blog.famillecollet.com/