|
@@ -0,0 +1,658 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Drupal\ouatt_graphql\Plugin\GraphQL\SchemaExtension;
|
|
|
+
|
|
|
+use Drupal\graphql\GraphQL\ResolverBuilder;
|
|
|
+use Drupal\graphql\GraphQL\ResolverRegistryInterface;
|
|
|
+use Drupal\graphql\GraphQL\Response\ResponseInterface;
|
|
|
+use Drupal\graphql\Plugin\GraphQL\SchemaExtension\SdlSchemaExtensionPluginBase;
|
|
|
+use Drupal\materio_graphql\GraphQL\Response\MaterioResponse;
|
|
|
+use Drupal\Core\Url;
|
|
|
+
|
|
|
+use GraphQL\Error\Error;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @SchemaExtension(
|
|
|
+ * id = "ouatt_extension",
|
|
|
+ * name = "Ou Atterrir extension",
|
|
|
+ * description = "Ou Atterrir extension.",
|
|
|
+ * schema = "ouatt"
|
|
|
+ * )
|
|
|
+ */
|
|
|
+class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function registerResolvers(ResolverRegistryInterface $registry) {
|
|
|
+ $builder = new ResolverBuilder();
|
|
|
+
|
|
|
+ $this->addRouteResolver($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addConcernements($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addEntitesIntegres($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addEntites($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addStatic($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addFilefield($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addFile($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addDate($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addVideolink($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addImage($registry, $builder);
|
|
|
+ //
|
|
|
+ // $this->addTaxoterm($registry, $builder);
|
|
|
+ //
|
|
|
+ $this->addLink($registry, $builder);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___ _
|
|
|
+ // | _ \___ _ _| |_ ___
|
|
|
+ // | / _ \ || | _/ -_)
|
|
|
+ // |_|_\___/\_,_|\__\___|
|
|
|
+ protected function addRouteResolver(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ // Tell GraphQL how to resolve types of a common interface.
|
|
|
+ $registry->addTypeResolver('NodeInterface', function ($value) {
|
|
|
+
|
|
|
+ $path = explode('\\', get_class($value));
|
|
|
+ $class = array_pop($path);
|
|
|
+
|
|
|
+ if ($class === 'Node') {
|
|
|
+ switch ($value->bundle()) {
|
|
|
+ case 'concernement': return 'Concernement';
|
|
|
+ case 'entite': return 'Entite';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw new Error('Could not resolve content type.');
|
|
|
+ });
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'route',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('route_load')
|
|
|
+ ->map('path', $builder->fromArgument('path')),
|
|
|
+ $builder->produce('route_entity')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // ____ _
|
|
|
+ // / ___|___ _ __ ___ ___ _ __ _ __ ___ _ __ ___ ___ _ __ | |_ ___
|
|
|
+ // | | / _ \| '_ \ / __/ _ \ '__| '_ \ / _ \ '_ ` _ \ / _ \ '_ \| __/ __|
|
|
|
+ // | |__| (_) | | | | (_| __/ | | | | | __/ | | | | | __/ | | | |_\__ \
|
|
|
+ // \____\___/|_| |_|\___\___|_| |_| |_|\___|_| |_| |_|\___|_| |_|\__|___/
|
|
|
+
|
|
|
+ protected function addConcernements(ResolverRegistryInterface $registry, ResolverBuilder $builder){
|
|
|
+ $registry->addFieldResolver('Query', 'allconcernements',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $arg){
|
|
|
+ $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ $query = $entity_storage->getQuery()
|
|
|
+ ->condition('type', ['concernement'], 'IN')
|
|
|
+ ->accessCheck(TRUE);
|
|
|
+ $results = $query->execute();
|
|
|
+ return $results;
|
|
|
+ }),
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'concernements',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $arg){
|
|
|
+ $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ $query = $entity_storage->getQuery()
|
|
|
+ ->condition('type', ['concernement'], 'IN')
|
|
|
+ ->accessCheck(TRUE);
|
|
|
+ $results = $query->execute();
|
|
|
+ return $results;
|
|
|
+ }),
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromArgument('ids'))
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'concernement',
|
|
|
+ $builder->produce('entity_load')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('id', $builder->fromArgument('id'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'uuid',
|
|
|
+ $builder->produce('entity_uuid')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'path',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_url')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('url_path')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'title',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'bundle',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_bundle')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'texte',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('body.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'author',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_owner')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Concernement', 'entites',
|
|
|
+ $builder->produce('entity_reference_revisions')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('field_entite'))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // _____ _ _ _ __ ___ _ __ __
|
|
|
+ // | ____|_ __ | |_(_) |_ /_/ ___ |_ _|_ __ | |_ /_/ __ _ _ __ /_/ ___ ___
|
|
|
+ // | _| | '_ \| __| | __/ _ \/ __| | || '_ \| __/ _ \/ _` | '__/ _ \/ _ \/ __|
|
|
|
+ // | |___| | | | |_| | || __/\__ \ | || | | | || __/ (_| | | | __/ __/\__ \
|
|
|
+ // |_____|_| |_|\__|_|\__\___||___/ |___|_| |_|\__\___|\__, |_| \___|\___||___/
|
|
|
+ // |___/
|
|
|
+ protected function addEntitesIntegres(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entiteintegre', 'entite',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_reference')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('field_entite')),
|
|
|
+ $builder->callback(function ($items) {
|
|
|
+ return $items[0];
|
|
|
+ })
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entiteintegre', 'rayon',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:paragraph'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_rayon.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entiteintegre', 'angle',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:paragraph'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_angle.value'))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // _____ _ _ _
|
|
|
+ // | ____|_ __ | |_(_) |_ ___ ___
|
|
|
+ // | _| | '_ \| __| | __/ _ \/ __|
|
|
|
+ // | |___| | | | |_| | || __/\__ \
|
|
|
+ // |_____|_| |_|\__|_|\__\___||___/
|
|
|
+
|
|
|
+ protected function addEntites(ResolverRegistryInterface $registry, ResolverBuilder $builder){
|
|
|
+ $registry->addFieldResolver('Query', 'allentites',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $arg){
|
|
|
+ $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ $query = $entity_storage->getQuery()
|
|
|
+ ->condition('type', ['entite'], 'IN')
|
|
|
+ ->accessCheck(TRUE);
|
|
|
+ $results = $query->execute();
|
|
|
+ return $results;
|
|
|
+ }),
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'entites',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $arg){
|
|
|
+ $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ $query = $entity_storage->getQuery()
|
|
|
+ ->condition('type', ['entite'], 'IN')
|
|
|
+ ->accessCheck(TRUE);
|
|
|
+ $results = $query->execute();
|
|
|
+ return $results;
|
|
|
+ }),
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromArgument('ids'))
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'entite',
|
|
|
+ $builder->produce('entity_load')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('id', $builder->fromArgument('id'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'uuid',
|
|
|
+ $builder->produce('entity_uuid')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'path',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_url')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('url_path')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'title',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'bundle',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_bundle')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'texte',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('body.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'author',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_owner')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'images',
|
|
|
+ $builder->produce('entity_reference')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('field_images'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'videos',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_videos'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'fichiers',
|
|
|
+ $builder->produce('entity_reference')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('field_fichiers'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Entite', 'liens',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_liens'))
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___ _ _ _
|
|
|
+ // / __| |_ __ _| |_(_)__ ___
|
|
|
+ // \__ \ _/ _` | _| / _(_-<
|
|
|
+ // |___/\__\__,_|\__|_\__/__/
|
|
|
+ protected function addStatic(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'allstatics',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $arg){
|
|
|
+ $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ $query = $entity_storage->getQuery()
|
|
|
+ ->condition('type', ['static'], 'IN')
|
|
|
+ ->accessCheck(TRUE);
|
|
|
+ $results = $query->execute();
|
|
|
+ return $results;
|
|
|
+ }),
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'statics',
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('ids', $builder->fromArgument('ids'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'static',
|
|
|
+ $builder->produce('entity_load')
|
|
|
+ ->map('type', $builder->fromValue('node'))
|
|
|
+ ->map('bundles', $builder->fromValue(['static']))
|
|
|
+ ->map('id', $builder->fromArgument('id'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'uuid',
|
|
|
+ $builder->produce('entity_uuid')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'path',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_url')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('url_path')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'title',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'bundle',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_bundle')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'texte',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('body.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'author',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_owner')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Static', 'fichiers',
|
|
|
+ $builder->produce('entity_reference')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('field_fichier'))
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___ _
|
|
|
+ // | \ __ _| |_ ___
|
|
|
+ // | |) / _` | _/ -_)
|
|
|
+ // |___/\__,_|\__\___|
|
|
|
+ protected function addDate(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('Date', 'start',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return isset($parent[0]) ? $parent[0]['value'] : null;
|
|
|
+ })
|
|
|
+ );
|
|
|
+ $registry->addFieldResolver('Date', 'end',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return isset($parent[0]) ? $parent[0]['end_value'] : null;
|
|
|
+ })
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___ _ _ __ _ _ _
|
|
|
+ // | __(_) |___ / _(_)___| |__| |
|
|
|
+ // | _|| | / -_) _| / -_) / _` |
|
|
|
+ // |_| |_|_\___|_| |_\___|_\__,_|
|
|
|
+ protected function addFilefield(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Filefield', 'description',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent['description'];
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Filefield', 'file',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return \Drupal\file\Entity\File::load($parent['target_id']);
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___ _ _
|
|
|
+ // | __(_) |___
|
|
|
+ // | _|| | / -_)
|
|
|
+ // |_| |_|_\___|
|
|
|
+ protected function addFile(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('File', 'url',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->createFileUrl();
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('File', 'filesize',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->getSize();
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('File', 'filemime',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->getMimeType();
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('File', 'filename',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->getFilename();
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('File', 'fid',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->id();
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('File', 'uuid',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return $parent->uuid();
|
|
|
+ })
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // ___
|
|
|
+ // |_ _|_ __ __ _ __ _ ___
|
|
|
+ // | || ' \/ _` / _` / -_)
|
|
|
+ // |___|_|_|_\__,_\__, \___|
|
|
|
+ // |___/
|
|
|
+ protected function addImage(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('Image', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Image', 'url',
|
|
|
+ $builder->produce('image_url')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Image', 'alt',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_image.alt'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Image', 'style_minicard',
|
|
|
+ $builder->produce('image_derivative')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('style', $builder->fromValue('card_medium_half'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Image', 'style_minicard_url',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('image_derivative')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('style', $builder->fromValue('card_medium_half')),
|
|
|
+ $builder->callback(function($parent, $args){
|
|
|
+ return $parent['url'];
|
|
|
+ })
|
|
|
+ ));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // __ ___ _ _ _ _
|
|
|
+ // \ \ / (_)__| |___ ___| | (_)_ _ | |__
|
|
|
+ // \ V /| / _` / -_) _ \ |__| | ' \| / /
|
|
|
+ // \_/ |_\__,_\___\___/____|_|_||_|_\_\
|
|
|
+ protected function addVideolink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('VideoLink', 'url',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('field_item:video_embed_field'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('value'))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // _____
|
|
|
+ // |_ _|_ _ __ _
|
|
|
+ // | |/ _` / _` |
|
|
|
+ // |_|\__,_\__, |
|
|
|
+ // |___/
|
|
|
+ // protected function addTaxoterm(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ // $registry->addFieldResolver('Query', 'alltags',
|
|
|
+ // $builder->compose(
|
|
|
+ // $builder->callback(function($parent, $arg){
|
|
|
+ // $entity_storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
|
|
|
+ // $query = $entity_storage->getQuery()
|
|
|
+ // ->condition('vid', ['tag','tag_prod'], 'IN')
|
|
|
+ // ->accessCheck(TRUE);
|
|
|
+ // $results = $query->execute();
|
|
|
+ // return $results;
|
|
|
+ // }),
|
|
|
+ // $builder->produce('entity_load_multiple')
|
|
|
+ // ->map('type', $builder->fromValue('taxonomy_term'))
|
|
|
+ // ->map('ids', $builder->fromParent())
|
|
|
+ // )
|
|
|
+ // );
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Query', 'tag',
|
|
|
+ // $builder->produce('entity_load')
|
|
|
+ // ->map('type', $builder->fromValue('taxonomy_term'))
|
|
|
+ // ->map('bundles', $builder->fromValue(['tag']))
|
|
|
+ // ->map('id', $builder->fromArgument('id'))
|
|
|
+ // );
|
|
|
+ // $registry->addFieldResolver('Query', 'famille',
|
|
|
+ // $builder->produce('entity_load')
|
|
|
+ // ->map('type', $builder->fromValue('taxonomy_term'))
|
|
|
+ // ->map('bundles', $builder->fromValue(['famille']))
|
|
|
+ // ->map('id', $builder->fromArgument('id'))
|
|
|
+ // );
|
|
|
+ // $registry->addFieldResolver('Query', 'tagprod',
|
|
|
+ // $builder->produce('entity_load')
|
|
|
+ // ->map('type', $builder->fromValue('taxonomy_term'))
|
|
|
+ // ->map('bundles', $builder->fromValue(['tag_prod']))
|
|
|
+ // ->map('id', $builder->fromArgument('id'))
|
|
|
+ // );
|
|
|
+
|
|
|
+ // // get all tags for a given familly
|
|
|
+ // // $registry->addFieldResolver('Query', 'famillytags',
|
|
|
+ // // $builder->compose(
|
|
|
+ // // $builder->callback(function($parent, $arg){
|
|
|
+ // // $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
|
|
|
+ // // $query = $entity_storage->getQuery()
|
|
|
+ // // ->condition('type', ['texte', 'texte_prod'], 'IN')
|
|
|
+ // // ->condition('field_famille', $arg->famillyid)
|
|
|
+ // // ->accessCheck(TRUE);
|
|
|
+ // // $results = $query->execute();
|
|
|
+ // // return $results;
|
|
|
+ // // }),
|
|
|
+ // // $builder->produce('entity_load_multiple')
|
|
|
+ // // ->map('type', $builder->fromValue('node'))
|
|
|
+ // // ->map('ids', $builder->fromParent())
|
|
|
+ // // // $builder->produce('entity_load_multiple')
|
|
|
+ // // // ->map('type', $builder->fromValue('taxonomy_term'))
|
|
|
+ // // // ->map('ids', $builder->fromParent())
|
|
|
+ // // )
|
|
|
+ // // );
|
|
|
+
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Taxoterm', 'id',
|
|
|
+ // $builder->produce('entity_id')
|
|
|
+ // ->map('entity', $builder->fromParent())
|
|
|
+ // );
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Taxoterm', 'uuid',
|
|
|
+ // $builder->produce('entity_uuid')
|
|
|
+ // ->map('entity', $builder->fromParent())
|
|
|
+ // );
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Taxoterm', 'name',
|
|
|
+ // $builder->produce('entity_label')
|
|
|
+ // ->map('entity', $builder->fromParent())
|
|
|
+ // );
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Taxoterm', 'vocabulary',
|
|
|
+ // $builder->produce('entity_bundle')
|
|
|
+ // ->map('entity', $builder->fromParent())
|
|
|
+ // );
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // _ _ _
|
|
|
+ // | | (_)_ _ | |__
|
|
|
+ // | |__| | ' \| / /
|
|
|
+ // |____|_|_||_|_\_\
|
|
|
+ protected function addLink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('Link', 'url',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return isset($parent[0]) ? $parent[0]['uri'] : null;
|
|
|
+ })
|
|
|
+ );
|
|
|
+ $registry->addFieldResolver('Link', 'title',
|
|
|
+ $builder->callback(function ($parent, $args) {
|
|
|
+ return isset($parent[0]) ? $parent[0]['title'] : null;
|
|
|
+ })
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|