2015-04-29 4 views
0

J'ai un chat de style Facebook sur mon site web Drupal, mais le script manquait d'intégration de l'image utilisateur. J'ai réussi à obtenir des photos d'utilisateur, mais si l'utilisateur n'a pas défini l'image et utilise une image par défaut, je reçois une image cassée et un 404 not found dans les journaux. J'ai essayé d'aller chercher gravatar pour les utilisateurs sans un ensemble d'images, mais je ne pouvais pas le faire fonctionner.Obtention de l'image utilisateur par défaut drupal 6

/** 
* This function returns the URL of the avatar of the specified user ID. 
* 
* @param userid the user ID of the user 
* @param image if the image includes more than just a user ID, this param is passed 
* in from the avatar row in the buddylist and get user details functions. 
* @return the link of the user ID's profile 
*/ 
function get_avatar($image, $user_id, $account) { 
    return "http://mypage.com/files/pictures/picture-" . ($user_id) . ".jpg"; 
    if (empty($account->picture)) { 
     return "http://www.gravatar.com/avfatar/" . md5($image) . "?d=identicon"; 
    } 
} 

Répondre

0

Votre problème est que vous retournez votre image immédiatement, peu importe que ce soit là:

function get_avatar($image, $user_id, $account) 
{ 
    //THE NEXT LINE RETURNS FROM THE FUNCTION REGARDLESS 
    return "http://mypage.com/files/pictures/picture-" . ($user_id) . ".jpg"; 

    //THIS CODE NEVER RUNS 
    if (empty($account->picture)) { 
    return "http://www.gravatar.com/avfatar/" . md5($image) . "?d=identicon"; 
    } 
} 

Ce que vous devez faire est la suivante:

function get_avatar($image, $user_id, $account) 
{ 
    $imgurl ="http://mypage.com/files/pictures/picture-" . ($user_id) . ".jpg"; 

    if (!is_imgurl_good($imgurl)) { 
    $imgurl = "http://www.gravatar.com/avfatar/" . md5($image) . "?d=identicon"; 
    } 
    return $imgurl; 
} 

Dans ce qui précède, vous devrez écrire une fonction, is_imgurl_good qui renvoie un boolean indiquant si l'image est bonne. true si c'est le cas et false sinon. Il y a plusieurs façons d'écrire cette fonction qui dépasse le cadre de cette question, mais vous pouvez tester l'approche avec ceci:

function is_imgurl_good($imgurl) { 
    return false;//Check that if this returns false the previous function works 
    //return true; //Comment out the first line and uncomment this one to show the reverse case. 
    //put your actual code here to decide whether $imgurl is a valid image. 
} 
+0

Avec ceci, aucune image n'apparaît. Je ne sais pas quoi faire avec la fonction is_imgurl_good Je ne suis pas ce codeur avancé Vous voyez. – user4843525

+0

Si vous implémentez ce qui précède et que 'is_imgurl_good' renvoient' true' au lieu de 'false', votre image s'affiche-t-elle? –

+0

Ensuite, les photos de l'utilisateur montrent, mais le gravatar pour ceux qui n'ont pas mis en place la photo de profil ne le fait pas. – user4843525