•  » Plugins
  •  » [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

#16 2011-09-25 17:36:59

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16979

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

pour le préfiltre sur la page user list un truc du genre ->

//add prefiltre user_list
add_event_handler('loc_begin_admin', 'userlistericf',60);

function userlistericf()
    {
    global $template;
    $template->set_prefilter('user_list', 'userlistericT');
    }

function userlistericT($content, &$smarty)
    {
  $search = '#<table class="table2" width="97%">#';
 
  $replacement = '
    <div>
        <form method="post" >
            <fieldset>
eric
            </fieldset>
        </form>
    </div> 
  <table class="table2" width="97%">';

  return preg_replace($search, $replacement, $content);
    }


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#17 2011-09-25 17:38:16

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16979

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

le truc que j'oublie régulièrement quand je fais des pré filtre c'est de forcer la recompilation ;-)


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#18 2011-09-25 17:40:49

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

Si, si, tu as raison d'insister car je ne dois pas m'y prendre (savoir m'y prendre) correctement pour cette histoire de pré-filtre. Comme je l'ai dit, j'ai déjà utilisé un pré-filtre pour le plugin NBM Subscriber qui ajoute des options dans la page profile de l'utilisateur inscrit.

Mais je ne parviens pas à reproduire le fonctionnement dans user_list... Quelque chose m'échappe encore :-/

Parallèlement, j'ai essayé une autre approche en ajoutant une colonne et une action dans user_list grâce au trigger loc_visible_user_list comme ceci :

Code:

add_event_handler('loc_visible_user_list', 'UAM_loc_visible_user_list');

function UAM_loc_visible_user_list($visible_user_list)
{
  global $template;
  
  $template->append('plugin_user_list_column_titles', l10n('UAM_pwdreset'));
  
  $user_ids = array();
  
  foreach ($visible_user_list as $i => $user)
  {
    $user_ids[$i] = $user['id'];
  }
  
  $user_nums = array_flip($user_ids);
  $pwdreset_url = get_root_url().'admin.php?page=user_perm&amp;user_id=';

  // Query to get informations in database
  if (!empty($user_ids))
  {
    $query = '
SELECT DISTINCT id, UAM_pwdreset
  FROM '.USERS_TABLE.'
  WHERE id IN ('.implode(',', $user_ids).')
;';
    $result = pwg_query($query);
    
    while ($row = mysql_fetch_array($result))
    {
      if ($row['UAM_pwdreset'] == 'false')
      {
        $pwdreset = l10n('UAM_PwdReset_Done');
      }
      else if ($row['UAM_pwdreset'] == 'true')
      {
        $pwdreset = l10n('UAM_PwdReset_Todo');
      }
      else $pwdreset = l10n('UAM_PwdReset_NA');
      
      $UAM_PwdReset_Action = UAM_Set_PwdReset($row['id']);
      
      $visible_user_list[$user_nums[$row['id']]]['plugin_columns'][] = $pwdreset; // Shows users password state in user_list
      $visible_user_list[$user_nums[$row['id']]]['plugin_actions'][] = $UAM_PwdReset_Action; // Add action for each user to reset password 
    }
  }
  return $visible_user_list;
}

Pour l'ajout de la colonne et des infos pour chaque user listé, pas de problème, çà fonctionne bien. Mais pour l'action qui permettra de programmer la demande de changement du mot de passe, çà ne fonctionne pas. Il faudrait que je remplace "$UAM_PwdReset_Action" par un lien qui serait lié à la fonction UAM_Set_PwdReset($row['id']) pour initier l'action mais là, je sèche un peu...

Sans parler du fait que, dans ce cas, le traitement par lot ne sera pas possible. Je préfèrerai vraiment parvenir à mettre en place un pré-filtre comme tu le suggères. Ce serait bien mieux et plus facile à gérer.

Pour NBM subscriber, j'avais fait ceci:

Code:

/* Adding NBMS in profile page */
add_event_handler('load_profile_in_template', 'NBMS_Load_Profile');

function NBMS_Load_Profile()
{
  global $conf, $user, $template, $lang;

  $query = '
  SELECT enabled
    FROM '.USER_MAIL_NOTIFICATION_TABLE.'
    WHERE user_id = \''.$user['id'].'\'
  ;';
  
  $data = pwg_db_fetch_assoc(pwg_query($query));
  
  $values = $data['enabled'];

  $template->assign('radio_options',
    array(
      'true' => l10n('Yes'),
      'false'=> l10n('No')));

  $template->assign(
    array(
      'NBMS'=>$values
    ));
      
  $template->set_prefilter('profile_content', 'NBMS_prefilter');
}

/* Original template modification */
function NBMS_prefilter($content, &$smarty)
{
  global $template, $lang;
  
  load_language('plugin.lang', NBMS_PATH);
  
  $search = '<p class="bottomButtons">';
      
  $addon = '{if $ALLOW_USER_CUSTOMIZATION}
  <fieldset>
    <legend>{\'NBMS_Section\'|@translate}</legend>
      <ul>
        <li>
          <span class="property">{\'NBMS_Text\'|@translate}</span>
          {html_radios name=\'NBM_Subscription\' options=$radio_options selected=$NBMS}
        </li>
      </ul>
  </fieldset>
{/if}';
  
  $replacement = $addon.$search;

  return str_replace($search, $replacement, $content);
}
?>

Je m'étais basé sur le trigger "load_profile_in_template" pour initier mon pré-filtre dans profile.php mais je ne trouve pas de point d'entrée similaire pour user_list. Si tu as la solution... ;-)

Hors ligne

#19 2011-09-25 17:42:23

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

Nos posts se sont croisés. Je vais regarder ce que tu proposes comme code ;-)

Hors ligne

#20 2011-09-25 18:03:30

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

ddtddt a écrit:

pour le préfiltre sur la page user list un truc du genre ->

Ok, j'ai pigé le truc ! C'est "loc_begin_admin" qui me manquait pour faire fonctionner mon pré-filtre !

En combinant l'ajout d'une colonne pour afficher les états et l'ajout d'un pré-filtre pour permettre l'action, ce sera parfait. Merci beaucoup pour le coup de main ! :-))

Hors ligne

#21 2011-09-26 22:41:57

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

Je résous ce topic car je suis arrivé à mes fins grâce à l'aide de ddtddt (merci encore à lui ! ^^).

Pour info, j'ai opté pour une redirection systématique vers la page de personnalisation avec affichage d'un message d'avertissement tant que l'utilisateur n'a pas changé son mot de passe. Finalement, je trouve çà moins intrusif que de fermer purement et simplement l'accès à la galerie et suffisamment pénible pour, qu'à terme, les utilisateurs concernés fassent ce qu'on attend d'eux.

Pour la partie admin > Utilisateurs > Gérer, il y aura ajout d'une nouvelle colonne présentant l'état des mots de passe pour chaque user (mot de passe à changer, changé ou d'origine) et une fonction pour initier le renouvellement de mot de passe pour x users sélectionnés.

Dans un premier temps, cette fonction apparaitra dans la prochaine version de UserAdvManager mais, après une période de rodage, je n'exclue pas de l'extraire vers un nouveau plugin dédié.

Hors ligne

#22 2011-09-26 23:36:21

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16979

Re: [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

Eric a écrit:

.... je n'exclue pas de l'extraire vers un nouveau plugin dédié.

+1

ok je sors je deviens lourd :-D


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

  •  » Plugins
  •  » [Résolu] [Entraide Plugin] Réinitialiser les mots de passe des utilisateurs

Pied de page des forums

Propulsé par FluxBB

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