VTiger – Ajouter les champs spécifiques aux web services exposés

Le 11/06/2014 Par Christophe Dupontvtigerweb service

Il est possible dans VTiger d’ajouter des champs spécifiques aux différents modules : calendrier, contacts, etc.

Néanmoins, si ces champs sont bien visibles côté application, ils ne le sont pas via les web services exposées nativement. Pire, dans certains cas, il se peut que l’ajout d’un champ spécifique provoque un bug.

Pour remédier à cela, il faut modifier le code source de VTiger afin qu’il expose ces champs spécifiques.

Dans cet article, nous allons voir comment exposer un champ spécifique via le web service permettant de communiquer avec Outlook.

Prérequis :

  • Avoir accès à la base de données VTiger;
  • Avoir créé un champ spécifique;
  • Avoir les droits d’écriture sur le répertoire dans lequel est installé VTiger.
  • Voici les étapes à réaliser et qui sont détaillées ci-dessous:

  • Identifier le nom technique du champ dans la base de données VTiger;
  • Ajouter le champ au WSDL du service exposé.
  • Mapper le champ aux différentes opérations du service.
  •  

    Remarque :

  • Nous allons ici modifier du code dans VTiger. Il faudra donc reporter ces modifications lors des futures montées de version.
  • 1. Identifier le nom technique du champ dans la base de donnés VTiger

    Connectez vous à la base de données, et sélectionnez dans la table vtiger_field les champs « tablename » et « fieldname » du tuple où « fieldlabel » = le nom de votre champ spécifique dans vtiger.

    Exemple : dans le cas ci-dessous, le champ spécifique s’appelle « Point ». Il est stocké dans la table « vtiger_activitycf » dans la colonne « cf_648 ».

    ScreenHunter_20-Apr.-15-18.20.jpg

     

    2. Ajouter le champ au WSDL du service exposé

    Dans le répertoire /SOAPSOAP (Simple Object Access Protocol) est un protocole de communication. où est installé VTiger, vous pouvez voir les fichiers php qui exposent les différents web services de VTiger:

    ScreenHunter_20-Apr.-15-18.29.jpg

    Il faut donc ouvrir celui qu’on souhaite appeler (dans notre cas vtigerolwebservice.php), et ajouter à la définition de l’objet le nom du champ :

    ScreenHunter_20-Apr.-22-18.43.jpg

    Le champ est alors exposé lorsqu’on affiche le wsdl du web service (http://[adresse]:[port]/vtigerservice.php?service=outlook&wsdl) :

    ScreenHunter_20-Apr.-22-18.51.jpg

     

    3. Mapper le champ aux différentes opérations du service

    Il faut maintenant mapper ce champ avec le champ spécifique dans la base de données (« cf_648 »), pour les différentes opérations exposées par le web service. Pour cela, toujours dans le fichier vtigerolservice.php, mapper le champ dans les différentes opérations :

    Pour les opérations d’insertion et de mise à jour (CreateClndr et UpdateClndr) :

    ScreenHunter_21-Apr.-22-19.01.jpg

    Pour l’opération de récupération des calendriers  (GetClndr ) :

    ScreenHunter_20-Apr.-22-19.01.jpg

     

    Attention pour que le get fonctionne, il faut aussi modifier la requête de sélection qui se trouve dans le fichier Activity.php du module calendrier (/modules/calendar) :

    ScreenHunter_22-Apr.-22-19.08.jpg

    Testé avec VTiger 5.4

    Sommaire

    • fleche vers la droite 1. Identifier le nom technique du champ dans la base de donnés VTiger
    • fleche vers la droite 2. Ajouter le champ au WSDL du service exposé
    • fleche vers la droite 3. Mapper le champ aux différentes opérations du service

    À voir aussi

    Tous les articles