. */ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Database; use Fisharebest\Webtrees\Filter; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\I18N; use PDO; /** * Class UserFavoritesModule * * The "user favorites" module is almost identical to the "family tree favorites" module */ class UserFavoritesModule extends FamilyTreeFavoritesModule { /** {@inheritdoc} */ public function getDescription() { return /* I18N: Description of the “Favorites” module */ I18N::translate('Display and manage a user’s favorite pages.'); } /** {@inheritdoc} */ public function isUserBlock() { return true; } /** {@inheritdoc} */ public function isGedcomBlock() { return false; } /** * Get the favorites for a user (for the current family tree) * * @param int $user_id * * @return string[][] */ public static function getFavorites($user_id) { global $WT_TREE; return Database::prepare( "SELECT SQL_CACHE favorite_id AS id, user_id, gedcom_id, xref AS gid, favorite_type AS type, title AS title, note AS note, url AS url" . " FROM `##favorite` WHERE user_id=? AND gedcom_id=?") ->execute(array($user_id, $WT_TREE->getTreeId())) ->fetchAll(PDO::FETCH_ASSOC); } /** {@inheritdoc} */ public function modAction($modAction) { global $WT_TREE; switch ($modAction) { case 'menu-add-favorite': // Process the "add to user favorites" menu item on indi/fam/etc. pages $record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE); if (Auth::check() && $record->canShowName()) { self::addFavorite(array( 'user_id' => Auth::id(), 'gedcom_id' => $record->getTree()->getTreeId(), 'gid' => $record->getXref(), 'type' => $record::RECORD_TYPE, 'url' => null, 'note' => null, 'title' => null, )); FlashMessages::addMessage(/* I18N: %s is the name of an individual, source or other record */ I18N::translate('“%s” has been added to your favorites.', $record->getFullName())); } break; } } }