AXOPEN

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

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:

  1. Identifier le nom technique du champ dans la base de données VTiger;
  2. Ajouter le champ au WSDL du service exposé.
  3. 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

 

2. Ajouter le champ au WSDL du service exposé

Dans le répertoire /SOAP 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

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

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

 

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

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

ScreenHunter_20 Apr. 22 19.01

 

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

Testé avec VTiger 5.4