Annonce

  •  » Plugins
  •  » Mod [Mail Access Validation] - V1.0 beta

#1 2006-03-25 13:33:50

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Mod [Mail Access Validation] - V1.0 beta

La première version du Mod de validation d'accès par mail est terminée !

Comme je débute en php, je compte sur la communauté PWG pour m'aider à l'améliorer et, le cas échéant, le corriger.

Tout d'abord, le constat initial :
Soit une galerie entièrement ou partiellement privée comportant des groupes d'utilisateurs. Lorsque les visiteurs (guest) s'enregistrent, il doivent attendre qu'un admin de la galerie valide leur inscription en les associant à un groupe d'utilisateur. Cette manip nécessite une action physique de l'admin qui n'est pas toujours disponible H24 d'où une certaine latence qui devrait se résoudre dans les prochaines version de PWG.

L'idée :
Envoyer un mail aux utilisateurs validés par l'admin pour leur signifier que leur accès à la galerie n'est plus bridé à la position "guest". Cette fonction est intégrée dans le panneau admin de gestion des utilisateurs et permet ainsi de sélectionner les utilisateurs à "mailer". Le message envoyé est de la forme "Bonjour [nom_user]. Merci de vous être inscrit sur ma galerie. Vous pouvez désormais consulter toutes les catégories visibles." et doit prendre en compte la langue de PWG choisie par le visiteur dans son profil.

Ce mod n'affecte pas la base de données et est facilement supprimable. Voici les manip pour l'installer :

- Fichier PWG/admin/user_list.php

Rechercher :

Code:

// +-----------------------------------------------------------------------+
// |                            selected users                             |
// +-----------------------------------------------------------------------+

if (isset($_POST['delete']) or isset($_POST['pref_submit']))

Remplacer par :

Code:

// +-----------------------------------------------------------------------+
// |                            selected users                             |
// +-----------------------------------------------------------------------+

if (isset($_POST['delete']) or isset($_POST['mail']) or isset($_POST['pref_submit']))

Rechercher :

Code:

// +-----------------------------------------------------------------------+
// |                       preferences form submission                     |
// +-----------------------------------------------------------------------+

Ajouter AVANT :

Code:

//*******************************
// Begin Mod validation par Mail*
//*******************************
if (isset($_POST['mail']) and count($collection) > 0)
{
  if (in_array($conf['webmaster_id'], $collection))
  {
    array_push($page['errors'], l10n('Webmaster cannot be notified'));
  }
  else
  {
  if (isset($_POST['confirm_mail']) and 1 == $_POST['confirm_mail'])
  {
    foreach ($collection as $user_id)
    {
      mail_user($user_id);
    }
    array_push(
      $page['infos'],
      sprintf(
         l10n('%d users mailed'),
         count($collection)
         )
        );
  }
  else
    {
    array_push($page['errors'], l10n('You need to confirm mailing'));
    }
  }
}
//*****************************
// End Mod validation par Mail*
//*****************************

- Fichier PWG/admin/include/functions.php

Rechercher :

Code:

/**
 * updates calculated informations about a set of categories : date_last and
 * nb_images. It also verifies that the representative picture is really
 * linked to the category. Optionnaly recursive.
 *
 * @param mixed category id
 * @param boolean recursive
 * @returns void
 */

Ajouter AVANT :

Code:

//*******************************
// Begin Mod validation par Mail*
//*******************************
function mail_user($user_id)
{
  global $conf;
  
  $query1 = '
  SELECT '.$conf['user_fields']['email'].'
    FROM '.USERS_TABLE.'
    WHERE '.$conf['user_fields']['id'].' = '.$conf['webmaster_id'].'
  ;';
  list($mail_webmaster) = mysql_fetch_array(pwg_query($query1));
  
  $headers = 'From: <'.$mail_webmaster.'>'."\n";
  $headers.= 'Reply-To: '.$mail_webmaster."\n";
  $headers.= 'X-Mailer: PhpWebGallery, PHP ';
  
  $query = 'SELECT ut.username,ut.mail_address,uit.language';
  $query.= ' FROM '.USERS_TABLE.' as ut';
  $query.= ', '.USER_INFOS_TABLE.' as uit';
  $query.= ' WHERE ut.id='.$user_id;
  $query.= ' AND ut.id = uit.user_id';
  $query.= ';';
  $result = pwg_query( $query );
  while ( $row = mysql_fetch_array( $result ) )
  {
    $to = $row['mail_address'];
    include( PHPWG_ROOT_PATH.'language/'.$row['language'].'/admin.lang.php' );
    $subject = $lang['Mail_validation_subject'];
  $content = $lang['Mail_hello'].$row['username']."\n\n";
    $content.= $lang['Mail_validation_content'];
    $content = wordwrap( $content, 72 );
    @mail( $to, $subject, $content, $headers );
  }
}
//*****************************
// End Mod validation par Mail*
//*****************************

