1*8add1155SRico Sonntag<?php 2*8add1155SRico Sonntag/** 3*8add1155SRico Sonntag * webtrees: online genealogy 4*8add1155SRico Sonntag * Copyright (C) 2018 webtrees development team 5*8add1155SRico Sonntag * This program is free software: you can redistribute it and/or modify 6*8add1155SRico Sonntag * it under the terms of the GNU General Public License as published by 7*8add1155SRico Sonntag * the Free Software Foundation, either version 3 of the License, or 8*8add1155SRico Sonntag * (at your option) any later version. 9*8add1155SRico Sonntag * This program is distributed in the hope that it will be useful, 10*8add1155SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of 11*8add1155SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*8add1155SRico Sonntag * GNU General Public License for more details. 13*8add1155SRico Sonntag * You should have received a copy of the GNU General Public License 14*8add1155SRico Sonntag * along with this program. If not, see <http://www.gnu.org/licenses/>. 15*8add1155SRico Sonntag */ 16*8add1155SRico Sonntagdeclare(strict_types=1); 17*8add1155SRico Sonntag 18*8add1155SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Repository; 19*8add1155SRico Sonntag 20*8add1155SRico Sonntaguse Fisharebest\Webtrees\Auth; 21*8add1155SRico Sonntaguse Fisharebest\Webtrees\I18N; 22*8add1155SRico Sonntaguse Fisharebest\Webtrees\Module; 23*8add1155SRico Sonntaguse Fisharebest\Webtrees\Module\FamilyTreeFavoritesModule; 24*8add1155SRico Sonntaguse Fisharebest\Webtrees\Module\UserFavoritesModule; 25*8add1155SRico Sonntaguse Fisharebest\Webtrees\Statistics\Repository\Interfaces\FavoritesRepositoryInterface; 26*8add1155SRico Sonntaguse Fisharebest\Webtrees\Tree; 27*8add1155SRico Sonntag 28*8add1155SRico Sonntag/** 29*8add1155SRico Sonntag * A repository providing methods for favorites related statistics. 30*8add1155SRico Sonntag */ 31*8add1155SRico Sonntagclass FavoritesRepository implements FavoritesRepositoryInterface 32*8add1155SRico Sonntag{ 33*8add1155SRico Sonntag /** 34*8add1155SRico Sonntag * @var Tree 35*8add1155SRico Sonntag */ 36*8add1155SRico Sonntag private $tree; 37*8add1155SRico Sonntag 38*8add1155SRico Sonntag /** 39*8add1155SRico Sonntag * Constructor. 40*8add1155SRico Sonntag * 41*8add1155SRico Sonntag * @param Tree $tree 42*8add1155SRico Sonntag */ 43*8add1155SRico Sonntag public function __construct(Tree $tree) 44*8add1155SRico Sonntag { 45*8add1155SRico Sonntag $this->tree = $tree; 46*8add1155SRico Sonntag } 47*8add1155SRico Sonntag 48*8add1155SRico Sonntag /** 49*8add1155SRico Sonntag * @inheritDoc 50*8add1155SRico Sonntag */ 51*8add1155SRico Sonntag public function gedcomFavorites(): string 52*8add1155SRico Sonntag { 53*8add1155SRico Sonntag $module = Module::findByClass(FamilyTreeFavoritesModule::class); 54*8add1155SRico Sonntag 55*8add1155SRico Sonntag if ($module instanceof FamilyTreeFavoritesModule) { 56*8add1155SRico Sonntag return $module->getBlock($this->tree, 0); 57*8add1155SRico Sonntag } 58*8add1155SRico Sonntag 59*8add1155SRico Sonntag return ''; 60*8add1155SRico Sonntag } 61*8add1155SRico Sonntag 62*8add1155SRico Sonntag /** 63*8add1155SRico Sonntag * @inheritDoc 64*8add1155SRico Sonntag */ 65*8add1155SRico Sonntag public function userFavorites(): string 66*8add1155SRico Sonntag { 67*8add1155SRico Sonntag $module = Module::findByClass(UserFavoritesModule::class); 68*8add1155SRico Sonntag 69*8add1155SRico Sonntag if ($module instanceof UserFavoritesModule) { 70*8add1155SRico Sonntag return $module->getBlock($this->tree, 0); 71*8add1155SRico Sonntag } 72*8add1155SRico Sonntag 73*8add1155SRico Sonntag return ''; 74*8add1155SRico Sonntag } 75*8add1155SRico Sonntag 76*8add1155SRico Sonntag /** 77*8add1155SRico Sonntag * @inheritDoc 78*8add1155SRico Sonntag */ 79*8add1155SRico Sonntag public function totalGedcomFavorites(): string 80*8add1155SRico Sonntag { 81*8add1155SRico Sonntag $count = 0; 82*8add1155SRico Sonntag $module = Module::findByClass(FamilyTreeFavoritesModule::class); 83*8add1155SRico Sonntag 84*8add1155SRico Sonntag if ($module instanceof FamilyTreeFavoritesModule) { 85*8add1155SRico Sonntag $count = \count($module->getFavorites($this->tree)); 86*8add1155SRico Sonntag } 87*8add1155SRico Sonntag 88*8add1155SRico Sonntag return I18N::number($count); 89*8add1155SRico Sonntag } 90*8add1155SRico Sonntag 91*8add1155SRico Sonntag /** 92*8add1155SRico Sonntag * @inheritDoc 93*8add1155SRico Sonntag */ 94*8add1155SRico Sonntag public function totalUserFavorites(): string 95*8add1155SRico Sonntag { 96*8add1155SRico Sonntag $count = 0; 97*8add1155SRico Sonntag $module = Module::findByClass(UserFavoritesModule::class); 98*8add1155SRico Sonntag 99*8add1155SRico Sonntag if ($module instanceof UserFavoritesModule) { 100*8add1155SRico Sonntag $count = \count($module->getFavorites($this->tree, Auth::user())); 101*8add1155SRico Sonntag } 102*8add1155SRico Sonntag 103*8add1155SRico Sonntag return I18N::number($count); 104*8add1155SRico Sonntag } 105*8add1155SRico Sonntag} 106