public CommentManager::forbiddenMessage(EntityInterface $entity, $field_name)
Provides a message if posting comments is forbidden.
If authenticated users can post comments, a message is returned that prompts the anonymous user to log in (or register, if applicable) that redirects to entity comment form. Otherwise, no message is returned.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity to which comments are attached to.
string $field_name: The field name on the entity to which comments are attached to.
Return value
string HTML for a "you can't post comments" notice.
Overrides CommentManagerInterface::forbiddenMessage
File
- core/modules/comment/src/CommentManager.php, line 145
Class
- CommentManager
- Comment manager contains common functions to manage comment fields.
Namespace
Drupal\comment
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 38 39 40 41 | public function forbiddenMessage(EntityInterface $entity , $field_name ) { if (!isset( $this ->authenticatedCanPostComments)) { // We only output a link if we are certain that users will get the // permission to post comments by logging in. $this ->authenticatedCanPostComments = $this ->entityManager ->getStorage( 'user_role' ) ->load(RoleInterface::AUTHENTICATED_ID) ->hasPermission( 'post comments' ); } if ( $this ->authenticatedCanPostComments) { // We cannot use the redirect.destination service here because these links // sometimes appear on /node and taxonomy listing pages. if ( $entity ->get( $field_name )->getFieldDefinition()->getSetting( 'form_location' ) == CommentItemInterface::FORM_SEPARATE_PAGE) { $comment_reply_parameters = [ 'entity_type' => $entity ->getEntityTypeId(), 'entity' => $entity ->id(), 'field_name' => $field_name , ]; $destination = array ( 'destination' => $this ->url( 'comment.reply' , $comment_reply_parameters , array ( 'fragment' => 'comment-form' ))); } else { $destination = array ( 'destination' => $entity ->url( 'canonical' , array ( 'fragment' => 'comment-form' ))); } if ( $this ->userConfig->get( 'register' ) != USER_REGISTER_ADMINISTRATORS_ONLY) { // Users can register themselves. return $this ->t( '<a href=":login">Log in</a> or <a href=":register">register</a> to post comments' , array ( ':login' => $this ->urlGenerator->generateFromRoute( 'user.login' , array (), array ( 'query' => $destination )), ':register' => $this ->urlGenerator->generateFromRoute( 'user.register' , array (), array ( 'query' => $destination )), )); } else { // Only admins can add new users, no public registration. return $this ->t( '<a href=":login">Log in</a> to post comments' , array ( ':login' => $this ->urlGenerator->generateFromRoute( 'user.login' , array (), array ( 'query' => $destination )), )); } } return '' ; } |
Please login to continue.