achievements-2.x-dev/src/Plugin/views/field/LatestAchievement.php

src/Plugin/views/field/LatestAchievement.php
<?php

namespace Drupal\achievements\Plugin\views\field;

use Drupal\Core\Database\Connection;
use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\views\ResultRow;

/**
 * Most recent user achievement.
 *
 * @ingroup views_field_handlers
 *
 * @ViewsField("latest_achievement")
 */
class LatestAchievement extends FieldPluginBase {

  /**
   * {@inheritdoc}
   */
  public function render(ResultRow $values) {
    $value = $this->getValue($values);
    $sanitized_value = $this->sanitizeValue($value);

    $latest = Connection::select('achievement_unlocks', 'au')
      ->fields('au', ['achievement_id', 'timestamp'])
      ->condition('uid', $sanitized_value)
      ->orderBy('timestamp', 'DESC')
      ->range(0, 1)
      ->execute()
      ->fetchAll();

    if ($latest) {
      $latest_unlock = [
        '#theme' => 'achievement_latest_unlock',
        '#achievement_entity' => achievements_load($latest[0]->achievement_id),
        '#unlock' => ['timestamp' => $latest[0]->timestamp],
      ];

      $rendered = \Drupal::service('renderer')->renderRoot($latest_unlock);

      return $rendered;
    }

    return [];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc