niobi-8.x-2.0-alpha4/modules/niobi_form/modules/niobi_app/src/Plugin/Block/NiobiAppWorkflowReviewAssignmentsBlock.php

modules/niobi_form/modules/niobi_app/src/Plugin/Block/NiobiAppWorkflowReviewAssignmentsBlock.php
<?php
namespace Drupal\niobi_app\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Link;
use Drupal\niobi_app\Entity\NiobiApplicationWorkflow;

/**
 * Creates a Niobi Application Workflow Review Assignments Block
 * @Block(
 * id = "niobi_app_workflow_review_assignments",
 * admin_label = @Translation("Niobi Application Workflow Review Assignments Block"),
 * )
 */
class NiobiAppWorkflowReviewAssignmentsBlock extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {
    $user = \Drupal::currentUser();
    if ($user->isAuthenticated()) {
      // Create an object of type Select.
      $database = \Drupal::database();
      $query = $database->select('niobi_application__field_application_workflow', 'aw');
      $query->innerJoin('task__field_application', 'ta', 'ta.field_application_target_id = aw.entity_id');
      $query->innerJoin('task_field_data', 'td', 'td.id = ta.entity_id');
      $query->condition('td.type', 'application_review_task');
      $query->condition('td.assigned_to', $user->id());
      $query->condition('td.status', 'closed', '<>');
      $query->fields('aw', ['field_application_workflow_target_id']);
      $workflowIds = $query->execute()->fetchCol();
      if (!empty($workflowIds)) {
        $workflows = NiobiApplicationWorkflow::loadMultiple($workflowIds);
        $items = [];
        foreach ($workflows as $workflow) {
          $items[] = Link::createFromRoute($workflow->label(), 'niobi_application.manage_user_review_assignments',
            ['niobi_application_workflow' => $workflow->id()]);
        }
        return [
          'header' => [
            '#type' => 'html_tag',
            '#tag' => 'h3',
            '#value' => t('Review Assignments'),
          ],
          'items' => [
            '#theme' => 'item_list',
            '#items' => $items,
          ],
        ];
      }
    }
  }

  public function getCacheMaxAge() {
    return 0;
  }
}

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

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