niobi-8.x-2.0-alpha4/modules/niobi_form/modules/niobi_app/src/Form/NiobiApplicationSubmissions.php

modules/niobi_form/modules/niobi_app/src/Form/NiobiApplicationSubmissions.php
<?php

namespace Drupal\niobi_app\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\niobi_app\Entity\NiobiApplication;

/**
 * Renders all application submissions in a form.
 *
 * @ingroup niobi_app
 */
class NiobiApplicationSubmissions extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'niobi_application_submissions';
  }

  public static function buildRenderArray($application_id) {
    $form = [];
    $application = NiobiApplication::load($application_id);

    if ($application) {
      $workflow = $application->getApplicationWorkflow();
      $admin = $application->isApplicationAdmin();
      $applicant = $application->isApplicant();
      $nominator = $application->isNominator();
      $reviewer = $application->isReviewer();
      $isOnWorkflowViewAccessTeam = $workflow->isOnViewAccessTeam();

      $webformSubmissionViewBuilder = \Drupal::entityTypeManager()->getViewBuilder('webform_submission');

      $a_vals = $workflow->get('field_data_access_options')->getValue();
      $access_vals = [];
      foreach ($a_vals as $val) {
        $access_vals[] = $val['value'];
      }

      // Is the person qualified to view anything?
      if (in_array(TRUE, [$admin, $applicant, $nominator, $reviewer, $isOnWorkflowViewAccessTeam])) {
        $form['niobi_app_submissions'] = [
          '#type' => 'vertical_tabs',
          '#title' => '<h4>Application to review</h4>'
        ];
        // Show Nominations
        if (in_array(TRUE, [$admin, $nominator, $reviewer, $isOnWorkflowViewAccessTeam])) {
          $nominations = $application->getNominationSubmissions();
          if ($nominations) {
            $form['nominations'] = [
              '#type' => 'details',
              '#group' => 'niobi_app_submissions',
              '#title' => 'Nominations',
              '#open' => TRUE,
            ];
            /* @var $nomination \Drupal\webform\Entity\WebformSubmission */
            foreach ($nominations as $nomination) {
              if ($nomination && $nomination->id()) {
                $webform = $nomination->getWebform();
                $form['nominations']['nomination_' . $application->id()] = [
                  '#type' => 'details',
                  '#open' => FALSE,
                  '#title' => t('Nomination Submission for %webform (Click to Open)', ['%webform' => $webform->label()]),
                  'sub' => $webformSubmissionViewBuilder->view($nomination),
                ];
              }
            }
          }
        }
        // Show Applications
        if (in_array(TRUE, [$admin, $applicant, $reviewer, $isOnWorkflowViewAccessTeam])) {
          $applications = $application->getApplicationSubmissions();
          if ($applications) {
            $form['applications'] = [
              '#type' => 'details',
              '#group' => 'niobi_app_submissions',
              '#title' => 'Application Submissions',
              '#open' => TRUE,
            ];
            /* @var $app \Drupal\webform\Entity\WebformSubmission */
            foreach ($applications as $app) {
              if ($app && $app->id()) {
                $webform = $app->getWebform();
                $form['applications']['application_' . $app->id()] = [
                  '#type' => 'details',
                  '#open' => FALSE,
                  '#title' => t('Application Submission for %webform (Click to Open)', ['%webform' => $webform->label()]),
                  'sub' => $webformSubmissionViewBuilder->view($app),
                ];
              }
            }
          }
        }
        // Show Review
        if (in_array(TRUE, [$admin, $reviewer, $isOnWorkflowViewAccessTeam])) {
          $reviews = $application->getReviewSubmissions();
          if ($reviews) {
            $form['reviews'] = [
              '#type' => 'details',
              '#group' => 'niobi_app_submissions',
              '#title' => 'Review Submissions',
              '#open' => TRUE,
            ];
            /* @var $review \Drupal\webform\Entity\WebformSubmission */
            foreach ($reviews as $review) {
              if ($review && $review->id()) {
                $webform = $review->getWebform();
                $form['reviews']['review_' . $review->id()] = [
                  '#type' => 'details',
                  '#open' => FALSE,
                  '#title' => t('Review Submission for %webform (Click to Open)', ['%webform' => $webform->label()]),
                  'sub' => $webformSubmissionViewBuilder->view($review),
                ];
              }
            }
          }
        }
      }
    }
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state, $application_id = NULL) {
    return NiobiApplicationSubmissions::buildRenderArray($application_id);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Do nothing.
  }

}

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

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