You are here

protected function YamlFormRequest::getCurrentSourceEntityFromQuery in YAML Form 8

Get form submission source entity from query string.

Return value

\Drupal\Core\Entity\EntityInterface|null A source entity.

1 call to YamlFormRequest::getCurrentSourceEntityFromQuery()
YamlFormRequest::getCurrentSourceEntity in src/YamlFormRequest.php
Get the current request's source entity.

File

src/YamlFormRequest.php, line 211

Class

YamlFormRequest
Handles form requests.

Namespace

Drupal\yamlform

Code

protected function getCurrentSourceEntityFromQuery() {

  // Get and check for form.
  $yamlform = $this->routeMatch
    ->getParameter('yamlform');
  if (!$yamlform) {
    return NULL;
  }

  // Get and check source entity type.
  $source_entity_type = $this->request->query
    ->get('source_entity_type');
  if (!$source_entity_type || !$this->entityTypeManager
    ->hasDefinition($source_entity_type)) {
    return NULL;
  }

  // Get and check source entity id.
  $source_entity_id = $this->request->query
    ->get('source_entity_id');
  if (!$source_entity_id) {
    return NULL;
  }

  // Get and check source entity.
  $source_entity = $this->entityTypeManager
    ->getStorage($source_entity_type)
    ->load($source_entity_id);
  if (!$source_entity) {
    return NULL;
  }

  // Check source entity access.
  if (!$source_entity
    ->access('view')) {
    return NULL;
  }

  // Check that the form is referenced by the source entity.
  if (!$yamlform
    ->getSetting('form_prepopulate_source_entity')) {

    // Get source entity's yamlform field.
    $yamlform_field_name = $this
      ->getSourceEntityYamlFormFieldName($source_entity);
    if (!$yamlform_field_name) {
      return NULL;
    }

    // Check that source entity's reference form is the current YAML
    // form.
    if ($source_entity->{$yamlform_field_name}->target_id != $yamlform
      ->id()) {
      return NULL;
    }
  }
  return $source_entity;
}