Source of file IterableTemplateDataSource.php

Size: 1,436 Bytes - Last Modified: 2019-06-27T09:09:04+00:00

/home/vagrant/www/document-templates/src/TemplateDataSources/IterableTemplateDataSource.php

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
<?php


namespace BWF\DocumentTemplates\TemplateDataSources;


class IterableTemplateDataSource extends TemplateDataSource implements TemplateDataSourceInterface
{
    /**
     * @var TemplateDataSource[]
     */
    protected $data = [];

    /**
     * ArrayTemplateDataSource constructor.
     * @param TemplateDataSource[] $data
     * @param null $namespace
     */
    public function __construct($data, $namespace = null)
    {
        parent::__construct($data, $namespace);
    }

    /**
     * @param bool $useNamespace
     * @return array|Array
     */
    public function getTemplateData($useNamespace = true)
    {
        $templateData = [];
        foreach ($this->data as $dataSource) {
            $templateData[] = $dataSource->getTemplateData(false);
        }

        $data = $templateData;

        if ($useNamespace) {
            $data = $this->namespace ? [$this->getNameSpace() => $templateData] : $templateData;
        }

        return $data;
    }

    /**
     * @return array|string[]
     */
    public function getPlaceholders()
    {
        $placeholders = [];

        foreach ($this->data as $dataSource) {
            $placeholders = $dataSource->getPlaceholders();
            break;
        }

        $placeholderGroup = new PlaceholderGroup(
            $this->getNameSpace(), $placeholders->getPlaceholders(), TYPE_ITERABLE_PLACEHOLDER
        );

        return $placeholderGroup;
    }

}