[SPIP Zone] [Spip-zone-commit] r22111 - in /_plugins_/_dev_/gravatar: balise/logo_auteur.php plugin.xml

C'est une évolution fonctionnelle très intéressante, déjà proposée par Romy quand on avait commencé à jouer avec les Gravatars, mais ça casse malheureusement la compatibilité avec la branche 1.9.2.

L'erreur, constatée sur la page de login, est "Fichier balise/logo_ introuvable"

Le 20 août 08 à 23:12, fil@rezo.net a écrit :

Author: fil@rezo.net
Date: Wed Aug 20 23:11:56 2008
New Revision: 22111

Log:
#LOGO_AUTEUR fait aussi les gravatar, s'il n'y a pas de logo, dans le cas d'un auteur comme d'un signataire de petition ou de forum ; a noter le code est parallele au code existant ; j'ai laisse dans le meme plugin car ils ne se contredisent pas (mais ne font pas la meme chose exactement)... a voir

Added:
   _plugins_/_dev_/gravatar/balise/logo_auteur.php
Modified:
   _plugins_/_dev_/gravatar/plugin.xml

Added: _plugins_/_dev_/gravatar/balise/logo_auteur.php

--- _plugins_/_dev_/gravatar/balise/logo_auteur.php (added)
+++ _plugins_/_dev_/gravatar/balise/logo_auteur.php Wed Aug 20 23:11:56 2008
@@ -0,0 +1,59 @@
+<?php
+
+// on regarde s'il y a un logo, sinon un gravatar, et on renvoie le tout
+// pour ca il faut modifier un peu le code produit par #LOGO_*, pour introduire
+// notre fonction de recherche de logo
+function balise_LOGO_AUTEUR($p) {
+ $balise_logo_ = charger_fonction('logo_', 'balise');
+ $_email1 = champ_sql('email', $p);
+ $_email2 = champ_sql('email_ad', $p);
+ $_email3 = champ_sql('email_auteur', $p);
+
+ $p = $balise_logo_($p);
+
+ $p->code = str_replace('calcule_logo(', '!include_spip("balise/logo_auteur")?"":calcule_logo_ou_gravatar(sinon('.$_email1.',sinon('.$_email2.','.$_email3.')), ', $p->code);
+
+ return $p;
+}
+
+// notre fonction de recherche de logo
+function calcule_logo_ou_gravatar($email) {
+ $a = func_get_args();
+ $email = array_shift($a);
+
+ // la fonction normale
+ $c = call_user_func_array('calcule_logo',$a);
+
+ // si elle repond pas, on va chercher le gravatar
+ if (!$c[0])
+ $c[0] = gravatar($email);
+
+ return $c;
+}
+
+function gravatar($email) {
+ if (!strlen($email)
+ OR !email_valide($email))
+ return '';
+
+ $md5_email = md5(strtolower($email));
+ $gravatar_cache = sous_repertoire(_DIR_VAR, 'cache-gravatar')
+ .$md5_email.'.jpg';
+
+ if (!file_exists($gravatar_cache)
+ OR time()-3600*24 > filemtime($gravatar_cache)) {
+ if ($gravatar
+ = recuperer_page('http://www.gravatar.com/avatar/'.$md5_email)
+ // ceci est le hash du gravatar bleu moche par defaut : on l'ignore
+ AND md5($gravatar) !== '2bd0ca9726695502d06e2b11bf4ed555')
+ ecrire_fichier($gravatar_cache, $gravatar);
+ else
+ ecrire_fichier($gravatar_cache, '');
+ }
+
+ // On verifie si le gravatar existe en controlant la taille du fichier
+ if (filesize($gravatar_cache))
+ return $gravatar_cache;
+ else
+ return '';
+}
\ No newline at end of file

Modified: _plugins_/_dev_/gravatar/plugin.xml

--- _plugins_/_dev_/gravatar/plugin.xml (original)
+++ _plugins_/_dev_/gravatar/plugin.xml Wed Aug 20 23:11:56 2008
@@ -1,13 +1,17 @@
<plugin>
  <nom>Gravatar</nom>
- <auteur>Thomas Beaumanoir - [Clever Age->http://www.clever-age.com]</auteur>
+ <auteur>Thomas Beaumanoir - [Clever Age->http://www.clever-age.com] pour <code>#GRAVATAR</code>
+ <br /> Fil - [SPIP->www.spip.net] pour <code>#LOGO_AUTEUR</code>
+ </auteur>
  <icon>img_pack/gravatar.gif</icon>
- <version>0.3</version>
- <etat>dev</etat>
+ <version>0.4</version>
+ <etat>test</etat>
  <description>
Permet d'utiliser un cache pour stocker les gravatars
_ A utiliser dans une boucle de cette manière : <code>#GRAVATAR{email, taille, url image par défaut}</code>
_ Exemple : <code>#GRAVATAR{#EMAIL,80,#URL_SITE_SPIP/defaut-gravatar.gif}</code>
+
+Etend la balise #LOGO_AUTEUR de maniere a prendre en compte le gravatar d'un auteur s'il existe, y compris dans les forums et p&#233;titions.
  </description>
  <lien>[Gravatar->http://www.gravatar.com]</lien>
  <prefix>gravatar</prefix>

_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

-Nicolas

--
Nicolas HOIZEY

C'est une évolution fonctionnelle très intéressante, déjà proposée par Romy
quand on avait commencé à jouer avec les Gravatars, mais ça casse
malheureusement la compatibilité avec la branche 1.9.2.

Peux-tu essayer d'ajouter un test de version autour de la définition
de function balise_logo_auteur() ?

-- Fil