summaryrefslogtreecommitdiff
path: root/app/Module/MediaTabModule.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2015-03-02 08:02:00 +0000
committerGreg Roach <fisharebest@gmail.com>2015-03-02 15:55:40 +0000
commit8c2e82270a639a3acf607b432e54721116dae723 (patch)
tree6e9829818d82ad365229bbcad744b9b4999bb0fb /app/Module/MediaTabModule.php
parent7126668f8fb92b0cac155adc02efde34bbd890ce (diff)
downloadwebtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.gz
webtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.bz2
webtrees-8c2e82270a639a3acf607b432e54721116dae723.zip
Module API
Diffstat (limited to 'app/Module/MediaTabModule.php')
-rw-r--r--app/Module/MediaTabModule.php132
1 files changed, 132 insertions, 0 deletions
diff --git a/app/Module/MediaTabModule.php b/app/Module/MediaTabModule.php
new file mode 100644
index 0000000000..f156b3de25
--- /dev/null
+++ b/app/Module/MediaTabModule.php
@@ -0,0 +1,132 @@
+<?php
+namespace Fisharebest\Webtrees;
+
+/**
+ * webtrees: online genealogy
+ * Copyright (C) 2015 webtrees development team
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Class MediaTabModule
+ */
+class MediaTabModule extends Module implements ModuleTabInterface {
+ private $facts;
+
+ /** {@inheritdoc} */
+ public function getTitle() {
+ return /* I18N: Name of a module */ I18N::translate('Media');
+ }
+
+ /** {@inheritdoc} */
+ public function getDescription() {
+ return /* I18N: Description of the “Media” module */ I18N::translate('A tab showing the media objects linked to an individual.');
+ }
+
+ /** {@inheritdoc} */
+ public function defaultTabOrder() {
+ return 50;
+ }
+
+ /** {@inheritdoc} */
+ public function hasTabContent() {
+ return WT_USER_CAN_EDIT || $this->getFactsWithMedia();
+ }
+
+ /** {@inheritdoc} */
+ public function isGrayedOut() {
+ return !$this->getFactsWithMedia();
+ }
+
+ /** {@inheritdoc} */
+ public function getTabContent() {
+ global $WT_TREE, $controller;
+
+ ob_start();
+ echo '<table class="facts_table">';
+ foreach ($this->getFactsWithMedia() as $fact) {
+ if ($fact->getTag() == 'OBJE') {
+ print_main_media($fact, 1);
+ } else {
+ for ($i = 2; $i < 4; ++$i) {
+ print_main_media($fact, $i);
+ }
+ }
+ }
+ if (!$this->getFactsWithMedia()) {
+ echo '<tr><td id="no_tab4" colspan="2" class="facts_value">', I18N::translate('There are no media objects for this individual.'), '</td></tr>';
+ }
+ // New media link
+ if ($controller->record->canEdit() && $WT_TREE->getPreference('MEDIA_UPLOAD') >= WT_USER_ACCESS_LEVEL) {
+ ?>
+ <tr>
+ <td class="facts_label">
+ <?php echo WT_Gedcom_Tag::getLabel('OBJE'); ?>
+ </td>
+ <td class="facts_value">
+ <a href="#" onclick="window.open('addmedia.php?action=showmediaform&amp;linktoid=<?php echo $controller->record->getXref(); ?>&amp;ged=<?php echo WT_GEDURL; ?>', '_blank', edit_window_specs); return false;">
+ <?php echo I18N::translate('Add a new media object'); ?>
+ </a>
+ <?php echo help_link('OBJE'); ?>
+ <br>
+ <a href="#" onclick="window.open('inverselink.php?linktoid=<?php echo $controller->record->getXref(); ?>&amp;ged=<?php echo WT_GEDURL; ?>&amp;linkto=person', '_blank', find_window_specs); return false;">
+ <?php echo I18N::translate('Link to an existing media object'); ?>
+ </a>
+ </td>
+ </tr>
+ <?php
+ }
+ ?>
+ </table>
+ <?php
+ return '<div id="' . $this->getName() . '_content">' . ob_get_clean() . '</div>';
+ }
+
+ /**
+ * Get all the facts for an individual which contain media objects.
+ *
+ * @return Fact[]
+ */
+ private function getFactsWithMedia() {
+ global $controller;
+
+ if ($this->facts === null) {
+ $facts = $controller->record->getFacts();
+ foreach ($controller->record->getSpouseFamilies() as $family) {
+ if ($family->canShow()) {
+ foreach ($family->getFacts() as $fact) {
+ $facts[] = $fact;
+ }
+ }
+ }
+ $this->facts = array();
+ foreach ($facts as $fact) {
+ if (preg_match('/(?:^1|\n\d) OBJE @' . WT_REGEX_XREF . '@/', $fact->getGedcom())) {
+ $this->facts[] = $fact;
+ }
+ }
+ sort_facts($this->facts);
+ }
+
+ return $this->facts;
+ }
+
+ /** {@inheritdoc} */
+ public function canLoadAjax() {
+ return !Auth::isSearchEngine(); // Search engines cannot use AJAX
+ }
+
+ /** {@inheritdoc} */
+ public function getPreLoadContent() {
+ return '';
+ }
+}