Message d'avertissement

The subscription service is currently unavailable. Please try again later.

variable global $user et content profile

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.

Bonjour,

Comment peut-on faire en php pour récuperer les champs, les informations du content profile associé à un utilisateur dans un computed_field;

J'ai voulu passer par la $user mais cela ne contient pas les champs du content profile.
Je recupere bien l'id de l'utilisateur son nom etc...

Je ne vois plus trop comment faire.

Merci

Version de Drupal : 

Bonjour,

Je me permets de relancer ce sujet car je cherche aussi à accéder aux informations de content_profile. Mais je ne les trouve même pas dans la BDD... Est-ce que quelqu'un saurait où sont cachées les données utilisateurs enregistrées via ce module ?

Merci d'avance !

Hello,

Content Profile n'ajoute pas directement des informations à l'utilisateur, il associe un node de type Profile à chaque utilisateur. L'auteur d'un node de type Profile détermine à quel utilisateur les infos du node sont associées (chaque utilisateur ne peut créer qu'un node de type Profile).

Il faut donc, via PHP, récupérer les données du node de type Profile dont l'auteur correspond à l'utilisateur dont on veut avoir les informations.

Bonjour,
En approfondissant les recherches j'ai trouvée 2 table qui sont les tables de stockage de ces données.
Table Profile_fields et profile_values.
la jointure avec l'utilisateur est faite sur le uid dans la table profile_values.
Cordialement,
Aya

Edit: Sinon il y a aussi cette fonction là qui est inclus dans profile:

function profile_load_profile(&$user) {
  $result = db_query('SELECT f.name, f.type, v.value FROM {profile_fields} f INNER JOIN {profile_values} v ON f.fid = v.fid WHERE uid = %d', $user->uid);
  while ($field = db_fetch_object($result)) {
    if (empty($user->{$field->name})) {
      $user->{$field->name} = _profile_field_serialize($field->type) ? unserialize($field->value) : $field->value;
    }
  }
}

Elle permet de récupérer les valeur des champs profile dans la variable $user.
Voila en espérant que sa aide.

Edit2:
je ne pense pas que profile crée un node (aucune valeur dans node quand on ajout un nouvel utilisateur avec des contenu de profile) et de plus la table node_type ne contient aucune occurrence concernant le type profile donc impossible de créer un node de ce type.
Donc il vaut mieux utiliser les fonctions définit dans le module profile afin de récupérer les valeur voulues ou l'autre solution est de le refaire a la main.

Bonjour,

Du coup, j'ai modifié avec ce que tu m'as dit :

function totofonc() {
profile_load_profile(&$user);
$date=$user->profile_date;

return '

Vous êtes sur la page Toto.
Votre nom d\'utilisateur est : ' .$GLOBALS['user']->name. '
Votre mail :' .$GLOBALS['user']->mail. '
Date echeance :'.$date.'

';
}

Mais ça ne fonctionne pas, il ne m'affiche pas le champ date.

Essaye ça :

function totofonc() {
global $user;
profile_load_profile($user) ;
$date=$user->profile_date ;

return '
Vous êtes sur la page Toto.
Votre nom d'utilisateur est : ' .$user->name. '
Votre mail :' .$user->mail. '
Date echeance :'.$date.';
}