WebflowItemDataProvider.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\DataProvider;
  3. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  4. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  5. use App\Entity\WebflowCollection;
  6. use App\Entity\WebflowItem;
  7. use App\Entity\WebflowItemCategory;
  8. use App\Http\WebflowApi\WebflowSite;
  9. use App\Http\WebflowApi\WebflowSites;
  10. use App\Http\WebflowApiClient;
  11. use Psr\Log\LoggerInterface;
  12. final class WebflowItemDataProvider implements ItemDataProviderInterface, RestrictedDataProviderInterface {
  13. private $site;
  14. private $apiClient;
  15. private $logger;
  16. public function __construct(WebflowApiClient $webflowApiClient, LoggerInterface $loggerInterface)
  17. {
  18. $this->site = WebflowSite::byId($webflowApiClient, '5ebabfe546c816388d66c03a');
  19. $this->logger = $loggerInterface;
  20. }
  21. public function supports(string $resourceClass, ?string $operationName = null, array $context = []): bool {
  22. $this->logger->debug(__METHOD__, [$resourceClass, $operationName, $context]);
  23. return in_array($resourceClass, [
  24. WebflowCollection::class,
  25. WebflowItem::class,
  26. ]);
  27. }
  28. public function getItem(string $resourceClass, $id, ?string $operationName = null, array $context = []): ?WebflowCollection {
  29. switch ($resourceClass) {
  30. case WebflowCollection::class:
  31. foreach ($this->site->getCollections() as $col)
  32. if ($col->data['_id'] == $id) {
  33. return new WebflowCollection($col->load(true));
  34. }
  35. break;
  36. }
  37. return null;
  38. }
  39. }