function CommentStatistics::create

Same name in other branches
  1. 8.9.x core/modules/comment/src/CommentStatistics.php \Drupal\comment\CommentStatistics::create()
  2. 10 core/modules/comment/src/CommentStatistics.php \Drupal\comment\CommentStatistics::create()
  3. 11.x core/modules/comment/src/CommentStatistics.php \Drupal\comment\CommentStatistics::create()

Overrides CommentStatisticsInterface::create

File

core/modules/comment/src/CommentStatistics.php, line 104

Class

CommentStatistics

Namespace

Drupal\comment

Code

public function create(FieldableEntityInterface $entity, $fields) {
    $query = $this->database
        ->insert('comment_entity_statistics')
        ->fields([
        'entity_id',
        'entity_type',
        'field_name',
        'cid',
        'last_comment_timestamp',
        'last_comment_name',
        'last_comment_uid',
        'comment_count',
    ]);
    foreach ($fields as $field_name => $detail) {
        // Skip fields that entity does not have.
        if (!$entity->hasField($field_name)) {
            continue;
        }
        // Get the user ID from the entity if it's set, or default to the
        // currently logged in user.
        $last_comment_uid = 0;
        if ($entity instanceof EntityOwnerInterface) {
            $last_comment_uid = $entity->getOwnerId();
        }
        if (!isset($last_comment_uid)) {
            // Default to current user when entity does not implement
            // EntityOwnerInterface or author is not set.
            $last_comment_uid = $this->currentUser
                ->id();
        }
        // Default to REQUEST_TIME when entity does not have a changed property.
        $last_comment_timestamp = REQUEST_TIME;
        // @todo Make comment statistics language aware and add some tests. See
        //   https://www.drupal.org/node/2318875
        if ($entity instanceof EntityChangedInterface) {
            $last_comment_timestamp = $entity->getChangedTimeAcrossTranslations();
        }
        $query->values([
            'entity_id' => $entity->id(),
            'entity_type' => $entity->getEntityTypeId(),
            'field_name' => $field_name,
            'cid' => 0,
            'last_comment_timestamp' => $last_comment_timestamp,
            'last_comment_name' => NULL,
            'last_comment_uid' => $last_comment_uid,
            'comment_count' => 0,
        ]);
    }
    $query->execute();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.