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