xref: /webtrees/app/Module/RelativesTabModule.php (revision 16e7dcbf4079d7ea9a84244c8f3c93e4df7f69a9)
1<?php
2/**
3 * webtrees: online genealogy
4 * Copyright (C) 2018 webtrees development team
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16namespace Fisharebest\Webtrees\Module;
17
18use Fisharebest\Webtrees\Auth;
19use Fisharebest\Webtrees\I18N;
20use Fisharebest\Webtrees\Individual;
21
22/**
23 * Class RelativesTabModule
24 */
25class RelativesTabModule extends AbstractModule implements ModuleTabInterface {
26	/**
27	 * How should this module be labelled on tabs, menus, etc.?
28	 *
29	 * @return string
30	 */
31	public function getTitle() {
32		return /* I18N: Name of a module */ I18N::translate('Families');
33	}
34
35	/**
36	 * A sentence describing what this module does.
37	 *
38	 * @return string
39	 */
40	public function getDescription() {
41		return /* I18N: Description of the “Families” module */ I18N::translate('A tab showing the close relatives of an individual.');
42	}
43
44	/**
45	 * The user can re-arrange the tab order, but until they do, this
46	 * is the order in which tabs are shown.
47	 *
48	 * @return int
49	 */
50	public function defaultTabOrder() {
51		return 20;
52	}
53
54	/** {@inheritdoc} */
55	public function getTabContent(Individual $individual) {
56		$tree = $individual->getTree();
57		if ($tree->getPreference('SHOW_PRIVATE_RELATIONSHIPS')) {
58			$fam_access_level = Auth::PRIV_HIDE;
59		} else {
60			$fam_access_level = Auth::accessLevel($tree);
61		}
62
63		return view('modules/relatives/tab', [
64			'fam_access_level'     => $fam_access_level,
65			'can_edit'             => $individual->canEdit(),
66			'individual'           => $individual,
67			'parent_families'      => $individual->getChildFamilies(),
68			'spouse_families'      => $individual->getSpouseFamilies(),
69			'step_child_familiess' => $individual->getSpouseStepFamilies(),
70			'step_parent_families' => $individual->getChildStepFamilies(),
71		]);
72	}
73
74	/** {@inheritdoc} */
75	public function hasTabContent(Individual $individual) {
76		return true;
77	}
78	/** {@inheritdoc} */
79	public function isGrayedOut(Individual $individual) {
80		return false;
81	}
82	/** {@inheritdoc} */
83	public function canLoadAjax() {
84		return false;
85	}
86}
87