Получение изображения пользователя по умолчанию drupal 6

У меня есть чат в стиле Facebook на моем сайте drupal, однако в сценарии отсутствует интеграция пользовательских изображений. Мне удалось получить пользовательские изображения, но если пользователь не установил изображение и использует изображение по умолчанию, я получаю сломанное изображение и 404 not found в логах. Я пытался получить gravatar для пользователей без набора изображений, но не может заставить его работать.

/**
* 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";
}
}

0

Решение

Ваша проблема заключается в том, что вы немедленно возвращаете свое изображение, независимо от того, находится ли оно там:

 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";
}
}

Что вам нужно сделать, это следующее:

 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;
}

В приведенном выше, вам придется написать функцию, is_imgurl_good который возвращает boolean указывает, хорошо ли изображение. true если это и false если не. Есть много способов написать эту функцию, которая выходит за рамки этого вопроса, но вы можете проверить подход с помощью этого:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]