function rdf_preprocess_comment

rdf_preprocess_comment(&$variables)

Implements hook_preprocess_HOOK() for comment templates.

File

core/modules/rdf/rdf.module, line 447
Enables semantically enriched output for Drupal sites in the form of RDFa.

Code

function rdf_preprocess_comment(&$variables) {
  $comment = $variables['comment'];
  $mapping = rdf_get_mapping('comment', $comment->bundle());
  $bundle_mapping = $mapping->getPreparedBundleMapping();

  if (!empty($bundle_mapping['types']) && !isset($comment->in_preview)) {
    // Adds RDFa markup to the comment container. The about attribute specifies
    // the URI of the resource described within the HTML element, while the
    // typeof attribute indicates its RDF type (e.g., sioc:Post, foaf:Document,
    // and so on.)
    $variables['attributes']['about'] = $comment->url();
    $variables['attributes']['typeof'] = $bundle_mapping['types'];
  }

  // Adds RDFa markup for the relation between the comment and its author.
  $author_mapping = $mapping->getPreparedFieldMapping('uid');
  if (!empty($author_mapping)) {
    $author_attributes = ['rel' => $author_mapping['properties']];
    // Wraps the 'author' and 'submitted' variables which are both available in
    // comment.html.twig.
    $variables['author'] = [
      '#theme' => 'rdf_wrapper',
      '#content' => $variables['author'],
      '#attributes' => $author_attributes,
    ];
    $variables['submitted'] = [
      '#theme' => 'rdf_wrapper',
      '#content' => $variables['submitted'],
      '#attributes' => $author_attributes,
    ];
  }
  // Adds RDFa markup for the date of the comment.
  $created_mapping = $mapping->getPreparedFieldMapping('created');
  if (!empty($created_mapping)) {
    // The comment date is precomputed as part of the rdf_data so that it can be
    // cached as part of the entity.
    $date_attributes = $comment->rdf_data['date'];

    $rdf_metadata = array(
      '#theme' => 'rdf_metadata',
      '#metadata' => array($date_attributes),
    );
    // Ensure the original variable is represented as a render array.
    $created = !is_array($variables['created']) ? ['#markup' => $variables['created']] : $variables['created'];
    $submitted = !is_array($variables['submitted']) ? ['#markup' => $variables['submitted']] : $variables['submitted'];
    // Make render array and RDF metadata available in comment.html.twig.
    $variables['created'] = [$created, $rdf_metadata];
    $variables['submitted'] = [$submitted, $rdf_metadata];
  }
  $title_mapping = $mapping->getPreparedFieldMapping('subject');
  if (!empty($title_mapping)) {
    // Adds RDFa markup to the subject of the comment. Because the RDFa markup
    // is added to an <h3> tag which might contain HTML code, we specify an
    // empty datatype to ensure the value of the title read by the RDFa parsers
    // is a literal.
    $variables['title_attributes']['property'] = $title_mapping['properties'];
    $variables['title_attributes']['datatype'] = '';
  }

  // Annotates the parent relationship between the current comment and the node
  // it belongs to. If available, the parent comment is also annotated.
  // @todo When comments are turned into fields, this should be changed.
  // Currently there is no mapping relating a comment to its node.
  $pid_mapping = $mapping->getPreparedFieldMapping('pid');
  if (!empty($pid_mapping)) {
    // Adds the relation to the parent entity.
    $parent_entity_attributes['rel'] = $pid_mapping['properties'];
    // The parent entity URI is precomputed as part of the rdf_data so that it
    // can be cached as part of the entity.
    $parent_entity_attributes['resource'] = $comment->rdf_data['entity_uri'];
    $variables['rdf_metadata_attributes'][] = $parent_entity_attributes;

    // Adds the relation to parent comment, if it exists.
    if ($comment->hasParentComment()) {
      $parent_comment_attributes['rel'] = $pid_mapping['properties'];
      // The parent comment URI is precomputed as part of the rdf_data so that
      // it can be cached as part of the entity.
      $parent_comment_attributes['resource'] = $comment->rdf_data['pid_uri'];
      $variables['rdf_metadata_attributes'][] = $parent_comment_attributes;
    }
  }
  // Adds RDF metadata markup above comment body if any.
  if (!empty($variables['rdf_metadata_attributes']) && isset($variables['content']['comment_body'])) {
    $rdf_metadata = array(
      '#theme' => 'rdf_metadata',
      '#metadata' => $variables['rdf_metadata_attributes'],
    );
    if (!empty($variables['content']['comment_body']['#prefix'])) {
      $rdf_metadata['#suffix'] = $variables['content']['comment_body']['#prefix'];
    }
    $variables['content']['comment_body']['#prefix'] = drupal_render($rdf_metadata);
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!modules!rdf!rdf.module/function/rdf_preprocess_comment/8.1.x