RatingFormatter.php in Fivestar 8
File
src/Plugin/Field/FieldFormatter/RatingFormatter.php
View source
<?php
namespace Drupal\fivestar\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
class RatingFormatter extends FivestarFormatterBase {
public function viewElements(FieldItemListInterface $items, $langcode) {
$values = [
'user' => 0,
'average' => 0,
'count' => 0,
];
$rating = [];
$users = [];
$elements = [];
if (!$items
->isEmpty()) {
foreach ($items as $delta => $item) {
$value = $item
->getValue();
$rating[] = $value['rating'];
$users[] = $value['target'];
$values['count'] += 1;
}
if (!empty($rating)) {
$values['average'] = array_sum($rating) / $values['count'];
$users = array_unique($users);
$values['user'] = count($users);
}
$elements[] = [
'#theme' => 'fivestar_formatter_rating',
'#instance_settings' => $item
->getFieldDefinition()
->getSettings(),
'#item' => $values,
];
}
else {
$elements[] = [
'#markup' => $this
->t('No votes yet'),
];
}
return $elements;
}
}