You are here

public function Serializer::deserializeForm in FillPDF 5.0.x

Same name and namespace in other branches
  1. 8.4 src/Serializer.php \Drupal\fillpdf\Serializer::deserializeForm()

Deserializes a serialized FillPDF form for import.

Parameters

string $code: The serialized FillPDF form.

Return value

array Associative array containing the deserialized FillPDF form object keyed with 'form' and an array of deserialized FillPDF form objects keyed with 'fields'.

Overrides SerializerInterface::deserializeForm

File

src/Serializer.php, line 60

Class

Serializer
Class Serializer.

Namespace

Drupal\fillpdf

Code

public function deserializeForm($code) {
  $mappings_raw = json_decode($code, TRUE);
  $decoded_fillpdf_form = $this->serializer
    ->denormalize($mappings_raw['form'], 'Drupal\\fillpdf\\Entity\\FillPdfForm');

  // Denormalization is a pain; we have to iterate over the fields to actually
  // recompose the $fields array.
  $field_json = $mappings_raw['fields'];
  $decoded_fields = [];
  foreach ($field_json as $normalized_field) {
    $field = $this->serializer
      ->denormalize($normalized_field, 'Drupal\\fillpdf\\Entity\\FillPdfFormField');

    // @todo: Exported fields are now already keyed by PDF key. For now, we're
    // not using the array keys to remain compatible with previous exports,
    // but should do so that at some later point.
    $decoded_fields[$field->pdf_key->value] = $field;
  }
  $return = [
    'form' => $decoded_fillpdf_form,
    'fields' => $decoded_fields,
  ];
  return $return;
}