- A faire pour chaque template installé. Fichier PWG/template/[nom_template]/admin/user_list.tpl :

Rechercher :

Code:

<!-- delete the selected users ? -->
<fieldset>
  <legend>{lang:Deletions}</legend>
  <label><input type="checkbox" name="confirm_deletion" value="1" /> {lang:confirm}</label>
  <input type="submit" value="{lang:Delete selected users}" name="delete" />
</fieldset>

Ajouter APRES :

Code:

<!-- Begin Mod validation par mail -->
<fieldset>
  <legend>{lang:Mail}</legend>
  <label><input type="checkbox" name="confirm_mail" value="1" /> {lang:confirm}</label>
  <input type="submit" value="{lang:Mail selected users}" name="mail" />
</fieldset>
<!-- End Mod validation par mail -->

- Fichier PWG/language/en_UK.iso-8859-1/admin.lang.php :

Rechercher :

Code:

?>

Ajouter AVANT :

Code:

//*******************************
// Begin Mod validation par Mail*
//*******************************
$lang['Webmaster cannot be notified'] = 'Webmaster cannot be notified';
$lang['Mail'] = 'Validated registration notification by email';
$lang['Mail selected users'] = 'Send validation emails';
$lang['Mail_hello'] = 'Hi ';
$lang['Mail_validation_subject'] = 'Gallery access validation';
$lang['Mail_validation_content'] = 'Thank you for register this gallery. Your access have been validated and you can now browse all the available categories.';
$lang['%d users mailed'] = '%d users notified';
$lang['You need to confirm mailing'] = 'You have to confirm the mail notification';
//*****************************
// End Mod validation par Mail*
//*****************************

- Fichier PWG/language/fr_FR.iso-8859-1/admin.lang.php :

Rechercher :

Code:

?>

Ajouter AVANT :

Code:

//*******************************
// Begin Mod validation par Mail*
//*******************************
$lang['Webmaster cannot be notified'] = 'Le webmestre ne peut pas être notifié';
$lang['Mail'] = 'Notification de validation d\'enregistrement par mail';
$lang['Mail selected users'] = 'Envoi des mails de confirmation';
$lang['Mail_hello'] = 'Bonjour ';
$lang['Mail_validation_subject'] = 'Validation de votre enregistrement à la galerie';
$lang['Mail_validation_content'] = 'Merci de vous être inscrit sur ma galerie. Votre accès a été validé et vous pouvez maintenant parcourir toutes les catégories disponibles.';
$lang['%d users mailed'] = '%d utilisateurs notifiés';
$lang['You need to confirm mailing'] = 'Vous devez confirmer la notification par mail';
//*****************************
// End Mod validation par Mail*
//*****************************

- Fichier PWG/language/de_DE.iso-8859-1/admin.lang.php :

Rechercher :

Code:

?>

Ajouter AVANT :

Code:

//*******************************
// Begin Mod validation par Mail*
//*******************************
$lang['Webmaster cannot be notified'] = 'Webmaster kann nicht bekanntgegeben werden.';
$lang['Mail'] = 'Anmeldung der Erfassungsbewertung durch Email.';
$lang['Mail selected users'] = 'Sendung der Bestätigungs Email';
$lang['Mail_hello'] = 'Guten Tag ';
$lang['Mail_validation_subject'] = 'Bewertung Ihrer Erfassung an der Galerie';
$lang['Mail_validation_content'] = 'Danke Ihnen auf meiner Galerie eingetragen zu werden. Ihr Zugang ist für rechtsgültig erklärt worden, und Sie können jetzt alle verfügbaren Kategorien durchqueren.';
$lang['%d users mailed'] = '%d benachrichtigte Benutzer';
$lang['You need to confirm mailing'] = 'Sie müssen die Anmeldung durch Email bestätigen';
//*****************************
// End Mod validation par Mail*
//*****************************

Ce mod ne supporte que l'anglais, l'allemand et le français... pour l'instant. Il est très facile de l'adapter à toute autre langue en traduisant les paramètres $lang et en les incluant dans le fichier admin.lang.php de la langue concernée.

