connaitre le chemin vers le dossier files depuis n'importe quel script php

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Ce post est lié à deux autres posts :
- http://drupalfr.org/node/1118
- (et de manière plus éloigné) http://drupalfr.org/node/1086.
Dans le code php d'un noeud je souhaite lister tous les fichiers jpg existants dans le dossier files et les mettre dans l'array des valeurs permises (allowed values) pour les exploiter dans une liste de radiobox.

Pour cela j'ai besoin de connaitre le chemin vers le dossier files. Mais je ne sais pas d'où ce fera ma requête vers ce fichier.

De manière générale j'imagine qu'il y a une manière de faire un appel afin qu'il soit réinterprété et adapté à son origine. Par exemple j'ai vu des appels à system/files/ or files ne se trouve pas dans sytem.

Je ne dois pas être très clair.

Version de Drupal : 

<?php
 $file_path
= variable_get('file_directory_path', 'files');
?>

te donne le nom du répertoire défini dans les prefs admin (en utilisant 'files' comme dossier par défaut si ces préférences n'ont pas été définies.

Avec ça, tu devrais pouvoir y accéder depuis n'importe où avec

<?php
 $full_path
= base_path().'/'.$file_path.'.'/my_file.jpg';
?>

Code ci dessus pas garanti 100% testé, mais c'est ça l'idée...

J'ajoute qu'il y a une façon standard (et pour l'instant complètement équivalente) de faire ça, c'est la fonction file_directory_path().

Pour le reste des questions, note que tout code de Drupal (core, modules, php dans des pages, etc...) fonctionne à partir du répertoire de base (celui dans lequel il y a le fichier index.php), et ce quelque soit l'URL de la page courante.

Pour faire un appel externe à un fichier (créer une URL), par contre, il faut utiliser la fonction file_create_url(), qui gère les différents mode de téléchargement (public ou privé).