LetterAvatar.php in Letter Avatar 8
File
src/Plugin/AvatarGenerator/LetterAvatar.phpView source
<?php
/**
* @file
* Contains \Drupal\letter_avatar\Plugin\AvatarGenerator\LetterAvatar.
*/
namespace Drupal\letter_avatar\Plugin\AvatarGenerator;
use Drupal\avatars\Plugin\AvatarGenerator\AvatarGeneratorBase;
use Drupal\Core\Session\AccountInterface;
use LetterAvatar\LetterAvatar as LetterAvatarAPI;
use Drupal\file\Entity\File;
/**
* Gravatar avatar generator.
*
* @AvatarGenerator(
* id = "letter_avatar",
* label = @Translation("Letter Avatar"),
* description = @Translation("Letter generated by the LetterAvatar library."),
* fallback = TRUE,
* dynamic = FALSE,
* remote = TRUE
* )
*/
class LetterAvatar extends AvatarGeneratorBase {
/**
* {@inheritdoc}
*/
public function getFile(AccountInterface $account) {
$directory = 'public://avatar_kit/ak_letter';
if (file_prepare_directory($directory, FILE_CREATE_DIRECTORY)) {
/** @var \Drupal\Core\File\FileSystemInterface $file_system */
$file_system = \Drupal::service('file_system');
$letter = mb_substr($account
->getUsername(), 0, 1);
$path = $directory . '/' . $account
->id() . '.png';
// todo: update existing file entity
// if you update a file on the file system directly, page caches and image
// styles will not flush.
$ids = \Drupal::entityManager()
->getStorage('file')
->getQuery()
->condition('uri', $path)
->execute();
if ($id = reset($ids)) {
$file = File::load($id);
$file
->delete();
}
$letterAvatar = new LetterAvatarAPI();
$letterAvatar
->generate($letter, 256)
->saveAsPng($file_system
->realpath($path));
// File cannot chain methods.
$file = File::create();
$file
->setFileUri($path);
$file
->setOwnerId($account
->id());
// Temporary until AvatarPreview adds usage.
$file
->setTemporary();
return $file;
}
return NULL;
}
}
Classes
Name | Description |
---|---|
LetterAvatar | Gravatar avatar generator. |