You are here

class RealisticDummyContentTermReferenceField in Realistic Dummy Content 3.x

Same name and namespace in other branches
  1. 8.2 api/src/includes/RealisticDummyContentTermReferenceField.php \Drupal\realistic_dummy_content_api\includes\RealisticDummyContentTermReferenceField
  2. 7.2 api/src/includes/RealisticDummyContentTermReferenceField.php \Drupal\realistic_dummy_content_api\includes\RealisticDummyContentTermReferenceField

Represents a term reference field.

Hierarchy

Expanded class hierarchy of RealisticDummyContentTermReferenceField

1 file declares its use of RealisticDummyContentTermReferenceField
RealisticDummyContentTermReferenceFieldTest.php in api/tests/src/Unit/includes/RealisticDummyContentTermReferenceFieldTest.php

File

api/src/includes/RealisticDummyContentTermReferenceField.php, line 11

Namespace

Drupal\realistic_dummy_content_api\includes
View source
class RealisticDummyContentTermReferenceField extends RealisticDummyContentField {
  use RealisticDummyContentDrupalTrait;

  /**
   * {@inheritdoc}
   */
  public function implementValueFromFile($file) : array {
    try {
      $termname = $file
        ->value();
      if ($termname) {
        $return = Framework::instance()
          ->formatProperty('tid', $this
          ->getTid($termname));
        return $return;
      }
      return [];
    } catch (\Exception $e) {
      Framework::instance()
        ->debug('Problem with taxonomy term: ' . $e
        ->getMessage());
      return [];
    }
  }

  /**
   * Returns term id for a term which is either existing or created on the fly.
   *
   * Let's say an entity (node) contains a term reference to the taxonomy
   * vocabulary "location", and in the realistic dummy content file structure,
   * "Australia" is used for the location. If "Australia" exists as a
   * "location", then this function will return its tid. If not, the term will
   * be created, and then the tid will be returned.
   *
   * If two terms have the same name, the tid of the first will be returned.
   *
   * @param string $name
   *   The string for the taxonomy term.
   *
   * @return int
   *   The associated pre-existing or just-created tid of the first term
   *   with the desired name.
   *
   * @throws \Exception
   */
  public function getTid($name) {
    $vocabularies = $this
      ->getAllVocabularies();
    $field_info = $this
      ->fieldInfoField($this
      ->getName());
    $candidate_existing_terms = [];
    foreach ($field_info['settings']['allowed_values'] as $setting) {
      $vocabulary_name = $setting['vocabulary'];
      foreach ($vocabularies as $vocabulary) {
        if ($this
          ->vocabularyMachineName($vocabulary) == $vocabulary_name) {
          $candidate_existing_terms = array_merge($candidate_existing_terms, $this
            ->taxonomyLoadTree($vocabulary));
          break 2;
        }
      }
    }
    foreach ($candidate_existing_terms as $candidate_existing_term) {
      $candidate_name = $this
        ->termName($candidate_existing_term);
      if ($candidate_name == $name) {
        return $this
          ->termId($candidate_existing_term);
      }
    }
    if (!isset($vocabulary)) {
      throw new \Exception('Expecting the taxonomy term reference to reference at least one vocabulary');
    }
    $term = $this
      ->newVocabularyTerm($vocabulary, $name);
    return $this
      ->termId($term);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RealisticDummyContentAttribute::$entity private property Entity managed by this class.
RealisticDummyContentAttribute::$name private property The name of this attribuet, for example title, picture, field_image...
RealisticDummyContentAttribute::change public function Changes this attribute by looking for data in files.
RealisticDummyContentAttribute::changeFromFiles public function Given candidate files, change value of this attribute based on one of them.
RealisticDummyContentAttribute::env public function Returns the appropriate environment, real or testing.
RealisticDummyContentAttribute::fileSave public function Return a file object.
RealisticDummyContentAttribute::getBundle public function Gets the bundle of the associated entity.
RealisticDummyContentAttribute::getCandidateFiles public function Get all candidate files for a given field for this entity.
RealisticDummyContentAttribute::getEntity public function Getter for $this->entity.
RealisticDummyContentAttribute::getEntityType public function Get the entity type of the associated entity.
RealisticDummyContentAttribute::getExtensions public function Get acceptable file extensions which contain data for this attribute. 1
RealisticDummyContentAttribute::getImageExtensions public function Return acceptable image file extensions.
RealisticDummyContentAttribute::getName public function Getter for $this->name.
RealisticDummyContentAttribute::getTextExtensions public function Return acceptable text file extensions.
RealisticDummyContentAttribute::getUid public function Gets the UID of the associated entity.
RealisticDummyContentAttribute::imageSave public function Return an image file object if possible.
RealisticDummyContentAttribute::rand public function Returns a pseudo-random number.
RealisticDummyContentAttribute::valueFromFile public function Given a RealisticDummyContentFileGroup object, get structured property.
RealisticDummyContentAttribute::valueFromFiles public function Given a list of files, return a value from one of them.
RealisticDummyContentAttribute::__construct public function Constructor.
RealisticDummyContentDrupalTrait::fieldInfoField public function Mockable wrapper around Framework::fieldInfoField().
RealisticDummyContentDrupalTrait::getAllVocabularies public function Mockable wrapper around Framework::getAllVocabularies().
RealisticDummyContentDrupalTrait::newVocabularyTerm public function Mockable wrapper around Framework::newVocabularyTerm().
RealisticDummyContentDrupalTrait::taxonomyLoadTree public function Mockable wrapper around Framework::taxonomyLoadTree().
RealisticDummyContentDrupalTrait::termId public function Mockable wrapper around Framework::termId().
RealisticDummyContentDrupalTrait::termName public function Mockable wrapper around Framework::termName().
RealisticDummyContentDrupalTrait::vocabularyMachineName public function Mockable wrapper around Framework::vocabularyMachineName().
RealisticDummyContentDrupalTrait::watchdogThrowable public function Log a \Throwable to the watchdog.
RealisticDummyContentField::getType public function Returns the type of this attribute. Overrides RealisticDummyContentAttribute::getType
RealisticDummyContentTermReferenceField::getTid public function Returns term id for a term which is either existing or created on the fly.
RealisticDummyContentTermReferenceField::implementValueFromFile public function Given a RealisticDummyContentFileGroup object, get a structured property. Overrides RealisticDummyContentAttribute::implementValueFromFile