public CommentManager::getCountNewComments(EntityInterface $entity, $field_name = NULL, $timestamp = 0)
Returns the number of new comments available on a given entity for a user.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity to which the comments are attached to.
string $field_name: (optional) The field_name to count comments for. Defaults to any field.
int $timestamp: (optional) Time to count from. Defaults to time of last user access the entity.
Return value
int|false The number of new comments or FALSE if the user is not authenticated.
Overrides CommentManagerInterface::getCountNewComments
File
- core/modules/comment/src/CommentManager.php, line 190
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 | public function getCountNewComments(EntityInterface $entity , $field_name = NULL, $timestamp = 0) { // @todo Replace module handler with optional history service injection // after https://www.drupal.org/node/2081585. if ( $this ->currentUser->isAuthenticated() && $this ->moduleHandler->moduleExists( 'history' )) { // Retrieve the timestamp at which the current user last viewed this entity. if (! $timestamp ) { if ( $entity ->getEntityTypeId() == 'node' ) { $timestamp = history_read( $entity ->id()); } else { $function = $entity ->getEntityTypeId() . '_last_viewed' ; if (function_exists( $function )) { $timestamp = $function ( $entity ->id()); } else { // Default to 30 days ago. // @todo Remove once https://www.drupal.org/node/1029708 lands. $timestamp = COMMENT_NEW_LIMIT; } } } $timestamp = ( $timestamp > HISTORY_READ_LIMIT ? $timestamp : HISTORY_READ_LIMIT); // Use the timestamp to retrieve the number of new comments. $query = $this ->queryFactory->get( 'comment' ) ->condition( 'entity_type' , $entity ->getEntityTypeId()) ->condition( 'entity_id' , $entity ->id()) ->condition( 'created' , $timestamp , '>' ) ->condition( 'status' , CommentInterface::PUBLISHED); if ( $field_name ) { // Limit to a particular field. $query ->condition( 'field_name' , $field_name ); } return $query -> count ()->execute(); } return FALSE; } |
Please login to continue.