Esempio n. 1
0
 public static function byProfile(Profile $target, $width = null, $height = null)
 {
     $width = intval($width);
     $height = !is_null($height) ? intval($height) : null;
     if (is_null($height)) {
         $height = $width;
     }
     $size = "{$width}x{$height}";
     if (!isset(self::$_avatars[$target->id])) {
         self::$_avatars[$target->id] = array();
     } elseif (isset(self::$_avatars[$target->id][$size])) {
         return self::$_avatars[$target->id][$size];
     }
     $avatar = null;
     if (Event::handle('StartProfileGetAvatar', array($target, $width, &$avatar))) {
         $avatar = self::pkeyGet(array('profile_id' => $target->id, 'width' => $width, 'height' => $height));
         Event::handle('EndProfileGetAvatar', array($target, $width, &$avatar));
     }
     if (is_null($avatar)) {
         // Obviously we can't find an avatar, so let's resize the original!
         $avatar = Avatar::newSize($target, $width);
     } elseif (!$avatar instanceof Avatar) {
         throw new NoAvatarException($target, $avatar);
     }
     self::$_avatars[$target->id]["{$avatar->width}x{$avatar->height}"] = $avatar;
     return $avatar;
 }