function photos_node_view in Album Photos 6.0.x
Same name and namespace in other branches
- 8.5 photos.module \photos_node_view()
- 8.4 photos.module \photos_node_view()
- 7.3 photos.module \photos_node_view()
Implements hook_ENTITY_TYPE_view().
File
- ./
photos.module, line 469 - Implementation of photos.module.
Code
function photos_node_view(array &$build, EntityInterface $node, EntityViewDisplayInterface $display, $view_mode) {
if ($node
->getType() == 'photos') {
$legacy_display_settings = \Drupal::config('photos.settings')
->get('photos_legacy_view_mode');
$user = \Drupal::currentUser();
if ($user
->hasPermission('view photo')) {
if ($legacy_display_settings) {
$display_types = [
'none',
'cover',
'thumbnails',
'covercolorbox',
];
switch ($view_mode) {
case 'full':
$default_display = \Drupal::config('photos.settings')
->get('photos_display_page_display');
$display = isset($node->album['page_display']) ? $node->album['page_display'] : $default_display;
$photos_album = new PhotosAlbum($node
->id());
$album_view = $photos_album
->nodeView($node, $display, $view_mode);
$build['photos_album-' . $display_types[$display]] = $album_view;
break;
case 'teaser':
$default_display = \Drupal::config('photos.settings')
->get('photos_display_teaser_display');
$display = isset($node->album['teaser_display']) ? $node->album['teaser_display'] : $default_display;
$photos_album = new PhotosAlbum($node
->id());
$album_view = $photos_album
->nodeView($node, $display, $view_mode);
$build['photos_album-' . $display_types[$display]] = $album_view;
break;
}
}
else {
if ($display
->getComponent('photos_album_cover')) {
$photos_album = new PhotosAlbum($node
->id());
$album_cover = $photos_album
->getCover($node->album['cover_id']);
// @todo add option to change view mode here.
$build['photos_album_cover'] = $album_cover;
}
if ($display
->getComponent('photos_album_photo_list')) {
$photos = [];
// @todo default to album themed template and allow views override?
if (\Drupal::moduleHandler()
->moduleExists('views')) {
$view_display = \Drupal::config('photos.settings')
->get('node_field_album_photos_list_view');
if (!$view_display) {
$view_display = 'photos_album:block_1';
}
$view_parts = explode(':', $view_display);
$views_view = $view_parts[0];
$view_display_id = $view_parts[1];
$view = Views::getView($views_view);
if ($view) {
$views_display = $view->storage
->getDisplay($view_display_id);
if (isset($views_display['display_options']['arguments'])) {
$arguments = $views_display['display_options']['arguments'];
$args = [
'view' => $views_view,
'display' => $view_display_id,
];
foreach ($arguments as $key => $arg) {
if ($key == 'uid') {
$args['user'] = $node
->getOwnerId();
}
if ($key == 'id') {
$args['node'] = $node
->id();
}
}
$photos = call_user_func_array('views_embed_view', $args);
}
else {
$photos = views_embed_view($views_view, $view_display_id, $node
->id());
}
}
}
if (empty($photos)) {
// @todo fallback on album controller if views is not enabled? Or
// require views. Theme an album photos list view
// PhotosAlbumController::listView().
}
$build['photos_album_photo_list'] = $photos;
}
}
}
}
}