. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Statistics\Repository; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\FamilyTreeFavoritesModule; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Module\UserFavoritesModule; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Statistics\Repository\Interfaces\FavoritesRepositoryInterface; use Fisharebest\Webtrees\Tree; use function count; /** * A repository providing methods for favorites related statistics. */ class FavoritesRepository implements FavoritesRepositoryInterface { /** * @var Tree */ private $tree; /** * @var ModuleService */ private $module_service; /** * Constructor. * * @param Tree $tree * @param ModuleService $module_service */ public function __construct(Tree $tree, ModuleService $module_service) { $this->tree = $tree; $this->module_service = $module_service; } /** * @inheritDoc */ public function gedcomFavorites(): string { $module = $this->module_service ->findByInterface(FamilyTreeFavoritesModule::class); if ($module instanceof FamilyTreeFavoritesModule) { return $module->getBlock($this->tree, 0, ModuleBlockInterface::CONTEXT_EMBED); } return ''; } /** * @inheritDoc */ public function userFavorites(): string { $module = $this->module_service ->findByInterface(UserFavoritesModule::class); if ($module instanceof UserFavoritesModule) { return $module->getBlock($this->tree, 0, ModuleBlockInterface::CONTEXT_EMBED); } return ''; } /** * @inheritDoc */ public function totalGedcomFavorites(): string { $count = 0; $module = $this->module_service ->findByInterface(FamilyTreeFavoritesModule::class); if ($module instanceof FamilyTreeFavoritesModule) { $count = count($module->getFavorites($this->tree)); } return I18N::number($count); } /** * @inheritDoc */ public function totalUserFavorites(): string { $count = 0; $module = $this->module_service ->findByInterface(UserFavoritesModule::class); if ($module instanceof UserFavoritesModule) { $count = count($module->getFavorites($this->tree, Auth::user())); } return I18N::number($count); } }