You are here

public function MongodbCommentStatistics::getRankingInfo in MongoDB 8

Returns an array of ranking information for hook_ranking().

Return value

array Array of ranking information as expected by hook_ranking().

Overrides CommentStatisticsInterface::getRankingInfo

See also

hook_ranking()

comment_ranking()

File

mongodb_comment/src/MongodbCommentStatistics.php, line 160
Contains \Drupal\comment\CommentStatistics.

Class

MongodbCommentStatistics

Namespace

Drupal\mongodb_comment

Code

public function getRankingInfo() {
  return array(
    'comments' => array(
      'title' => t('Number of comments'),
      'join' => array(
        'type' => 'LEFT',
        'table' => 'comment_entity_statistics',
        'alias' => 'ces',
        // Default to comment field as this is the most common use case for
        // nodes.
        'on' => "ces.entity_id = i.sid AND ces.entity_type = 'node' AND ces.field_name = 'comment'",
      ),
      // Inverse law that maps the highest view count on the site to 1 and 0
      // to 0. Note that the ROUND here is necessary for PostgreSQL and SQLite
      // in order to ensure that the :comment_scale argument is treated as
      // a numeric type, because the PostgreSQL PDO driver sometimes puts
      // values in as strings instead of numbers in complex expressions like
      // this.
      'score' => '2.0 - 2.0 / (1.0 + ces.comment_count * (ROUND(:comment_scale, 4)))',
      'arguments' => array(
        ':comment_scale' => \Drupal::state()
          ->get('comment.node_comment_statistics_scale') ?: 0,
      ),
    ),
  );
}