<?php
|
namespace JVBase\managers\SEO\render\Traits\_Properties;
|
|
use JVBase\base\SchemaHelper;
|
use JVBase\managers\SEO\render\Thing\Intangible\Rating\AggregateRating;
|
|
if (!defined('ABSPATH')) {
|
exit;
|
}
|
trait aggregateRatingTrait {
|
/**
|
* @var AggregateRating The overall rating, based on a collection of reviews or ratings, of the item.
|
*/
|
protected AggregateRating $aggregateRating;
|
|
public function getAggregateRating():?AggregateRating
|
{
|
return $this->aggregateRating??null;
|
}
|
|
public function setAggregateRating(array|AggregateRating $aggregateRating):void
|
{
|
if (is_array($aggregateRating)){
|
if (!array_key_exists('type', $aggregateRating)) {
|
$aggregateRating['type'] = 'JVBase\managers\SEO\render\Thing\Intangible\Rating\AggregateRating';
|
}
|
$aggregateRating = SchemaHelper::classFromConfig($aggregateRating);
|
}
|
$this->aggregateRating = $aggregateRating;
|
}
|
|
public function getAggregateRatingFieldConfig():array
|
{
|
return [
|
'type' => 'group',
|
'label' => 'Aggregate/Average Rating',
|
'wrap' => 'details',
|
'fields' => [
|
'ratingCount' => [
|
'type' => 'number',
|
'label' => 'The total number of ratings (without text)',
|
],
|
'reviewCount' => [
|
'type' => 'number',
|
'label' => 'The total number of reviews (with text)'
|
],
|
'bestRating' => [
|
'type' => 'number',
|
'label' => 'The best rating',
|
'default'=> 5,
|
],
|
'worstRating' => [
|
'type' => 'number',
|
'label' => 'The worst rating',
|
'default'=> 1,
|
]
|
]
|
];
|
}
|
}
|