page_tester-1.0.x-dev/src/Plugin/Tests/TestsOrganigramsTree.php

src/Plugin/Tests/TestsOrganigramsTree.php
<?php

declare(strict_types=1);

namespace Drupal\page_tester\Plugin\Tests;

use Drupal\page_tester\TestsPluginBase;
use Drupal\taxonomy\Entity\Term;

/**
 * Plugin implementation of the tests.
 *
 * @Tests(
 *   id = "tests_organigrams_tree",
 *   label = @Translation("Tests Organigrams Tree"),
 *   description = @Translation("Tests for Organigrams Tree.")
 * )
 */
final class TestsOrganigramsTree extends TestsPluginBase {

  /**
   * {@inheritdoc}
   */
  public function getTests($testId): array {
    $data = [];
    $tests = \Drupal::entityTypeManager()->getStorage('page_tester_test')->load($testId);
    $dataResourceResource = \Drupal::entityTypeManager()->getStorage('data_resource_resource')->load($tests->resource->value);
    $resourceManager = \Drupal::service('plugin.manager.resources');
    $plugin_definitions = $resourceManager->getDefinitions();
    foreach ($plugin_definitions as $plugin_id => $definition) {
      if ($plugin_id == $dataResourceResource->resource->value) {
        return $resourceManager->createInstance($plugin_id)->getData($dataResourceResource);
      }
    }
    return $data;
  }

  /**
   * {@inheritdoc}
   */
  public function setTest($testId, $testNumber): bool {
    $vocabularyTestItems = $this->getTests($testId);
    if(isset($vocabularyTestItems[$testNumber])) {
      $fields = \Drupal::service('page_tester.field_definition_service')->getAllVocabularyFields();
      foreach ($vocabularyTestItems[$testNumber] as $id => $values) {
        $term = Term::load($id);
        if($term) {
          foreach ($fields as $field) {
            if($term->hasField($field)) {
              if (isset($values[$field])) {
                $term->set($field, $values[$field]);
                $term->save();
                return TRUE;
              }
            }
          }
        }
      }
    }
    return FALSE;
  }
}

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

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