Le message transmis par mail est en "dur" dans le fichier admin.lang.php mais je suis en train de réfléchir pour l'intégrer dans le config_local.inc.php.

Je considère cette version comme une béta car je ne l'ai pas entièrement testée. Et des améliorations de base peuvent y être ajoutées. J'attendant vos commentaires et vos suggestions.

Merci à VDigital et à gopfreery pour leur aide précieuse. Parfois 3 paires d'yeux sont nécessaires 8-)

[edit] Correction d'un oubli et d'une faute d'orthographe rapportés par gopfreery - Merci à lui !

[edit2] Prise en compte du pack de langue allemand

Dernière modification par Eric (2006-03-26 00:41:56)

Hors ligne

#2 2006-03-25 17:33:45

gopfreery
Membre
2006-03-12
40

Re: Mod [Mail Access Validation] - V1.0 beta

Peut-etre que je me trompe mais je ne vois pas la modif que tu as apportée sur la définition conditionnelle de la variable "collection" dans le fichier admin/user_list.php comme indiqué ici: http://forum.phpwebgallery.net/viewtopi … 829#p32263


gopfreery

Hors ligne

#3 2006-03-25 18:34:03

gopfreery
Membre
2006-03-12
40

Re: Mod [Mail Access Validation] - V1.0 beta

Bravo Eric!
Je viens d'installer le mod chez moi et ça tourne sans erreur apparement (modulo mon précédent post),
Execellent! Félicitations et merci pour ce que tu as fait.
Y a plus qu'a faire un INSTALL.txt bien propre, un petit paquet et l'entrer dans les extensions de pwg.

Remarques:
- ce serait pas mal d'inserer une option de configuration pour rendre ou non le champ email obligatoire à l'inscription.
- petite faute d'orthographe dans le fichier de langue : parcourrir s'écrit parcourir


gopfreery

Hors ligne

#4 2006-03-25 21:04:53

rub
Équipe Piwigo
Lille
2005-08-26
5239

Re: Mod [Mail Access Validation] - V1.0 beta

Bonjour Eric,

2 petites remarques:
  o au lieu d'utiliser mail utiliser pwg_mail qui inclus les options de pwg (dans la version 1.6.0, une option permettra de recevoir un copie des mails envoyés par exemple)
  o dans la prochaine version de pwg, il y aura une nouvelle fonctionnalité qui permettra de notifier les utilisateurs des nouveaux éléments et donc par conséquent de "prévenir" les utilisateurs qu'il ont accés à des catégories. La différence bien entendu c'est que le message ne dit pas clairement qu'ils ont maintenant accés à des photos. Mais il sera possible de mettre un message particulier. Donc, je pense qu'à la prochaine version de pwg (la 1.6.0 tres prochaine), tu pourras peut-être faire évoluer ton MOD pour qu'il utilise l'interface et les fonctions de la notification par mail...

Pour plus d'infos...
http://forum.phpwebgallery.net/viewtopi … 039#p32039
http://phpwebgallery.net/doc/doku.php?i … n_par_mail

Hors ligne

#5 2006-03-26 00:01:33

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Re: Mod [Mail Access Validation] - V1.0 beta

gopfreery a écrit:

Peut-etre que je me trompe mais je ne vois pas la modif que tu as apportée sur la définition conditionnelle

Exact ! Je mea culpabilise :(

La correction a été apportée dans le post initial ainsi que la correction de la vilaine faute d'orthographe. Quand on essaie de travailler trop vite, on risque la boulette. Cà m'apprendra... Merci gopfreery !

gopfreery a écrit:

Y a plus qu'a faire un INSTALL.txt bien propre, un petit paquet et l'entrer dans les extensions de pwg.

Je m'y met dès que j'aurais fait un peu de ménage dans mes codes source. C'est un peu le bronks avec tous les essais que j'ai tenté...

gopfreery a écrit:

ce serait pas mal d'inserer une option de configuration pour rendre ou non le champ email obligatoire à l'inscription.

Effectivement, j'aurais dû préciser que j'utilise une légère adaptation qui oblige les utilisateurs qui s'inscrivent à fournir une adresse email valide. Je recherche le post d'origine sur ce sujet et je l'intègrerai ici dès que.

Hors ligne

#6 2006-03-26 00:11:06

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Re: Mod [Mail Access Validation] - V1.0 beta

Eric a écrit:

Je recherche le post d'origine sur ce sujet et je l'intègrerai ici dès que.

Dont acte : Voici le lien vers le post d'un mod fait par flipflip pour imposer une adresse email valide lors de l'inscription.

http://forum.phpwebgallery.net/viewtopic.php?id=5096

Ainsi qu'un post précisant le modus operandi pour afficher plus d'infos par défaut dans la gestion des utilisateurs de l'admin.

http://forum.phpwebgallery.net/viewtopic.php?id=5098

Ces deux "semi" mods ne sont pas indispensables à mon mod mais apportent un plus-value certaine.

Hors ligne

#7 2006-03-26 00:23:22

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Re: Mod [Mail Access Validation] - V1.0 beta

rub a écrit:

dans la prochaine version de pwg, il y aura une nouvelle fonctionnalité qui permettra de notifier les utilisateurs...

D'accord avec toi mais il me semble aussi qu'en 1.6, PWG permettra de définir un groupe d'utilisateurs par défaut pour tous les nouveaux incrits. Ainsi, l'admin n'aura plus à "valider" une inscription en associant un user à un groupe puisque cela sera fait automatiquement. A la rigueur, il pourra déplacer les utilisateurs vers d'autres groupes ultérieurement à des fin de classement (par exemple, les utilisateurs francais, anglais,...) mais cela ne devrait pas influer sur les droits fondamentaux de visualisation des catégories.

Et même si cela devait être le cas pour certaines galeries, comme tu le précises, dans la 1.6, les users seront notifiés des modifications appliquées aux catégories nouvellement accessibles.

Donc, je pense que mon mod "mourra" avec la 1.5.x. Ceci dit, si le besoin devait s'en faire sentir, je suis évidemment prèt à faire évoluer mon mod.

Concernant la fonction pwg_mail, elle me paraissait trop restrictives puisque utilisant des variables générées pour le flux RSS. Et je ne vois pas comment intégrer un texte dédié à mon mod (du genre : "merci de vous être inscrit..."). Mais je débute en php et je ne connais pas encore toutes les ficelles. Je vais essayer de m'y repencher.

Dernière modification par Eric (2006-03-26 00:27:06)

Hors ligne

#8 2006-03-26 01:26:56

rub
Équipe Piwigo
Lille
2005-08-26
5239

Re: Mod [Mail Access Validation] - V1.0 beta

Eric a écrit:

D'accord avec toi mais il me semble aussi qu'en 1.6, PWG permettra de définir un groupe d'utilisateurs par défaut pour tous les nouveaux incrits.

Je ne suis pas sur que cette fonctionnalité a été developpée... en tout cas pas par moi... (si qq'1 la fait qu'il me rappelle).

Eric a écrit:

Concernant la fonction pwg_mail, elle me paraissait trop restrictives puisque utilisant des variables générées pour le flux RSS. Et je ne vois pas comment intégrer un texte dédié à mon mod (du genre : "merci de vous être inscrit...").

Méa culpa!!! En fait, cette function n'est utilisé que dans le fichier password.php pour les versions 1.5.x...
Pour la version 1.6.0, j'ai mis une nouvelle unité functions_mail.inc.php qui reprend la fonction pwg_mail + qqes fonctionnalités en plus... Donc, pwg_mail n'est utilisable qu'a partir de la prochaine version 1.6.0.
Le nouvel entéte sera function pwg_mail($to, $from = '', $subject = 'PhpWebGallery', $infos = '')


Eric a écrit:

Mais je débute en php et je ne connais pas encore toutes les ficelles. Je vais essayer de m'y repencher.

Tu sais pour moi aussi php c'est assez nouveau, j'ai fait mes armes en php grace à pwg...

Hors ligne

#9 2006-03-26 19:10:32

Eric
Équipe Piwigo
VALENCE (FR)
2005-03-25
4579

Re: Mod [Mail Access Validation] - V1.0 beta

Ce mod a désormais un nom (çà vaut ce que çà vaut... ;)) : VIM pour Validation d'Insription par Mail ou RVM pour Register Validation by Mail pour les anglophones.

La version 1.0 est finalisée et disponible dans la partie Extensions, menu Mods.

Je prépare d'ailleurs la V1.1

Dernière modification par Eric (2006-03-26 19:12:17)

Hors ligne

  •  » Plugins
  •  » Mod [Mail Access Validation] - V1.0 beta

Pied de page des forums

Propulsé par FluxBB

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