Changeset 115610 in spip-zone


Ignore:
Timestamp:
Jun 11, 2019, 2:30:19 PM (5 days ago)
Author:
tcharlss@…
Message:

Une fonction pour récupérer les informations d'un compte de profil dans un format simple (un simple tableau associatif), utilisée dans l'export CSV.

Location:
_plugins_/profils/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/profils/trunk/formulaires/exporter_profils.php

    r114667 r115610  
    9696                        if ($ids = sql_allfetsel('id_auteur', 'spip_auteurs', 'id_profil = '.$profil['id_profil'])) {
    9797                                $ids = array_map('reset', $ids);
    98                                
    9998                                foreach ($ids as $id_auteur) {
    100                                         $infos = profils_recuperer_infos($id_auteur, $profil['id_profil']);
    101                                         $ligne = array();
    102                                        
    103                                         // On refait tout comme pour les colonnes
    104                                         foreach (array('auteur', 'organisation', 'contact') as $objet) {
    105                                                 // Si c'est autre chose que l'utilisateur, faut le plugin qui va avec et que ce soit activé
    106                                                 if ($objet == 'auteur' or (defined('_DIR_PLUGIN_CONTACTS') and $config["activer_$objet"])) {
    107                                                         // Pour chaque chaque champ vraiment configuré
    108                                                         if ($config[$objet]) {
    109                                                                 foreach ($config[$objet] as $champ => $config_champ) {
    110                                                                         // On prend les champs d'édition de profil uniquement
    111                                                                         if (in_array('edition', $config_champ)) {
    112                                                                                 $ligne[] = $infos[$objet][$champ];
    113                                                                         }
    114                                                                 }
    115                                                         }
    116                                                        
    117                                                         // On cherche des coordonnées pour cet objet
    118                                                         if (
    119                                                                 defined('_DIR_PLUGIN_COORDONNEES')
    120                                                                 and $config["activer_coordonnees_$objet"]
    121                                                                 and $coordonnees = $config['coordonnees'][$objet]
    122                                                         ) {
    123                                                                 // Pour chaque type de coordonnéees (num, email, adresse)
    124                                                                 foreach ($coordonnees as $coordonnee => $champs) {
    125                                                                         // Pour chaque champ ajouté
    126                                                                         foreach ($champs as $cle => $champ) {
    127                                                                                 // Si ce cette coordonnées est configurée pour le form demandé
    128                                                                                 if ($champ['edition']) {
    129                                                                                         // Attention, si pas de type, on transforme ici en ZÉRO
    130                                                                                         if (!$champ['type']) {
    131                                                                                                 $champ['type'] = 0;
    132                                                                                         }
    133                                                                                         // On va chercher les saisies de ce type de coordonnées
    134                                                                                         $saisies_coordonnee = profils_chercher_saisies_objet($coordonnee);
    135                                                                                         // On vire le titre libre
    136                                                                                         $saisies_coordonnee = saisies_supprimer($saisies_coordonnee, 'titre');
    137                                                                                         // On cherche uniquement le nom des champs
    138                                                                                         $saisies_noms = saisies_lister_champs($saisies_coordonnee);
    139                                                                                        
    140                                                                                         // On ajoute aux colonnes
    141                                                                                         foreach ($saisies_noms as $nom) {
    142                                                                                                 $ligne[] = $infos['coordonnees'][$objet][$coordonnee][$champ['type']][$nom];
    143                                                                                         }
    144                                                                                 }
    145                                                                         }
    146                                                                 }
    147                                                         }
    148                                                 }
    149                                         }
    150                                        
    151                                         $donnees[] = $ligne;
     99                                        $ligne = profils_recuperer_infos_simples($id_auteur, $profil['id_profil']);
     100                                        $donnees[] = array_values($ligne);
    152101                                }
    153102                        }
  • _plugins_/profils/trunk/inc/profils.php

    r114667 r115610  
    382382
    383383/**
    384  * Récupérer les informations complètes d'un profil
     384 * Récupérer les informations complètes d'un compte de profil
     385 *
     386 * Renvoie un tableau multidimensionnel avec l'ensemble des valeurs
     387 * chargées par les formulaires d'édition des objets du profil,
     388 * chaque objet dans une clé (organisation, contact, etc.)
    385389 *
    386390 * @param int $id_auteur=0
    387391 *              Identifiant d'un auteur précis, sinon visiteur en cours
    388392 * @return array
    389  *              Retourne les informations d'un profil, chaque objet SPIP dans une clé (organisation, contact, telephone, etc).
     393 *              Informations d'un profil, chaque objet SPIP dans une clé (organisation, contact, telephone, etc).
    390394 */
    391395function profils_recuperer_infos($id_auteur=0, $id_ou_identifiant_profil='') {
     
    427431       
    428432        return $infos;
     433}
     434
     435/**
     436 * Récupérer les informations résumées d'un compte de profil
     437 *
     438 * Renvoie un tableau simple avec toutes les valeurs du profil,
     439 * les champs configurés pour l'édition uniquement.
     440 *
     441 * @uses profils_recuperer_profil()
     442 * @uses profils_recuperer_infos()
     443 *
     444 * @param int $id_auteur=0
     445 *              Identifiant d'un auteur précis, sinon visiteur en cours
     446 * @return array
     447 *              Informations d'un profil sous forme de tableau associatif
     448 */
     449function profils_recuperer_infos_simples($id_auteur=0, $id_ou_identifiant_profil='') {
     450        $ligne = array();
     451
     452        if (
     453                $infos = profils_recuperer_infos($id_auteur, $id_ou_identifiant_profil)
     454                and $profil = profils_recuperer_profil($id_ou_identifiant_profil)
     455                and $config = $profil['config']
     456        ) {
     457                $ligne = array();
     458
     459                // Les objets dans un ordre précis
     460                foreach (array('auteur', 'organisation', 'contact') as $objet) {
     461                        // Si c'est autre chose que l'utilisateur, faut le plugin qui va avec et que ce soit activé
     462                        if ($objet == 'auteur' or (defined('_DIR_PLUGIN_CONTACTS') and $config["activer_$objet"])) {
     463                                // Pour chaque chaque champ vraiment configuré
     464                                if ($config[$objet]) {
     465                                        foreach ($config[$objet] as $champ => $config_champ) {
     466                                                // On prend les champs d'édition de profil uniquement
     467                                                if (in_array('edition', $config_champ)) {
     468                                                        $cle = $objet.'_'.$champ;;
     469                                                        $ligne[$cle] = $infos[$objet][$champ];
     470                                                }
     471                                        }
     472                                }
     473                               
     474                                // On cherche des coordonnées pour cet objet
     475                                if (
     476                                        defined('_DIR_PLUGIN_COORDONNEES')
     477                                        and $config["activer_coordonnees_$objet"]
     478                                        and $coordonnees = $config['coordonnees'][$objet]
     479                                ) {
     480                                        // Pour chaque type de coordonnéees (num, email, adresse)
     481                                        foreach ($coordonnees as $coordonnee => $champs) {
     482                                                // Pour chaque champ ajouté
     483                                                foreach ($champs as $cle => $champ) {
     484                                                        // Si ce cette coordonnées est configurée pour le form demandé
     485                                                        if ($champ['edition']) {
     486                                                                // Attention, si pas de type, on transforme ici en ZÉRO
     487                                                                if (!$champ['type']) {
     488                                                                        $champ['type'] = 0;
     489                                                                }
     490                                                                // On va chercher les saisies de ce type de coordonnées
     491                                                                $saisies_coordonnee = profils_chercher_saisies_objet($coordonnee);
     492                                                                // On vire le titre libre
     493                                                                $saisies_coordonnee = saisies_supprimer($saisies_coordonnee, 'titre');
     494                                                                // On cherche uniquement le nom des champs
     495                                                                $saisies_noms = saisies_lister_champs($saisies_coordonnee);
     496                                                               
     497                                                                // On ajoute aux colonnes
     498                                                                foreach ($saisies_noms as $nom) {
     499                                                                        $cle = $objet.'_'.$coordonnee.'_'.$champ['type'].'_'.$nom;
     500                                                                        $ligne[$cle] = $infos['coordonnees'][$objet][$coordonnee][$champ['type']][$nom];
     501                                                                }
     502                                                        }
     503                                                }
     504                                        }
     505                                }
     506                        }
     507                }
     508        }
     509
     510        return $ligne;
    429511}
    430512
  • _plugins_/profils/trunk/paquet.xml

    r115576 r115610  
    22        prefix="profils"
    33        categorie="auteur"
    4         version="1.6.2"
     4        version="1.6.3"
    55        schema="1.0.2"
    66        etat="stable"
Note: See TracChangeset for help on using the changeset viewer.