Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

Eric
2009-08-04 18:04:41

plg a écrit:

Eric, c'est dans quel plugin que tu as ajouté l'information de la langue de l'utilisateur ? (ça m'intéresse)

Salut Pierrick.

Je me suis fait un plugin perso non publié. J'avais l'intension, à terme, de publier un plugin qui permettrait d'afficher, au choix, tout ou partie des informations relatives aux utilisateurs inscrits (pas seulement la langue)... Mais pas le temps :-(

Mais je peux tout de même publier mon "truc" perso si tu veux.

plg
2009-07-22 02:16:25

Eric, c'est dans quel plugin que tu as ajouté l'information de la langue de l'utilisateur ? (ça m'intéresse)

Eric
2009-05-05 19:14:59

Bon sang !! C'est pas possible que je soit c... à ce point !! Pourquoi faut-il que je cherche toujours la complication ?!?!
Encore une fois, la honte m'assaille...

Milles mercis P@t ! Cà fonctionne effectivement beaucoup mieux quand on simplifie ;-)

P@t
2009-05-05 19:07:19

Il n'y a pas besoin de faire d'assign ou d'append sur plugin_columns, vu que le fichier user_list.php le fait déjà!
Voila ce qui fonctionne:

add_event_handler('loc_visible_user_list', 'personal_loc_visible_user_list');

function personal_loc_visible_user_list($visible_user_list)
{
  global $template;

  // plus simplement:
  $template->append('plugin_user_list_column_titles', l10n('language'));

  foreach ($visible_user_list as $i => $user)
  {
    $user_ids[$i] = $user['id'];
  }
  $user_nums = array_flip($user_ids);

  $languages = get_languages();

  if (!empty($user_ids))
  {
    $query = '
SELECT user_id, language
  FROM '.USER_INFOS_TABLE.'
  WHERE user_id IN ('.implode(',', $user_ids).')
;';
    $result = pwg_query($query);

    while ($row = mysql_fetch_array($result))
    {
      // et voila ce qu'il "suffisait" de faire ;-)
      $visible_user_list[$user_nums[$row['user_id']]]['plugin_columns'][] = $languages[$row['language']];
    }
  }
  return $visible_user_list;
}

Eric
2009-05-05 18:02:56

Finalement, je parviens à avancer... Lentement mais surement !

Ce qui me rassure c'est que mon code est bon. Mais au niveau de l'insertion dans le template, y a encore du boulot (voir capture). Je suis parvenu à ce résultat comme ceci :

Code:

/* Ajout d'une colonne Langues pour la gestion des utilisateurs */

/* Le trigger = OK */
add_event_handler('loc_visible_user_list', 'personal_loc_visible_user_list');

/* La fonction qui doit retourner $visible_user_list */
function personal_loc_visible_user_list($visible_user_list)
{
  global $template;

/* Mise en place du titre de la colonne - Cà, c'est bon ! */
  $template->assign
  (
    'plugin_user_list_column_titles',
    array
  (
      'CAPTION' => l10n('language')
    )
  );

  $user_ids = array();
  foreach ($visible_user_list as $i => $user)
  {
    $user_ids[$i] = $user['id'];
  }
  $user_nums = array_flip($user_ids);
 
  $languages = get_languages();
 
/* requête pour obtenir les infos - Testé offline et c'est OK */
  if (!empty($user_ids))
  {
    $query = '
SELECT user_id, language
  FROM '.USER_INFOS_TABLE.'
  WHERE user_id IN ('.implode(',', $user_ids).')
;';
    $result = pwg_query($query);
    while ($row = mysql_fetch_array($result))
    {
/* la variable prend bien les data de la requête */
      $visible_user_list[$user_nums[$row['user_id']]]['language'] = $languages[$row['language']];
/* Une autre variable pour le template */
      $lang[] = $languages[$row['language']];
    }
  }

/* Les bonnes infos dans la bonne colonne - C'est toujours là qu'est le malaise */
/* J'ai bien les langues mais sur une ligne au lieu de la colonne 'plugin_user_list_column_titles' */
  $template->append(
    'users',
    array(
      'plugin_columns' => $lang
      )
    );
  return $visible_user_list;
}
Eric
2009-05-04 18:50:03

Bonjour à tous. C'est à nouveau le boulet du php qui en remet une couche :-(

Je m'échine à essayer de reproduire un plugin perso que j'avais sous PWG 1.7.3 vers Piwigo 2.x. Il s'agit d'ajouter une colonne dans user_list, présentant la langue de chaque utilisateur listé en plus des données déjà présentes (Nom, statut, groupe, etc...). En 1.7.3, j'y suis arrivé "finger in the nose" mais là...

J'ai parfaitement identifié le trigger loc_visible_user_list ainsi que ses variables plugin_user_list_column_titles et plugin_columns. J'ai facilement pu créer une colonne supplémentaire et la nommer "Langue". Mais pas moyen de faire coller les langues de chaque user dans les cases !

Je sais que je fais quelque chose de travers. Je sais où je merdoie mais je n'arrive pas à résoudre. Voici mon approche :

Code:

/* Ajout d'une colonne Langues pour la gestion des utilisateurs */

/* Le trigger = OK */
add_event_handler('loc_visible_user_list', 'personal_loc_visible_user_list');

/* La fonction qui doit retourner $visible_user_list */
function personal_loc_visible_user_list($visible_user_list)
{
  global $template;

/* Mise en place du titre de la colonne - Cà, c'est bon ! */
  $template->assign
  (
    'plugin_user_list_column_titles',
    array
  (
      'CAPTION' => l10n('language')
    )
  );

  $user_ids = array();
  foreach ($visible_user_list as $i => $user)
  {
    $user_ids[$i] = $user['id'];
  }
  $user_nums = array_flip($user_ids);
 
  $languages = get_languages();
 
/* requête pour obtenir les infos - Testé offline et c'est OK */
  if (!empty($user_ids))
  {
    $query = '
SELECT user_id, language
  FROM '.USER_INFOS_TABLE.'
  WHERE user_id IN ('.implode(',', $user_ids).')
;';
    $result = pwg_query($query);
    while ($row = mysql_fetch_array($result))
    {
/* la variable prend bien les data de la requête */
      $visible_user_list[$user_nums[$row['user_id']]]['language'] = $languages[$row['language']];
    }
  }

/* Les bonnes infos dans la bonne colonne - C'est là qu'est le malaise */
  $template->assign(
    'user.plugin_columns',
    array(
      'LANGUAGE' => $languages[$row['language']]
      ));

  return $visible_user_list;
}

Le template user_list.tpl est tout prêt à recevoir les données mais je me retrouve avec la colonne "Langue" et, dessous, les icones de la colonne "Actions".

Merci pour le dépannage ! ;-)

PS : Si je suis trop "lourd" (pour ne pas dire ch..nt), n'hésitez pas à me le faire comprendre. Promis, je ne le prendrai pas mal et je comprendrai (the shame is on me)...

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2025 · Contact