/** * Load meta object by provided type and parameters. * * @MetaLoaderDoc( * description="Article Meta Loader provide simple way to test Loader, it will be removed when real loaders will be merged.", * parameters={} * ) * * @param string $type object type * @param array $parameters parameters needed to load required object type * @param int $responseType response type: single meta (LoaderInterface::SINGLE) or collection of metas (LoaderInterface::COLLECTION) * * @return Meta|MetaCollection false if meta cannot be loaded, a Meta instance otherwise */ public function load($type, $parameters = [], $responseType = LoaderInterface::SINGLE) { if (!is_readable($this->rootDir . '/Resources/meta/article.yml')) { throw new \InvalidArgumentException('Configuration file is not readable for parser'); } $parser = new Parser(); $configuration = (array) $parser->parse(file_get_contents($this->rootDir . '/Resources/meta/article.yml')); if ($responseType === LoaderInterface::SINGLE) { return $this->metaFactory->create(['title' => 'New article', 'keywords' => 'lorem, ipsum, dolor, sit, amet', 'don\'t expose it' => 'this should be not exposed'], $configuration); } elseif ($responseType === LoaderInterface::COLLECTION) { $metaCollection = new MetaCollection([$this->metaFactory->create(['title' => 'New article 1', 'keywords' => 'lorem, ipsum, dolor, sit, amet', 'don\'t expose it' => 'this should be not exposed'], $configuration), $this->metaFactory->create(['title' => 'New article 2', 'keywords' => 'lorem, ipsum, dolor, sit, amet', 'don\'t expose it' => 'this should be not exposed'], $configuration)]); $metaCollection->setTotalItemsCount(2); return $metaCollection; } }
/** * Load meta object by provided type and parameters. * * @MetaLoaderDoc( * description="Article Media Loader loads article media from Content Repository", * parameters={ * article="COLLECTION| article Meta object" * } * ) * * @param string $type object type * @param array $parameters parameters needed to load required object type * @param int $responseType response type: collection of meta (LoaderInterface::COLLECTION) * * @return Meta[]|bool false if meta cannot be loaded, an array with Meta instances otherwise */ public function load($type, $parameters = [], $responseType = LoaderInterface::COLLECTION) { if ($responseType === LoaderInterface::COLLECTION) { $criteria = new Criteria(); if (array_key_exists('article', $parameters) && $parameters['article'] instanceof Meta) { $criteria->set('article', $parameters['article']->getValues()); } elseif (isset($this->context->article) && null !== $this->context->article) { $criteria->set('article', $this->context->article->getValues()); } else { return false; } $criteria = $this->applyPaginationToCriteria($criteria, $parameters); $media = $this->articleMediaProvider->getManyByCriteria($criteria); if ($media->count() > 0) { $metaCollection = new MetaCollection(); $metaCollection->setTotalItemsCount($this->articleMediaProvider->getCountByCriteria($criteria)); foreach ($media as $item) { $metaCollection->add($this->metaFactory->create($item)); } return $metaCollection; } } return false; }
public function let(MetaFactory $metaFactory, Meta $meta) { $metaFactory->create(Argument::type('array'), Argument::type('array'))->willReturn($meta); $this->beConstructedWith(__DIR__ . '/../Meta', $metaFactory); }