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',
],
],
];
}
}
