public CommentController::replyFormAccess(EntityInterface $entity, $field_name, $pid = NULL)
Access check for the reply form.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity this comment belongs to.
string $field_name: The field_name to which the comment belongs.
int $pid: (optional) Some comments are replies to other comments. In those cases, $pid is the parent comment's comment ID. Defaults to NULL.
Return value
\Drupal\Core\Access\AccessResultInterface An access result
Throws
\Symfony\Component\HttpKernel\Exception\NotFoundHttpException
File
- core/modules/comment/src/Controller/CommentController.php, line 270
Class
- CommentController
- Controller for the comment entity.
Namespace
Drupal\comment\Controller
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 | public function replyFormAccess(EntityInterface $entity , $field_name , $pid = NULL) { // Check if entity and field exists. $fields = $this ->commentManager->getFields( $entity ->getEntityTypeId()); if ( empty ( $fields [ $field_name ])) { throw new NotFoundHttpException(); } $account = $this ->currentUser(); // Check if the user has the proper permissions. $access = AccessResult::allowedIfHasPermission( $account , 'post comments' ); $status = $entity ->{ $field_name }->status; $access = $access ->andIf(AccessResult::allowedIf( $status == CommentItemInterface::OPEN) ->addCacheableDependency( $entity )); // $pid indicates that this is a reply to a comment. if ( $pid ) { // Check if the user has the proper permissions. $access = $access ->andIf(AccessResult::allowedIfHasPermission( $account , 'access comments' )); /// Load the parent comment. $comment = $this ->entityManager()->getStorage( 'comment' )->load( $pid ); // Check if the parent comment is published and belongs to the entity. $access = $access ->andIf(AccessResult::allowedIf( $comment && $comment ->isPublished() && $comment ->getCommentedEntityId() == $entity ->id())); if ( $comment ) { $access ->addCacheableDependency( $comment ); } } return $access ; } |
Please login to continue.