content_planner-8.x-1.x-dev/modules/content_kanban/src/Component/KanbanEntry.php

modules/content_kanban/src/Component/KanbanEntry.php
<?php

namespace Drupal\content_kanban\Component;

use Drupal\content_kanban\Form\SettingsForm;
use Drupal\content_kanban\EntityTypeConfig;
use Drupal\content_planner\Component\BaseEntry;
use Drupal\Core\Entity\EntityStorageInterface;

/**
 * Implements KanbanEntry class.
 *
 * @package Drupal\content_kanban\Component
 */
class KanbanEntry extends BaseEntry {

  /**
   * The entity object.
   *
   * @var object
   */
  protected $entity;

  /**
   * The entity type config.
   *
   * @var \Drupal\content_kanban\EntityTypeConfig
   */
  protected $entityTypeConfig;

  /**
   * The immutable config to store existing configuration.
   *
   * @var \Drupal\Core\Config\ImmutableConfig
   */
  protected $config;

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

  /**
   * The content moderation status.
   *
   * @var string
   */
  protected $contentModerationStatus;

  /**
   * KanbanEntry constructor.
   *
   * @param object $entity
   *   The entity object.
   * @param string $content_moderation_status
   *   A string representing the current content moderation status.
   * @param \Drupal\content_kanban\EntityTypeConfig $entity_type_config
   *   The entity type config object.
   */
  public function __construct(
    $entity,
    $content_moderation_status,
    EntityTypeConfig $entity_type_config
  ) {
    $this->entity = $entity;
    $this->contentModerationStatus = $content_moderation_status;
    $this->entityTypeConfig = $entity_type_config;
    $this->config = \Drupal::config(SettingsForm::CONFIG_NAME);
  }

  /**
   * Builds the Kanban Entry output.
   */
  public function build() {
    $build = [];
    // Add time format to Entity.
    $datetime = new \DateTime();
    // Get the entity type and its keys.
    $entityType = \Drupal::entityTypeManager()->getStorage($this->entityTypeConfig->getEntityType());

    if ($entityType instanceof EntityStorageInterface) {

      $entityKeys = $entityType->getEntityType()->getKeys();
      $entityId = $entityKeys['id'];

      // Set needed info on the object.
      $this->entity->time = $datetime->format('H:i');
      $this->entity->entityLoaded = $entityType->load($this->entity->$entityId);

      // Check if entity was successfully loaded.
      if (!$this->entity->entityLoaded) {
        return [];
      }

      // Get User Picture.
      $user_picture = $this->getUserPictureUrl($entityKeys['owner'] ?: $entityKeys['uid']);
      $build = [
        '#theme' => 'content_kanban_column_entry',
        '#entity' => $this->entity,
        '#entity_id' => $this->entity->$entityId,
        '#entity_type' => $this->entityTypeConfig->getEntityType(),
        '#entity_type_config' => $this->entityTypeConfig,
        '#user_picture' => $user_picture,
        '#workflow_state' => $this->contentModerationStatus,
        '#operation_links' => [
          'add' => $this->entity->entityLoaded->toUrl(),
          'edit' => $this->entity->entityLoaded->toUrl('edit-form'),
          'delete' => $this->entity->entityLoaded->toUrl('delete-form'),
        ],
        '#item_options' => [
          'background_color' => ($this->entity->entityLoaded->isPublished()) ? 'white' : '#fff4f4',
        ],
      ];
    }
    return $build;
  }

  /**
   * Gets the URL of the user picture.
   *
   * @param int $uid
   *   The user id.
   *
   * @return bool|string
   *   Returns the user picture url if any, FALSE otherwise.
   */
  protected function getUserPictureUrl($uid) {
    // If show user thumb is active.
    if ($this->config->get('show_user_thumb') && isset($this->entity->$uid)) {
      return $this->getUserPictureFromCache($this->entity->$uid, 'content_kanban_user_thumb');
    }

    return FALSE;
  }

}

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

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