gotem_content_moderation-1.1.6-alpha1/src/Controller/FlaggedItemsController.php

src/Controller/FlaggedItemsController.php
<?php

namespace Drupal\gotem\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\gotem\Entity\ModerationFlagInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Controller for displaying flagged items.
 */
class FlaggedItemsController extends ControllerBase {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * Constructs a new FlaggedItemsController.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager service.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager) {
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('entity_type.manager')
    );
  }

  /**
   * Displays the flagged items page.
   *
   * @return array
   *   A render array.
   */
  public function display() {
    // Load all ModerationFlag entities.
    $flags = $this->entityTypeManager->getStorage('moderation_flag')->loadMultiple();

    $flagged_items = [];

    foreach ($flags as $flag) {
      /** @var \Drupal\gotem\Entity\ModerationFlagInterface $flag */
      $entity = $flag->get('entity')->entity;

      if ($entity) {
        // Decode the JSON moderation result.
        $moderation_result = json_decode($flag->get('moderation_result')->getString(), TRUE);

        // Prepare data for rendering.
        $flagged_items[] = [
          'title' => $entity->label(),
          'type' => $entity->getEntityTypeId(),
          'url' => $entity->toUrl()->toString(),
          'moderation_result' => $moderation_result,
        ];
      }
    }

    return [
      '#theme' => 'flagged_items_page',
      '#flagged_items' => $flagged_items,
      '#attached' => [
        'library' => [
          'gotem/flagged_items',
        ],
      ],
    ];
  }

}

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

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