DotClear : Plugin CommentMail de PresseCitron - Correction du bug sur une boucle foreach à la ligne 88
Par Yoann, vendredi 27 juillet 2007 à 11:16 :: Blog Blog :: #96 :: rss
Eric Dupin de Presse-Citron.net nous porpose un tres bon plugins pour DotClear : CommentMail
Celui-ci permet aux visiteurs ayant laissé un commentaire sur un billet d'être avertir par email en cas de réponse par une autre personne.
Enormement d'utilisateurs après l'installation de ce plugin ce retrouve avec un Warning PHP sur une boucle foreach à la ligne 88
Warning: Invalid argument supplied for foreach() in .../ecrire/tools/commentmail/functions.php on line 88
Eric nous explique comment ne plus avoir ce Warning, mais sa solution n'est pas des plus propre, il se contente de supprimer l'affichage des Warning en ajoutant au debut du fichier error_reporting(E_PARSE); et non de trouver d'où vient rellement le probleme.
Je vous explique ci-dessous d'où vient le problème, et comment le corriger proprement.
D'où vient le problème ?
Si vous regarder de plus près le code du fichier .../ecrire/tools/commentmail/functions.php autour de la ligne 88, la boucle foreach qui nous pose problème est
foreach($r as $cm)
Ici $r doit être un tableau contenant la liste des abonnées à la notification de nouveau commentaires.
Seulement si vous n'avez pas de personnes abonnées à la notification ce tableau est vide, et inexistant, donc $r n'est pas considéré comme un objet tableau, et la fonction foreach vous envoi un warning car elle ne peut pas parcourir cet objet.
La solution : Tester si $r est un tableau avant d'utiliser foreach
Avant
foreach($r as $cm)
{
Ajouter
if (is_array($r)) {
ET Apres
@mail($mail,$n_subject,$n_content,$n_headers); }
Ajouter
}
Voilà après ces quelques modifications du code, vous n'aurez plus d'erreur.
Merci à Eric pour ce plugin.
Commentaires
1. Le vendredi 27 juillet 2007 à 20:58, par Florent
2. Le vendredi 27 juillet 2007 à 23:01, par Yoann
3. Le dimanche 23 septembre 2007 à 14:55, par L-tz
4. Le vendredi 5 octobre 2007 à 22:12, par alex
5. Le vendredi 5 octobre 2007 à 23:14, par Yoann
6. Le samedi 6 octobre 2007 à 10:32, par alex
7. Le mercredi 24 octobre 2007 à 17:09, par Gillka
8. Le mercredi 24 octobre 2007 à 17:13, par video library software
Ajouter un commentaire