node_views_analyze(ViewExecutable $view)
Implements hook_views_analyze().
File
- core/modules/node/node.views_execution.inc, line 27
- Provide views runtime hooks for node.module.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | function node_views_analyze(ViewExecutable $view ) { $ret = array (); // Check for something other than the default display: if ( $view ->storage->get( 'base_table' ) == 'node' ) { foreach ( $view ->displayHandlers as $display ) { if (! $display ->isDefaulted( 'access' ) || ! $display ->isDefaulted( 'filters' )) { // check for no access control $access = $display ->getOption( 'access' ); if ( empty ( $access [ 'type' ]) || $access [ 'type' ] == 'none' ) { $anonymous_role = Role::load(RoleInterface::ANONYMOUS_ID); $anonymous_has_access = $anonymous_role && $anonymous_role ->hasPermission( 'access content' ); $authenticated_role = Role::load(RoleInterface::AUTHENTICATED_ID); $authenticated_has_access = $authenticated_role && $authenticated_role ->hasPermission( 'access content' ); if (! $anonymous_has_access || ! $authenticated_has_access ) { $ret [] = Analyzer::formatMessage(t( 'Some roles lack permission to access content, but display %display has no access control.' , array ( '%display' => $display ->display[ 'display_title' ])), 'warning' ); } $filters = $display ->getOption( 'filters' ); foreach ( $filters as $filter ) { if ( $filter [ 'table' ] == 'node' && ( $filter [ 'field' ] == 'status' || $filter [ 'field' ] == 'status_extra' )) { continue 2; } } $ret [] = Analyzer::formatMessage(t( 'Display %display has no access control but does not contain a filter for published nodes.' , array ( '%display' => $display ->display[ 'display_title' ])), 'warning' ); } } } } foreach ( $view ->displayHandlers as $display ) { if ( $display ->getPluginId() == 'page' ) { if ( $display ->getOption( 'path' ) == 'node/%' ) { $ret [] = Analyzer::formatMessage(t( 'Display %display has set node/% as path. This will not produce what you want. If you want to have multiple versions of the node view, use panels.' , array ( '%display' => $display ->display[ 'display_title' ])), 'warning' ); } } } return $ret ; } |
Please login to continue.