@emheyarssi
Pas de stress, dans tous les cas merci de tes retours !
Entre deux, j’ai fouillé dans le code de l’API ce qui concerne les documents et la manière de récupérer la liste de fichiers joints d’un produit.
[github]/Dolibarr/dolibarr/blob/develop/htdocs/api/class/api_documents.class.php
(je ne peux pas inclure ce lien pour une raison inconnue, donc je vous met juste le chemin relatif à github)
Voici le code qui s’occupe déjà de récupérer le dossier d’upload de fichiers spécifique au produit (ligne 417) :
...
} elseif ($modulepart == 'produit' || $modulepart == 'product') {
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
if (!DolibarrApiAccess::$user->rights->produit->lire) {
throw new RestException(401);
}
$object = new Product($this->db);
$result = $object->fetch($id, $ref);
if ($result == 0) {
throw new RestException(404, 'Product not found');
} elseif ($result < 0) {
throw new RestException(500, 'Error while fetching object: '.$object->error);
}
$upload_dir = $conf->product->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, 'product');
} elseif ($modulepart == 'agenda' || $modulepart == 'action' || $modulepart == 'event') {
...
Et là du coup j’ai regardé ce que retourne $upload_dir
(en lui faisant retourner une erreur 404 REST avec le nom du chemin) comme valeur et voilà le chemin renvoyé :
…/dolibarr/documents/produit/1252522
Sauf que ce dossier n’existe pas, au sein du dossier …/dolibarr/documents/produit j’ai toute une série de dossiers 0 à 9, puis dans chacun d’entre eux un peu la même chose.
En fait les dossiers sont organisés pour refléter les 2 dernières valeurs des ids de produit. Dans mon cas, il semblerait que les photos pour le produit avec l’id 13242 se trouvent dans le dossier :
…/dolibarr/documents/produit/2/4/13242/photos
Pour 2/4 = 42 inversé.
Mais pour résumer, $upload_dir
, ne semble pas avoir le bon chemin. Dans la ligne de code, $conf->product->multidir_output[$object->entity]
renvoie bien /dolibarr/documents/produit mais get_exdir
ne fonctionne pas correctement.
Est-ce que vous avez une idée de ce qui cloche ? C’est la config de Dolibarr chez le client qui n’est pas compatible avec l’API ? Ou c’est la méthode pour récupérer le chemin qui n’est pas la bonne ?